57 lines
1.9 KiB
TypeScript
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');
|
|
});
|
|
});
|