website refactor
This commit is contained in:
@@ -3,7 +3,6 @@ import { Email } from '@core/admin/domain/value-objects/Email';
|
||||
import type { AdminUserRepository } from '@core/admin/domain/repositories/AdminUserRepository';
|
||||
import { User } from '@core/identity/domain/entities/User';
|
||||
import type { AuthRepository } from '@core/identity/domain/repositories/AuthRepository';
|
||||
import type { UserRepository } from '@core/identity/domain/repositories/UserRepository';
|
||||
import type { PasswordHashingService } from '@core/identity/domain/services/PasswordHashingService';
|
||||
import { EmailAddress } from '@core/identity/domain/value-objects/EmailAddress';
|
||||
import { PasswordHash } from '@core/identity/domain/value-objects/PasswordHash';
|
||||
|
||||
@@ -78,10 +78,14 @@ class MockAvatarGenerationAdapter implements AvatarGenerationPort {
|
||||
}
|
||||
|
||||
class MockLogger implements Logger {
|
||||
debug(message: string, context?: unknown): void {}
|
||||
info(message: string, context?: unknown): void {}
|
||||
warn(message: string, context?: unknown): void {}
|
||||
error(message: string, error?: Error, context?: unknown): void {}
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
debug(_message: string, _context?: unknown): void {}
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
info(_message: string, _context?: unknown): void {}
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
warn(_message: string, _context?: unknown): void {}
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
error(_message: string, _error?: Error, _context?: unknown): void {}
|
||||
}
|
||||
|
||||
import { MediaResolverAdapter } from '@adapters/media/MediaResolverAdapter';
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import type { IAchievementRepository } from '@core/identity/domain/repositories/AchievementRepository';
|
||||
import type { AchievementRepository } from '@core/identity/domain/repositories/AchievementRepository';
|
||||
import { Test, TestingModule } from '@nestjs/testing';
|
||||
import { beforeEach, describe, expect, it } from 'vitest';
|
||||
import { beforeEach, describe, expect, it, vi, afterEach } from 'vitest';
|
||||
import { ACHIEVEMENT_REPOSITORY_TOKEN } from './AchievementPersistenceTokens';
|
||||
|
||||
describe('AchievementPersistenceModule', () => {
|
||||
@@ -27,7 +27,7 @@ describe('AchievementPersistenceModule', () => {
|
||||
imports: [AchievementPersistenceModule],
|
||||
}).compile();
|
||||
|
||||
const repository = module.get<IAchievementRepository>(ACHIEVEMENT_REPOSITORY_TOKEN);
|
||||
const repository = module.get<AchievementRepository>(ACHIEVEMENT_REPOSITORY_TOKEN);
|
||||
// The adapter should provide the domain interface methods
|
||||
expect(repository).toBeDefined();
|
||||
expect(typeof repository.createAchievement).toBe('function');
|
||||
@@ -50,7 +50,7 @@ describe('AchievementPersistenceModule', () => {
|
||||
imports: [AchievementPersistenceModule],
|
||||
}).compile();
|
||||
|
||||
const repository = module.get<IAchievementRepository>(ACHIEVEMENT_REPOSITORY_TOKEN);
|
||||
const repository = module.get<AchievementRepository>(ACHIEVEMENT_REPOSITORY_TOKEN);
|
||||
// The adapter should provide the domain interface methods
|
||||
expect(repository).toBeDefined();
|
||||
expect(typeof repository.createAchievement).toBe('function');
|
||||
@@ -68,7 +68,7 @@ describe('AchievementPersistenceModule', () => {
|
||||
imports: [AchievementPersistenceModule],
|
||||
}).compile();
|
||||
|
||||
const repository = module.get<IAchievementRepository>(ACHIEVEMENT_REPOSITORY_TOKEN);
|
||||
const repository = module.get<AchievementRepository>(ACHIEVEMENT_REPOSITORY_TOKEN);
|
||||
// The adapter should provide the domain interface methods
|
||||
expect(repository).toBeDefined();
|
||||
expect(typeof repository.createAchievement).toBe('function');
|
||||
|
||||
@@ -5,6 +5,10 @@
|
||||
* This is an application layer concern that orchestrates domain data.
|
||||
*/
|
||||
|
||||
import type { ResultRepository } from '../../domain/repositories/ResultRepository';
|
||||
import type { StandingRepository } from '../../domain/repositories/StandingRepository';
|
||||
import type { Logger } from '@core/shared/domain/Logger';
|
||||
|
||||
export interface DriverStats {
|
||||
rating: number;
|
||||
safetyRating: number;
|
||||
@@ -21,6 +25,15 @@ export interface DriverStats {
|
||||
overallRank: number | null;
|
||||
}
|
||||
|
||||
export interface DriverStatsUseCase {
|
||||
getDriverStats(driverId: string): Promise<DriverStats | null>;
|
||||
export class DriverStatsUseCase {
|
||||
constructor(
|
||||
_resultRepository: ResultRepository,
|
||||
_standingRepository: StandingRepository,
|
||||
private readonly _logger: Logger,
|
||||
) {}
|
||||
|
||||
async getDriverStats(driverId: string): Promise<DriverStats | null> {
|
||||
this._logger.debug(`Getting stats for driver ${driverId}`);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -5,6 +5,10 @@
|
||||
* This is an application layer concern that orchestrates domain data.
|
||||
*/
|
||||
|
||||
import type { StandingRepository } from '../../domain/repositories/StandingRepository';
|
||||
import type { DriverRepository } from '../../domain/repositories/DriverRepository';
|
||||
import type { Logger } from '@core/shared/domain/Logger';
|
||||
|
||||
export interface DriverRanking {
|
||||
driverId: string;
|
||||
rating: number;
|
||||
@@ -13,6 +17,15 @@ export interface DriverRanking {
|
||||
overallRank: number | null;
|
||||
}
|
||||
|
||||
export interface RankingUseCase {
|
||||
getAllDriverRankings(): Promise<DriverRanking[]>;
|
||||
export class RankingUseCase {
|
||||
constructor(
|
||||
_standingRepository: StandingRepository,
|
||||
_driverRepository: DriverRepository,
|
||||
private readonly _logger: Logger,
|
||||
) {}
|
||||
|
||||
async getAllDriverRankings(): Promise<DriverRanking[]> {
|
||||
this._logger.debug('Getting all driver rankings');
|
||||
return [];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user