From b36e8f3c7f36611424ff27206de928e538289df9 Mon Sep 17 00:00:00 2001 From: Takeshi Kimata <117462761+kimatata@users.noreply.github.com> Date: Sun, 25 Feb 2024 18:51:44 +0900 Subject: [PATCH] update test case --- backend/index.js | 58 +++--- backend/routes/cases/edit.js | 26 +++ .../[folderId]/cases/[caseId]/page.tsx | 168 +++++++++++++++--- .../folders/[folderId]/cases/priorities.ts | 8 - .../[folderId]/cases/test-case-table.tsx | 2 +- frontend/config/selection.ts | 36 ++++ 6 files changed, 235 insertions(+), 63 deletions(-) create mode 100644 backend/routes/cases/edit.js delete mode 100644 frontend/app/projects/[projectId]/folders/[folderId]/cases/priorities.ts create mode 100644 frontend/config/selection.ts diff --git a/backend/index.js b/backend/index.js index ec81c6f..56c2f68 100644 --- a/backend/index.js +++ b/backend/index.js @@ -1,5 +1,5 @@ -const express = require('express'); -const { Sequelize } = require('sequelize'); +const express = require("express"); +const { Sequelize } = require("sequelize"); const app = express(); // enable frontend access @@ -24,36 +24,38 @@ const indexRoute = require("./routes/index"); app.use("/", indexRoute); // "/projects" -const projectsIndexRoute = require('./routes/projects/index')(sequelize); -const projectsNewRoute = require('./routes/projects/new')(sequelize); -const projectsEditRoute = require('./routes/projects/edit')(sequelize); -const projectsDeleteRoute = require('./routes/projects/delete')(sequelize); -app.use('/projects', projectsIndexRoute); -app.use('/projects', projectsNewRoute); -app.use('/projects', projectsEditRoute); -app.use('/projects', projectsDeleteRoute); +const projectsIndexRoute = require("./routes/projects/index")(sequelize); +const projectsNewRoute = require("./routes/projects/new")(sequelize); +const projectsEditRoute = require("./routes/projects/edit")(sequelize); +const projectsDeleteRoute = require("./routes/projects/delete")(sequelize); +app.use("/projects", projectsIndexRoute); +app.use("/projects", projectsNewRoute); +app.use("/projects", projectsEditRoute); +app.use("/projects", projectsDeleteRoute); // "/folders" -const foldersIndexRoute = require('./routes/folders/index')(sequelize); -const foldersNewRoute = require('./routes/folders/new')(sequelize); -const foldersEditRoute = require('./routes/folders/edit')(sequelize); -const foldersDeleteRoute = require('./routes/folders/delete')(sequelize); -app.use('/folders', foldersIndexRoute); -app.use('/folders', foldersNewRoute); -app.use('/folders', foldersEditRoute); -app.use('/folders', foldersDeleteRoute); - -// "/runs" -const runsIndexRoute = require('./routes/runs/index')(sequelize); -const runsNewRoute = require('./routes/runs/new')(sequelize); -app.use('/runs', runsIndexRoute); -app.use('/runs', runsNewRoute); +const foldersIndexRoute = require("./routes/folders/index")(sequelize); +const foldersNewRoute = require("./routes/folders/new")(sequelize); +const foldersEditRoute = require("./routes/folders/edit")(sequelize); +const foldersDeleteRoute = require("./routes/folders/delete")(sequelize); +app.use("/folders", foldersIndexRoute); +app.use("/folders", foldersNewRoute); +app.use("/folders", foldersEditRoute); +app.use("/folders", foldersDeleteRoute); // "/cases" -const casesIndexRoute = require('./routes/cases/index')(sequelize); -const casesNewRoute = require('./routes/cases/new')(sequelize); -app.use('/cases', casesIndexRoute); -app.use('/cases', casesNewRoute); +const casesIndexRoute = require("./routes/cases/index")(sequelize); +const casesNewRoute = require("./routes/cases/new")(sequelize); +const casesEditRoute = require("./routes/cases/edit")(sequelize); +app.use("/cases", casesIndexRoute); +app.use("/cases", casesNewRoute); +app.use("/cases", casesEditRoute); + +// "/runs" +const runsIndexRoute = require("./routes/runs/index")(sequelize); +const runsNewRoute = require("./routes/runs/new")(sequelize); +app.use("/runs", runsIndexRoute); +app.use("/runs", runsNewRoute); const PORT = process.env.PORT || 3001; app.listen(PORT, () => { diff --git a/backend/routes/cases/edit.js b/backend/routes/cases/edit.js new file mode 100644 index 0000000..152dade --- /dev/null +++ b/backend/routes/cases/edit.js @@ -0,0 +1,26 @@ +const express = require("express"); +const router = express.Router(); +const defineCase = require("../../models/cases"); +const { DataTypes } = require("sequelize"); + +module.exports = function (sequelize) { + const Case = defineCase(sequelize, DataTypes); + + router.put("/:caseId", async (req, res) => { + const caseId = req.params.caseId; + const updateCase = req.body; + try { + const testcase = await Case.findByPk(caseId); + if (!testcase) { + return res.status(404).send("Case not found"); + } + await testcase.update(updateCase); + res.json(testcase); + } catch (error) { + console.error(error); + res.status(500).send("Internal Server Error"); + } + }); + + return router; +}; diff --git a/frontend/app/projects/[projectId]/folders/[folderId]/cases/[caseId]/page.tsx b/frontend/app/projects/[projectId]/folders/[folderId]/cases/[caseId]/page.tsx index 927f1ed..693f043 100644 --- a/frontend/app/projects/[projectId]/folders/[folderId]/cases/[caseId]/page.tsx +++ b/frontend/app/projects/[projectId]/folders/[folderId]/cases/[caseId]/page.tsx @@ -1,7 +1,14 @@ "use client"; import { useEffect, useState } from "react"; -import { Select, SelectItem } from "@nextui-org/react"; -import priorities from "../priorities"; +import { + Input, + Textarea, + Select, + SelectItem, + Chip, + Button, +} from "@nextui-org/react"; +import { priorities, testTypes } from "@/config/selection"; import Config from "@/config/config"; const apiServer = Config.apiServer; @@ -56,12 +63,40 @@ async function fetchCase(url: string) { } } +/** + * Update folder + */ +async function updateCase(updateCaseData) { + const fetchOptions = { + method: "PUT", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(updateCaseData), + }; + + const url = `${apiServer}/cases/${updateCaseData.id}`; + + try { + const response = await fetch(url, fetchOptions); + if (!response.ok) { + throw new Error(`HTTP error! Status: ${response.status}`); + } + const data = await response.json(); + return data; + } catch (error) { + console.error("Error updating project:", error); + throw error; + } +} + export default function Page({ params, }: { params: { projectId: string; folderId: string; caseId: string }; }) { const [testCase, setTestCase] = useState(defaultTestCase); + const [isTitleInvalid, setIsTitleInvalid] = useState(false); const url = `${apiServer}/cases?caseId=${params.caseId}`; useEffect(() => { @@ -79,32 +114,113 @@ export default function Page({ return (
-

{testCase.title}

- { + setTestCase({ ...testCase, title: e.target.value }); }} - label="Priority" - className="mt-3 max-w-xs" - > - {priorities.map((priority, index) => ( - - {priority.name} - - ))} - + /> -
type: {testCase.type}
-
automationStatus: {testCase.automationStatus}
-
description: {testCase.description}
-
template: {testCase.template}
-
preConditions: {testCase.preConditions}
-
expectedResults: {testCase.expectedResults}
+