Skip to content

Commit 7ac2761

Browse files
committed
🚨 Add tests for text or border colors (#1631)
1 parent 0d615c7 commit 7ac2761

File tree

1 file changed

+103
-0
lines changed

1 file changed

+103
-0
lines changed

src/test/lib/utils/task.test.ts

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,14 @@ import {
2020
compareByContestIdAndTaskId,
2121
removeTaskIndexFromTitle,
2222
getTaskTableHeaderName,
23+
toChangeTextColorIfNeeds,
24+
getTaskGradeLabel,
25+
toChangeBorderColorIfNeeds,
2326
} from '$lib/utils/task';
2427
import type { WorkBookTaskBase } from '$lib/types/workbook';
2528
import { ContestType } from '$lib/types/contest';
2629
import { type TaskResult, type TaskResults } from '$lib/types/task';
30+
import { TaskGrade } from '@prisma/client';
2731

2832
type TestCaseForTaskResults = {
2933
taskResults: TaskResults;
@@ -64,6 +68,13 @@ type TestCaseForTaskTableHeaderName = {
6468

6569
type TestCasesForTaskTableHeaderName = TestCaseForTaskTableHeaderName[];
6670

71+
type TestCaseForTaskGrade = {
72+
taskGrade: TaskGrade;
73+
expected: string;
74+
};
75+
76+
type TestCasesForTaskGrade = TestCaseForTaskGrade[];
77+
6778
describe('Task', () => {
6879
describe('task url', () => {
6980
describe('when contest ids and task ids for AtCoder are given', () => {
@@ -688,4 +699,96 @@ describe('Task', () => {
688699
);
689700
});
690701
});
702+
703+
describe('to change text color if needs', () => {
704+
describe('when task grades from 11Q to 1Q are given ', () => {
705+
const testCases: TestCasesForTaskGrade = [
706+
{ taskGrade: TaskGrade.Q11, expected: 'text-black' },
707+
{ taskGrade: TaskGrade.Q10, expected: 'text-black' },
708+
{ taskGrade: TaskGrade.Q6, expected: 'text-black' },
709+
{ taskGrade: TaskGrade.Q5, expected: 'text-black' },
710+
{ taskGrade: TaskGrade.Q2, expected: 'text-black' },
711+
{ taskGrade: TaskGrade.Q1, expected: 'text-black' },
712+
];
713+
714+
runTests(
715+
'toChangeTextColorIfNeeds',
716+
testCases,
717+
({ taskGrade, expected }: TestCaseForTaskGrade) => {
718+
expect(toChangeTextColorIfNeeds(getTaskGradeLabel(taskGrade))).toBe(expected);
719+
},
720+
);
721+
});
722+
723+
describe('when task grades from 1D to 5D are given', () => {
724+
const testCases: TestCasesForTaskGrade = [
725+
{ taskGrade: TaskGrade.D1, expected: 'text-white' },
726+
{ taskGrade: TaskGrade.D2, expected: 'text-white' },
727+
{ taskGrade: TaskGrade.D3, expected: 'text-white' },
728+
{ taskGrade: TaskGrade.D4, expected: 'text-white' },
729+
{ taskGrade: TaskGrade.D5, expected: 'text-white' },
730+
];
731+
732+
runTests(
733+
'toChangeTextColorIfNeeds',
734+
testCases,
735+
({ taskGrade, expected }: TestCaseForTaskGrade) => {
736+
expect(toChangeTextColorIfNeeds(getTaskGradeLabel(taskGrade))).toBe(expected);
737+
},
738+
);
739+
});
740+
741+
describe('when task grades 6D is given', () => {
742+
const testCases: TestCasesForTaskGrade = [
743+
{ taskGrade: TaskGrade.D6, expected: 'text-atcoder-bronze' },
744+
];
745+
746+
runTests(
747+
'toChangeTextColorIfNeeds',
748+
testCases,
749+
({ taskGrade, expected }: TestCaseForTaskGrade) => {
750+
expect(toChangeTextColorIfNeeds(getTaskGradeLabel(taskGrade))).toBe(expected);
751+
},
752+
);
753+
});
754+
});
755+
756+
describe('to change border color if needs', () => {
757+
describe('when task grades from 11Q to 5D are given', () => {
758+
const testCases: TestCasesForTaskGrade = [
759+
{ taskGrade: TaskGrade.Q11, expected: 'border-white' },
760+
{ taskGrade: TaskGrade.Q10, expected: 'border-white' },
761+
{ taskGrade: TaskGrade.Q7, expected: 'border-white' },
762+
{ taskGrade: TaskGrade.Q6, expected: 'border-white' },
763+
{ taskGrade: TaskGrade.Q2, expected: 'border-white' },
764+
{ taskGrade: TaskGrade.Q1, expected: 'border-white' },
765+
{ taskGrade: TaskGrade.D1, expected: 'border-white' },
766+
{ taskGrade: TaskGrade.D2, expected: 'border-white' },
767+
{ taskGrade: TaskGrade.D4, expected: 'border-white' },
768+
{ taskGrade: TaskGrade.D5, expected: 'border-white' },
769+
];
770+
771+
runTests(
772+
'toChangeBorderColorIfNeeds',
773+
testCases,
774+
({ taskGrade, expected }: TestCaseForTaskGrade) => {
775+
expect(toChangeBorderColorIfNeeds(getTaskGradeLabel(taskGrade))).toBe(expected);
776+
},
777+
);
778+
});
779+
780+
describe('when task grade 6D is given ', () => {
781+
const testCases: TestCasesForTaskGrade = [
782+
{ taskGrade: TaskGrade.D6, expected: 'border-atcoder-bronze' },
783+
];
784+
785+
runTests(
786+
'toChangeBorderColorIfNeeds',
787+
testCases,
788+
({ taskGrade, expected }: TestCaseForTaskGrade) => {
789+
expect(toChangeBorderColorIfNeeds(getTaskGradeLabel(taskGrade))).toBe(expected);
790+
},
791+
);
792+
});
793+
});
691794
});

0 commit comments

Comments
 (0)