refactor
This commit is contained in:
73
core/racing/domain/entities/LeagueScoringConfig.test.ts
Normal file
73
core/racing/domain/entities/LeagueScoringConfig.test.ts
Normal file
@@ -0,0 +1,73 @@
|
||||
import { describe, it, expect } from 'vitest';
|
||||
import { LeagueScoringConfig } from './LeagueScoringConfig';
|
||||
import type { ChampionshipConfig } from '../types/ChampionshipConfig';
|
||||
import { PointsTable } from '../value-objects/PointsTable';
|
||||
|
||||
const mockPointsTable = new PointsTable({ 1: 25, 2: 18, 3: 15 });
|
||||
|
||||
const mockChampionshipConfig: ChampionshipConfig = {
|
||||
id: 'champ1',
|
||||
name: 'Championship 1',
|
||||
type: 'driver',
|
||||
sessionTypes: ['main'],
|
||||
pointsTableBySessionType: {
|
||||
practice: mockPointsTable,
|
||||
qualifying: mockPointsTable,
|
||||
q1: mockPointsTable,
|
||||
q2: mockPointsTable,
|
||||
q3: mockPointsTable,
|
||||
sprint: mockPointsTable,
|
||||
main: mockPointsTable,
|
||||
timeTrial: mockPointsTable,
|
||||
},
|
||||
dropScorePolicy: { strategy: 'none' },
|
||||
};
|
||||
|
||||
describe('LeagueScoringConfig', () => {
|
||||
it('should create a league scoring config', () => {
|
||||
const config = LeagueScoringConfig.create({
|
||||
seasonId: 'season1',
|
||||
championships: [mockChampionshipConfig],
|
||||
});
|
||||
|
||||
expect(config.id.toString()).toBe('scoring-config-season1');
|
||||
expect(config.seasonId.toString()).toBe('season1');
|
||||
expect(config.scoringPresetId).toBeUndefined();
|
||||
expect(config.championships).toEqual([mockChampionshipConfig]);
|
||||
});
|
||||
|
||||
it('should create with custom id', () => {
|
||||
const config = LeagueScoringConfig.create({
|
||||
id: 'custom-id',
|
||||
seasonId: 'season1',
|
||||
scoringPresetId: 'preset1',
|
||||
championships: [mockChampionshipConfig],
|
||||
});
|
||||
|
||||
expect(config.id.toString()).toBe('custom-id');
|
||||
expect(config.scoringPresetId?.toString()).toBe('preset1');
|
||||
});
|
||||
|
||||
it('should throw on invalid seasonId', () => {
|
||||
expect(() => LeagueScoringConfig.create({
|
||||
seasonId: '',
|
||||
championships: [mockChampionshipConfig],
|
||||
})).toThrow('Season ID is required');
|
||||
});
|
||||
|
||||
it('should throw on empty championships', () => {
|
||||
expect(() => LeagueScoringConfig.create({
|
||||
seasonId: 'season1',
|
||||
championships: [],
|
||||
})).toThrow('At least one championship is required');
|
||||
});
|
||||
|
||||
it('should create with multiple championships', () => {
|
||||
const config = LeagueScoringConfig.create({
|
||||
seasonId: 'season1',
|
||||
championships: [mockChampionshipConfig, { ...mockChampionshipConfig, id: 'champ2' }],
|
||||
});
|
||||
|
||||
expect(config.championships).toHaveLength(2);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user