refactor dashboard module
This commit is contained in:
@@ -19,10 +19,6 @@ import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPo
|
||||
|
||||
describe('DashboardOverviewUseCase', () => {
|
||||
it('partitions upcoming races into myUpcomingRaces and otherUpcomingRaces and selects nextRace from myUpcomingRaces', async () => {
|
||||
const output: UseCaseOutputPort<DashboardOverviewResult> = {
|
||||
present: vi.fn(),
|
||||
};
|
||||
|
||||
const driverId = 'driver-1';
|
||||
|
||||
const driver = Driver.create({ id: driverId, iracingId: '12345', name: 'Alice Racer', country: 'US' });
|
||||
@@ -270,21 +266,17 @@ describe('DashboardOverviewUseCase', () => {
|
||||
socialRepository,
|
||||
getDriverAvatar,
|
||||
getDriverStats,
|
||||
output,
|
||||
);
|
||||
|
||||
const input: DashboardOverviewInput = { driverId };
|
||||
|
||||
const result: UseCaseResult<
|
||||
void,
|
||||
DashboardOverviewResult,
|
||||
ApplicationErrorCode<'DRIVER_NOT_FOUND' | 'REPOSITORY_ERROR', { message: string }>
|
||||
> = await useCase.execute(input);
|
||||
|
||||
expect(result.isOk()).toBe(true);
|
||||
expect(result.unwrap()).toBeUndefined();
|
||||
|
||||
expect(output.present).toHaveBeenCalledTimes(1);
|
||||
const vm = (output.present as any).mock.calls[0][0] as DashboardOverviewResult;
|
||||
const vm = result.unwrap();
|
||||
|
||||
expect(vm.myUpcomingRaces.map(r => r.race.id)).toEqual(['race-1', 'race-3']);
|
||||
|
||||
@@ -295,10 +287,6 @@ describe('DashboardOverviewUseCase', () => {
|
||||
});
|
||||
|
||||
it('builds recentResults sorted by date descending and leagueStandingsSummaries from standings', async () => {
|
||||
const output: UseCaseOutputPort<DashboardOverviewResult> = {
|
||||
present: vi.fn(),
|
||||
};
|
||||
|
||||
const driverId = 'driver-2';
|
||||
|
||||
const driver = Driver.create({ id: driverId, iracingId: '67890', name: 'Result Driver', country: 'DE' });
|
||||
@@ -551,21 +539,17 @@ describe('DashboardOverviewUseCase', () => {
|
||||
socialRepository,
|
||||
getDriverAvatar,
|
||||
getDriverStats,
|
||||
output,
|
||||
);
|
||||
|
||||
const input: DashboardOverviewInput = { driverId };
|
||||
|
||||
const result: UseCaseResult<
|
||||
void,
|
||||
DashboardOverviewResult,
|
||||
ApplicationErrorCode<'DRIVER_NOT_FOUND' | 'REPOSITORY_ERROR', { message: string }>
|
||||
> = await useCase.execute(input);
|
||||
|
||||
expect(result.isOk()).toBe(true);
|
||||
expect(result.unwrap()).toBeUndefined();
|
||||
|
||||
expect(output.present).toHaveBeenCalledTimes(1);
|
||||
const vm = (output.present as any).mock.calls[0][0] as DashboardOverviewResult;
|
||||
const vm = result.unwrap();
|
||||
|
||||
expect(vm.recentResults.length).toBe(2);
|
||||
expect(vm.recentResults[0]!.race.id).toBe('race-new');
|
||||
@@ -590,10 +574,6 @@ describe('DashboardOverviewUseCase', () => {
|
||||
});
|
||||
|
||||
it('returns empty collections and safe defaults when driver has no races or standings', async () => {
|
||||
const output: UseCaseOutputPort<DashboardOverviewResult> = {
|
||||
present: vi.fn(),
|
||||
};
|
||||
|
||||
const driverId = 'driver-empty';
|
||||
|
||||
const driver = Driver.create({ id: driverId, iracingId: '11111', name: 'New Racer', country: 'FR' });
|
||||
@@ -758,21 +738,17 @@ describe('DashboardOverviewUseCase', () => {
|
||||
socialRepository,
|
||||
getDriverAvatar,
|
||||
getDriverStats,
|
||||
output,
|
||||
);
|
||||
|
||||
const input: DashboardOverviewInput = { driverId };
|
||||
|
||||
const result: UseCaseResult<
|
||||
void,
|
||||
DashboardOverviewResult,
|
||||
ApplicationErrorCode<'DRIVER_NOT_FOUND' | 'REPOSITORY_ERROR', { message: string }>
|
||||
> = await useCase.execute(input);
|
||||
|
||||
expect(result.isOk()).toBe(true);
|
||||
expect(result.unwrap()).toBeUndefined();
|
||||
|
||||
expect(output.present).toHaveBeenCalledTimes(1);
|
||||
const vm = (output.present as any).mock.calls[0][0] as DashboardOverviewResult;
|
||||
const vm = result.unwrap();
|
||||
|
||||
expect(vm.myUpcomingRaces).toEqual([]);
|
||||
expect(vm.otherUpcomingRaces).toEqual([]);
|
||||
@@ -784,11 +760,7 @@ describe('DashboardOverviewUseCase', () => {
|
||||
expect(vm.feedSummary.items).toEqual([]);
|
||||
});
|
||||
|
||||
it('returns DRIVER_NOT_FOUND error and does not present when driver is missing', async () => {
|
||||
const output: UseCaseOutputPort<DashboardOverviewResult> = {
|
||||
present: vi.fn(),
|
||||
};
|
||||
|
||||
it('returns DRIVER_NOT_FOUND error when driver is missing', async () => {
|
||||
const driverId = 'missing-driver';
|
||||
|
||||
const driverRepository = {
|
||||
@@ -951,13 +923,12 @@ describe('DashboardOverviewUseCase', () => {
|
||||
socialRepository,
|
||||
getDriverAvatar,
|
||||
getDriverStats,
|
||||
output,
|
||||
);
|
||||
|
||||
const input: DashboardOverviewInput = { driverId };
|
||||
|
||||
const result: UseCaseResult<
|
||||
void,
|
||||
DashboardOverviewResult,
|
||||
ApplicationErrorCode<'DRIVER_NOT_FOUND' | 'REPOSITORY_ERROR', { message: string }>
|
||||
> = await useCase.execute(input);
|
||||
|
||||
@@ -965,15 +936,9 @@ describe('DashboardOverviewUseCase', () => {
|
||||
const err = result.unwrapErr();
|
||||
expect(err.code).toBe('DRIVER_NOT_FOUND');
|
||||
expect(err.details?.message).toBe('Driver not found');
|
||||
|
||||
expect(output.present).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('returns REPOSITORY_ERROR when an unexpected error occurs and does not present', async () => {
|
||||
const output: UseCaseOutputPort<DashboardOverviewResult> = {
|
||||
present: vi.fn(),
|
||||
};
|
||||
|
||||
it('returns REPOSITORY_ERROR when an unexpected error occurs', async () => {
|
||||
const driverId = 'driver-error';
|
||||
|
||||
const driver = Driver.create({ id: driverId, iracingId: '99999', name: 'Error Driver', country: 'GB' });
|
||||
@@ -1140,13 +1105,12 @@ describe('DashboardOverviewUseCase', () => {
|
||||
socialRepository,
|
||||
getDriverAvatar,
|
||||
getDriverStats,
|
||||
output,
|
||||
);
|
||||
|
||||
const input: DashboardOverviewInput = { driverId };
|
||||
|
||||
const result: UseCaseResult<
|
||||
void,
|
||||
DashboardOverviewResult,
|
||||
ApplicationErrorCode<'DRIVER_NOT_FOUND' | 'REPOSITORY_ERROR', { message: string }>
|
||||
> = await useCase.execute(input);
|
||||
|
||||
@@ -1154,7 +1118,5 @@ describe('DashboardOverviewUseCase', () => {
|
||||
const err = result.unwrapErr();
|
||||
expect(err.code).toBe('REPOSITORY_ERROR');
|
||||
expect(err.details?.message).toBe('DB failure');
|
||||
|
||||
expect(output.present).not.toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user