resolve manual DTOs

This commit is contained in:
2025-12-18 22:19:40 +01:00
parent 4a3087ae35
commit d617654928
179 changed files with 3716 additions and 1257 deletions

View File

@@ -29,11 +29,16 @@ describe('TeamService', () => {
{
id: 'team-1',
name: 'Test Team',
logoUrl: 'https://example.com/logo.png',
tag: 'TT',
description: 'A test team',
memberCount: 5,
rating: 1500,
leagues: ['league-1'],
specialization: 'endurance' as const,
region: 'EU',
languages: ['en'],
},
],
totalCount: 1,
};
mockApiClient.getAll.mockResolvedValue(mockDto);
@@ -45,6 +50,7 @@ describe('TeamService', () => {
expect(result[0]).toBeInstanceOf(TeamSummaryViewModel);
expect(result[0].id).toBe('team-1');
expect(result[0].name).toBe('Test Team');
expect(result[0].tag).toBe('TT');
});
it('should throw error when apiClient.getAll fails', async () => {
@@ -58,13 +64,24 @@ describe('TeamService', () => {
describe('getTeamDetails', () => {
it('should call apiClient.getDetails and return TeamDetailsViewModel when data exists', async () => {
const mockDto = {
id: 'team-1',
name: 'Test Team',
description: 'A test team',
logoUrl: 'https://example.com/logo.png',
memberCount: 5,
ownerId: 'owner-1',
members: [],
team: {
id: 'team-1',
name: 'Test Team',
tag: 'TT',
description: 'A test team',
ownerId: 'owner-1',
leagues: ['league-1'],
createdAt: '2023-01-01T00:00:00Z',
specialization: 'endurance',
region: 'EU',
languages: ['en'],
},
membership: {
role: 'member',
joinedAt: '2023-01-01T00:00:00Z',
isActive: true,
},
canManage: false,
};
mockApiClient.getDetails.mockResolvedValue(mockDto);
@@ -75,6 +92,7 @@ describe('TeamService', () => {
expect(result).toBeInstanceOf(TeamDetailsViewModel);
expect(result?.id).toBe('team-1');
expect(result?.name).toBe('Test Team');
expect(result?.tag).toBe('TT');
});
it('should return null when apiClient.getDetails returns null', async () => {
@@ -100,11 +118,17 @@ describe('TeamService', () => {
members: [
{
driverId: 'driver-1',
driver: { id: 'driver-1', name: 'Driver One', avatarUrl: 'avatar.png', iracingId: '123', rating: 1400 },
role: 'member',
driverName: 'Driver One',
role: 'member' as const,
joinedAt: '2023-01-01T00:00:00Z',
isActive: true,
avatarUrl: 'avatar.png',
},
],
totalCount: 1,
ownerCount: 0,
managerCount: 0,
memberCount: 1,
};
mockApiClient.getMembers.mockResolvedValue(mockDto);
@@ -176,14 +200,35 @@ describe('TeamService', () => {
describe('getDriverTeam', () => {
it('should call apiClient.getDriverTeam and return the result', async () => {
const mockOutput = { teamId: 'team-1', teamName: 'Test Team', role: 'member' };
const mockOutput = {
team: {
id: 'team-1',
name: 'Test Team',
tag: 'TT',
description: 'A test team',
ownerId: 'owner-1',
leagues: [],
specialization: 'endurance' as const,
region: 'EU',
languages: ['en'],
},
membership: {
role: 'member',
joinedAt: '2023-01-01T00:00:00Z',
isActive: true,
},
isOwner: false,
canManage: false,
};
mockApiClient.getDriverTeam.mockResolvedValue(mockOutput);
const result = await service.getDriverTeam('driver-1');
expect(mockApiClient.getDriverTeam).toHaveBeenCalledWith('driver-1');
expect(result).toEqual(mockOutput);
expect(result?.teamId).toBe('team-1');
expect(result?.teamName).toBe('Test Team');
expect(result?.role).toBe('member');
});
it('should return null when apiClient.getDriverTeam returns null', async () => {