import { Test, TestingModule } from "@nestjs/testing"; import { CategoriesRepository } from "../categories/repositories/categories.repository"; import { ContentsRepository } from "../contents/repositories/contents.repository"; import { UsersRepository } from "../users/repositories/users.repository"; import { AdminService } from "./admin.service"; describe("AdminService", () => { let service: AdminService; let _usersRepository: UsersRepository; let _contentsRepository: ContentsRepository; let _categoriesRepository: CategoriesRepository; const mockUsersRepository = { countAll: jest.fn(), }; const mockContentsRepository = { count: jest.fn(), }; const mockCategoriesRepository = { countAll: jest.fn(), }; beforeEach(async () => { const module: TestingModule = await Test.createTestingModule({ providers: [ AdminService, { provide: UsersRepository, useValue: mockUsersRepository }, { provide: ContentsRepository, useValue: mockContentsRepository }, { provide: CategoriesRepository, useValue: mockCategoriesRepository }, ], }).compile(); service = module.get(AdminService); _usersRepository = module.get(UsersRepository); _contentsRepository = module.get(ContentsRepository); _categoriesRepository = module.get(CategoriesRepository); }); it("should return stats", async () => { mockUsersRepository.countAll.mockResolvedValue(10); mockContentsRepository.count.mockResolvedValue(20); mockCategoriesRepository.countAll.mockResolvedValue(5); const result = await service.getStats(); expect(result).toEqual({ users: 10, contents: 20, categories: 5, }); expect(mockUsersRepository.countAll).toHaveBeenCalled(); expect(mockContentsRepository.count).toHaveBeenCalledWith({}); expect(mockCategoriesRepository.countAll).toHaveBeenCalled(); }); });