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,13 +1,13 @@
import { SignupWithEmailUseCase } from '@core/identity/application/use-cases/SignupWithEmailUseCase';
import { CreateAchievementUseCase } from '@core/identity/application/use-cases/achievement/CreateAchievementUseCase';
import type { Logger } from '@core/shared/domain';
import type { Logger } from '@core/shared/domain/Logger';
import {
DRIVER_ACHIEVEMENTS,
STEWARD_ACHIEVEMENTS,
ADMIN_ACHIEVEMENTS,
COMMUNITY_ACHIEVEMENTS,
ADMIN_ACHIEVEMENTS,
COMMUNITY_ACHIEVEMENTS,
DRIVER_ACHIEVEMENTS,
STEWARD_ACHIEVEMENTS,
} from '@core/identity/domain/AchievementConstants';

View File

@@ -1,13 +1,13 @@
import { Game } from '@core/racing/domain/entities/Game';
import { Season } from '@core/racing/domain/entities/season/Season';
import type { LeagueScoringConfig } from '@core/racing/domain/entities/LeagueScoringConfig';
import { Season } from '@core/racing/domain/entities/season/Season';
import type { Logger } from '@core/shared/domain/Logger';
import {
InMemoryChampionshipStandingRepository,
InMemoryGameRepository,
InMemoryLeagueScoringConfigRepository,
InMemorySeasonRepository,
InMemoryChampionshipStandingRepository,
InMemoryGameRepository,
InMemoryLeagueScoringConfigRepository,
InMemorySeasonRepository,
} from '../racing/persistence/inmemory/InMemoryScoringRepositories';
import type { Logger } from '@core/shared/domain';
import { getLeagueScoringPresetById } from './LeagueScoringPresets';
/* eslint-disable @typescript-eslint/no-unused-vars */

View File

@@ -1,16 +1,12 @@
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
import type { Logger } from '@core/shared/domain';
import type { AuthRepository } from '@core/identity/domain/repositories/AuthRepository';
import type { PasswordHashingService } from '@core/identity/domain/services/PasswordHashingService';
import type { AdminUserRepository } from '@core/admin/domain/repositories/AdminUserRepository';
import { User } from '@core/identity/domain/entities/User';
import { AdminUser } from '@core/admin/domain/entities/AdminUser';
import { EmailAddress } from '@core/identity/domain/value-objects/EmailAddress';
import { UserId } from '@core/identity/domain/value-objects/UserId';
import { Email } from '@core/admin/domain/value-objects/Email';
import { UserRole } from '@core/admin/domain/value-objects/UserRole';
import { UserStatus } from '@core/admin/domain/value-objects/UserStatus';
import { User } from '@core/identity/domain/entities/User';
import { EmailAddress } from '@core/identity/domain/value-objects/EmailAddress';
import { PasswordHash } from '@core/identity/domain/value-objects/PasswordHash';
import { UserId } from '@core/identity/domain/value-objects/UserId';
import type { Logger } from '@core/shared/domain/Logger';
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
// Import the class we're testing (will be created)
import { SeedDemoUsers } from './SeedDemoUsers';

View File

