Implemented test run editor's bulk test case selection

This commit is contained in:
Takeshi Kimata
2024-04-21 13:10:28 +09:00
parent 3eb36b7ad3
commit 8f4ca3d882
2 changed files with 32 additions and 22 deletions

View File

@@ -38,7 +38,7 @@ import {
createRunCase,
bulkCreateRunCases,
deleteRunCase,
bulkDeleteRunCases
bulkDeleteRunCases,
} from "../runsControl";
import { fetchFolders } from "../../folders/foldersControl";
import { fetchCases } from "../../folders/[folderId]/cases/caseControl";
@@ -121,11 +121,18 @@ export default function RunEditor({ projectId, runId }: Props) {
isInclude: boolean,
clickedTestCaseId: number
) => {
let createdRunCase: RunCaseType;
if (isInclude) {
createdRunCase = await createRunCase(runId, clickedTestCaseId);
const createdRunCase = await createRunCase(runId, clickedTestCaseId);
setRunCases((prevRunCases) => {
return [...prevRunCases, createdRunCase];
});
} else {
await deleteRunCase(runId, clickedTestCaseId);
setRunCases((prevRunCases) => {
return prevRunCases.filter(
(runCase) => runCase.caseId !== clickedTestCaseId
);
});
}
setTestCases((prevTestCases) => {
@@ -136,27 +143,16 @@ export default function RunEditor({ projectId, runId }: Props) {
return testCase;
});
});
if (isInclude) {
setRunCases((prevRunCases) => {
return [...prevRunCases, createdRunCase];
});
} else {
setRunCases((prevRunCases) => {
return prevRunCases.filter(
(runCase) => runCase.caseId !== clickedTestCaseId
);
});
}
};
const onIncludeExcludeClick = async (isInclude: boolean) => {
let keys = [];
const handleBulkIncludeExcludeCases = async (isInclude: boolean) => {
let keys: number[] = [];
if (selectedKeys === "all") {
keys = testcases.map((item) => item.id);
} else {
keys = testcases
keys = Array.from(selectedKeys).map(Number);
}
console.log(keys)
const runCaseInfo: RunCaseInfoType[] = keys.map((caseId) => ({
runId: runId,
@@ -164,11 +160,25 @@ export default function RunEditor({ projectId, runId }: Props) {
}));
if (isInclude) {
const createdRunCases = await bulkCreateRunCases(runCaseInfo);
console.log(createdRunCases)
setRunCases((prevRunCases) => [...prevRunCases, ...createdRunCases]);
} else {
await bulkDeleteRunCases(runCaseInfo);
setRunCases((prevRunCases) => {
return prevRunCases.filter((runCase) => {
return !runCaseInfo.some((info) => info.caseId === runCase.caseId);
});
});
}
setTestCases((prevTestCases) => {
return prevTestCases.map((testCase) => {
const isCaseIncluded = isInclude
? keys.includes(testCase.id)
: !keys.includes(testCase.id);
return { ...testCase, isIncluded: isCaseIncluded };
});
});
setSelectedKeys(new Set([]));
};
@@ -275,13 +285,13 @@ export default function RunEditor({ projectId, runId }: Props) {
<DropdownMenu aria-label="test case select actions">
<DropdownItem
startContent={<CopyPlus size={16} />}
onClick={() => onIncludeExcludeClick(true)}
onClick={() => handleBulkIncludeExcludeCases(true)}
>
Include selected cases in run
</DropdownItem>
<DropdownItem
startContent={<CopyMinus size={16} />}
onClick={() => onIncludeExcludeClick(false)}
onClick={() => handleBulkIncludeExcludeCases(false)}
>
Exclude selected cases from run
</DropdownItem>