From 548bc43bead32af0c97634568d37c8b747382e24 Mon Sep 17 00:00:00 2001 From: Takeshi Kimata <117462761+kimatata@users.noreply.github.com> Date: Sun, 3 Mar 2024 18:23:02 +0900 Subject: [PATCH] update case and steps --- backend/routes/cases/edit.js | 18 ++++++++++ .../[folderId]/cases/[caseId]/page.tsx | 33 +++++++++++++++---- 2 files changed, 45 insertions(+), 6 deletions(-) diff --git a/backend/routes/cases/edit.js b/backend/routes/cases/edit.js index 152dade..f449e4c 100644 --- a/backend/routes/cases/edit.js +++ b/backend/routes/cases/edit.js @@ -1,10 +1,12 @@ const express = require("express"); const router = express.Router(); const defineCase = require("../../models/cases"); +const defineStep = require("../../models/steps"); const { DataTypes } = require("sequelize"); module.exports = function (sequelize) { const Case = defineCase(sequelize, DataTypes); + const Step = defineStep(sequelize, DataTypes); router.put("/:caseId", async (req, res) => { const caseId = req.params.caseId; @@ -14,6 +16,22 @@ module.exports = function (sequelize) { if (!testcase) { return res.status(404).send("Case not found"); } + + // if Case has Steps, update Steps as well + if (updateCase.Steps) { + // Delete existing steps + const steps = updateCase.Steps; + await Promise.all( + steps.map(async (step) => { + const existingStep = await Step.findByPk(step.id); + if (existingStep) { + await existingStep.update(step); + } + }) + ); + } + + delete updateCase.Steps; await testcase.update(updateCase); res.json(testcase); } catch (error) { 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 3956b2f..46512ae 100644 --- a/frontend/app/projects/[projectId]/folders/[folderId]/cases/[caseId]/page.tsx +++ b/frontend/app/projects/[projectId]/folders/[folderId]/cases/[caseId]/page.tsx @@ -27,6 +27,7 @@ type CaseType = { preConditions: string; expectedResults: string; folderId: number; + Steps: StepType[]; }; type CaseStepType = { @@ -85,7 +86,7 @@ async function fetchCase(url: string) { /** * Update folder */ -async function updateCase(updateCaseData) { +async function updateCase(updateCaseData: CaseType) { const fetchOptions = { method: "PUT", headers: { @@ -116,6 +117,7 @@ export default function Page({ }) { const [testCase, setTestCase] = useState(defaultTestCase); const [isTitleInvalid, setIsTitleInvalid] = useState(false); + const [isUpdating, setIsUpdating] = useState(false); const url = `${apiServer}/cases?caseId=${params.caseId}`; useEffect(() => { @@ -239,7 +241,6 @@ export default function Page({ - {templates[testCase.template].name === "Text" ? (
Test Detail
@@ -274,7 +275,18 @@ export default function Page({
Steps
{}} + onStepUpdate={(stepId, changeStep) => { + setTestCase({ + ...testCase, + Steps: testCase.Steps.map((step) => { + if (step.id === stepId) { + return changeStep; + } else { + return step; + } + }), + }); + }} onStepPlus={() => {}} onStepDelete={() => {}} /> @@ -282,7 +294,6 @@ export default function Page({ )} -
Attachments