import { describe, expect, it } from 'vitest'; import type { DriverRegistrationStatusViewData } from '../view-data/DriverRegistrationStatusViewData'; import { DriverRegistrationStatusViewModel } from './DriverRegistrationStatusViewModel'; const createViewData = ( overrides: Partial = {}, ): DriverRegistrationStatusViewData => ({ isRegistered: true, raceId: 'race-1', driverId: 'driver-1', canRegister: false, ...overrides, }); describe('DriverRegistrationStatusViewModel', () => { it('exposes basic registration status fields from ViewData', () => { const viewModel = new DriverRegistrationStatusViewModel(createViewData({ isRegistered: true })); expect(viewModel.isRegistered).toBe(true); expect(viewModel.raceId).toBe('race-1'); expect(viewModel.driverId).toBe('driver-1'); expect(viewModel.canRegister).toBe(false); }); it('derives UI fields when registered', () => { const viewModel = new DriverRegistrationStatusViewModel(createViewData({ isRegistered: true })); expect(viewModel.statusMessage).toBe('Registered for this race'); expect(viewModel.statusBadgeVariant).toBe('success'); expect(viewModel.registrationButtonText).toBe('Withdraw'); }); it('derives UI fields when not registered', () => { const viewModel = new DriverRegistrationStatusViewModel( createViewData({ isRegistered: false, canRegister: true }), ); expect(viewModel.statusMessage).toBe('Not registered'); expect(viewModel.statusBadgeVariant).toBe('warning'); expect(viewModel.registrationButtonText).toBe('Register'); expect(viewModel.canRegister).toBe(true); }); });