2021-11-24 00:00:22 +01:00
|
|
|
import dayjs from 'dayjs'
|
|
|
|
|
import { DateRange, Reservation } from '../../src/common/reservation'
|
|
|
|
|
|
2021-11-27 13:11:09 +01:00
|
|
|
describe('Reservation', () => {
|
|
|
|
|
test('will create correct possible dates', () => {
|
2021-11-28 13:06:52 +01:00
|
|
|
const startDate = dayjs().hour(12).minute(0).second(0).millisecond(0)
|
|
|
|
|
const endDate = startDate.add(1, 'hour')
|
2021-11-24 00:00:22 +01:00
|
|
|
const dateRange: DateRange = {
|
|
|
|
|
start: startDate,
|
|
|
|
|
end: endDate,
|
|
|
|
|
}
|
|
|
|
|
const res = new Reservation(dateRange, { id: 'collin', name: 'collin' })
|
|
|
|
|
|
|
|
|
|
expect(res.possibleDates).toHaveLength(5)
|
|
|
|
|
|
|
|
|
|
expect(res.possibleDates[0]).toEqual(startDate)
|
2021-11-27 13:11:09 +01:00
|
|
|
expect(res.possibleDates[1]).toEqual(startDate.add(15, 'minute'))
|
|
|
|
|
expect(res.possibleDates[2]).toEqual(startDate.add(30, 'minute'))
|
|
|
|
|
expect(res.possibleDates[3]).toEqual(startDate.add(45, 'minute'))
|
|
|
|
|
expect(res.possibleDates[4]).toEqual(startDate.add(60, 'minute'))
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
test.each([
|
|
|
|
|
{ reservationDate: dayjs().add(7, 'days'), expected: true },
|
|
|
|
|
{ reservationDate: dayjs().add(1, 'days'), expected: true },
|
|
|
|
|
{ reservationDate: dayjs().add(8, 'days'), expected: false },
|
|
|
|
|
])('will properly mark reservation availability according to date', ({ reservationDate, expected }) => {
|
|
|
|
|
const res = new Reservation({ start: reservationDate, end: reservationDate }, { id: 'collin', name: 'collin' })
|
|
|
|
|
expect(res.isAvailableForReservation()).toBe(expected)
|
2021-11-24 00:00:22 +01:00
|
|
|
})
|
|
|
|
|
})
|