view models
This commit is contained in:
80
apps/website/lib/services/teams/TeamJoinService.test.ts
Normal file
80
apps/website/lib/services/teams/TeamJoinService.test.ts
Normal file
@@ -0,0 +1,80 @@
|
||||
import { describe, it, expect, vi } from 'vitest';
|
||||
import { TeamJoinService } from './TeamJoinService';
|
||||
import type { TeamsApiClient } from '../../api/teams/TeamsApiClient';
|
||||
|
||||
describe('TeamJoinService', () => {
|
||||
let service: TeamJoinService;
|
||||
let mockApiClient: TeamsApiClient;
|
||||
|
||||
beforeEach(() => {
|
||||
mockApiClient = {
|
||||
getJoinRequests: vi.fn(),
|
||||
} as any;
|
||||
|
||||
service = new TeamJoinService(mockApiClient);
|
||||
});
|
||||
|
||||
describe('getJoinRequests', () => {
|
||||
it('should return view models for join requests', async () => {
|
||||
const mockDto = {
|
||||
requests: [
|
||||
{
|
||||
id: 'request-1',
|
||||
teamId: 'team-1',
|
||||
driverId: 'driver-1',
|
||||
requestedAt: '2023-01-01T00:00:00Z',
|
||||
message: 'Please accept me',
|
||||
},
|
||||
{
|
||||
id: 'request-2',
|
||||
teamId: 'team-1',
|
||||
driverId: 'driver-2',
|
||||
requestedAt: '2023-01-02T00:00:00Z',
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
mockApiClient.getJoinRequests = vi.fn().mockResolvedValue(mockDto);
|
||||
|
||||
const result = await service.getJoinRequests('team-1', 'user-1', true);
|
||||
|
||||
expect(mockApiClient.getJoinRequests).toHaveBeenCalledWith('team-1');
|
||||
expect(result).toHaveLength(2);
|
||||
expect(result[0].id).toBe('request-1');
|
||||
expect(result[0].canApprove).toBe(true);
|
||||
expect(result[1].id).toBe('request-2');
|
||||
expect(result[1].canApprove).toBe(true);
|
||||
});
|
||||
|
||||
it('should pass correct parameters to view model constructor', async () => {
|
||||
const mockDto = {
|
||||
requests: [
|
||||
{
|
||||
id: 'request-1',
|
||||
teamId: 'team-1',
|
||||
driverId: 'driver-1',
|
||||
requestedAt: '2023-01-01T00:00:00Z',
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
mockApiClient.getJoinRequests = vi.fn().mockResolvedValue(mockDto);
|
||||
|
||||
const result = await service.getJoinRequests('team-1', 'user-1', false);
|
||||
|
||||
expect(result[0].canApprove).toBe(false);
|
||||
});
|
||||
});
|
||||
|
||||
describe('approveJoinRequest', () => {
|
||||
it('should throw not implemented error', async () => {
|
||||
await expect(service.approveJoinRequest()).rejects.toThrow('Not implemented: API endpoint for approving join requests');
|
||||
});
|
||||
});
|
||||
|
||||
describe('rejectJoinRequest', () => {
|
||||
it('should throw not implemented error', async () => {
|
||||
await expect(service.rejectJoinRequest()).rejects.toThrow('Not implemented: API endpoint for rejecting join requests');
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user