canina/backend/src/orders/orders.controller.spec.ts

57 lines
1.9 KiB
TypeScript

import { Test, TestingModule } from '@nestjs/testing';
import { OrdersController } from './orders.controller';
import { OrdersService } from './orders.service';
describe('OrdersController', () => {
let controller: OrdersController;
let service: OrdersService;
const mockOrdersService = {
create: jest.fn().mockResolvedValue({ id: 'order-id', totalAmount: 1000 }),
findAllByUser: jest.fn().mockResolvedValue([{ id: 'order-id', totalAmount: 1000 }]),
findOne: jest.fn().mockResolvedValue({ id: 'order-id', totalAmount: 1000 }),
};
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
controllers: [OrdersController],
providers: [
{ provide: OrdersService, useValue: mockOrdersService },
],
}).compile();
controller = module.get<OrdersController>(OrdersController);
service = module.get<OrdersService>(OrdersService);
});
afterEach(() => {
jest.clearAllMocks();
});
it('should be defined', () => {
expect(controller).toBeDefined();
});
it('should create order', async () => {
const req = { user: { id: 'user-id' } };
const dto = { items: [{ productId: 'prod-1', quantity: 2 }] };
const result = await controller.create(req, dto);
expect(service.create).toHaveBeenCalledWith('user-id', dto);
expect(result.id).toBe('order-id');
});
it('should list orders of user', async () => {
const req = { user: { id: 'user-id' } };
const result = await controller.findAll(req, {});
expect(service.findAllByUser).toHaveBeenCalledWith('user-id', {});
expect(result).toHaveLength(1);
});
it('should find one order', async () => {
const req = { user: { id: 'user-id' } };
const result = await controller.findOne(req, 'order-id');
expect(service.findOne).toHaveBeenCalledWith('order-id', 'user-id');
expect(result.id).toBe('order-id');
});
});