website refactor
This commit is contained in:
@@ -1,19 +1,15 @@
|
||||
import { describe, it, expect, beforeEach, vi, type Mock } from 'vitest';
|
||||
import {
|
||||
TransferLeagueOwnershipUseCase,
|
||||
type TransferLeagueOwnershipInput,
|
||||
type TransferLeagueOwnershipResult,
|
||||
type TransferLeagueOwnershipErrorCode,
|
||||
} from './TransferLeagueOwnershipUseCase';
|
||||
import type { LeagueRepository } from '../../domain/repositories/LeagueRepository';
|
||||
import type { LeagueMembershipRepository } from '../../domain/repositories/LeagueMembershipRepository';
|
||||
import type { Logger } from '@core/shared/application';
|
||||
import type { Logger } from '@core/shared/domain/Logger';
|
||||
import type { ApplicationErrorCode } from '@core/shared/errors/ApplicationErrorCode';
|
||||
import type { Result } from '@core/shared/domain/Result';
|
||||
import { beforeEach, describe, expect, it, vi, type Mock } from 'vitest';
|
||||
import {
|
||||
TransferLeagueOwnershipUseCase,
|
||||
type TransferLeagueOwnershipErrorCode,
|
||||
type TransferLeagueOwnershipInput
|
||||
} from './TransferLeagueOwnershipUseCase';
|
||||
|
||||
describe('TransferLeagueOwnershipUseCase', () => {
|
||||
let leagueRepository: ILeagueRepository;
|
||||
let membershipRepository: ILeagueMembershipRepository;
|
||||
let leagueRepository: any;
|
||||
let membershipRepository: any;
|
||||
let logger: Logger & { error: Mock };
|
||||
let useCase: TransferLeagueOwnershipUseCase;
|
||||
|
||||
@@ -21,19 +17,19 @@ describe('TransferLeagueOwnershipUseCase', () => {
|
||||
leagueRepository = {
|
||||
findById: vi.fn(),
|
||||
update: vi.fn(),
|
||||
} as unknown as ILeagueRepository;
|
||||
};
|
||||
|
||||
membershipRepository = {
|
||||
getMembership: vi.fn(),
|
||||
saveMembership: vi.fn(),
|
||||
} as unknown as ILeagueMembershipRepository;
|
||||
};
|
||||
|
||||
logger = {
|
||||
debug: vi.fn(),
|
||||
info: vi.fn(),
|
||||
warn: vi.fn(),
|
||||
error: vi.fn(),
|
||||
} as unknown as Logger & { error: Mock };
|
||||
} as any;
|
||||
|
||||
useCase = new TransferLeagueOwnershipUseCase(
|
||||
leagueRepository,
|
||||
@@ -47,25 +43,25 @@ describe('TransferLeagueOwnershipUseCase', () => {
|
||||
id: 'league-1',
|
||||
ownerId: { toString: () => 'owner-1' },
|
||||
update: vi.fn().mockReturnValue({}),
|
||||
} as unknown as { id: string; ownerId: { toString: () => string }; update: Mock };
|
||||
} as any;
|
||||
|
||||
const mockNewOwnerMembership = {
|
||||
leagueId: 'league-1',
|
||||
driverId: 'owner-2',
|
||||
status: { toString: () => 'active' },
|
||||
role: 'member',
|
||||
} as unknown as { leagueId: string; driverId: string; status: { toString: () => string }; role: string };
|
||||
} as any;
|
||||
|
||||
const mockCurrentOwnerMembership = {
|
||||
leagueId: 'league-1',
|
||||
driverId: 'owner-1',
|
||||
status: { toString: () => 'active' },
|
||||
role: 'owner',
|
||||
} as unknown as { leagueId: string; driverId: string; status: { toString: () => string }; role: string };
|
||||
} as any;
|
||||
|
||||
(leagueRepository.findById as unknown as Mock).mockResolvedValue(mockLeague);
|
||||
leagueRepository.findById.mockResolvedValue(mockLeague);
|
||||
|
||||
(membershipRepository.getMembership as unknown as Mock)
|
||||
membershipRepository.getMembership
|
||||
.mockResolvedValueOnce(mockNewOwnerMembership)
|
||||
.mockResolvedValueOnce(mockCurrentOwnerMembership);
|
||||
|
||||
@@ -75,10 +71,7 @@ describe('TransferLeagueOwnershipUseCase', () => {
|
||||
newOwnerId: 'owner-2',
|
||||
};
|
||||
|
||||
const result: Result<
|
||||
TransferLeagueOwnershipResult,
|
||||
ApplicationErrorCode<TransferLeagueOwnershipErrorCode, { message: string }>
|
||||
> = await useCase.execute(input);
|
||||
const result = await useCase.execute(input);
|
||||
|
||||
expect(result.isOk()).toBe(true);
|
||||
const successResult = result.unwrap();
|
||||
@@ -94,7 +87,7 @@ describe('TransferLeagueOwnershipUseCase', () => {
|
||||
|
||||
expect(membershipRepository.saveMembership).toHaveBeenCalledTimes(2);
|
||||
|
||||
const saveMembershipMock = membershipRepository.saveMembership as unknown as Mock;
|
||||
const saveMembershipMock = membershipRepository.saveMembership as Mock;
|
||||
const firstSaveCall = saveMembershipMock.mock.calls[0]![0] as { role: string };
|
||||
const secondSaveCall = saveMembershipMock.mock.calls[1]![0] as { role: string };
|
||||
|
||||
@@ -106,7 +99,7 @@ describe('TransferLeagueOwnershipUseCase', () => {
|
||||
});
|
||||
|
||||
it('returns LEAGUE_NOT_FOUND when league does not exist', async () => {
|
||||
(leagueRepository.findById as unknown as Mock).mockResolvedValue(null);
|
||||
leagueRepository.findById.mockResolvedValue(null);
|
||||
|
||||
const input: TransferLeagueOwnershipInput = {
|
||||
leagueId: 'non-existent',
|
||||
@@ -114,10 +107,7 @@ describe('TransferLeagueOwnershipUseCase', () => {
|
||||
newOwnerId: 'owner-2',
|
||||
};
|
||||
|
||||
const result: Result<
|
||||
TransferLeagueOwnershipResult,
|
||||
ApplicationErrorCode<TransferLeagueOwnershipErrorCode, { message: string }>
|
||||
> = await useCase.execute(input);
|
||||
const result = await useCase.execute(input);
|
||||
|
||||
expect(result.isErr()).toBe(true);
|
||||
const error = result.unwrapErr() as ApplicationErrorCode<
|
||||
@@ -134,9 +124,9 @@ describe('TransferLeagueOwnershipUseCase', () => {
|
||||
id: 'league-1',
|
||||
ownerId: { toString: () => 'other-owner' },
|
||||
update: vi.fn(),
|
||||
} as unknown as { id: string; ownerId: { toString: () => string }; update: Mock };
|
||||
} as any;
|
||||
|
||||
(leagueRepository.findById as unknown as Mock).mockResolvedValue(mockLeague);
|
||||
leagueRepository.findById.mockResolvedValue(mockLeague);
|
||||
|
||||
const input: TransferLeagueOwnershipInput = {
|
||||
leagueId: 'league-1',
|
||||
@@ -144,10 +134,7 @@ describe('TransferLeagueOwnershipUseCase', () => {
|
||||
newOwnerId: 'owner-2',
|
||||
};
|
||||
|
||||
const result: Result<
|
||||
TransferLeagueOwnershipResult,
|
||||
ApplicationErrorCode<TransferLeagueOwnershipErrorCode, { message: string }>
|
||||
> = await useCase.execute(input);
|
||||
const result = await useCase.execute(input);
|
||||
|
||||
expect(result.isErr()).toBe(true);
|
||||
const error = result.unwrapErr() as ApplicationErrorCode<
|
||||
@@ -163,11 +150,11 @@ describe('TransferLeagueOwnershipUseCase', () => {
|
||||
id: 'league-1',
|
||||
ownerId: { toString: () => 'owner-1' },
|
||||
update: vi.fn(),
|
||||
} as unknown as { id: string; ownerId: { toString: () => string }; update: Mock };
|
||||
} as any;
|
||||
|
||||
(leagueRepository.findById as unknown as Mock).mockResolvedValue(mockLeague);
|
||||
leagueRepository.findById.mockResolvedValue(mockLeague);
|
||||
|
||||
(membershipRepository.getMembership as unknown as Mock).mockResolvedValue(null);
|
||||
membershipRepository.getMembership.mockResolvedValue(null);
|
||||
|
||||
const input: TransferLeagueOwnershipInput = {
|
||||
leagueId: 'league-1',
|
||||
@@ -175,10 +162,7 @@ describe('TransferLeagueOwnershipUseCase', () => {
|
||||
newOwnerId: 'owner-2',
|
||||
};
|
||||
|
||||
const result: Result<
|
||||
TransferLeagueOwnershipResult,
|
||||
ApplicationErrorCode<TransferLeagueOwnershipErrorCode, { message: string }>
|
||||
> = await useCase.execute(input);
|
||||
const result = await useCase.execute(input);
|
||||
|
||||
expect(result.isErr()).toBe(true);
|
||||
const error = result.unwrapErr() as ApplicationErrorCode<
|
||||
@@ -194,23 +178,23 @@ describe('TransferLeagueOwnershipUseCase', () => {
|
||||
id: 'league-1',
|
||||
ownerId: { toString: () => 'owner-1' },
|
||||
update: vi.fn().mockReturnValue({}),
|
||||
} as unknown as { id: string; ownerId: { toString: () => string }; update: Mock };
|
||||
} as any;
|
||||
|
||||
(leagueRepository.findById as unknown as Mock).mockResolvedValue(mockLeague);
|
||||
leagueRepository.findById.mockResolvedValue(mockLeague);
|
||||
|
||||
const mockNewOwnerMembership = {
|
||||
leagueId: 'league-1',
|
||||
driverId: 'owner-2',
|
||||
status: { toString: () => 'active' },
|
||||
role: 'member',
|
||||
} as unknown as { leagueId: string; driverId: string; status: { toString: () => string }; role: string };
|
||||
} as any;
|
||||
|
||||
(membershipRepository.getMembership as unknown as Mock)
|
||||
membershipRepository.getMembership
|
||||
.mockResolvedValueOnce(mockNewOwnerMembership)
|
||||
.mockResolvedValueOnce(null);
|
||||
|
||||
const updateError = new Error('update failed');
|
||||
(leagueRepository.update as unknown as Mock).mockRejectedValue(updateError);
|
||||
leagueRepository.update.mockRejectedValue(updateError);
|
||||
|
||||
const input: TransferLeagueOwnershipInput = {
|
||||
leagueId: 'league-1',
|
||||
@@ -218,10 +202,7 @@ describe('TransferLeagueOwnershipUseCase', () => {
|
||||
newOwnerId: 'owner-2',
|
||||
};
|
||||
|
||||
const result: Result<
|
||||
TransferLeagueOwnershipResult,
|
||||
ApplicationErrorCode<TransferLeagueOwnershipErrorCode, { message: string }>
|
||||
> = await useCase.execute(input);
|
||||
const result = await useCase.execute(input);
|
||||
|
||||
expect(result.isErr()).toBe(true);
|
||||
const error = result.unwrapErr() as ApplicationErrorCode<
|
||||
@@ -240,4 +221,4 @@ describe('TransferLeagueOwnershipUseCase', () => {
|
||||
const loggedMessage = calls[0]?.[0] as string;
|
||||
expect(loggedMessage).toContain('update failed');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user