From 82633908a4b2ddd78dfe1c699bb5cbbbbc21dd71 Mon Sep 17 00:00:00 2001 From: Collin Duncan <3679940+cgduncan7@users.noreply.github.com> Date: Thu, 3 Apr 2025 16:44:11 +0200 Subject: [PATCH] Adding some unit tests for getting court slots based on date --- src/runner/baanreserveren/service.ts | 9 ++++-- test/unit/baanreserveren/service.spec.ts | 38 ++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 3 deletions(-) diff --git a/src/runner/baanreserveren/service.ts b/src/runner/baanreserveren/service.ts index 720ff6a..91b0264 100644 --- a/src/runner/baanreserveren/service.ts +++ b/src/runner/baanreserveren/service.ts @@ -86,13 +86,16 @@ const CourtRank: Record = { [CourtSlot.Thirteen]: 9, // no one likes upstairs } as const -enum StartTimeClass { +export enum StartTimeClass { First = 'first', Second = 'second', Third = 'third', } -const StartTimeClassCourtSlots: Record = { +export const StartTimeClassCourtSlots: Record< + StartTimeClass, + readonly CourtSlot[] +> = { [StartTimeClass.First]: [ CourtSlot.One, CourtSlot.Two, @@ -680,7 +683,7 @@ export class BaanReserverenService { return courtStatuses } - private getCourtSlotsForDate(date: Dayjs) { + public getCourtSlotsForDate(date: Dayjs) { const time = date.format('HH:mm') for (const [timeClass, times] of Object.entries(StartTimeClassStartTimes)) { if (times.includes(time)) { diff --git a/test/unit/baanreserveren/service.spec.ts b/test/unit/baanreserveren/service.spec.ts index d7d5a64..687356c 100644 --- a/test/unit/baanreserveren/service.spec.ts +++ b/test/unit/baanreserveren/service.spec.ts @@ -10,6 +10,8 @@ import { BAAN_RESERVEREN_ROOT_URL, BaanReserverenService, CourtSlot, + StartTimeClass, + StartTimeClassCourtSlots, } from '../../../src/runner/baanreserveren/service' import { EmptyPage } from '../../../src/runner/pages/empty' @@ -135,4 +137,40 @@ describe('baanreserveren.service', () => { }, ) }) + + describe.only('getCourtSlotsForDate', () => { + it.each([ + { + date: '2025-04-10T16:30:00.000Z', + expectedCourtSlots: StartTimeClassCourtSlots[StartTimeClass.First], + }, + { + date: '2025-04-10T16:45:00.000Z', + expectedCourtSlots: StartTimeClassCourtSlots[StartTimeClass.Third], + }, + { + date: '2025-04-10T17:00:00.000Z', + expectedCourtSlots: StartTimeClassCourtSlots[StartTimeClass.Second], + }, + { + date: '2025-01-10T17:30:00.000Z', + expectedCourtSlots: StartTimeClassCourtSlots[StartTimeClass.First], + }, + { + date: '2025-01-10T17:45:00.000Z', + expectedCourtSlots: StartTimeClassCourtSlots[StartTimeClass.Third], + }, + { + date: '2025-01-10T18:00:00.000Z', + expectedCourtSlots: StartTimeClassCourtSlots[StartTimeClass.Second], + }, + ])( + 'should get correct court slots for $date', + ({ date, expectedCourtSlots }) => { + expect(brService.getCourtSlotsForDate(dayjs(date))).toEqual( + expect.arrayContaining(expectedCourtSlots as CourtSlot[]), + ) + }, + ) + }) })