harden media

This commit is contained in:
2025-12-31 15:39:28 +01:00
parent 92226800df
commit 8260bf7baf
413 changed files with 8361 additions and 1544 deletions

View File

@@ -3,7 +3,6 @@ import { GetAllTeamsUseCase, type GetAllTeamsInput, type GetAllTeamsResult } fro
import type { ITeamRepository } from '../../domain/repositories/ITeamRepository';
import type { ITeamMembershipRepository } from '../../domain/repositories/ITeamMembershipRepository';
import type { ITeamStatsRepository } from '../../domain/repositories/ITeamStatsRepository';
import type { IMediaRepository } from '../../domain/repositories/IMediaRepository';
import type { IResultRepository } from '../../domain/repositories/IResultRepository';
import type { Logger } from '@core/shared/application';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort';
@@ -55,15 +54,6 @@ describe('GetAllTeamsUseCase', () => {
existsByRaceId: vi.fn(),
};
const mockMediaRepo: IMediaRepository = {
getDriverAvatar: vi.fn(),
getTeamLogo: vi.fn(),
getTrackImage: vi.fn(),
getCategoryIcon: vi.fn(),
getSponsorLogo: vi.fn(),
clear: vi.fn(),
};
const mockLogger: Logger = {
debug: vi.fn(),
info: vi.fn(),
@@ -85,7 +75,6 @@ describe('GetAllTeamsUseCase', () => {
mockTeamRepo,
mockTeamMembershipRepo,
mockTeamStatsRepo,
mockMediaRepo,
mockResultRepo,
mockLogger,
output,
@@ -99,6 +88,9 @@ describe('GetAllTeamsUseCase', () => {
ownerId: { toString: () => 'owner1' },
leagues: [{ toString: () => 'league1' }],
createdAt: { toDate: () => new Date('2023-01-01T00:00:00Z') },
logoRef: { toJSON: () => ({ type: 'generated', generationRequestId: 'team-team1' }) },
category: undefined,
isRecruiting: false,
};
const team2 = {
id: 'team2',
@@ -108,11 +100,39 @@ describe('GetAllTeamsUseCase', () => {
ownerId: { toString: () => 'owner2' },
leagues: [{ toString: () => 'league2' }],
createdAt: { toDate: () => new Date('2023-01-02T00:00:00Z') },
logoRef: { toJSON: () => ({ type: 'generated', generationRequestId: 'team-team2' }) },
category: undefined,
isRecruiting: true,
};
mockTeamFindAll.mockResolvedValue([team1, team2]);
mockTeamMembershipCountByTeamId.mockImplementation((id: string) => Promise.resolve(id === 'team1' ? 5 : 3));
// Provide precomputed stats so the use case doesn't compute from results.
(mockTeamStatsRepo.getTeamStats as unknown as Mock).mockImplementation((teamId: string) =>
Promise.resolve(
teamId === 'team1'
? {
performanceLevel: 'intermediate',
specialization: 'mixed',
region: 'EU',
languages: ['en'],
totalWins: 2,
totalRaces: 10,
rating: 1200,
}
: {
performanceLevel: 'advanced',
specialization: 'mixed',
region: 'US',
languages: ['en', 'de'],
totalWins: 5,
totalRaces: 20,
rating: 1400,
},
),
);
const result = await useCase.execute({} as GetAllTeamsInput);
expect(result.isOk()).toBe(true);
@@ -132,6 +152,17 @@ describe('GetAllTeamsUseCase', () => {
leagues: ['league1'],
createdAt: new Date('2023-01-01T00:00:00Z'),
memberCount: 5,
totalWins: 2,
totalRaces: 10,
performanceLevel: 'intermediate',
specialization: 'mixed',
region: 'EU',
languages: ['en'],
logoRef: team1.logoRef,
logoUrl: null,
rating: 1200,
category: undefined,
isRecruiting: false,
},
{
id: 'team2',
@@ -142,6 +173,17 @@ describe('GetAllTeamsUseCase', () => {
leagues: ['league2'],
createdAt: new Date('2023-01-02T00:00:00Z'),
memberCount: 3,
totalWins: 5,
totalRaces: 20,
performanceLevel: 'advanced',
specialization: 'mixed',
region: 'US',
languages: ['en', 'de'],
logoRef: team2.logoRef,
logoUrl: null,
rating: 1400,
category: undefined,
isRecruiting: true,
},
],
totalCount: 2,
@@ -153,7 +195,6 @@ describe('GetAllTeamsUseCase', () => {
mockTeamRepo,
mockTeamMembershipRepo,
mockTeamStatsRepo,
mockMediaRepo,
mockResultRepo,
mockLogger,
output,
@@ -180,7 +221,6 @@ describe('GetAllTeamsUseCase', () => {
mockTeamRepo,
mockTeamMembershipRepo,
mockTeamStatsRepo,
mockMediaRepo,
mockResultRepo,
mockLogger,
output,