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

@@ -23,6 +23,9 @@ type TeamEntityStub = {
ownerId: ValueObjectStub;
leagues: ValueObjectStub[];
createdAt: { toDate(): Date };
logoRef: any;
category: string | undefined;
isRecruiting: boolean;
update: Mock;
};
@@ -43,6 +46,9 @@ describe('TeamService', () => {
ownerId: makeValueObject('owner-1'),
leagues: [makeValueObject('league-1')],
createdAt: { toDate: () => new Date('2023-01-01T00:00:00.000Z') },
logoRef: { type: 'system-default', variant: 'logo' },
category: undefined,
isRecruiting: false,
};
const team: TeamEntityStub = {
@@ -95,7 +101,7 @@ describe('TeamService', () => {
countByTeamId: vi.fn(),
getActiveMembershipForDriver: vi.fn(),
getMembership: vi.fn(),
getTeamMembers: vi.fn(),
getTeamMembers: vi.fn().mockResolvedValue([]),
getJoinRequests: vi.fn(),
saveMembership: vi.fn(),
};
@@ -112,28 +118,38 @@ describe('TeamService', () => {
} as unknown as Logger;
const teamStatsRepository = {
getTeamStats: vi.fn(),
getTeamStats: vi.fn().mockResolvedValue(undefined),
saveTeamStats: vi.fn(),
getAllStats: vi.fn(),
clear: vi.fn(),
};
const mediaRepository = {
getTeamAvatar: vi.fn(),
saveTeamAvatar: vi.fn(),
getDriverAvatar: vi.fn(),
saveDriverAvatar: vi.fn(),
};
const resultRepository = {
findAll: vi.fn(),
findAll: vi.fn().mockResolvedValue([]),
};
// Mock presenter that stores result synchronously
const allTeamsPresenter = {
reset: vi.fn(),
present: vi.fn(),
getResponseModel: vi.fn(() => ({ teams: [], totalCount: 0 })),
present: vi.fn((result: any) => {
// Store immediately and synchronously
allTeamsPresenter.responseModel = {
teams: result.teams.map((t: any) => ({
id: t.id,
name: t.name,
tag: t.tag,
description: t.description,
memberCount: t.memberCount,
leagues: t.leagues,
logoUrl: t.logoUrl ?? null,
})),
totalCount: result.totalCount,
};
}),
getResponseModel: vi.fn(() => allTeamsPresenter.responseModel || { teams: [], totalCount: 0 }),
responseModel: { teams: [], totalCount: 0 },
setMediaResolver: vi.fn(),
setBaseUrl: vi.fn(),
};
service = new TeamService(
@@ -142,9 +158,8 @@ describe('TeamService', () => {
driverRepository as unknown as never,
logger,
teamStatsRepository as unknown as never,
mediaRepository as unknown as never,
resultRepository as unknown as never,
allTeamsPresenter as unknown as never
allTeamsPresenter as any
);
});
@@ -152,7 +167,9 @@ describe('TeamService', () => {
teamRepository.findAll.mockResolvedValue([makeTeam()]);
membershipRepository.countByTeamId.mockResolvedValue(3);
await expect(service.getAll()).resolves.toEqual({
const result = await service.getAll();
await expect(result).toEqual({
teams: [
{
id: 'team-1',
@@ -161,6 +178,7 @@ describe('TeamService', () => {
description: 'Desc',
memberCount: 3,
leagues: ['league-1'],
logoUrl: null,
},
],
totalCount: 1,
@@ -200,6 +218,8 @@ describe('TeamService', () => {
description: 'Desc',
ownerId: 'owner-1',
leagues: ['league-1'],
category: undefined,
isRecruiting: false,
createdAt: '2023-01-01T00:00:00.000Z',
},
membership: {
@@ -503,6 +523,8 @@ describe('TeamService', () => {
description: 'Desc',
ownerId: 'owner-1',
leagues: ['league-1'],
category: undefined,
isRecruiting: false,
createdAt: '2023-01-01T00:00:00.000Z',
},
membership: {