Files
gridpilot.gg/adapters/bootstrap/racing/RacingRaceFactory.test.ts
2026-01-20 18:48:14 +01:00

47 lines
2.0 KiB
TypeScript

import { RacingRaceFactory } from './RacingRaceFactory';
import { RacingLeagueFactory } from './RacingLeagueFactory';
import { RacingTrackFactory } from './RacingTrackFactory';
import { RacingDriverFactory } from './RacingDriverFactory';
import { describe, expect, it } from 'vitest';
describe('RacingRaceFactory', () => {
it('creates upcoming races in the future', () => {
const baseDate = new Date('2024-01-01');
const driverFactory = new RacingDriverFactory(10, baseDate, 'inmemory');
const drivers = driverFactory.create();
const leagueFactory = new RacingLeagueFactory(baseDate, drivers, 'inmemory');
const leagues = leagueFactory.create();
const trackFactory = new RacingTrackFactory();
const tracks = trackFactory.create();
const raceFactory = new RacingRaceFactory(baseDate, 'inmemory');
const races = raceFactory.create(leagues, tracks);
const scheduledRaces = races.filter((r) => r.status.toString() === 'scheduled');
expect(scheduledRaces.length).toBeGreaterThan(0);
const now = new Date();
const upcomingRaces = scheduledRaces.filter((r) => r.scheduledAt > now);
expect(upcomingRaces.length).toBeGreaterThan(0);
});
it('creates races with various statuses', () => {
const baseDate = new Date('2024-01-01');
const driverFactory = new RacingDriverFactory(10, baseDate, 'inmemory');
const drivers = driverFactory.create();
const leagueFactory = new RacingLeagueFactory(baseDate, drivers, 'inmemory');
const leagues = leagueFactory.create();
const trackFactory = new RacingTrackFactory();
const tracks = trackFactory.create();
const raceFactory = new RacingRaceFactory(baseDate, 'inmemory');
const races = raceFactory.create(leagues, tracks);
const statuses = new Set(races.map((r) => r.status.toString()));
expect(statuses.has('scheduled')).toBe(true);
expect(statuses.has('running')).toBe(true);
expect(statuses.has('completed')).toBe(true);
expect(statuses.has('cancelled')).toBe(true);
});
});