Adding some unit tests for getting court slots based on date

This commit is contained in:
Collin Duncan 2025-04-03 16:44:11 +02:00
parent 5b109226e6
commit 82633908a4
No known key found for this signature in database
2 changed files with 44 additions and 3 deletions

View file

@ -86,13 +86,16 @@ const CourtRank: Record<CourtSlot, number> = {
[CourtSlot.Thirteen]: 9, // no one likes upstairs
} as const
enum StartTimeClass {
export enum StartTimeClass {
First = 'first',
Second = 'second',
Third = 'third',
}
const StartTimeClassCourtSlots: Record<StartTimeClass, readonly CourtSlot[]> = {
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)) {

View file

@ -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[]),
)
},
)
})
})