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,23 +194,19 @@ 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>
<Button <div className="flex items-center">
startContent={<Save size={16} />} {isDirty && <Circle size={8} color="#525252" fill="#525252" className="me-1" />}
size="sm" <Button
isDisabled={!context.isProjectReporter(Number(projectId))} startContent={<Save size={16} />}
color="primary" size="sm"
isLoading={isUpdating} isDisabled={!context.isProjectReporter(Number(projectId))}
onPress={async () => { color="primary"
setIsUpdating(true); isLoading={isUpdating}
await updateRun(context.token.access_token, testRun); onPress={onSave}
await updateRunCases(context.token.access_token, Number(runId), testCases); >
resetEditStateAll(); {isUpdating ? messages.updating : messages.update}
setIsUpdating(false); </Button>
setIsDirty(false); </div>
}}
>
{isUpdating ? messages.updating : messages.update}
</Button>
</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">