import { Test, TestingModule } from "@nestjs/testing"; import { RbacService } from "./rbac.service"; import { RbacRepository } from "./repositories/rbac.repository"; describe("RbacService", () => { let service: RbacService; let repository: RbacRepository; const mockRbacRepository = { findRolesByUserId: jest.fn(), findPermissionsByUserId: jest.fn(), }; beforeEach(async () => { jest.clearAllMocks(); const module: TestingModule = await Test.createTestingModule({ providers: [ RbacService, { provide: RbacRepository, useValue: mockRbacRepository, }, ], }).compile(); service = module.get(RbacService); repository = module.get(RbacRepository); }); it("should be defined", () => { expect(service).toBeDefined(); }); describe("getUserRoles", () => { it("should return user roles", async () => { const userId = "user-id"; const mockRoles = ["admin", "user"]; mockRbacRepository.findRolesByUserId.mockResolvedValue(mockRoles); const result = await service.getUserRoles(userId); expect(result).toEqual(mockRoles); expect(repository.findRolesByUserId).toHaveBeenCalledWith(userId); }); }); describe("getUserPermissions", () => { it("should return user permissions", async () => { const userId = "user-id"; const mockPermissions = ["read", "write"]; mockRbacRepository.findPermissionsByUserId.mockResolvedValue( mockPermissions, ); const result = await service.getUserPermissions(userId); expect(result).toEqual(mockPermissions); expect(repository.findPermissionsByUserId).toHaveBeenCalledWith(userId); }); }); });