website refactor

This commit is contained in:
2026-01-16 15:20:25 +01:00
parent 7e02fc3ea5
commit 37b1aa626c
325 changed files with 2167 additions and 2782 deletions

View File

@@ -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');
});
});
});