fix: init test cases when update test run

This commit is contained in:
Takeshi Kimata
2024-08-03 08:26:52 +09:00
parent fd3adfc741
commit ed99d5012f

View File

@@ -18,7 +18,7 @@ import {
DropdownMenu, DropdownMenu,
DropdownItem, DropdownItem,
} from '@nextui-org/react'; } from '@nextui-org/react';
import { Save, ArrowLeft, Folder, ChevronDown, CopyPlus, CopyMinus, RotateCw } from 'lucide-react'; import { Save, Circle, ArrowLeft, Folder, ChevronDown, CopyPlus, CopyMinus, RotateCw } from 'lucide-react';
import RunProgressChart from './RunPregressDonutChart'; import RunProgressChart from './RunPregressDonutChart';
import TestCaseSelector from './TestCaseSelector'; import TestCaseSelector from './TestCaseSelector';
import { testRunStatus } from '@/config/selection'; import { testRunStatus } from '@/config/selection';
@@ -94,6 +94,16 @@ export default function RunEditor({
setRunStatusCounts(statusCounts); setRunStatusCounts(statusCounts);
}; };
const initTestCases = async () => {
const casesData = await fetchProjectCases(context.token.access_token, Number(projectId));
casesData.forEach((testCase: CaseType) => {
if (testCase.RunCases && testCase.RunCases.length > 0) {
testCase.RunCases[0].editState = 'notChanged';
}
});
setTestCases(casesData);
};
useEffect(() => { useEffect(() => {
async function fetchDataEffect() { async function fetchDataEffect() {
if (!context.isSignedIn()) { if (!context.isSignedIn()) {
@@ -105,14 +115,7 @@ export default function RunEditor({
const foldersData = await fetchFolders(context.token.access_token, Number(projectId)); const foldersData = await fetchFolders(context.token.access_token, Number(projectId));
setFolders(foldersData); setFolders(foldersData);
setSelectedFolder(foldersData[0]); setSelectedFolder(foldersData[0]);
initTestCases();
const casesData = await fetchProjectCases(context.token.access_token, Number(projectId));
casesData.forEach((testCase: CaseType) => {
if (testCase.RunCases && testCase.RunCases.length > 0) {
testCase.RunCases[0].editState = 'notChanged';
}
});
setTestCases(casesData);
} catch (error: any) { } catch (error: any) {
console.error('Error in effect:', error.message); console.error('Error in effect:', error.message);
} }
@@ -163,16 +166,13 @@ export default function RunEditor({
setSelectedKeys(new Set([])); setSelectedKeys(new Set([]));
}; };
const resetEditStateAll = () => { const onSave = async () => {
const newTestCases = [...testCases]; setIsUpdating(true);
newTestCases.forEach((itr) => { await updateRun(context.token.access_token, testRun);
if (itr.RunCases && itr.RunCases.length > 0) { await updateRunCases(context.token.access_token, Number(runId), testCases);
itr.RunCases[0].editState = 'notChanged'; await initTestCases();
} setIsUpdating(false);
}); setIsDirty(false);
setTestCases(newTestCases);
setSelectedKeys(new Set([]));
}; };
const baseClass = ''; const baseClass = '';
@@ -194,24 +194,20 @@ export default function RunEditor({
</Tooltip> </Tooltip>
<h3 className="font-bold ms-2">{testRun.name}</h3> <h3 className="font-bold ms-2">{testRun.name}</h3>
</div> </div>
<div className="flex items-center">
{isDirty && <Circle size={8} color="#525252" fill="#525252" className="me-1" />}
<Button <Button
startContent={<Save size={16} />} startContent={<Save size={16} />}
size="sm" size="sm"
isDisabled={!context.isProjectReporter(Number(projectId))} isDisabled={!context.isProjectReporter(Number(projectId))}
color="primary" color="primary"
isLoading={isUpdating} isLoading={isUpdating}
onPress={async () => { onPress={onSave}
setIsUpdating(true);
await updateRun(context.token.access_token, testRun);
await updateRunCases(context.token.access_token, Number(runId), testCases);
resetEditStateAll();
setIsUpdating(false);
setIsDirty(false);
}}
> >
{isUpdating ? messages.updating : messages.update} {isUpdating ? messages.updating : messages.update}
</Button> </Button>
</div> </div>
</div>
<div className="container mx-auto max-w-5xl pt-6 px-6 flex-grow"> <div className="container mx-auto max-w-5xl pt-6 px-6 flex-grow">
<div className="flex"> <div className="flex">