mirror of
https://github.com/paperclipai/paperclip.git
synced 2026-10-31 14:16:39 +01:00
Restrict renamed labels to existing product chips. Reuse the company routing helper and current task URL, with browser regressions for prefixes, fragments and wrong task/company targets. Co-Authored-By: Paperclip <noreply@paperclip.ing>
24 lines
1.5 KiB
TypeScript
24 lines
1.5 KiB
TypeScript
import { expect, it } from "vitest";
|
|
import { taskReplyContentMatches } from "./task-reply-content.js";
|
|
|
|
it("parses CommonMark escapes, entities, inline formatting and paragraph boundaries", () => {
|
|
expect(taskReplyContentMatches({ body: "Couldn't retrieve a_b & c. No retry." },
|
|
"**Couldn't retrieve** `a_b` & c.\n\nNo _retry_.")).toBe(true);
|
|
expect(taskReplyContentMatches({ body: "Couldn't retrieve a_b & c. No retry. Extra." },
|
|
"**Couldn't retrieve** `a_b` & c.\n\nNo _retry_.")).toBe(false);
|
|
});
|
|
|
|
it("rejects unsupported Markdown rather than stripping unknown or invisible content", () => {
|
|
for (const source of ["Visible <!-- hidden -->", "Visible ", "~~Visible~~"])
|
|
expect(taskReplyContentMatches({ body: "Visible" }, source)).toBe(false);
|
|
});
|
|
|
|
it("uses the production company prefix and current task URL without accepting a changed target", () => {
|
|
const observation = { body: "Read Outcome", pageUrl: "https://fixture.test/QA/issues/QA-123",
|
|
content: [{ text: "Read " }, { href: "/QA/issues/QA-123#document-outcome", label: "Outcome" }] };
|
|
for (const href of ["/issues/QA-123#document-outcome", "#document-outcome"])
|
|
expect(taskReplyContentMatches(observation, `Read [Outcome](${href})`)).toBe(true);
|
|
for (const href of ["/OTHER/issues/QA-123#document-outcome", "/QA/issues/QA-999#document-outcome", "#document-other"])
|
|
expect(taskReplyContentMatches(observation, `Read [Outcome](${href})`)).toBe(false);
|
|
});
|