Files
gridpilot.gg/apps/website/lib/view-models/LeagueScoringPresetsViewModel.test.ts
2025-12-20 00:31:31 +01:00

39 lines
1.3 KiB
TypeScript

import { describe, it, expect } from 'vitest';
import { LeagueScoringPresetsViewModel } from './LeagueScoringPresetsViewModel';
import type { LeagueScoringPresetDTO } from '@core/racing/application/ports/LeagueScoringPresetProvider';
const createPreset = (overrides: Partial<LeagueScoringPresetDTO> = {}): LeagueScoringPresetDTO => ({
id: 'preset-1',
name: 'Standard scoring',
description: 'Top 15 get points',
gameId: 'iracing',
...overrides,
} as LeagueScoringPresetDTO);
describe('LeagueScoringPresetsViewModel', () => {
it('maps presets array from DTO', () => {
const presets = [createPreset(), createPreset({ id: 'preset-2', name: 'Alt scoring' })];
const vm = new LeagueScoringPresetsViewModel({ presets });
expect(vm.presets).toBe(presets);
expect(vm.totalCount).toBe(2);
});
it('uses explicit totalCount when provided', () => {
const presets = [createPreset(), createPreset()];
const vm = new LeagueScoringPresetsViewModel({ presets, totalCount: 10 });
expect(vm.presets).toBe(presets);
expect(vm.totalCount).toBe(10);
});
it('handles empty presets array', () => {
const vm = new LeagueScoringPresetsViewModel({ presets: [] });
expect(vm.presets).toEqual([]);
expect(vm.totalCount).toBe(0);
});
});