diff --git a/backend/routes/runs/show.js b/backend/routes/runs/show.js index 5ee946d..23d8490 100644 --- a/backend/routes/runs/show.js +++ b/backend/routes/runs/show.js @@ -22,6 +22,7 @@ module.exports = function (sequelize) { include: [ { model: Case, + through: { attributes: ["status"] }, }, ], }); diff --git a/frontend/app/projects/[projectId]/runs/[runId]/RunEditor.tsx b/frontend/app/projects/[projectId]/runs/[runId]/RunEditor.tsx index 9c0352f..170d1ac 100644 --- a/frontend/app/projects/[projectId]/runs/[runId]/RunEditor.tsx +++ b/frontend/app/projects/[projectId]/runs/[runId]/RunEditor.tsx @@ -82,26 +82,19 @@ export default function RunEditor({ projectId, runId }: Props) { // Check if each testCase has an association with testRun // and add "isIncluded" property - testCasesData.forEach((itr: CaseType) => { - // let included: boolean = testRun.Cases.some( - // (testRun: RunType) => testRun.id === itr.id - // ); - - // itr.isIncluded = included; - // itr.result = included ? - + testCasesData.forEach((caseItr: CaseType) => { let isIncluded: boolean = false; - let result: number = 0; + let runStatus: number = 0; testRun.Cases.forEach((runCaseItr: CaseType) => { - if (runCaseItr.id === itr.id) { + if (runCaseItr.id === caseItr.id) { isIncluded = true; - // result = runCaseItr.result; + runStatus = runCaseItr.runCases.status; } }); - itr.isIncluded = isIncluded; - // itr.result = result; + caseItr.isIncluded = isIncluded; + caseItr.runStatus = runStatus; }); setTestCases(testCasesData); @@ -160,7 +153,7 @@ export default function RunEditor({ projectId, runId }: Props) { -
+
Basic
>; }; @@ -65,17 +48,16 @@ export default function TestCaseSelector({ }); const sortedItems = useMemo(() => { - console.log(cases) - return [...cases].sort((a: Case, b: Case) => { - const first = a[sortDescriptor.column as keyof Case] as number; - const second = b[sortDescriptor.column as keyof Case] as number; + return [...cases].sort((a: CaseType, b: CaseType) => { + const first = a[sortDescriptor.column as keyof CaseType] as number; + const second = b[sortDescriptor.column as keyof CaseType] as number; const cmp = first < second ? -1 : first > second ? 1 : 0; return sortDescriptor.direction === "descending" ? -cmp : cmp; }); }, [sortDescriptor, cases]); - const renderCell = useCallback((testCase: Case, columnKey: Key) => { - const cellValue = testCase[columnKey as keyof Case]; + const renderCell = useCallback((testCase: CaseType, columnKey: Key) => { + const cellValue = testCase[columnKey as keyof CaseType]; // console.log(columnKey, cellValue) switch (columnKey) { @@ -105,15 +87,15 @@ export default function TestCaseSelector({ case "isIncluded": const flag = cellValue ? "true" : "false" return {flag}; - case "result": + case "runStatus": return ( - {testResult[cellValue].name} + {testRunCaseStatus[cellValue].name} ); case "actions": diff --git a/frontend/config/selection.ts b/frontend/config/selection.ts index fb9a5af..c72c9f6 100644 --- a/frontend/config/selection.ts +++ b/frontend/config/selection.ts @@ -42,11 +42,12 @@ const testRunStatus = [ { name: "Closed", uid: "closed" }, ] -const testResult = [ +const testRunCaseStatus = [ + { name: "Not included", uid: "notincluded", color: "primary" }, { name: "Untested", uid: "untested", color: "primary" }, { name: "Passed", uid: "passed", color: "success" }, { name: "Failed", uid: "untested", color: "danger" }, { name: "Skipped", uid: "medium", color: "primary" }, ] -export { priorities, testTypes, automationStatus, templates, testRunStatus, testResult }; +export { priorities, testTypes, automationStatus, templates, testRunStatus, testRunCaseStatus }; diff --git a/frontend/types/case.ts b/frontend/types/case.ts index 3e30e38..4e1d51a 100644 --- a/frontend/types/case.ts +++ b/frontend/types/case.ts @@ -10,8 +10,10 @@ type CaseType = { preConditions: string; expectedResults: string; folderId: number; - Steps: StepType[]; - Attachments: AttachmentType[]; + Steps: StepType[]; // additional property + Attachments: AttachmentType[]; // additional property + isIncluded: boolean; // additional property + runStatus: number; // additional property }; type CaseStepType = {