42 lines
1.3 KiB
TypeScript
42 lines
1.3 KiB
TypeScript
import type { LeagueScoringPresetDTO } from '@/lib/types/generated/LeagueScoringPresetDTO';
|
|
import { describe, expect, it } from 'vitest';
|
|
import { LeagueScoringPresetsViewModel } from './LeagueScoringPresetsViewModel';
|
|
|
|
const createPreset = (overrides: Partial<LeagueScoringPresetDTO> = {}): LeagueScoringPresetDTO => ({
|
|
id: 'preset-1',
|
|
name: 'Standard scoring',
|
|
description: 'Top 15 get points',
|
|
primaryChampionshipType: 'driver',
|
|
sessionSummary: 'Sprint + Main',
|
|
bonusSummary: 'None',
|
|
dropPolicySummary: 'Best 6',
|
|
...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);
|
|
});
|
|
});
|