Skip to content

Commit df9c993

Browse files
authored
Ax/scrum 177 Refactor constants.ts file with a Map instead of a Switch Statement (#147)
1 parent c20790b commit df9c993

File tree

1 file changed

+22
-30
lines changed

1 file changed

+22
-30
lines changed

course-matrix/backend/src/constants/constants.ts

Lines changed: 22 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,32 @@
1+
const codeToYearMap = new Map<string, number>([
2+
["A", 1],
3+
["B", 2],
4+
["C", 3],
5+
["D", 4],
6+
]);
7+
8+
const yearToCodeMap = new Map<number, string>([
9+
[1, "A"],
10+
[2, "B"],
11+
[3, "C"],
12+
[4, "D"],
13+
]);
14+
115
export const codeToYear = (courseCode: string) => {
216
const letter = courseCode.slice(3, 4);
3-
switch (letter) {
4-
case "A":
5-
return 1;
6-
break;
7-
case "B":
8-
return 2;
9-
break;
10-
case "C":
11-
return 3;
12-
break;
13-
case "D":
14-
return 4;
15-
break;
16-
default:
17-
break;
17+
const year = codeToYearMap.get(letter);
18+
if (year === undefined) {
19+
throw new Error(`Invalid course code: ${courseCode}`);
1820
}
21+
return year;
1922
};
2023

2124
export const yearToCode = (year: number) => {
22-
switch (year) {
23-
case 1:
24-
return "A";
25-
break;
26-
case 2:
27-
return "B";
28-
break;
29-
case 3:
30-
return "C";
31-
break;
32-
case 4:
33-
return "D";
34-
break;
35-
default:
36-
break;
25+
const letter = yearToCodeMap.get(year);
26+
if (letter === undefined) {
27+
throw new Error(`Invalid year: ${year}`);
3728
}
29+
return letter;
3830
};
3931

4032
// true - notifications will be tested by mocking current Date

0 commit comments

Comments
 (0)