refactor use cases

This commit is contained in:
2026-01-08 15:34:51 +01:00
parent d984ab24a8
commit 52e9a2f6a7
362 changed files with 5192 additions and 8409 deletions

View File

@@ -1,7 +1,6 @@
import { describe, it, expect, beforeEach, vi, Mock } from 'vitest';
import { ApproveTeamJoinRequestUseCase, type ApproveTeamJoinRequestResult } from './ApproveTeamJoinRequestUseCase';
import type { ITeamMembershipRepository } from '../../domain/repositories/ITeamMembershipRepository';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort';
describe('ApproveTeamJoinRequestUseCase', () => {
let useCase: ApproveTeamJoinRequestUseCase;
@@ -10,7 +9,6 @@ describe('ApproveTeamJoinRequestUseCase', () => {
removeJoinRequest: Mock;
saveMembership: Mock;
};
let output: UseCaseOutputPort<ApproveTeamJoinRequestResult> & { present: Mock };
beforeEach(() => {
membershipRepository = {
@@ -18,12 +16,8 @@ describe('ApproveTeamJoinRequestUseCase', () => {
removeJoinRequest: vi.fn(),
saveMembership: vi.fn(),
};
output = { present: vi.fn() } as unknown as UseCaseOutputPort<ApproveTeamJoinRequestResult> & {
present: Mock;
};
useCase = new ApproveTeamJoinRequestUseCase(
membershipRepository as unknown as ITeamMembershipRepository,
output,
);
});
@@ -37,6 +31,14 @@ describe('ApproveTeamJoinRequestUseCase', () => {
const result = await useCase.execute({ teamId, requestId });
expect(result.isOk()).toBe(true);
const successResult = result.unwrap();
expect(successResult.membership).toEqual({
teamId,
driverId: 'driver-1',
role: 'driver',
status: 'active',
joinedAt: expect.any(Date),
});
expect(membershipRepository.removeJoinRequest).toHaveBeenCalledWith(requestId);
expect(membershipRepository.saveMembership).toHaveBeenCalledWith({
teamId,
@@ -45,16 +47,6 @@ describe('ApproveTeamJoinRequestUseCase', () => {
status: 'active',
joinedAt: expect.any(Date),
});
expect(output.present).toHaveBeenCalledTimes(1);
expect(output.present).toHaveBeenCalledWith({
membership: {
teamId,
driverId: 'driver-1',
role: 'driver',
status: 'active',
joinedAt: expect.any(Date),
},
});
});
it('should return error if request not found', async () => {
@@ -64,6 +56,5 @@ describe('ApproveTeamJoinRequestUseCase', () => {
expect(result.isErr()).toBe(true);
expect(result.unwrapErr().code).toBe('REQUEST_NOT_FOUND');
expect(output.present).not.toHaveBeenCalled();
});
});
});