Skip to content

Commit b717cf8

Browse files
committed
feat: add format unit tests
1 parent ef5c3be commit b717cf8

File tree

3 files changed

+32
-8
lines changed

3 files changed

+32
-8
lines changed

website/src/utils/optimiser.test.ts

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { CS1010S, CS3216, MA1521 } from '__mocks__/modules';
2-
import { LessonOption } from 'types/optimiser';
2+
import { LessonOption, TimeRange } from 'types/optimiser';
33
import { Module, WorkingDays } from 'types/modules';
44
import { shuffle } from 'lodash';
55
import { OptimiseResponse } from 'apis/optimiser';
@@ -23,6 +23,9 @@ import {
2323
isSaturdayInOptions,
2424
sortDays,
2525
getUnassignedLessonOptions,
26+
getOptimiserAcadYear,
27+
getTimeValues,
28+
getOptimiserTime,
2629
} from './optimiser';
2730
import { getModuleTimetable } from './modules';
2831

@@ -35,11 +38,25 @@ describe('getLessonKey', () => {
3538
});
3639

3740
describe('getDisplayText', () => {
38-
it('should format display text', () => {
41+
it('getDisplayText should format display text', () => {
3942
expect(getDisplayText('CS1010S', 'Lecture')).toEqual('CS1010S Lecture');
4043
});
4144
});
4245

46+
describe('getOptimiserAcadYear', () => {
47+
it('getOptimiserAcadYear should format academic year', () => {
48+
expect(getOptimiserAcadYear('2024/2025')).toEqual('2024-2025');
49+
});
50+
});
51+
52+
describe('getOptimiserTime', () => {
53+
it('getOptimiserTime should format time', () => {
54+
expect(getOptimiserTime('0800')).toEqual('08:00');
55+
expect(getOptimiserTime('1000')).toEqual('10:00');
56+
expect(getOptimiserTime('1030')).toEqual('10:30');
57+
});
58+
});
59+
4360
describe('getLessonTypes', () => {
4461
it('should map lessons to unique lesson types', () => {
4562
const lessons = getModuleTimetable(defaultModule, 1);
@@ -243,3 +260,14 @@ describe('isSaturdayInOptions', () => {
243260
expect(isSaturdayInOptions(lessonOptions)).toBe(true);
244261
});
245262
});
263+
264+
describe('getTimeValues', () => {
265+
it('should return a range of times', () => {
266+
const timeRange: TimeRange = {
267+
earliest: '0800',
268+
latest: '1030',
269+
};
270+
const expected = ['0800', '0830', '0900', '0930', '1000', '1030'];
271+
expect(getTimeValues(timeRange)).toEqual(expected);
272+
});
273+
});

website/src/utils/optimiser.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -173,9 +173,6 @@ export function isSaturdayInOptions(lessonOptions: LessonOption[]): boolean {
173173
.some((day) => day === 'Saturday');
174174
}
175175

176-
// TOOD: check styles
177-
178-
// TODO: add unit tests
179176
export function getTimeValues(timeRange: TimeRange) {
180177
const earliestIndex = convertTimeToIndex(timeRange.earliest);
181178
const latestIndex = convertTimeToIndex(timeRange.latest) + 1;

website/src/views/optimiser/OptimiserContent.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import { getSemesterModules } from 'utils/timetables';
1111
import {
1212
getFreeDayConflicts,
1313
getLessonOptions,
14+
getOptimiserAcadYear,
1415
getRecordedLessonOptions,
1516
getUnassignedLessonOptions,
1617
isSaturdayInOptions,
@@ -74,11 +75,9 @@ const OptimiserContent: React.FC = () => {
7475
setIsOptimising(true);
7576
setError(null);
7677

77-
const acadYearFormatted = `${acadYear.split('/')[0]}-${acadYear.split('/')[1]}`;
78-
7978
const params: OptimiseRequest = {
8079
modules: Object.keys(timetable),
81-
acadYear: acadYearFormatted,
80+
acadYear: getOptimiserAcadYear(acadYear),
8281
acadSem: activeSemester,
8382
freeDays: Array.from(freeDays),
8483
earliestTime: lessonTimeRange.earliest,

0 commit comments

Comments
 (0)