module cleanup
This commit is contained in:
149
apps/api/src/domain/team/TeamController.test.ts
Normal file
149
apps/api/src/domain/team/TeamController.test.ts
Normal file
@@ -0,0 +1,149 @@
|
||||
import { Test, TestingModule } from '@nestjs/testing';
|
||||
import { vi } from 'vitest';
|
||||
import { TeamController } from './TeamController';
|
||||
import { TeamService } from './TeamService';
|
||||
import type { Request } from 'express';
|
||||
import { CreateTeamInputDTO, UpdateTeamInputDTO } from './dtos/CreateTeamInputDTO';
|
||||
|
||||
describe('TeamController', () => {
|
||||
let controller: TeamController;
|
||||
let service: ReturnType<typeof vi.mocked<TeamService>>;
|
||||
|
||||
beforeEach(async () => {
|
||||
const module: TestingModule = await Test.createTestingModule({
|
||||
controllers: [TeamController],
|
||||
providers: [
|
||||
{
|
||||
provide: TeamService,
|
||||
useValue: {
|
||||
getAll: vi.fn(),
|
||||
getDetails: vi.fn(),
|
||||
getMembers: vi.fn(),
|
||||
getJoinRequests: vi.fn(),
|
||||
create: vi.fn(),
|
||||
update: vi.fn(),
|
||||
getDriverTeam: vi.fn(),
|
||||
getMembership: vi.fn(),
|
||||
},
|
||||
},
|
||||
],
|
||||
}).compile();
|
||||
|
||||
controller = module.get<TeamController>(TeamController);
|
||||
service = vi.mocked(module.get(TeamService));
|
||||
});
|
||||
|
||||
describe('getAll', () => {
|
||||
it('should return all teams', async () => {
|
||||
const result = { teams: [] };
|
||||
service.getAll.mockResolvedValue(result);
|
||||
|
||||
const response = await controller.getAll();
|
||||
|
||||
expect(service.getAll).toHaveBeenCalled();
|
||||
expect(response).toEqual(result);
|
||||
});
|
||||
});
|
||||
|
||||
describe('getDetails', () => {
|
||||
it('should return team details', async () => {
|
||||
const teamId = 'team-123';
|
||||
const userId = 'user-456';
|
||||
const result = { id: teamId, name: 'Team' };
|
||||
service.getDetails.mockResolvedValue(result);
|
||||
|
||||
const mockReq: Partial<Request> = { ['user']: { userId } };
|
||||
|
||||
const response = await controller.getDetails(teamId, mockReq as Request);
|
||||
|
||||
expect(service.getDetails).toHaveBeenCalledWith(teamId, userId);
|
||||
expect(response).toEqual(result);
|
||||
});
|
||||
});
|
||||
|
||||
describe('getMembers', () => {
|
||||
it('should return team members', async () => {
|
||||
const teamId = 'team-123';
|
||||
const result = { members: [] };
|
||||
service.getMembers.mockResolvedValue(result);
|
||||
|
||||
const response = await controller.getMembers(teamId);
|
||||
|
||||
expect(service.getMembers).toHaveBeenCalledWith(teamId);
|
||||
expect(response).toEqual(result);
|
||||
});
|
||||
});
|
||||
|
||||
describe('getJoinRequests', () => {
|
||||
it('should return join requests', async () => {
|
||||
const teamId = 'team-123';
|
||||
const result = { requests: [] };
|
||||
service.getJoinRequests.mockResolvedValue(result);
|
||||
|
||||
const response = await controller.getJoinRequests(teamId);
|
||||
|
||||
expect(service.getJoinRequests).toHaveBeenCalledWith(teamId);
|
||||
expect(response).toEqual(result);
|
||||
});
|
||||
});
|
||||
|
||||
describe('create', () => {
|
||||
it('should create team', async () => {
|
||||
const input: CreateTeamInputDTO = { name: 'New Team' };
|
||||
const userId = 'user-123';
|
||||
const result = { teamId: 'team-456' };
|
||||
service.create.mockResolvedValue(result);
|
||||
|
||||
const mockReq: Partial<Request> = { ['user']: { userId } };
|
||||
|
||||
const response = await controller.create(input, mockReq as Request);
|
||||
|
||||
expect(service.create).toHaveBeenCalledWith(input, userId);
|
||||
expect(response).toEqual(result);
|
||||
});
|
||||
});
|
||||
|
||||
describe('update', () => {
|
||||
it('should update team', async () => {
|
||||
const teamId = 'team-123';
|
||||
const input: UpdateTeamInputDTO = { name: 'Updated Team' };
|
||||
const userId = 'user-456';
|
||||
const result = { success: true };
|
||||
service.update.mockResolvedValue(result);
|
||||
|
||||
const mockReq: Partial<Request> = { ['user']: { userId } };
|
||||
|
||||
const response = await controller.update(teamId, input, mockReq as Request);
|
||||
|
||||
expect(service.update).toHaveBeenCalledWith(teamId, input, userId);
|
||||
expect(response).toEqual(result);
|
||||
});
|
||||
});
|
||||
|
||||
describe('getDriverTeam', () => {
|
||||
it('should return driver team', async () => {
|
||||
const driverId = 'driver-123';
|
||||
const result = { teamId: 'team-456' };
|
||||
service.getDriverTeam.mockResolvedValue(result);
|
||||
|
||||
const response = await controller.getDriverTeam(driverId);
|
||||
|
||||
expect(service.getDriverTeam).toHaveBeenCalledWith(driverId);
|
||||
expect(response).toEqual(result);
|
||||
});
|
||||
});
|
||||
|
||||
describe('getMembership', () => {
|
||||
it('should return team membership', async () => {
|
||||
const teamId = 'team-123';
|
||||
const driverId = 'driver-456';
|
||||
const result = { role: 'member' };
|
||||
service.getMembership.mockResolvedValue(result);
|
||||
|
||||
const response = await controller.getMembership(teamId, driverId);
|
||||
|
||||
expect(service.getMembership).toHaveBeenCalledWith(teamId, driverId);
|
||||
expect(response).toEqual(result);
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user