From 48dbdbfdcc234daa8fa66ca2f1a30e585c2fb628 Mon Sep 17 00:00:00 2001 From: Mathis HERRIOT <197931332+0x485254@users.noreply.github.com> Date: Tue, 20 Jan 2026 13:45:07 +0100 Subject: [PATCH] test(admin): add unit tests for AdminService with mocked repositories --- backend/src/admin/admin.service.spec.ts | 58 +++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 backend/src/admin/admin.service.spec.ts diff --git a/backend/src/admin/admin.service.spec.ts b/backend/src/admin/admin.service.spec.ts new file mode 100644 index 0000000..8fea205 --- /dev/null +++ b/backend/src/admin/admin.service.spec.ts @@ -0,0 +1,58 @@ +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(); + }); +});