46 lines
1.6 KiB
TypeScript
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' },
|
|
},
|
|
]);
|
|
});
|
|
}); |