canina/backend/src/pets/pets.controller.spec.ts
2026-08-06 22:27:56 +03:30

74 lines
2.5 KiB
TypeScript

import { Test, TestingModule } from '@nestjs/testing';
import { PetsController } from './pets.controller';
import { PetsService } from './pets.service';
describe('PetsController', () => {
let controller: PetsController;
let service: PetsService;
const mockPetsService = {
create: jest.fn().mockResolvedValue({ id: 'pet-id', name: 'Buddy' }),
findAllByUser: jest
.fn()
.mockResolvedValue({ data: [{ id: 'pet-id', name: 'Buddy' }] }),
findOne: jest.fn().mockResolvedValue({ id: 'pet-id', name: 'Buddy' }),
update: jest.fn().mockResolvedValue({ id: 'pet-id', name: 'Buddy New' }),
remove: jest.fn().mockResolvedValue({ success: true }),
};
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
controllers: [PetsController],
providers: [{ provide: PetsService, useValue: mockPetsService }],
}).compile();
controller = module.get<PetsController>(PetsController);
service = module.get<PetsService>(PetsService);
});
afterEach(() => {
jest.clearAllMocks();
});
it('should be defined', () => {
expect(controller).toBeDefined();
});
it('should create pet', async () => {
const req = { user: { id: 'user-id' } };
const dto = { name: 'Buddy', type: 'Dog' };
const result = await controller.create(req, dto);
expect(service.create).toHaveBeenCalledWith('user-id', dto);
expect(result.id).toBe('pet-id');
});
it('should findAll pets', async () => {
const req = { user: { id: 'user-id' } };
const result = await controller.findAll(req, {});
expect(service.findAllByUser).toHaveBeenCalledWith('user-id', {});
expect(result.data).toHaveLength(1);
});
it('should findOne pet', async () => {
const req = { user: { id: 'user-id' } };
const result = await controller.findOne(req, 'pet-id');
expect(service.findOne).toHaveBeenCalledWith('pet-id', 'user-id');
expect(result.id).toBe('pet-id');
});
it('should update pet', async () => {
const req = { user: { id: 'user-id' } };
const dto = { name: 'Buddy New' };
const result = await controller.update(req, 'pet-id', dto);
expect(service.update).toHaveBeenCalledWith('pet-id', 'user-id', dto);
expect(result.name).toBe('Buddy New');
});
it('should remove pet', async () => {
const req = { user: { id: 'user-id' } };
const result = await controller.remove(req, 'pet-id');
expect(service.remove).toHaveBeenCalledWith('pet-id', 'user-id');
expect(result).toBeDefined();
});
});