diff --git a/backend/routes/cases/index.js b/backend/routes/cases/index.js index e23a1ea..ed7e483 100644 --- a/backend/routes/cases/index.js +++ b/backend/routes/cases/index.js @@ -1,25 +1,30 @@ const express = require("express"); const router = express.Router(); const defineCase = require("../../models/cases"); -const { DataTypes } = require('sequelize'); +const { DataTypes } = require("sequelize"); -module.exports = function(sequelize) { - const Run = defineCase(sequelize, DataTypes) +module.exports = function (sequelize) { + const Case = defineCase(sequelize, DataTypes); router.get("/", async (req, res) => { - const { folderId } = req.query; + const { caseId, folderId } = req.query; - if (!folderId) { - return res.status(400).json({ error: 'folderId is required' }); + if (!caseId && !folderId) { + return res.status(400).json({ error: "caseId or folderId is required" }); + } + + if (caseId) { + const testcase = await Case.findByPk(caseId); + return res.json(testcase); } try { - const runs = await Run.findAll({ + const cases = await Case.findAll({ where: { - folderId: folderId - } + folderId: folderId, + }, }); - res.json(runs); + res.json(cases); } catch (error) { console.error(error); res.status(500).send("Internal Server Error"); @@ -27,4 +32,4 @@ module.exports = function(sequelize) { }); return router; -}; \ No newline at end of file +}; 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 5d90c12..927f1ed 100644 --- a/frontend/app/projects/[projectId]/folders/[folderId]/cases/[caseId]/page.tsx +++ b/frontend/app/projects/[projectId]/folders/[folderId]/cases/[caseId]/page.tsx @@ -1,18 +1,110 @@ "use client"; -import { Button } from "@nextui-org/react"; -import { useRouter } from "next/navigation"; +import { useEffect, useState } from "react"; +import { Select, SelectItem } from "@nextui-org/react"; +import priorities from "../priorities"; +import Config from "@/config/config"; +const apiServer = Config.apiServer; + +type CaseType = { + id: number; + title: string; + state: number; + priority: number; + type: number; + automationStatus: number; + description: string; + template: number; + preConditions: string; + expectedResults: string; + folderId: number; +}; + +const defaultTestCase = { + id: 0, + title: "", + state: 0, + priority: 0, + type: 0, + automationStatus: 0, + description: "", + template: 0, + preConditions: "", + expectedResults: "", + folderId: 0, +}; + +/** + * fetch case + */ +async function fetchCase(url: string) { + try { + const response = await fetch(url, { + method: "GET", + headers: { + "Content-Type": "application/json", + }, + }); + + if (!response.ok) { + throw new Error(`HTTP error! Status: ${response.status}`); + } + + const data = await response.json(); + return data; + } catch (error) { + console.error("Error fetching data:", error.message); + } +} + +export default function Page({ + params, +}: { + params: { projectId: string; folderId: string; caseId: string }; +}) { + const [testCase, setTestCase] = useState(defaultTestCase); + + const url = `${apiServer}/cases?caseId=${params.caseId}`; + useEffect(() => { + async function fetchDataEffect() { + try { + const data = await fetchCase(url); + setTestCase(data); + } catch (error) { + console.error("Error in effect:", error.message); + } + } + + fetchDataEffect(); + }, []); -export default function Page({ params }: { params: { projectId: string, folderId: string } }) { - const router = useRouter(); return ( - <> -