view models
This commit is contained in:
45
apps/website/lib/view-models/DriverSummaryViewModel.test.ts
Normal file
45
apps/website/lib/view-models/DriverSummaryViewModel.test.ts
Normal file
@@ -0,0 +1,45 @@
|
||||
import { describe, it, expect } from 'vitest';
|
||||
import { DriverSummaryViewModel } from './DriverSummaryViewModel';
|
||||
import type { GetDriverOutputDTO } from '../types/generated/GetDriverOutputDTO';
|
||||
|
||||
const driverDto: GetDriverOutputDTO = {
|
||||
id: 'driver-1',
|
||||
iracingId: 'ir-123',
|
||||
name: 'Test Driver',
|
||||
country: 'DE',
|
||||
joinedAt: '2024-01-01T00:00:00Z',
|
||||
};
|
||||
|
||||
describe('DriverSummaryViewModel', () => {
|
||||
it('maps driver and optional fields from DTO', () => {
|
||||
const viewModel = new DriverSummaryViewModel({
|
||||
driver: driverDto,
|
||||
rating: 2500,
|
||||
rank: 10,
|
||||
});
|
||||
|
||||
expect(viewModel.driver).toBe(driverDto);
|
||||
expect(viewModel.rating).toBe(2500);
|
||||
expect(viewModel.rank).toBe(10);
|
||||
});
|
||||
|
||||
it('defaults nullable rating and rank when undefined', () => {
|
||||
const viewModel = new DriverSummaryViewModel({
|
||||
driver: driverDto,
|
||||
});
|
||||
|
||||
expect(viewModel.rating).toBeNull();
|
||||
expect(viewModel.rank).toBeNull();
|
||||
});
|
||||
|
||||
it('keeps explicit null rating and rank', () => {
|
||||
const viewModel = new DriverSummaryViewModel({
|
||||
driver: driverDto,
|
||||
rating: null,
|
||||
rank: null,
|
||||
});
|
||||
|
||||
expect(viewModel.rating).toBeNull();
|
||||
expect(viewModel.rank).toBeNull();
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user