test(admin): add unit tests for AdminService with mocked repositories
This commit is contained in:
58
backend/src/admin/admin.service.spec.ts
Normal file
58
backend/src/admin/admin.service.spec.ts
Normal file
@@ -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>(AdminService);
|
||||||
|
_usersRepository = module.get<UsersRepository>(UsersRepository);
|
||||||
|
_contentsRepository = module.get<ContentsRepository>(ContentsRepository);
|
||||||
|
_categoriesRepository =
|
||||||
|
module.get<CategoriesRepository>(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();
|
||||||
|
});
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user