refactor core presenters

This commit is contained in:
2025-12-19 19:42:19 +01:00
parent 8116fe888f
commit 94fc538f44
228 changed files with 2817 additions and 3097 deletions

View File

@@ -1,4 +1,5 @@
import { describe, it, expect, beforeEach } from 'vitest';
import type { Logger } from '@core/shared/application';
import type { IRaceRegistrationRepository } from '@core/racing/domain/repositories/IRaceRegistrationRepository';
import type { ILeagueMembershipRepository } from '@core/racing/domain/repositories/ILeagueMembershipRepository';
@@ -31,13 +32,8 @@ import { GetRaceRegistrationsUseCase } from '@core/racing/application/use-cases/
import type { IDriverRegistrationStatusPresenter } from '@core/racing/application/presenters/IDriverRegistrationStatusPresenter';
import type { IRaceRegistrationsPresenter } from '@core/racing/application/presenters/IRaceRegistrationsPresenter';
import type {
IAllTeamsPresenter,
AllTeamsResultDTO,
AllTeamsViewModel,
} from '@core/racing/application/presenters/IAllTeamsPresenter';
import type { GetAllTeamsOutputPort } from '@core/racing/application/ports/output/GetAllTeamsOutputPort';
import type { ITeamDetailsPresenter } from '@core/racing/application/presenters/ITeamDetailsPresenter';
import type {
ITeamMembersPresenter,
@@ -162,30 +158,6 @@ class InMemoryLeagueMembershipRepositoryForRegistrations implements ILeagueMembe
}
}
class TestDriverRegistrationStatusPresenter implements IDriverRegistrationStatusPresenter {
isRegistered: boolean | null = null;
raceId: string | null = null;
driverId: string | null = null;
present(isRegistered: boolean, raceId: string, driverId: string) {
this.isRegistered = isRegistered;
this.raceId = raceId;
this.driverId = driverId;
return {
isRegistered,
raceId,
driverId,
};
}
getViewModel() {
return {
isRegistered: this.isRegistered!,
raceId: this.raceId!,
driverId: this.driverId!,
};
}
}
class TestRaceRegistrationsPresenter implements IRaceRegistrationsPresenter {
raceId: string | null = null;
@@ -352,7 +324,7 @@ describe('Racing application use-cases - registrations', () => {
let withdrawFromRace: WithdrawFromRaceUseCase;
let isDriverRegistered: IsDriverRegisteredForRaceUseCase;
let getRaceRegistrations: GetRaceRegistrationsUseCase;
let driverRegistrationPresenter: TestDriverRegistrationStatusPresenter;
let logger: Logger;
let raceRegistrationsPresenter: TestRaceRegistrationsPresenter;
beforeEach(() => {
@@ -361,10 +333,10 @@ describe('Racing application use-cases - registrations', () => {
registerForRace = new RegisterForRaceUseCase(registrationRepo, membershipRepo);
withdrawFromRace = new WithdrawFromRaceUseCase(registrationRepo);
driverRegistrationPresenter = new TestDriverRegistrationStatusPresenter();
logger = { debug: vi.fn(), error: vi.fn(), info: vi.fn(), warn: vi.fn() };
isDriverRegistered = new IsDriverRegisteredForRaceUseCase(
registrationRepo,
driverRegistrationPresenter,
logger,
);
raceRegistrationsPresenter = new TestRaceRegistrationsPresenter();
getRaceRegistrations = new GetRaceRegistrationsUseCase(registrationRepo);
@@ -379,10 +351,12 @@ describe('Racing application use-cases - registrations', () => {
await registerForRace.execute({ raceId, leagueId, driverId });
await isDriverRegistered.execute({ raceId, driverId });
expect(driverRegistrationPresenter.isRegistered).toBe(true);
expect(driverRegistrationPresenter.raceId).toBe(raceId);
expect(driverRegistrationPresenter.driverId).toBe(driverId);
const result = await isDriverRegistered.execute({ raceId, driverId });
expect(result.isOk()).toBe(true);
const status = result.unwrap();
expect(status.isRegistered).toBe(true);
expect(status.raceId).toBe(raceId);
expect(status.driverId).toBe(driverId);
await getRaceRegistrations.execute({ raceId }, raceRegistrationsPresenter);
expect(raceRegistrationsPresenter.driverIds).toContain(driverId);
@@ -408,8 +382,10 @@ describe('Racing application use-cases - registrations', () => {
await withdrawFromRace.execute({ raceId, driverId });
await isDriverRegistered.execute({ raceId, driverId });
expect(driverRegistrationPresenter.isRegistered).toBe(false);
const result = await isDriverRegistered.execute({ raceId, driverId });
expect(result.isOk()).toBe(true);
const status = result.unwrap();
expect(status.isRegistered).toBe(false);
await getRaceRegistrations.execute({ raceId }, raceRegistrationsPresenter);
expect(raceRegistrationsPresenter.driverIds).toEqual([]);