fix issues in core
This commit is contained in:
@@ -1,10 +1,11 @@
|
||||
import { describe, it, expect, beforeEach, vi, Mock } from 'vitest';
|
||||
import { ApplyPenaltyUseCase } from './ApplyPenaltyUseCase';
|
||||
import { ApplyPenaltyUseCase, type ApplyPenaltyResult } from './ApplyPenaltyUseCase';
|
||||
import type { IPenaltyRepository } from '../../domain/repositories/IPenaltyRepository';
|
||||
import type { IProtestRepository } from '../../domain/repositories/IProtestRepository';
|
||||
import type { IRaceRepository } from '../../domain/repositories/IRaceRepository';
|
||||
import type { ILeagueMembershipRepository } from '../../domain/repositories/ILeagueMembershipRepository';
|
||||
import type { Logger } from '@core/shared/application';
|
||||
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort';
|
||||
|
||||
describe('ApplyPenaltyUseCase', () => {
|
||||
let mockPenaltyRepo: {
|
||||
@@ -48,7 +49,7 @@ describe('ApplyPenaltyUseCase', () => {
|
||||
});
|
||||
|
||||
it('should return error when race does not exist', async () => {
|
||||
const output = {
|
||||
const output: UseCaseOutputPort<ApplyPenaltyResult> & { present: Mock } = {
|
||||
present: vi.fn(),
|
||||
};
|
||||
|
||||
@@ -58,7 +59,7 @@ describe('ApplyPenaltyUseCase', () => {
|
||||
mockRaceRepo as unknown as IRaceRepository,
|
||||
mockLeagueMembershipRepo as unknown as ILeagueMembershipRepository,
|
||||
mockLogger as unknown as Logger,
|
||||
output as any,
|
||||
output,
|
||||
);
|
||||
|
||||
mockRaceRepo.findById.mockResolvedValue(null);
|
||||
@@ -77,7 +78,7 @@ describe('ApplyPenaltyUseCase', () => {
|
||||
});
|
||||
|
||||
it('should return error when steward does not have authority', async () => {
|
||||
const output = {
|
||||
const output: UseCaseOutputPort<ApplyPenaltyResult> & { present: Mock } = {
|
||||
present: vi.fn(),
|
||||
};
|
||||
|
||||
@@ -87,13 +88,18 @@ describe('ApplyPenaltyUseCase', () => {
|
||||
mockRaceRepo as unknown as IRaceRepository,
|
||||
mockLeagueMembershipRepo as unknown as ILeagueMembershipRepository,
|
||||
mockLogger as unknown as Logger,
|
||||
output as any,
|
||||
output,
|
||||
);
|
||||
|
||||
mockRaceRepo.findById.mockResolvedValue({ id: 'race1', leagueId: 'league1' });
|
||||
mockLeagueMembershipRepo.getLeagueMembers.mockResolvedValue([
|
||||
{ driverId: 'steward1', role: 'member', status: 'active' },
|
||||
]);
|
||||
|
||||
const membership = {
|
||||
driverId: { toString: () => 'steward1' },
|
||||
role: { toString: () => 'member' },
|
||||
status: { toString: () => 'active' },
|
||||
};
|
||||
|
||||
mockLeagueMembershipRepo.getLeagueMembers.mockResolvedValue([membership]);
|
||||
|
||||
const result = await useCase.execute({
|
||||
raceId: 'race1',
|
||||
@@ -109,7 +115,7 @@ describe('ApplyPenaltyUseCase', () => {
|
||||
});
|
||||
|
||||
it('should return error when protest does not exist', async () => {
|
||||
const output = {
|
||||
const output: UseCaseOutputPort<ApplyPenaltyResult> & { present: Mock } = {
|
||||
present: vi.fn(),
|
||||
};
|
||||
|
||||
@@ -119,13 +125,18 @@ describe('ApplyPenaltyUseCase', () => {
|
||||
mockRaceRepo as unknown as IRaceRepository,
|
||||
mockLeagueMembershipRepo as unknown as ILeagueMembershipRepository,
|
||||
mockLogger as unknown as Logger,
|
||||
output as any,
|
||||
output,
|
||||
);
|
||||
|
||||
mockRaceRepo.findById.mockResolvedValue({ id: 'race1', leagueId: 'league1' });
|
||||
mockLeagueMembershipRepo.getLeagueMembers.mockResolvedValue([
|
||||
{ driverId: 'steward1', role: 'owner', status: 'active' },
|
||||
]);
|
||||
|
||||
const membership = {
|
||||
driverId: { toString: () => 'steward1' },
|
||||
role: { toString: () => 'owner' },
|
||||
status: { toString: () => 'active' },
|
||||
};
|
||||
|
||||
mockLeagueMembershipRepo.getLeagueMembers.mockResolvedValue([membership]);
|
||||
mockProtestRepo.findById.mockResolvedValue(null);
|
||||
|
||||
const result = await useCase.execute({
|
||||
@@ -143,7 +154,7 @@ describe('ApplyPenaltyUseCase', () => {
|
||||
});
|
||||
|
||||
it('should return error when protest is not upheld', async () => {
|
||||
const output = {
|
||||
const output: UseCaseOutputPort<ApplyPenaltyResult> & { present: Mock } = {
|
||||
present: vi.fn(),
|
||||
};
|
||||
|
||||
@@ -153,13 +164,18 @@ describe('ApplyPenaltyUseCase', () => {
|
||||
mockRaceRepo as unknown as IRaceRepository,
|
||||
mockLeagueMembershipRepo as unknown as ILeagueMembershipRepository,
|
||||
mockLogger as unknown as Logger,
|
||||
output as any,
|
||||
output,
|
||||
);
|
||||
|
||||
mockRaceRepo.findById.mockResolvedValue({ id: 'race1', leagueId: 'league1' });
|
||||
mockLeagueMembershipRepo.getLeagueMembers.mockResolvedValue([
|
||||
{ driverId: 'steward1', role: 'owner', status: 'active' },
|
||||
]);
|
||||
|
||||
const membership = {
|
||||
driverId: { toString: () => 'steward1' },
|
||||
role: { toString: () => 'owner' },
|
||||
status: { toString: () => 'active' },
|
||||
};
|
||||
|
||||
mockLeagueMembershipRepo.getLeagueMembers.mockResolvedValue([membership]);
|
||||
mockProtestRepo.findById.mockResolvedValue({ id: 'protest1', status: 'pending', raceId: 'race1' });
|
||||
|
||||
const result = await useCase.execute({
|
||||
@@ -177,7 +193,7 @@ describe('ApplyPenaltyUseCase', () => {
|
||||
});
|
||||
|
||||
it('should return error when protest is not for this race', async () => {
|
||||
const output = {
|
||||
const output: UseCaseOutputPort<ApplyPenaltyResult> & { present: Mock } = {
|
||||
present: vi.fn(),
|
||||
};
|
||||
|
||||
@@ -187,13 +203,18 @@ describe('ApplyPenaltyUseCase', () => {
|
||||
mockRaceRepo as unknown as IRaceRepository,
|
||||
mockLeagueMembershipRepo as unknown as ILeagueMembershipRepository,
|
||||
mockLogger as unknown as Logger,
|
||||
output as any,
|
||||
output,
|
||||
);
|
||||
|
||||
mockRaceRepo.findById.mockResolvedValue({ id: 'race1', leagueId: 'league1' });
|
||||
mockLeagueMembershipRepo.getLeagueMembers.mockResolvedValue([
|
||||
{ driverId: 'steward1', role: 'owner', status: 'active' },
|
||||
]);
|
||||
|
||||
const membership = {
|
||||
driverId: { toString: () => 'steward1' },
|
||||
role: { toString: () => 'owner' },
|
||||
status: { toString: () => 'active' },
|
||||
};
|
||||
|
||||
mockLeagueMembershipRepo.getLeagueMembers.mockResolvedValue([membership]);
|
||||
mockProtestRepo.findById.mockResolvedValue({ id: 'protest1', status: 'upheld', raceId: 'race2' });
|
||||
|
||||
const result = await useCase.execute({
|
||||
@@ -211,7 +232,7 @@ describe('ApplyPenaltyUseCase', () => {
|
||||
});
|
||||
|
||||
it('should create penalty and return result on success', async () => {
|
||||
const output = {
|
||||
const output: UseCaseOutputPort<ApplyPenaltyResult> & { present: Mock } = {
|
||||
present: vi.fn(),
|
||||
};
|
||||
|
||||
@@ -221,13 +242,18 @@ describe('ApplyPenaltyUseCase', () => {
|
||||
mockRaceRepo as unknown as IRaceRepository,
|
||||
mockLeagueMembershipRepo as unknown as ILeagueMembershipRepository,
|
||||
mockLogger as unknown as Logger,
|
||||
output as any,
|
||||
output,
|
||||
);
|
||||
|
||||
mockRaceRepo.findById.mockResolvedValue({ id: 'race1', leagueId: 'league1' });
|
||||
mockLeagueMembershipRepo.getLeagueMembers.mockResolvedValue([
|
||||
{ driverId: 'steward1', role: 'admin', status: 'active' },
|
||||
]);
|
||||
|
||||
const membership = {
|
||||
driverId: { toString: () => 'steward1' },
|
||||
role: { toString: () => 'admin' },
|
||||
status: { toString: () => 'active' },
|
||||
};
|
||||
|
||||
mockLeagueMembershipRepo.getLeagueMembers.mockResolvedValue([membership]);
|
||||
mockPenaltyRepo.create.mockResolvedValue(undefined);
|
||||
|
||||
const result = await useCase.execute({
|
||||
|
||||
Reference in New Issue
Block a user