wip league admin tools
This commit is contained in:
@@ -11,12 +11,13 @@ import type { ApplicationErrorCode } from '@core/shared/errors/ApplicationErrorC
|
||||
|
||||
describe('RemoveLeagueMemberUseCase', () => {
|
||||
let useCase: RemoveLeagueMemberUseCase;
|
||||
let leagueMembershipRepository: { getMembership: Mock; saveMembership: Mock };
|
||||
let leagueMembershipRepository: { getMembership: Mock; getLeagueMembers: Mock; saveMembership: Mock };
|
||||
let output: UseCaseOutputPort<RemoveLeagueMemberResult> & { present: Mock };
|
||||
|
||||
beforeEach(() => {
|
||||
leagueMembershipRepository = {
|
||||
getMembership: vi.fn(),
|
||||
getLeagueMembers: vi.fn(),
|
||||
saveMembership: vi.fn(),
|
||||
};
|
||||
output = {
|
||||
@@ -104,4 +105,33 @@ describe('RemoveLeagueMemberUseCase', () => {
|
||||
|
||||
expect(output.present).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('prevents removing the last owner', async () => {
|
||||
const leagueId = 'league-1';
|
||||
const targetDriverId = 'owner-1';
|
||||
const membership = {
|
||||
id: `${leagueId}:${targetDriverId}`,
|
||||
leagueId: { toString: () => leagueId },
|
||||
driverId: { toString: () => targetDriverId },
|
||||
role: { toString: () => 'owner' },
|
||||
status: { toString: () => 'active' },
|
||||
joinedAt: { toDate: () => new Date() },
|
||||
};
|
||||
|
||||
leagueMembershipRepository.getMembership.mockResolvedValue(membership);
|
||||
leagueMembershipRepository.getLeagueMembers.mockResolvedValue([membership]);
|
||||
|
||||
const result = await useCase.execute({ leagueId, targetDriverId });
|
||||
|
||||
expect(result.isErr()).toBe(true);
|
||||
|
||||
const error = result.unwrapErr() as ApplicationErrorCode<
|
||||
RemoveLeagueMemberErrorCode,
|
||||
{ message: string }
|
||||
>;
|
||||
|
||||
expect(error.code).toBe('CANNOT_REMOVE_LAST_OWNER');
|
||||
expect(output.present).not.toHaveBeenCalled();
|
||||
expect(leagueMembershipRepository.saveMembership).not.toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user