F3 SLICE-5 review fixes: fence-aware replacement extraction + editSelection guards (#6)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
+12
-4
@@ -3,16 +3,24 @@ import { extractReplacement } from "../src/liveTurn";
|
||||
|
||||
describe("extractReplacement", () => {
|
||||
it("returns plain text untouched", () => {
|
||||
expect(extractReplacement("Hello world.")).toBe("Hello world.");
|
||||
expect(extractReplacement("Hello world.", "x")).toBe("Hello world.");
|
||||
});
|
||||
it("strips a wrapping fence", () => {
|
||||
expect(extractReplacement("```\nHello world.\n```")).toBe("Hello world.");
|
||||
expect(extractReplacement("```\nHello world.\n```", "x")).toBe("Hello world.");
|
||||
});
|
||||
it("strips a language-tagged fence", () => {
|
||||
expect(extractReplacement("```markdown\nHello.\n```\n")).toBe("Hello.");
|
||||
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)).toBe(inner);
|
||||
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");
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user