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

61 lines
2.2 KiB
TypeScript

import { describe, expect, it } from 'vitest';
import { LeagueVisibility } from './LeagueVisibility';
describe('LeagueVisibility', () => {
it('should create ranked', () => {
const vis = LeagueVisibility.ranked();
expect(vis.type).toBe('ranked');
expect(vis.isRanked()).toBe(true);
expect(vis.isUnranked()).toBe(false);
});
it('should create unranked', () => {
const vis = LeagueVisibility.unranked();
expect(vis.type).toBe('unranked');
expect(vis.isRanked()).toBe(false);
expect(vis.isUnranked()).toBe(true);
});
it('should fromString', () => {
expect(LeagueVisibility.fromString('ranked').type).toBe('ranked');
expect(LeagueVisibility.fromString('unranked').type).toBe('unranked');
expect(LeagueVisibility.fromString('public').type).toBe('ranked');
expect(LeagueVisibility.fromString('private').type).toBe('unranked');
expect(() => LeagueVisibility.fromString('invalid')).toThrow('Invalid league visibility: invalid');
});
it('should validate driver count', () => {
const ranked = LeagueVisibility.ranked();
expect(ranked.validateDriverCount(15)).toEqual({ valid: true });
expect(ranked.validateDriverCount(5)).toEqual({ valid: false, error: 'Ranked leagues require at least 10 drivers' });
const unranked = LeagueVisibility.unranked();
expect(unranked.validateDriverCount(5)).toEqual({ valid: true });
expect(unranked.validateDriverCount(1)).toEqual({ valid: false, error: 'Unranked leagues require at least 2 drivers' });
});
it('should have props', () => {
const vis = LeagueVisibility.ranked();
expect(vis.props).toEqual({ type: 'ranked' });
});
it('should toString', () => {
const vis = LeagueVisibility.ranked();
expect(vis.toString()).toBe('ranked');
});
it('should toLegacyString', () => {
const ranked = LeagueVisibility.ranked();
const unranked = LeagueVisibility.unranked();
expect(ranked.toLegacyString()).toBe('public');
expect(unranked.toLegacyString()).toBe('private');
});
it('equals', () => {
const vis1 = LeagueVisibility.ranked();
const vis2 = LeagueVisibility.ranked();
const vis3 = LeagueVisibility.unranked();
expect(vis1.equals(vis2)).toBe(true);
expect(vis1.equals(vis3)).toBe(false);
});
});