Adding some unit tests for getting court slots based on date
This commit is contained in:
parent
5b109226e6
commit
82633908a4
2 changed files with 44 additions and 3 deletions
|
|
@ -86,13 +86,16 @@ const CourtRank: Record<CourtSlot, number> = {
|
||||||
[CourtSlot.Thirteen]: 9, // no one likes upstairs
|
[CourtSlot.Thirteen]: 9, // no one likes upstairs
|
||||||
} as const
|
} as const
|
||||||
|
|
||||||
enum StartTimeClass {
|
export enum StartTimeClass {
|
||||||
First = 'first',
|
First = 'first',
|
||||||
Second = 'second',
|
Second = 'second',
|
||||||
Third = 'third',
|
Third = 'third',
|
||||||
}
|
}
|
||||||
|
|
||||||
const StartTimeClassCourtSlots: Record<StartTimeClass, readonly CourtSlot[]> = {
|
export const StartTimeClassCourtSlots: Record<
|
||||||
|
StartTimeClass,
|
||||||
|
readonly CourtSlot[]
|
||||||
|
> = {
|
||||||
[StartTimeClass.First]: [
|
[StartTimeClass.First]: [
|
||||||
CourtSlot.One,
|
CourtSlot.One,
|
||||||
CourtSlot.Two,
|
CourtSlot.Two,
|
||||||
|
|
@ -680,7 +683,7 @@ export class BaanReserverenService {
|
||||||
return courtStatuses
|
return courtStatuses
|
||||||
}
|
}
|
||||||
|
|
||||||
private getCourtSlotsForDate(date: Dayjs) {
|
public getCourtSlotsForDate(date: Dayjs) {
|
||||||
const time = date.format('HH:mm')
|
const time = date.format('HH:mm')
|
||||||
for (const [timeClass, times] of Object.entries(StartTimeClassStartTimes)) {
|
for (const [timeClass, times] of Object.entries(StartTimeClassStartTimes)) {
|
||||||
if (times.includes(time)) {
|
if (times.includes(time)) {
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,8 @@ import {
|
||||||
BAAN_RESERVEREN_ROOT_URL,
|
BAAN_RESERVEREN_ROOT_URL,
|
||||||
BaanReserverenService,
|
BaanReserverenService,
|
||||||
CourtSlot,
|
CourtSlot,
|
||||||
|
StartTimeClass,
|
||||||
|
StartTimeClassCourtSlots,
|
||||||
} from '../../../src/runner/baanreserveren/service'
|
} from '../../../src/runner/baanreserveren/service'
|
||||||
import { EmptyPage } from '../../../src/runner/pages/empty'
|
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[]),
|
||||||
|
)
|
||||||
|
},
|
||||||
|
)
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue