resolve manual DTOs

This commit is contained in:
2025-12-18 22:19:40 +01:00
parent 4a3087ae35
commit d617654928
179 changed files with 3716 additions and 1257 deletions

View File

@@ -102,8 +102,10 @@ describe('RaceResultsService', () => {
const input = { raceId, results: [{ position: 1 }] };
const mockDto = {
success: true,
raceId,
importedCount: 10,
driversProcessed: 10,
resultsRecorded: 10,
errors: ['Error 1'],
};
@@ -114,7 +116,8 @@ describe('RaceResultsService', () => {
expect(mockApiClient.importResults).toHaveBeenCalledWith(raceId, input);
expect(result).toBeInstanceOf(ImportRaceResultsSummaryViewModel);
expect(result.raceId).toBe(raceId);
expect(result.importedCount).toBe(10);
expect(result.driversProcessed).toBe(10);
expect(result.resultsRecorded).toBe(10);
expect(result.errors).toEqual(['Error 1']);
});
@@ -123,8 +126,10 @@ describe('RaceResultsService', () => {
const input = { raceId, results: [] };
const mockDto = {
success: true,
raceId,
importedCount: 5,
driversProcessed: 5,
resultsRecorded: 5,
errors: [],
};
@@ -132,7 +137,8 @@ describe('RaceResultsService', () => {
const result = await service.importResults(raceId, input);
expect(result.importedCount).toBe(5);
expect(result.driversProcessed).toBe(5);
expect(result.resultsRecorded).toBe(5);
expect(result.errors).toEqual([]);
});

View File

@@ -2,15 +2,16 @@ import { RacesApiClient } from '../../api/races/RacesApiClient';
import { RaceResultsDetailViewModel } from '../../view-models/RaceResultsDetailViewModel';
import { RaceWithSOFViewModel } from '../../view-models/RaceWithSOFViewModel';
import { ImportRaceResultsSummaryViewModel } from '../../view-models/ImportRaceResultsSummaryViewModel';
import type { ImportRaceResultsDTO } from '../../types/generated/ImportRaceResultsDTO';
// TODO: Move this type to apps/website/lib/types/generated when available
type ImportRaceResultsInputDto = { raceId: string; results: Array<unknown> };
// TODO: Move this type to apps/website/lib/types/generated when available
// Define types
type ImportRaceResultsInputDto = ImportRaceResultsDTO;
type ImportRaceResultsSummaryDto = {
success: boolean;
raceId: string;
importedCount: number;
errors: string[];
driversProcessed: number;
resultsRecorded: number;
errors?: string[];
};
/**
@@ -41,10 +42,10 @@ export class RaceResultsService {
}
/**
* Import race results and get summary
*/
async importResults(raceId: string, input: ImportRaceResultsInputDto): Promise<ImportRaceResultsSummaryViewModel> {
const dto = await this.apiClient.importResults(raceId, input) as ImportRaceResultsSummaryDto;
return new ImportRaceResultsSummaryViewModel(dto);
}
* Import race results and get summary
*/
async importResults(raceId: string, input: ImportRaceResultsInputDto): Promise<ImportRaceResultsSummaryViewModel> {
const dto = await this.apiClient.importResults(raceId, input);
return new ImportRaceResultsSummaryViewModel(dto);
}
}