paperclip-forgejo-issue-plugin/tests/attachment-policy.spec.ts

45 lines
1.6 KiB
TypeScript

import { describe, expect, it } from "vitest";
import { ATTACHMENT_NOTE } from "../src/constants.js";
import { assessAttachmentReview, buildForgejoSyncContent } from "../src/attachment-policy.js";
import manifest from "../src/manifest.js";
describe("attachment policy", () => {
it("appends the visible attachment note and metadata summary", () => {
const result = buildForgejoSyncContent("Bug report body", [
{
filename: "screenshot.png",
mimeType: "image/png",
sizeBytes: 2048,
sourceUrl: "https://forgejo.example/files/1",
sourceId: "1"
}
]);
expect(result.markdown).toContain(ATTACHMENT_NOTE);
expect(result.markdown).toContain("screenshot.png | image/png | 2.0 KiB");
expect(result.reviewSignal.reasonCode).toBe("attachment_metadata_present");
});
it("marks payloads for manual review when the text depends on attachments", () => {
const review = assessAttachmentReview("See attached screenshot for the only repro details.", [
{
filename: "repro.png",
mimeType: "image/png",
sizeBytes: 1024,
sourceUrl: null,
sourceId: "abc"
}
]);
expect(review.manualReviewRequired).toBe(true);
expect(review.reasonCode).toBe("attachments_context_required");
});
it("keeps managed resources out of the manifest", () => {
expect(manifest).not.toHaveProperty("agents");
expect(manifest).not.toHaveProperty("skills");
expect(manifest).not.toHaveProperty("routines");
expect(manifest.capabilities).not.toContain("agents.managed");
expect(manifest.capabilities).not.toContain("skills.managed");
});
});