@@ -1,13 +1,10 @@
import type { Logger } from '@core/shared/domain';
import type { AuthRepository } from '@core/identity/domain/repositories/AuthRepository';
import type { PasswordHashingService } from '@core/identity/domain/services/PasswordHashingService';
import type { AdminUserRepository } from '@core/admin/domain/repositories/AdminUserRepository';
import { User } from '@core/identity/domain/entities/User';
import { AdminUser } from '@core/admin/domain/entities/AdminUser';
import { EmailAddress } from '@core/identity/domain/value-objects/EmailAddress';
import { UserId } from '@core/identity/domain/value-objects/UserId';
import { Email } from '@core/admin/domain/value-objects/Email';
import { User } from '@core/identity/domain/entities/User';
import { EmailAddress } from '@core/identity/domain/value-objects/EmailAddress';
import { PasswordHash } from '@core/identity/domain/value-objects/PasswordHash';
import { UserId } from '@core/identity/domain/value-objects/UserId';
import type { Logger } from '@core/shared/domain/Logger';
import { stableUuidFromSeedKey } from './racing/SeedIdHelper';
interface DemoUserSpec {
@@ -38,7 +35,7 @@ export class SeedDemoUsers {
{
email: 'demo.sponsor@example.com',
password: 'Demo1234!',
needsAdminUser: true,
needsAdminUser: false,
needsPrimaryDriverId: false,
roles: ['sponsor'],
displayName: 'Jane Sponsor',

View File

@@ -1,4 +1,4 @@
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
// IMPORTANT: SeedRacingData imports createRacingSeed from ./racing/RacingSeed
// We mock it to avoid heavy seed generation and to keep the test focused on
@@ -34,7 +34,7 @@ vi.mock('./racing/RacingSeed', () => {
};
});
import type { Logger } from '@core/shared/domain';
import type { Logger } from '@core/shared/domain/Logger';
import { SeedRacingData, type RacingSeedDependencies } from './SeedRacingData';
describe('SeedRacingData force reseed behavior', () => {

View File

@@ -1,39 +1,14 @@
import type { Logger } from '@core/shared/domain';
import type { DriverRepository } from '@core/racing/domain/repositories/DriverRepository';
import type { LeagueRepository } from '@core/racing/domain/repositories/LeagueRepository';
import type { RaceRepository } from '@core/racing/domain/repositories/RaceRepository';
import type { ResultRepository } from '@core/racing/domain/repositories/ResultRepository';
import type { StandingRepository } from '@core/racing/domain/repositories/StandingRepository';
import type { LeagueMembershipRepository } from '@core/racing/domain/repositories/LeagueMembershipRepository';
import type { RaceRegistrationRepository } from '@core/racing/domain/repositories/RaceRegistrationRepository';
import type { TeamRepository } from '@core/racing/domain/repositories/TeamRepository';
import type { TeamMembershipRepository } from '@core/racing/domain/repositories/TeamMembershipRepository';
import type { SponsorRepository } from '@core/racing/domain/repositories/SponsorRepository';
import type { SeasonRepository } from '@core/racing/domain/repositories/SeasonRepository';
import type { LeagueScoringConfigRepository } from '@core/racing/domain/repositories/LeagueScoringConfigRepository';
import type { SeasonSponsorshipRepository } from '@core/racing/domain/repositories/SeasonSponsorshipRepository';
import type { SponsorshipRequestRepository } from '@core/racing/domain/repositories/SponsorshipRequestRepository';
import type { LeagueWalletRepository } from '@core/racing/domain/repositories/LeagueWalletRepository';
import type { TransactionRepository } from '@core/racing/domain/repositories/TransactionRepository';
import type { Season } from '@core/racing/domain/entities/season/Season';
import { getLeagueScoringPresetById } from './LeagueScoringPresets';
import type { ProtestRepository } from '@core/racing/domain/repositories/ProtestRepository';
import type { PenaltyRepository } from '@core/racing/domain/repositories/PenaltyRepository';
import type { FeedRepository } from '@core/social/domain/repositories/FeedRepository';
import type { SocialGraphRepository } from '@core/social/domain/repositories/SocialGraphRepository';
import type { DriverStatsRepository } from '@core/racing/domain/repositories/DriverStatsRepository';
import type { TeamStatsRepository, TeamStats } from '@core/racing/domain/repositories/TeamStatsRepository';
import type { MediaRepository } from '@core/racing/domain/repositories/MediaRepository';
import type { AuthRepository } from '@core/identity/domain/repositories/AuthRepository';
import type { PasswordHashingService } from '@core/identity/domain/services/PasswordHashingService';
import type { AdminUserRepository } from '@core/admin/domain/repositories/AdminUserRepository';
import { createRacingSeed } from './racing/RacingSeed';
import { seedId } from './racing/SeedIdHelper';
import type { DriverStats } from '@core/racing/application/use-cases/DriverStatsUseCase';
import { Driver } from '@core/racing/domain/entities/Driver';
import { Result } from '@core/racing/domain/entities/result/Result';
import type { Season } from '@core/racing/domain/entities/season/Season';
import { Standing } from '@core/racing/domain/entities/Standing';
import { Team } from '@core/racing/domain/entities/Team';
import type { DriverStats } from '@core/racing/application/use-cases/DriverStatsUseCase';
import type { TeamStats } from '@core/racing/domain/repositories/TeamStatsRepository';
import type { Logger } from '@core/shared/domain/Logger';
import { getLeagueScoringPresetById } from './LeagueScoringPresets';
import { createRacingSeed } from './racing/RacingSeed';
import { seedId } from './racing/SeedIdHelper';
export type RacingSeedDependencies = {
driverRepository: IDriverRepository;

View File

@@ -62,7 +62,7 @@ export class RacingDriverFactory {
}
// Create system-default reference with avatar variant
return MediaReference.systemDefault(avatarVariant);
return MediaReference.createSystemDefault('avatar', avatarVariant);
}
create(): Driver[] {

View File

@@ -48,7 +48,7 @@ export class RacingTeamFactory {
leagues: teamLeagues,
isRecruiting,
createdAt: faker.date.past({ years: 2, refDate: this.baseDate }),
logoRef: MediaReference.generated('team', teamId),
logoRef: MediaReference.createGenerated(`team-${teamId}`),
});
});
}