70 lines
1.9 KiB
TypeScript
70 lines
1.9 KiB
TypeScript
import { Test, TestingModule } from "@nestjs/testing";
|
|
import { ReportsService } from "./reports.service";
|
|
import { ReportsRepository } from "./repositories/reports.repository";
|
|
|
|
describe("ReportsService", () => {
|
|
let service: ReportsService;
|
|
let repository: ReportsRepository;
|
|
|
|
const mockReportsRepository = {
|
|
create: jest.fn(),
|
|
findAll: jest.fn(),
|
|
updateStatus: jest.fn(),
|
|
};
|
|
|
|
beforeEach(async () => {
|
|
jest.clearAllMocks();
|
|
|
|
const module: TestingModule = await Test.createTestingModule({
|
|
providers: [
|
|
ReportsService,
|
|
{ provide: ReportsRepository, useValue: mockReportsRepository },
|
|
],
|
|
}).compile();
|
|
|
|
service = module.get<ReportsService>(ReportsService);
|
|
repository = module.get<ReportsRepository>(ReportsRepository);
|
|
});
|
|
|
|
it("should be defined", () => {
|
|
expect(service).toBeDefined();
|
|
});
|
|
|
|
describe("create", () => {
|
|
it("should create a report", async () => {
|
|
const reporterId = "u1";
|
|
const data = { contentId: "c1", reason: "spam" } as const;
|
|
mockReportsRepository.create.mockResolvedValue({
|
|
id: "r1",
|
|
...data,
|
|
reporterId,
|
|
});
|
|
|
|
const result = await service.create(reporterId, data);
|
|
|
|
expect(result.id).toBe("r1");
|
|
expect(repository.create).toHaveBeenCalled();
|
|
});
|
|
});
|
|
|
|
describe("findAll", () => {
|
|
it("should return reports", async () => {
|
|
mockReportsRepository.findAll.mockResolvedValue([{ id: "r1" }]);
|
|
const result = await service.findAll(10, 0);
|
|
expect(result).toHaveLength(1);
|
|
expect(repository.findAll).toHaveBeenCalledWith(10, 0);
|
|
});
|
|
});
|
|
|
|
describe("updateStatus", () => {
|
|
it("should update report status", async () => {
|
|
mockReportsRepository.updateStatus.mockResolvedValue([
|
|
{ id: "r1", status: "resolved" },
|
|
]);
|
|
const result = await service.updateStatus("r1", "resolved");
|
|
expect(result[0].status).toBe("resolved");
|
|
expect(repository.updateStatus).toHaveBeenCalledWith("r1", "resolved");
|
|
});
|
|
});
|
|
});
|