view data fixes
This commit is contained in:
@@ -1,48 +1,35 @@
|
||||
import { describe, it, expect } from 'vitest';
|
||||
import { describe, expect, it } from 'vitest';
|
||||
import { HomeDiscoveryViewModel } from './HomeDiscoveryViewModel';
|
||||
import { LeagueCardViewModel } from './LeagueCardViewModel';
|
||||
import { TeamCardViewModel } from './TeamCardViewModel';
|
||||
import { UpcomingRaceCardViewModel } from './UpcomingRaceCardViewModel';
|
||||
import type { HomeDiscoveryViewData } from '@/lib/view-data/HomeDiscoveryViewData';
|
||||
|
||||
describe('HomeDiscoveryViewModel', () => {
|
||||
it('exposes the top leagues, teams and upcoming races from the DTO', () => {
|
||||
const topLeagues = [
|
||||
new LeagueCardViewModel({
|
||||
id: 'league-1',
|
||||
name: 'Pro League',
|
||||
description: 'Top-tier league',
|
||||
memberCount: 100,
|
||||
isMember: false,
|
||||
} as any),
|
||||
];
|
||||
it('exposes the discovery collections from ViewData', () => {
|
||||
const viewData: HomeDiscoveryViewData = {
|
||||
topLeagues: [{ id: 'league-1', name: 'Pro League', description: 'Top-tier league' }],
|
||||
teams: [{ id: 'team-1', name: 'Team Alpha', description: 'Serious endurance', logoUrl: undefined }],
|
||||
upcomingRaces: [
|
||||
{ id: 'race-1', track: 'Spa-Francorchamps', car: 'GT3', formattedDate: 'Jan 1' },
|
||||
],
|
||||
};
|
||||
|
||||
const teams = [
|
||||
new TeamCardViewModel({
|
||||
id: 'team-1',
|
||||
name: 'Team Alpha',
|
||||
tag: 'ALPHA',
|
||||
memberCount: 10,
|
||||
isMember: true,
|
||||
} as any),
|
||||
];
|
||||
const viewModel = new HomeDiscoveryViewModel(viewData);
|
||||
|
||||
const upcomingRaces = [
|
||||
new UpcomingRaceCardViewModel({
|
||||
id: 'race-1',
|
||||
track: 'Spa-Francorchamps',
|
||||
car: 'GT3',
|
||||
scheduledAt: '2025-01-01T12:00:00Z',
|
||||
} as any),
|
||||
];
|
||||
expect(viewModel.topLeagues).toBe(viewData.topLeagues);
|
||||
expect(viewModel.teams).toBe(viewData.teams);
|
||||
expect(viewModel.upcomingRaces).toBe(viewData.upcomingRaces);
|
||||
});
|
||||
|
||||
const viewModel = new HomeDiscoveryViewModel({
|
||||
topLeagues,
|
||||
teams,
|
||||
upcomingRaces,
|
||||
});
|
||||
it('provides basic UI helper booleans', () => {
|
||||
const viewData: HomeDiscoveryViewData = {
|
||||
topLeagues: [],
|
||||
teams: [{ id: 'team-1', name: 'Team Alpha', description: 'Serious endurance' }],
|
||||
upcomingRaces: [],
|
||||
};
|
||||
|
||||
expect(viewModel.topLeagues).toBe(topLeagues);
|
||||
expect(viewModel.teams).toBe(teams);
|
||||
expect(viewModel.upcomingRaces).toBe(upcomingRaces);
|
||||
const viewModel = new HomeDiscoveryViewModel(viewData);
|
||||
|
||||
expect(viewModel.hasTopLeagues).toBe(false);
|
||||
expect(viewModel.hasTeams).toBe(true);
|
||||
expect(viewModel.hasUpcomingRaces).toBe(false);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user