Files
gridpilot.gg/apps/website/lib/view-models/SponsorshipDetailViewModel.test.ts
Marc Mintel 6c07abe5e7
Some checks failed
Contract Testing / contract-snapshot (pull_request) Has been cancelled
Contract Testing / contract-tests (pull_request) Has been cancelled
view data fixes
2026-01-25 00:12:30 +01:00

65 lines
1.9 KiB
TypeScript

import { describe, expect, it } from 'vitest';
import { SponsorshipDetailViewModel } from './SponsorshipDetailViewModel';
describe('SponsorshipDetailViewModel', () => {
const dto = {
id: 'detail-1',
leagueId: 'league-1',
leagueName: 'Pro League',
seasonId: 'season-1',
seasonName: 'Season 1',
tier: 'secondary',
status: 'active',
amount: 0,
currency: 'USD',
type: 'league',
entityName: 'Pro League',
price: 0,
impressions: 0,
} as any;
it('maps core identifiers from generated DTO', () => {
const vm = new SponsorshipDetailViewModel(dto);
expect(vm.id).toBe(dto.id);
expect(vm.leagueId).toBe(dto.leagueId);
expect(vm.leagueName).toBe(dto.leagueName);
expect(vm.seasonId).toBe(dto.seasonId);
expect(vm.seasonName).toBe(dto.seasonName);
});
it('uses default UI-specific sponsorship fields and formatting', () => {
const vm = new SponsorshipDetailViewModel(dto);
expect(vm.tier).toBe('secondary');
expect(vm.status).toBe('active');
expect(vm.amount).toBe(0);
expect(vm.currency).toBe('USD');
expect(vm.formattedAmount).toBe('USD 0');
expect(vm.tierBadgeVariant).toBe('secondary');
expect(vm.statusColor).toBe('green');
expect(vm.statusDisplay).toBe('Active');
});
it('derives badge variant and status styling from status and tier', () => {
const main = new SponsorshipDetailViewModel(dto);
main.tier = 'main';
main.status = 'pending';
main.amount = 5_000;
expect(main.tierBadgeVariant).toBe('primary');
expect(main.statusColor).toBe('yellow');
expect(main.statusDisplay).toBe('Pending');
expect(main.formattedAmount).toBe('USD 5,000');
const expired = new SponsorshipDetailViewModel(dto);
expired.status = 'expired';
expect(expired.statusColor).toBe('red');
const unknown = new SponsorshipDetailViewModel(dto);
unknown.status = 'unknown' as any;
expect(unknown.statusColor).toBe('gray');
});
});