Files
gridpilot.gg/apps/website/lib/view-models/LeagueSeasonSummaryViewModel.test.ts
2026-01-24 01:25:46 +01:00

43 lines
1.3 KiB
TypeScript

import { describe, expect, it } from 'vitest';
import { LeagueSeasonSummaryViewModel } from './LeagueSeasonSummaryViewModel';
describe('LeagueSeasonSummaryViewModel', () => {
it('exposes required fields from input', () => {
const input = {
seasonId: 'season-1',
name: 'Season 1',
status: 'active',
isPrimary: true,
isParallelActive: false,
};
const vm = new LeagueSeasonSummaryViewModel(input);
expect(vm.seasonId).toBe('season-1');
expect(vm.name).toBe('Season 1');
expect(vm.status).toBe('active');
expect(vm.isPrimary).toBe(true);
expect(vm.isParallelActive).toBe(false);
expect(typeof vm.seasonId).toBe('string');
expect(typeof vm.name).toBe('string');
expect(typeof vm.status).toBe('string');
expect(typeof vm.isPrimary).toBe('boolean');
expect(typeof vm.isParallelActive).toBe('boolean');
});
it('keeps booleans as booleans even when false', () => {
const vm = new LeagueSeasonSummaryViewModel({
seasonId: 'season-2',
name: 'Season 2',
status: 'archived',
isPrimary: false,
isParallelActive: false,
});
expect(vm.isPrimary).toBe(false);
expect(vm.isParallelActive).toBe(false);
expect(typeof vm.isPrimary).toBe('boolean');
expect(typeof vm.isParallelActive).toBe('boolean');
});
});