view data fixes
This commit is contained in:
@@ -1,59 +1,60 @@
|
||||
import { describe, it, expect } from 'vitest';
|
||||
import { LeagueSettingsViewDataBuilder } from './LeagueSettingsViewDataBuilder';
|
||||
import type { LeagueSettingsApiDto } from '@/lib/types/tbd/LeagueSettingsApiDto';
|
||||
|
||||
describe('LeagueSettingsViewDataBuilder', () => {
|
||||
describe('happy paths', () => {
|
||||
it('should transform LeagueSettingsApiDto to LeagueSettingsViewData correctly', () => {
|
||||
const leagueSettingsApiDto: LeagueSettingsApiDto = {
|
||||
leagueId: 'league-123',
|
||||
it('should transform LeagueSettingsInputDTO to LeagueSettingsViewData correctly', () => {
|
||||
const leagueSettingsApiDto = {
|
||||
league: {
|
||||
id: 'league-123',
|
||||
name: 'Test League',
|
||||
description: 'Test Description',
|
||||
ownerId: 'owner-1',
|
||||
createdAt: '2024-01-01',
|
||||
},
|
||||
config: {
|
||||
maxDrivers: 32,
|
||||
qualifyingFormat: 'Open',
|
||||
raceLength: 30,
|
||||
},
|
||||
presets: [],
|
||||
owner: null,
|
||||
members: [],
|
||||
};
|
||||
|
||||
const result = LeagueSettingsViewDataBuilder.build(leagueSettingsApiDto);
|
||||
|
||||
expect(result).toEqual({
|
||||
leagueId: 'league-123',
|
||||
league: {
|
||||
id: 'league-123',
|
||||
name: 'Test League',
|
||||
description: 'Test Description',
|
||||
ownerId: 'owner-1',
|
||||
createdAt: '2024-01-01',
|
||||
},
|
||||
config: {
|
||||
maxDrivers: 32,
|
||||
qualifyingFormat: 'Open',
|
||||
raceLength: 30,
|
||||
},
|
||||
presets: [],
|
||||
owner: null,
|
||||
members: [],
|
||||
});
|
||||
});
|
||||
|
||||
it('should handle minimal configuration', () => {
|
||||
const leagueSettingsApiDto: LeagueSettingsApiDto = {
|
||||
leagueId: 'league-456',
|
||||
const leagueSettingsApiDto = {
|
||||
league: {
|
||||
id: 'league-456',
|
||||
name: 'Minimal League',
|
||||
description: '',
|
||||
ownerId: 'owner-2',
|
||||
createdAt: '2024-01-02',
|
||||
},
|
||||
config: {
|
||||
maxDrivers: 16,
|
||||
qualifyingFormat: 'Open',
|
||||
raceLength: 20,
|
||||
},
|
||||
presets: [],
|
||||
owner: null,
|
||||
members: [],
|
||||
};
|
||||
|
||||
const result = LeagueSettingsViewDataBuilder.build(leagueSettingsApiDto);
|
||||
|
||||
expect(result.leagueId).toBe('league-456');
|
||||
expect(result.league.name).toBe('Minimal League');
|
||||
expect(result.config.maxDrivers).toBe(16);
|
||||
});
|
||||
@@ -61,43 +62,44 @@ describe('LeagueSettingsViewDataBuilder', () => {
|
||||
|
||||
describe('data transformation', () => {
|
||||
it('should preserve all DTO fields in the output', () => {
|
||||
const leagueSettingsApiDto: LeagueSettingsApiDto = {
|
||||
leagueId: 'league-789',
|
||||
const leagueSettingsApiDto = {
|
||||
league: {
|
||||
id: 'league-789',
|
||||
name: 'Full League',
|
||||
description: 'Full Description',
|
||||
ownerId: 'owner-3',
|
||||
createdAt: '2024-01-03',
|
||||
},
|
||||
config: {
|
||||
maxDrivers: 24,
|
||||
qualifyingFormat: 'Open',
|
||||
raceLength: 45,
|
||||
},
|
||||
presets: [],
|
||||
owner: null,
|
||||
members: [],
|
||||
};
|
||||
|
||||
const result = LeagueSettingsViewDataBuilder.build(leagueSettingsApiDto);
|
||||
|
||||
expect(result.leagueId).toBe(leagueSettingsApiDto.leagueId);
|
||||
expect(result.league).toEqual(leagueSettingsApiDto.league);
|
||||
expect(result.config).toEqual(leagueSettingsApiDto.config);
|
||||
});
|
||||
|
||||
it('should not modify the input DTO', () => {
|
||||
const leagueSettingsApiDto: LeagueSettingsApiDto = {
|
||||
leagueId: 'league-101',
|
||||
const leagueSettingsApiDto = {
|
||||
league: {
|
||||
id: 'league-101',
|
||||
name: 'Test League',
|
||||
description: 'Test',
|
||||
ownerId: 'owner-4',
|
||||
createdAt: '2024-01-04',
|
||||
},
|
||||
config: {
|
||||
maxDrivers: 20,
|
||||
qualifyingFormat: 'Open',
|
||||
raceLength: 25,
|
||||
},
|
||||
presets: [],
|
||||
owner: null,
|
||||
members: [],
|
||||
};
|
||||
|
||||
const originalDto = { ...leagueSettingsApiDto };
|
||||
const originalDto = JSON.parse(JSON.stringify(leagueSettingsApiDto));
|
||||
LeagueSettingsViewDataBuilder.build(leagueSettingsApiDto);
|
||||
|
||||
expect(leagueSettingsApiDto).toEqual(originalDto);
|
||||
@@ -105,39 +107,20 @@ describe('LeagueSettingsViewDataBuilder', () => {
|
||||
});
|
||||
|
||||
describe('edge cases', () => {
|
||||
it('should handle different qualifying formats', () => {
|
||||
const leagueSettingsApiDto: LeagueSettingsApiDto = {
|
||||
leagueId: 'league-102',
|
||||
league: {
|
||||
id: 'league-102',
|
||||
name: 'Test League',
|
||||
description: 'Test',
|
||||
},
|
||||
config: {
|
||||
maxDrivers: 20,
|
||||
qualifyingFormat: 'Closed',
|
||||
raceLength: 30,
|
||||
},
|
||||
};
|
||||
|
||||
const result = LeagueSettingsViewDataBuilder.build(leagueSettingsApiDto);
|
||||
|
||||
expect(result.config.qualifyingFormat).toBe('Closed');
|
||||
});
|
||||
|
||||
it('should handle large driver counts', () => {
|
||||
const leagueSettingsApiDto: LeagueSettingsApiDto = {
|
||||
leagueId: 'league-103',
|
||||
const leagueSettingsApiDto = {
|
||||
league: {
|
||||
id: 'league-103',
|
||||
name: 'Test League',
|
||||
description: 'Test',
|
||||
ownerId: 'owner-5',
|
||||
createdAt: '2024-01-05',
|
||||
},
|
||||
config: {
|
||||
maxDrivers: 100,
|
||||
qualifyingFormat: 'Open',
|
||||
raceLength: 60,
|
||||
},
|
||||
presets: [],
|
||||
owner: null,
|
||||
members: [],
|
||||
};
|
||||
|
||||
const result = LeagueSettingsViewDataBuilder.build(leagueSettingsApiDto);
|
||||
|
||||
Reference in New Issue
Block a user