fe23ffa100
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
27 lines
1.1 KiB
TypeScript
27 lines
1.1 KiB
TypeScript
import { describe, it, expect } from "vitest";
|
|
import { extractReplacement } from "../src/liveTurn";
|
|
|
|
describe("extractReplacement", () => {
|
|
it("returns plain text untouched", () => {
|
|
expect(extractReplacement("Hello world.", "x")).toBe("Hello world.");
|
|
});
|
|
it("strips a wrapping fence", () => {
|
|
expect(extractReplacement("```\nHello world.\n```", "x")).toBe("Hello world.");
|
|
});
|
|
it("strips a language-tagged fence", () => {
|
|
expect(extractReplacement("```markdown\nHello.\n```\n", "x")).toBe("Hello.");
|
|
});
|
|
it("leaves inner fences alone", () => {
|
|
const inner = "before\n```js\ncode\n```\nafter";
|
|
expect(extractReplacement(inner, "x")).toBe(inner);
|
|
});
|
|
it("keeps the fence when the original selection was itself fence-wrapped", () => {
|
|
const sel = "```python\nold()\n```";
|
|
const out = "```python\nnew()\n```";
|
|
expect(extractReplacement(out, sel)).toBe(out);
|
|
});
|
|
it("still strips when the selection was plain but the model added a fence", () => {
|
|
expect(extractReplacement("```\nplain\n```", "plain old text")).toBe("plain");
|
|
});
|
|
});
|