Files
gridpilot.gg/apps/website/lib/builders/view-data/LeagueSponsorshipsViewDataBuilder.test.ts
Marc Mintel 046852703f
Some checks failed
Contract Testing / contract-tests (pull_request) Failing after 5m51s
Contract Testing / contract-snapshot (pull_request) Has been skipped
view data fixes
2026-01-24 12:14:08 +01:00

105 lines
3.1 KiB
TypeScript

import { describe, it, expect } from 'vitest';
import { LeagueSponsorshipsViewDataBuilder } from './LeagueSponsorshipsViewDataBuilder';
describe('LeagueSponsorshipsViewDataBuilder', () => {
describe('happy paths', () => {
it('should transform LeagueSponsorshipsInputDTO to LeagueSponsorshipsViewData correctly', () => {
const leagueSponsorshipsApiDto = {
leagueId: 'league-123',
league: {
id: 'league-123',
name: 'Test League',
description: 'Test Description',
},
sponsorshipSlots: [
{
id: 'slot-1',
name: 'Primary Sponsor',
description: 'Main sponsor',
price: 1000,
currency: 'USD',
isAvailable: true,
},
],
sponsorships: [
{
id: 'request-1',
status: 'pending',
createdAt: '2024-01-01T10:00:00Z',
},
],
};
const result = LeagueSponsorshipsViewDataBuilder.build(leagueSponsorshipsApiDto as any);
expect(result.leagueId).toBe('league-123');
expect(result.league.name).toBe('Test League');
expect(result.sponsorshipSlots).toHaveLength(1);
expect(result.sponsorshipRequests).toHaveLength(1);
expect(result.sponsorshipRequests[0].id).toBe('request-1');
expect(result.sponsorshipRequests[0].status).toBe('pending');
});
it('should handle empty sponsorship requests', () => {
const leagueSponsorshipsApiDto = {
leagueId: 'league-456',
league: {
id: 'league-456',
name: 'Test League',
description: '',
},
sponsorshipSlots: [],
sponsorships: [],
};
const result = LeagueSponsorshipsViewDataBuilder.build(leagueSponsorshipsApiDto as any);
expect(result.sponsorshipRequests).toHaveLength(0);
});
});
describe('data transformation', () => {
it('should preserve all DTO fields in the output', () => {
const leagueSponsorshipsApiDto = {
leagueId: 'league-101',
league: {
id: 'league-101',
name: 'Test League',
description: 'Desc',
},
sponsorshipSlots: [],
sponsorships: [
{
id: 'request-1',
status: 'approved',
createdAt: '2024-01-01T10:00:00Z',
},
],
};
const result = LeagueSponsorshipsViewDataBuilder.build(leagueSponsorshipsApiDto as any);
expect(result.leagueId).toBe(leagueSponsorshipsApiDto.leagueId);
expect(result.league).toEqual(leagueSponsorshipsApiDto.league);
});
it('should not modify the input DTO', () => {
const leagueSponsorshipsApiDto = {
leagueId: 'league-102',
league: {
id: 'league-102',
name: 'Test League',
description: '',
},
sponsorshipSlots: [],
sponsorships: [],
};
const originalDto = JSON.parse(JSON.stringify(leagueSponsorshipsApiDto));
LeagueSponsorshipsViewDataBuilder.build(leagueSponsorshipsApiDto as any);
expect(leagueSponsorshipsApiDto).toEqual(originalDto);
});
});
});