autobaan/tests/unit/common/request.test.ts

80 lines
2.2 KiB
TypeScript

import dayjs from '../../../src/common/dayjs'
import {
validateJSONRequest,
ValidationError,
} from '../../../src/common/request'
describe('request', () => {
const testDate = dayjs().add(1, 'day')
describe('validateJSONRequest', () => {
test('should return ReservationRequest', async () => {
const body = {
username: 'collin',
password: '123abc',
dateRange: {
start: testDate.clone().toISOString(),
end: testDate.add(15, 'minutes').toISOString(),
},
opponent: {
id: '123',
name: 'collin',
},
}
const res = await validateJSONRequest(body)
expect(res).toBeDefined()
expect(res.dateRange.start.format()).toEqual(testDate.format())
})
test('should throw error for undefined body', async () => {
// @ts-expect-error undefined body
expect(() => validateJSONRequest(undefined)).rejects.toThrowError(
ValidationError
)
})
test('should throw error for invalid body', () => {
expect(() =>
validateJSONRequest({ username: '', password: '' })
).rejects.toThrowError(ValidationError)
})
test('should throw error for invalid date range', () => {
expect(() =>
validateJSONRequest({
username: 'test',
password: 'test',
dateRange: { start: 'a', end: 'a' },
opponent: { id: 1, name: 'test' },
})
).rejects.toThrowError(ValidationError)
})
test('should throw error for incorrect date range', () => {
expect(() =>
validateJSONRequest({
username: 'test',
password: 'test',
dateRange: { start: '2022-01-01', end: '2021-01-01' },
opponent: { id: 1, name: 'test' },
})
).rejects.toThrowError(ValidationError)
})
test('should throw error for incorrect date range', () => {
expect(() =>
validateJSONRequest({
username: 'test',
password: 'test',
dateRange: {
start: testDate.toString(),
end: testDate.add(15, 'minute').toString(),
},
opponent: { id: 1, name: 'test' },
})
).rejects.toThrowError(ValidationError)
})
})
})