import { describe, it, expect } from 'vitest'; import type { LeagueAdminRosterJoinRequestViewModel } from './LeagueAdminRosterJoinRequestViewModel'; describe('LeagueAdminRosterJoinRequestViewModel', () => { it('requires and exposes expected fields', () => { const vm: LeagueAdminRosterJoinRequestViewModel = { id: 'req-1', leagueId: 'league-1', driverId: 'driver-1', driverName: 'Driver One', requestedAtIso: '2025-01-02T03:04:05.000Z', }; expect(vm.id).toBe('req-1'); expect(vm.leagueId).toBe('league-1'); expect(vm.driverId).toBe('driver-1'); expect(vm.driverName).toBe('Driver One'); expect(vm.requestedAtIso).toBe('2025-01-02T03:04:05.000Z'); expect(typeof vm.id).toBe('string'); expect(typeof vm.leagueId).toBe('string'); expect(typeof vm.driverId).toBe('string'); expect(typeof vm.driverName).toBe('string'); expect(typeof vm.requestedAtIso).toBe('string'); }); it('supports optional message', () => { const withoutMessage: LeagueAdminRosterJoinRequestViewModel = { id: 'req-1', leagueId: 'league-1', driverId: 'driver-1', driverName: 'Driver One', requestedAtIso: '2025-01-02T03:04:05.000Z', }; const withMessage: LeagueAdminRosterJoinRequestViewModel = { ...withoutMessage, message: 'Please approve', }; expect(withoutMessage.message).toBeUndefined(); expect(withMessage.message).toBe('Please approve'); expect(typeof withMessage.message).toBe('string'); }); });