36 lines
1.3 KiB
TypeScript
36 lines
1.3 KiB
TypeScript
import type { HomeDiscoveryViewData } from '@/lib/view-data/HomeDiscoveryViewData';
|
|
import { describe, expect, it } from 'vitest';
|
|
import { HomeDiscoveryViewModel } from './HomeDiscoveryViewModel';
|
|
|
|
describe('HomeDiscoveryViewModel', () => {
|
|
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 viewModel = new HomeDiscoveryViewModel(viewData);
|
|
|
|
expect(viewModel.topLeagues).toBe(viewData.topLeagues);
|
|
expect(viewModel.teams).toBe(viewData.teams);
|
|
expect(viewModel.upcomingRaces).toBe(viewData.upcomingRaces);
|
|
});
|
|
|
|
it('provides basic UI helper booleans', () => {
|
|
const viewData: HomeDiscoveryViewData = {
|
|
topLeagues: [],
|
|
teams: [{ id: 'team-1', name: 'Team Alpha', description: 'Serious endurance' }],
|
|
upcomingRaces: [],
|
|
};
|
|
|
|
const viewModel = new HomeDiscoveryViewModel(viewData);
|
|
|
|
expect(viewModel.hasTopLeagues).toBe(false);
|
|
expect(viewModel.hasTeams).toBe(true);
|
|
expect(viewModel.hasUpcomingRaces).toBe(false);
|
|
});
|
|
});
|