Files
edr-platform/apps/edr-freight-api/src/modules/contracts/do-collection-dates.spec.ts

47 lines
1.5 KiB
TypeScript

import { BadRequestException } from '@nestjs/common';
import { assertDoCollectionDates } from './contract-clearance.util';
describe('assertDoCollectionDates', () => {
it('requires both dates', () => {
expect(() => assertDoCollectionDates(undefined)).toThrow(BadRequestException);
expect(() =>
assertDoCollectionDates({ vesselArrivalDate: '2026-07-01' }),
).toThrow(/DO collected date is required/);
expect(() =>
assertDoCollectionDates({ doCollectedDate: '2026-07-01' }),
).toThrow(/Vessel arrival date is required/);
// Whitespace is not a date.
expect(() =>
assertDoCollectionDates({ vesselArrivalDate: ' ', doCollectedDate: ' ' }),
).toThrow(BadRequestException);
});
it('rejects a DO collected before the vessel arrived', () => {
expect(() =>
assertDoCollectionDates({
vesselArrivalDate: '2026-07-10',
doCollectedDate: '2026-07-09',
}),
).toThrow(/cannot be earlier than the vessel arrival date/);
});
it('normalizes an ISO datetime down to its date part', () => {
expect(
assertDoCollectionDates({
vesselArrivalDate: '2026-07-10T21:00:00.000Z',
doCollectedDate: '2026-07-10T05:00:00.000Z',
}),
).toEqual({ vesselArrivalDate: '2026-07-10', doCollectedDate: '2026-07-10' });
});
it('rejects a malformed date', () => {
expect(() =>
assertDoCollectionDates({
vesselArrivalDate: '10/07/2026',
doCollectedDate: '2026-07-10',
}),
).toThrow(/not a valid date/);
});
});