refactor: test run case status messages duplication

This commit is contained in:
Takeshi Kimata
2024-07-21 15:30:04 +09:00
parent f797ae2581
commit 1da19ed43c
12 changed files with 91 additions and 69 deletions

View File

@@ -38,7 +38,7 @@ import { TokenContext } from '@/utils/TokenProvider';
import { useTheme } from 'next-themes';
import { useFormGuard } from '@/utils/formGuard';
import { PriorityMessages } from '@/types/priority';
import { TestStatusMessages } from '@/types/testStatus';
import { TestRunCaseStatusMessages } from '@/types/testRunCaseStatus';
const defaultTestRun = {
id: 0,
@@ -55,12 +55,19 @@ type Props = {
projectId: string;
runId: string;
messages: RunMessages;
statusMessages: TestStatusMessages;
testRunCaseStatusMessages: TestRunCaseStatusMessages;
priorityMessages: PriorityMessages;
locale: string;
};
export default function RunEditor({ projectId, runId, messages, statusMessages, priorityMessages, locale }: Props) {
export default function RunEditor({
projectId,
runId,
messages,
testRunCaseStatusMessages,
priorityMessages,
locale,
}: Props) {
const context = useContext(TokenContext);
const { theme, setTheme } = useTheme();
const [testRun, setTestRun] = useState<RunType>(defaultTestRun);
@@ -206,7 +213,11 @@ export default function RunEditor({ projectId, runId, messages, statusMessages,
</Tooltip>
</div>
<RunProgressChart statusCounts={runStatusCounts} statusMessages={statusMessages} theme={theme} />
<RunProgressChart
statusCounts={runStatusCounts}
testRunCaseStatusMessages={testRunCaseStatusMessages}
theme={theme}
/>
</div>
</div>
<div className="flex-grow">
@@ -318,7 +329,7 @@ export default function RunEditor({ projectId, runId, messages, statusMessages,
onIncludeCase={(includeTestId) => handleIncludeExcludeCase(true, includeTestId)}
onExcludeCase={(excludeCaseId) => handleIncludeExcludeCase(false, excludeCaseId)}
messages={messages}
statusMessages={statusMessages}
testRunCaseStatusMessages={testRunCaseStatusMessages}
priorityMessages={priorityMessages}
/>
</div>

View File

@@ -3,16 +3,16 @@ import { useState, useEffect } from 'react';
import dynamic from 'next/dynamic';
import { testRunCaseStatus } from '@/config/selection';
import { RunStatusCountType } from '@/types/run';
import { TestStatusMessages } from '@/types/testStatus';
import { TestRunCaseStatusMessages } from '@/types/testRunCaseStatus';
const Chart = dynamic(() => import('react-apexcharts'), { ssr: false });
type Props = {
statusCounts: RunStatusCountType[];
statusMessages: TestStatusMessages;
testRunCaseStatusMessages: TestRunCaseStatusMessages;
theme: string | undefined;
};
export default function RunProgressDounut({ statusCounts, statusMessages, theme }: Props) {
export default function RunProgressDounut({ statusCounts, testRunCaseStatusMessages, theme }: Props) {
const [chartData, setChartData] = useState({
series: [],
options: {
@@ -29,7 +29,7 @@ export default function RunProgressDounut({ statusCounts, statusMessages, theme
return found ? found.count : 0;
});
const labels = testRunCaseStatus.map((entry) => statusMessages[entry.uid]);
const labels = testRunCaseStatus.map((entry) => testRunCaseStatusMessages[entry.uid]);
const colors = testRunCaseStatus.map((entry) => entry.chartColor);
const legend = {
labels: {

View File

@@ -32,7 +32,7 @@ import { RunMessages } from '@/types/run';
import TestCaseDetailDialog from './TestCaseDetailDialog';
import { PriorityMessages } from '@/types/priority';
import TestCasePriority from '@/components/TestCasePriority';
import { TestStatusMessages } from '@/types/testStatus';
import { TestRunCaseStatusMessages } from '@/types/testRunCaseStatus';
type Props = {
cases: CaseType[];
@@ -43,7 +43,7 @@ type Props = {
onIncludeCase: (includeCaseId: number) => {};
onExcludeCase: (excludeCaseId: number) => {};
messages: RunMessages;
statusMessages: TestStatusMessages;
testRunCaseStatusMessages: TestRunCaseStatusMessages;
priorityMessages: PriorityMessages;
};
@@ -56,7 +56,7 @@ export default function TestCaseSelector({
onIncludeCase,
onExcludeCase,
messages,
statusMessages,
testRunCaseStatusMessages,
priorityMessages,
}: Props) {
const headerColumns = [
@@ -160,7 +160,9 @@ export default function TestCaseSelector({
startContent={isIncluded && renderStatusIcon(testRunCaseStatus[runStatus].uid)}
endContent={isIncluded && <ChevronDown size={16} />}
>
<span className="w-12">{isIncluded && statusMessages[testRunCaseStatus[runStatus].uid]}</span>
<span className="w-12">
{isIncluded && testRunCaseStatusMessages[testRunCaseStatus[runStatus].uid]}
</span>
</Button>
</DropdownTrigger>
<DropdownMenu disabledKeys={disabledStatusKeys} aria-label="test case actions">
@@ -170,7 +172,7 @@ export default function TestCaseSelector({
startContent={renderStatusIcon(runCaseStatus.uid)}
onPress={() => onChangeStatus(testCase.id, index)}
>
{statusMessages[runCaseStatus.uid]}
{testRunCaseStatusMessages[runCaseStatus.uid]}
</DropdownItem>
))}
</DropdownMenu>

View File

@@ -2,7 +2,7 @@ import RunEditor from './RunEditor';
import { useTranslations } from 'next-intl';
import { RunMessages } from '@/types/run';
import { PriorityMessages } from '@/types/priority';
import { TestStatusMessages } from '@/types/testStatus';
import { TestRunCaseStatusMessages } from '@/types/testRunCaseStatus';
export default function Page({ params }: { params: { projectId: string; runId: string; locale: string } }) {
const t = useTranslations('Run');
@@ -38,13 +38,13 @@ export default function Page({ params }: { params: { projectId: string; runId: s
close: t('close'),
};
const st = useTranslations('Status');
const statusMessages: TestStatusMessages = {
untested: st('untested'),
passed: st('passed'),
failed: st('failed'),
retest: st('retest'),
skipped: st('skipped'),
const rcst = useTranslations('RunCaseStatus');
const testRunCaseStatusMessages: TestRunCaseStatusMessages = {
untested: rcst('untested'),
passed: rcst('passed'),
failed: rcst('failed'),
retest: rcst('retest'),
skipped: rcst('skipped'),
};
const pt = useTranslations('Priority');
@@ -60,7 +60,7 @@ export default function Page({ params }: { params: { projectId: string; runId: s
projectId={params.projectId}
runId={params.runId}
messages={messages}
statusMessages={statusMessages}
testRunCaseStatusMessages={testRunCaseStatusMessages}
priorityMessages={priorityMessages}
locale={params.locale}
/>