74 lines
2.5 KiB
TypeScript
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();
|
|
});
|
|
});
|