import { Test, TestingModule } from '@nestjs/testing'; import { SecuritiesController } from './securities.controller'; import { SecuritiesService } from './securities.service'; import { ScreenerService } from './screener.service'; import { SecurityType } from './dto/search-query.dto'; describe('SecuritiesController', () => { let controller: SecuritiesController; let service: SecuritiesService; const mockResults = [ { secid: 'SBER', isin: 'RU0009029540', shortName: 'Сбербанк', type: 'share', listLevel: 1, currency: 'RUB', price: null, }, ]; const mockService = { search: vi.fn().mockResolvedValue(mockResults), }; const mockScreenerService = { screen: vi.fn(), }; beforeEach(async () => { const module: TestingModule = await Test.createTestingModule({ controllers: [SecuritiesController], providers: [ { provide: SecuritiesService, useValue: mockService }, { provide: ScreenerService, useValue: mockScreenerService }, ], }).compile(); controller = module.get(SecuritiesController); service = module.get(SecuritiesService); }); it('should be defined', () => { expect(controller).toBeDefined(); }); it('should return search results', async () => { const result = await controller.search({ q: 'SBER', type: SecurityType.ALL, limit: 5 }); expect(result.data).toEqual(mockResults); expect(service.search).toHaveBeenCalledWith('SBER', SecurityType.ALL, 5); }); });