Files
gridpilot.gg/core/racing/application/GetLeagueJoinRequestsUseCase.test.ts
2025-12-16 13:53:23 +01:00

46 lines
1.6 KiB
TypeScript

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';
describe('GetLeagueJoinRequestsUseCase', () => {
let useCase: GetLeagueJoinRequestsUseCase;
let leagueMembershipRepository: jest.Mocked<ILeagueMembershipRepository>;
let driverRepository: jest.Mocked<IDriverRepository>;
let presenter: LeagueJoinRequestsPresenter;
beforeEach(() => {
leagueMembershipRepository = {
getJoinRequests: jest.fn(),
} as unknown;
driverRepository = {
findByIds: jest.fn(),
} as unknown;
presenter = new LeagueJoinRequestsPresenter();
useCase = new GetLeagueJoinRequestsUseCase(leagueMembershipRepository, driverRepository);
});
it('should return join requests with drivers', async () => {
const leagueId = 'league-1';
const joinRequests = [
{ id: 'req-1', leagueId, driverId: 'driver-1', requestedAt: new Date(), message: 'msg' },
];
const drivers = [{ id: 'driver-1', name: 'Driver 1' }];
leagueMembershipRepository.getJoinRequests.mockResolvedValue(joinRequests);
driverRepository.findByIds.mockResolvedValue(drivers);
await useCase.execute({ leagueId }, presenter);
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' },
},
]);
});
});