Files
gridpilot.gg/core/racing/domain/value-objects/SeasonScoringConfig.test.ts
2026-01-16 19:46:49 +01:00

57 lines
1.6 KiB
TypeScript

import { describe, expect, it } from 'vitest';
import {
RacingDomainValidationError,
} from '../errors/RacingDomainError';
import { SeasonScoringConfig } from './SeasonScoringConfig';
describe('SeasonScoringConfig', () => {
it('constructs from preset id and customScoringEnabled', () => {
const config = new SeasonScoringConfig({
scoringPresetId: 'club-default',
customScoringEnabled: true,
});
expect(config.scoringPresetId).toBe('club-default');
expect(config.customScoringEnabled).toBe(true);
expect(config.props.scoringPresetId).toBe('club-default');
expect(config.props.customScoringEnabled).toBe(true);
});
it('normalizes customScoringEnabled to false when omitted', () => {
const config = new SeasonScoringConfig({
scoringPresetId: 'sprint-main-driver',
});
expect(config.customScoringEnabled).toBe(false);
expect(config.props.customScoringEnabled).toBeUndefined();
});
it('throws when scoringPresetId is empty', () => {
expect(
() =>
new SeasonScoringConfig({
scoringPresetId: ' ',
}),
).toThrow(RacingDomainValidationError);
});
it('equals compares by preset id and customScoringEnabled', () => {
const a = new SeasonScoringConfig({
scoringPresetId: 'club-default',
customScoringEnabled: false,
});
const b = new SeasonScoringConfig({
scoringPresetId: 'club-default',
customScoringEnabled: false,
});
const c = new SeasonScoringConfig({
scoringPresetId: 'club-default',
customScoringEnabled: true,
});
expect(a.equals(b)).toBe(true);
expect(a.equals(c)).toBe(false);
});
});