37 lines
1.3 KiB
TypeScript
37 lines
1.3 KiB
TypeScript
import { describe, it, expect, vi, type Mock } from 'vitest';
|
|
import { RejectLeagueJoinRequestUseCase, type RejectLeagueJoinRequestUseCaseParams } from './RejectLeagueJoinRequestUseCase';
|
|
import type { ILeagueMembershipRepository } from '../../domain/repositories/ILeagueMembershipRepository';
|
|
|
|
interface LeagueMembershipRepositoryMock {
|
|
removeJoinRequest: Mock;
|
|
}
|
|
|
|
describe('RejectLeagueJoinRequestUseCase', () => {
|
|
let leagueMembershipRepository: LeagueMembershipRepositoryMock;
|
|
let useCase: RejectLeagueJoinRequestUseCase;
|
|
|
|
beforeEach(() => {
|
|
leagueMembershipRepository = {
|
|
removeJoinRequest: vi.fn(),
|
|
} as unknown as ILeagueMembershipRepository as any;
|
|
|
|
useCase = new RejectLeagueJoinRequestUseCase(
|
|
leagueMembershipRepository as unknown as ILeagueMembershipRepository,
|
|
);
|
|
});
|
|
|
|
it('removes the join request and returns success output', async () => {
|
|
const params: RejectLeagueJoinRequestUseCaseParams = {
|
|
requestId: 'req-1',
|
|
};
|
|
|
|
(leagueMembershipRepository.removeJoinRequest as Mock).mockResolvedValue(undefined);
|
|
|
|
const result = await useCase.execute(params);
|
|
|
|
expect(leagueMembershipRepository.removeJoinRequest).toHaveBeenCalledWith('req-1');
|
|
expect(result.isOk()).toBe(true);
|
|
expect(result.unwrap()).toEqual({ success: true, message: 'Join request rejected.' });
|
|
});
|
|
});
|