Some checks failed
CI / lint-typecheck (pull_request) Failing after 4m50s
CI / tests (pull_request) Has been skipped
CI / contract-tests (pull_request) Has been skipped
CI / e2e-tests (pull_request) Has been skipped
CI / comment-pr (pull_request) Has been skipped
CI / commit-types (pull_request) Has been skipped
95 lines
4.5 KiB
TypeScript
95 lines
4.5 KiB
TypeScript
import { Logger } from '../../../core/shared/domain/Logger';
|
|
import { InMemoryTeamRepository } from '../../../adapters/racing/persistence/inmemory/InMemoryTeamRepository';
|
|
import { InMemoryTeamMembershipRepository } from '../../../adapters/racing/persistence/inmemory/InMemoryTeamMembershipRepository';
|
|
import { InMemoryDriverRepository } from '../../../adapters/racing/persistence/inmemory/InMemoryDriverRepository';
|
|
import { InMemoryTeamStatsRepository } from '../../../adapters/racing/persistence/inmemory/InMemoryTeamStatsRepository';
|
|
import { CreateTeamUseCase } from '../../../core/racing/application/use-cases/CreateTeamUseCase';
|
|
import { JoinTeamUseCase } from '../../../core/racing/application/use-cases/JoinTeamUseCase';
|
|
import { LeaveTeamUseCase } from '../../../core/racing/application/use-cases/LeaveTeamUseCase';
|
|
import { GetTeamMembershipUseCase } from '../../../core/racing/application/use-cases/GetTeamMembershipUseCase';
|
|
import { GetTeamMembersUseCase } from '../../../core/racing/application/use-cases/GetTeamMembersUseCase';
|
|
import { GetTeamJoinRequestsUseCase } from '../../../core/racing/application/use-cases/GetTeamJoinRequestsUseCase';
|
|
import { ApproveTeamJoinRequestUseCase } from '../../../core/racing/application/use-cases/ApproveTeamJoinRequestUseCase';
|
|
import { UpdateTeamUseCase } from '../../../core/racing/application/use-cases/UpdateTeamUseCase';
|
|
import { GetTeamDetailsUseCase } from '../../../core/racing/application/use-cases/GetTeamDetailsUseCase';
|
|
import { GetTeamsLeaderboardUseCase } from '../../../core/racing/application/use-cases/GetTeamsLeaderboardUseCase';
|
|
import { GetAllTeamsUseCase } from '../../../core/racing/application/use-cases/GetAllTeamsUseCase';
|
|
|
|
export class TeamsTestContext {
|
|
public readonly logger: Logger;
|
|
public readonly teamRepository: InMemoryTeamRepository;
|
|
public readonly membershipRepository: InMemoryTeamMembershipRepository;
|
|
public readonly driverRepository: InMemoryDriverRepository;
|
|
public readonly statsRepository: InMemoryTeamStatsRepository;
|
|
|
|
constructor() {
|
|
this.logger = {
|
|
info: () => {},
|
|
debug: () => {},
|
|
warn: () => {},
|
|
error: () => {},
|
|
} as unknown as Logger;
|
|
|
|
this.teamRepository = new InMemoryTeamRepository(this.logger);
|
|
this.membershipRepository = new InMemoryTeamMembershipRepository(this.logger);
|
|
this.driverRepository = new InMemoryDriverRepository(this.logger);
|
|
this.statsRepository = new InMemoryTeamStatsRepository(this.logger);
|
|
}
|
|
|
|
public clear(): void {
|
|
this.teamRepository.clear();
|
|
this.membershipRepository.clear();
|
|
this.driverRepository.clear();
|
|
this.statsRepository.clear();
|
|
}
|
|
|
|
public createCreateTeamUseCase(): CreateTeamUseCase {
|
|
return new CreateTeamUseCase(this.teamRepository, this.membershipRepository, this.logger);
|
|
}
|
|
|
|
public createJoinTeamUseCase(): JoinTeamUseCase {
|
|
return new JoinTeamUseCase(this.teamRepository, this.membershipRepository, this.logger);
|
|
}
|
|
|
|
public createLeaveTeamUseCase(): LeaveTeamUseCase {
|
|
return new LeaveTeamUseCase(this.teamRepository, this.membershipRepository, this.logger);
|
|
}
|
|
|
|
public createGetTeamMembershipUseCase(): GetTeamMembershipUseCase {
|
|
return new GetTeamMembershipUseCase(this.membershipRepository, this.logger);
|
|
}
|
|
|
|
public createGetTeamMembersUseCase(): GetTeamMembersUseCase {
|
|
return new GetTeamMembersUseCase(this.membershipRepository, this.driverRepository, this.teamRepository, this.logger);
|
|
}
|
|
|
|
public createGetTeamJoinRequestsUseCase(): GetTeamJoinRequestsUseCase {
|
|
return new GetTeamJoinRequestsUseCase(this.membershipRepository, this.driverRepository, this.teamRepository);
|
|
}
|
|
|
|
public createApproveTeamJoinRequestUseCase(): ApproveTeamJoinRequestUseCase {
|
|
return new ApproveTeamJoinRequestUseCase(this.membershipRepository);
|
|
}
|
|
|
|
public createUpdateTeamUseCase(): UpdateTeamUseCase {
|
|
return new UpdateTeamUseCase(this.teamRepository, this.membershipRepository);
|
|
}
|
|
|
|
public createGetTeamDetailsUseCase(): GetTeamDetailsUseCase {
|
|
return new GetTeamDetailsUseCase(this.teamRepository, this.membershipRepository);
|
|
}
|
|
|
|
public createGetTeamsLeaderboardUseCase(getDriverStats: (driverId: string) => any): GetTeamsLeaderboardUseCase {
|
|
return new GetTeamsLeaderboardUseCase(
|
|
this.teamRepository,
|
|
this.membershipRepository,
|
|
getDriverStats,
|
|
this.logger
|
|
);
|
|
}
|
|
|
|
public createGetAllTeamsUseCase(): GetAllTeamsUseCase {
|
|
return new GetAllTeamsUseCase(this.teamRepository, this.membershipRepository, this.statsRepository, this.logger);
|
|
}
|
|
}
|