mirror of
https://github.com/wassname/pi-lgtm.git
synced 2026-06-27 16:46:17 +08:00
66 lines
1.7 KiB
TypeScript
66 lines
1.7 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { getReviewBadges, REVIEW_BADGES } from "../src/review-badges.js";
|
|
import type { Task } from "../src/types.js";
|
|
|
|
function makeTask(overrides: Partial<Task> = {}): Task {
|
|
return {
|
|
id: "1",
|
|
subject: "Test",
|
|
description: "Desc",
|
|
done_criterion: "done",
|
|
pending_approval: false,
|
|
status: "pending",
|
|
progress_label: undefined,
|
|
metadata: {},
|
|
blocks: [],
|
|
blockedBy: [],
|
|
createdAt: 0,
|
|
updatedAt: 0,
|
|
...overrides,
|
|
};
|
|
}
|
|
|
|
describe("getReviewBadges", () => {
|
|
it("returns no badges when no review artifacts exist", () => {
|
|
expect(getReviewBadges(makeTask())).toEqual([]);
|
|
});
|
|
|
|
it("returns tool, robot, and human badges independently", () => {
|
|
const task = makeTask({
|
|
pending_approval: true,
|
|
metadata: {
|
|
lgtm_evidence: "npm test",
|
|
robot_reviews: [{
|
|
iteration: 1,
|
|
reviewer: "opencode",
|
|
scope: "task evidence",
|
|
observations: ["Observed one unchecked edge case"],
|
|
blind_spots: "Did not inspect prod traffic",
|
|
accepted: false,
|
|
evidence_complete: false,
|
|
evidence_convincing: false,
|
|
missing_evidence: ["Prod traffic sample"],
|
|
submitted_at: "2026-04-17T00:00:00.000Z",
|
|
mode: "manual",
|
|
}],
|
|
},
|
|
});
|
|
|
|
expect(getReviewBadges(task)).toEqual([
|
|
REVIEW_BADGES.tool,
|
|
REVIEW_BADGES.robot,
|
|
REVIEW_BADGES.human,
|
|
]);
|
|
});
|
|
|
|
it("hides the human badge once the task is completed", () => {
|
|
const task = makeTask({
|
|
pending_approval: true,
|
|
status: "completed",
|
|
metadata: { lgtm_evidence: "ok" },
|
|
});
|
|
|
|
expect(getReviewBadges(task)).toEqual([REVIEW_BADGES.tool]);
|
|
});
|
|
});
|