First integration of requester and scheduler workers Added password hashing functions Adding initial database integration
68 lines
2.2 KiB
TypeScript
68 lines
2.2 KiB
TypeScript
import dayjs, { Dayjs } from 'dayjs'
|
|
import { DateRange, Reservation } from '../../src/common/reservation'
|
|
|
|
describe('Reservation', () => {
|
|
test('will create correct possible dates', () => {
|
|
const startDate = dayjs().hour(12).minute(0).second(0).millisecond(0)
|
|
const endDate = startDate.add(1, 'hour')
|
|
const dateRange: DateRange = {
|
|
start: startDate,
|
|
end: endDate,
|
|
}
|
|
const res = new Reservation(
|
|
{ username: 'collin', password: 'password' },
|
|
dateRange,
|
|
{
|
|
id: 'collin',
|
|
name: 'collin',
|
|
}
|
|
)
|
|
|
|
expect(res.possibleDates).toHaveLength(5)
|
|
|
|
expect(res.possibleDates[0]).toEqual(startDate)
|
|
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(
|
|
{ username: 'collin', password: 'collin' },
|
|
{ start: reservationDate, end: reservationDate },
|
|
{ id: 'collin', name: 'collin' }
|
|
)
|
|
expect(res.isAvailableForReservation()).toBe(expected)
|
|
}
|
|
)
|
|
|
|
const zeroTime = (date: Dayjs): Dayjs =>
|
|
date.hour(0).minute(0).second(0).millisecond(0)
|
|
test.each([
|
|
{
|
|
date: dayjs().add(8, 'days'),
|
|
expected: zeroTime(dayjs().add(1, 'days')),
|
|
},
|
|
{
|
|
date: dayjs().add(31, 'days'),
|
|
expected: zeroTime(dayjs().add(24, 'days')),
|
|
},
|
|
])(
|
|
'should return value indicating if reservation is possible now',
|
|
({ date, expected }) => {
|
|
const res = new Reservation(
|
|
{ username: 'collin', password: 'collin' },
|
|
{ start: date, end: date },
|
|
{ id: 'collin', name: 'collin' }
|
|
)
|
|
expect(res.getAllowedReservationDate()).toStrictEqual(expected)
|
|
}
|
|
)
|
|
})
|