Files
memegoat/backend/src/reports/reports.service.spec.ts

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");
});
});
});