Spaces:
Paused
Paused
| import express from "express"; | |
| import request from "supertest"; | |
| import { beforeEach, describe, expect, it, vi } from "vitest"; | |
| import { errorHandler } from "../middleware/index.js"; | |
| import { activityRoutes } from "../routes/activity.js"; | |
| const mockActivityService = vi.hoisted(() => ({ | |
| list: vi.fn(), | |
| forIssue: vi.fn(), | |
| runsForIssue: vi.fn(), | |
| issuesForRun: vi.fn(), | |
| create: vi.fn(), | |
| })); | |
| const mockIssueService = vi.hoisted(() => ({ | |
| getById: vi.fn(), | |
| getByIdentifier: vi.fn(), | |
| })); | |
| vi.mock("../services/activity.js", () => ({ | |
| activityService: () => mockActivityService, | |
| })); | |
| vi.mock("../services/index.js", () => ({ | |
| issueService: () => mockIssueService, | |
| })); | |
| function createApp() { | |
| const app = express(); | |
| app.use(express.json()); | |
| app.use((req, _res, next) => { | |
| (req as any).actor = { | |
| type: "board", | |
| userId: "user-1", | |
| companyIds: ["company-1"], | |
| source: "session", | |
| isInstanceAdmin: false, | |
| }; | |
| next(); | |
| }); | |
| app.use("/api", activityRoutes({} as any)); | |
| app.use(errorHandler); | |
| return app; | |
| } | |
| describe("activity routes", () => { | |
| beforeEach(() => { | |
| vi.clearAllMocks(); | |
| }); | |
| it("resolves issue identifiers before loading runs", async () => { | |
| mockIssueService.getByIdentifier.mockResolvedValue({ | |
| id: "issue-uuid-1", | |
| companyId: "company-1", | |
| }); | |
| mockActivityService.runsForIssue.mockResolvedValue([ | |
| { | |
| runId: "run-1", | |
| }, | |
| ]); | |
| const res = await request(createApp()).get("/api/issues/PAP-475/runs"); | |
| expect(res.status).toBe(200); | |
| expect(mockIssueService.getByIdentifier).toHaveBeenCalledWith("PAP-475"); | |
| expect(mockIssueService.getById).not.toHaveBeenCalled(); | |
| expect(mockActivityService.runsForIssue).toHaveBeenCalledWith("company-1", "issue-uuid-1"); | |
| expect(res.body).toEqual([{ runId: "run-1" }]); | |
| }); | |
| }); | |