65 lines
3.1 KiB
TypeScript
65 lines
3.1 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
import { LeagueTimezone } from './LeagueTimezone';
|
|
import { ScheduledRaceSlot } from './ScheduledRaceSlot';
|
|
|
|
describe('ScheduledRaceSlot', () => {
|
|
it('should create scheduled race slot', () => {
|
|
const timezone = LeagueTimezone.create('America/New_York');
|
|
const scheduledAt = new Date('2023-10-01T12:00:00Z');
|
|
const slot = new ScheduledRaceSlot({
|
|
roundNumber: 1,
|
|
scheduledAt,
|
|
timezone,
|
|
});
|
|
expect(slot.roundNumber).toBe(1);
|
|
expect(slot.scheduledAt).toBe(scheduledAt);
|
|
expect(slot.timezone).toBe(timezone);
|
|
});
|
|
|
|
it('should throw if roundNumber not positive integer', () => {
|
|
const timezone = LeagueTimezone.create('UTC');
|
|
const scheduledAt = new Date();
|
|
expect(() => new ScheduledRaceSlot({ roundNumber: 0, scheduledAt, timezone })).toThrow('ScheduledRaceSlot.roundNumber must be a positive integer');
|
|
expect(() => new ScheduledRaceSlot({ roundNumber: -1, scheduledAt, timezone })).toThrow('ScheduledRaceSlot.roundNumber must be a positive integer');
|
|
expect(() => new ScheduledRaceSlot({ roundNumber: 1.5, scheduledAt, timezone })).toThrow('ScheduledRaceSlot.roundNumber must be a positive integer');
|
|
});
|
|
|
|
it('should throw if scheduledAt not valid Date', () => {
|
|
const timezone = LeagueTimezone.create('UTC');
|
|
expect(() => new ScheduledRaceSlot({ roundNumber: 1, scheduledAt: new Date('invalid'), timezone })).toThrow('ScheduledRaceSlot.scheduledAt must be a valid Date');
|
|
});
|
|
|
|
it('should equal same slots', () => {
|
|
const timezone1 = LeagueTimezone.create('Europe/London');
|
|
const timezone2 = LeagueTimezone.create('Europe/London');
|
|
const date1 = new Date('2023-05-15T10:00:00Z');
|
|
const date2 = new Date('2023-05-15T10:00:00Z');
|
|
const s1 = new ScheduledRaceSlot({ roundNumber: 2, scheduledAt: date1, timezone: timezone1 });
|
|
const s2 = new ScheduledRaceSlot({ roundNumber: 2, scheduledAt: date2, timezone: timezone2 });
|
|
expect(s1.equals(s2)).toBe(true);
|
|
});
|
|
|
|
it('should not equal different round numbers', () => {
|
|
const timezone = LeagueTimezone.create('UTC');
|
|
const date = new Date();
|
|
const s1 = new ScheduledRaceSlot({ roundNumber: 1, scheduledAt: date, timezone });
|
|
const s2 = new ScheduledRaceSlot({ roundNumber: 2, scheduledAt: date, timezone });
|
|
expect(s1.equals(s2)).toBe(false);
|
|
});
|
|
|
|
it('should not equal different dates', () => {
|
|
const timezone = LeagueTimezone.create('UTC');
|
|
const s1 = new ScheduledRaceSlot({ roundNumber: 1, scheduledAt: new Date('2023-01-01'), timezone });
|
|
const s2 = new ScheduledRaceSlot({ roundNumber: 1, scheduledAt: new Date('2023-01-02'), timezone });
|
|
expect(s1.equals(s2)).toBe(false);
|
|
});
|
|
|
|
it('should not equal different timezones', () => {
|
|
const timezone1 = LeagueTimezone.create('UTC');
|
|
const timezone2 = LeagueTimezone.create('EST');
|
|
const date = new Date();
|
|
const s1 = new ScheduledRaceSlot({ roundNumber: 1, scheduledAt: date, timezone: timezone1 });
|
|
const s2 = new ScheduledRaceSlot({ roundNumber: 1, scheduledAt: date, timezone: timezone2 });
|
|
expect(s1.equals(s2)).toBe(false);
|
|
});
|
|
}); |