This commit is contained in:
2025-12-16 18:17:48 +01:00
parent 362894d1a5
commit ec7c0b8f2a
94 changed files with 4240 additions and 983 deletions

View File

@@ -1,23 +1,29 @@
import { GetLeagueJoinRequestsUseCase } from '@core/racing/application/use-cases/GetLeagueJoinRequestsUseCase';
import { LeagueJoinRequestsPresenter } from '@apps/api/src/modules/league/presenters/LeagueJoinRequestsPresenter';
import { IDriverRepository } from '@core/racing/domain/repositories/IDriverRepository';
import { describe, it, expect, beforeEach, vi, Mock } from 'vitest';
import { GetLeagueJoinRequestsUseCase } from './GetLeagueJoinRequestsUseCase';
import { ILeagueMembershipRepository } from '../../domain/repositories/ILeagueMembershipRepository';
import { IDriverRepository } from '../../domain/repositories/IDriverRepository';
import { Driver } from '../../domain/entities/Driver';
describe('GetLeagueJoinRequestsUseCase', () => {
let useCase: GetLeagueJoinRequestsUseCase;
let leagueMembershipRepository: jest.Mocked<ILeagueMembershipRepository>;
let driverRepository: jest.Mocked<IDriverRepository>;
let presenter: LeagueJoinRequestsPresenter;
let leagueMembershipRepository: {
getJoinRequests: Mock;
};
let driverRepository: {
findById: Mock;
};
beforeEach(() => {
leagueMembershipRepository = {
getJoinRequests: jest.fn(),
} as unknown;
getJoinRequests: vi.fn(),
};
driverRepository = {
findByIds: jest.fn(),
} as unknown;
presenter = new LeagueJoinRequestsPresenter();
useCase = new GetLeagueJoinRequestsUseCase(leagueMembershipRepository, driverRepository);
findById: vi.fn(),
};
useCase = new GetLeagueJoinRequestsUseCase(
leagueMembershipRepository as unknown as ILeagueMembershipRepository,
driverRepository as unknown as IDriverRepository,
);
});
it('should return join requests with drivers', async () => {
@@ -25,22 +31,30 @@ describe('GetLeagueJoinRequestsUseCase', () => {
const joinRequests = [
{ id: 'req-1', leagueId, driverId: 'driver-1', requestedAt: new Date(), message: 'msg' },
];
const drivers = [{ id: 'driver-1', name: 'Driver 1' }];
const driver = Driver.create({
id: 'driver-1',
iracingId: '123',
name: 'Driver 1',
country: 'US',
});
leagueMembershipRepository.getJoinRequests.mockResolvedValue(joinRequests);
driverRepository.findByIds.mockResolvedValue(drivers);
driverRepository.findById.mockResolvedValue(driver);
await useCase.execute({ leagueId }, presenter);
const result = await useCase.execute({ leagueId });
expect(presenter.viewModel.joinRequests).toEqual([
{
id: 'req-1',
leagueId,
driverId: 'driver-1',
requestedAt: expect.any(Date),
message: 'msg',
driver: { id: 'driver-1', name: 'Driver 1' },
},
]);
expect(result.isOk()).toBe(true);
expect(result.unwrap()).toEqual({
joinRequests: [
{
id: 'req-1',
leagueId,
driverId: 'driver-1',
requestedAt: expect.any(Date),
message: 'msg',
driver: { id: 'driver-1', name: 'Driver 1' },
},
],
});
});
});