Files
gridpilot.gg/apps/website/lib/view-models/HomeDiscoveryViewModel.test.ts
Marc Mintel e22033be38
Some checks failed
Contract Testing / contract-tests (pull_request) Failing after 5m54s
Contract Testing / contract-snapshot (pull_request) Has been skipped
view data fixes
2026-01-23 13:04:05 +01:00

36 lines
1.3 KiB
TypeScript

import { describe, expect, it } from 'vitest';
import { HomeDiscoveryViewModel } from './HomeDiscoveryViewModel';
import type { HomeDiscoveryViewData } from '@/lib/view-data/HomeDiscoveryViewData';
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);
});
});