test.coordination/core/transformers/segment.transformer.test.ts
test.coordination/core/transformers/segment.transformer.test.ts is a file in Codebase Testing. 40 lines of code and 0 definitions.
import {
applyEdits,
editsFromFieldPrefixes,
editsFromFieldValues,
editsFromInlinePrefixes,
editsFromInlines,
} from "coordination-surface/tools/core/transformers/segment.transformer.ts";
import { describe, it } from "vitest";
import assert from "node:assert/strict";
import { readDocument } from "coordination-surface/tools/core/readers/document.reader.ts";
type Edit = Parameters<typeof applyEdits>[1][number];
const edit = function edit(start: number, end: number, replacement: string): Edit {
return { end, path: "doc.md", reason: "", replacement, start };
};
const SOURCE = "see: old.md\nsee: old.md#part\nuse `old.md` and [x](old.md#a)\n";
const MAP = { "old.md": "new.md" };
const DOCUMENT = readDocument("doc.md", SOURCE);
describe("the edit builders", () => {
it("rename a field value and an inline that equal an old name, and the prefix of one that continues it", () => {
const values = editsFromFieldValues(DOCUMENT, "see", MAP);
const prefixes = editsFromFieldPrefixes(DOCUMENT, ["see"], MAP);
const inlines = editsFromInlines(DOCUMENT, MAP, ["inline-code", "link-target"]);
const inlinePrefixes = editsFromInlinePrefixes(DOCUMENT, MAP, ["link-target"]);
assert.deepEqual(
[values, prefixes, inlines, inlinePrefixes].map((edits) => edits.length),
[1, 1, 1, 1],
);
const { rejected, text } = applyEdits(SOURCE, [...values, ...prefixes, ...inlines, ...inlinePrefixes]);
assert.deepEqual(rejected, []);
assert.equal(text, "see: new.md\nsee: new.md#part\nuse `new.md` and [x](new.md#a)\n");
});
});
describe("applyEdits", () => {
it("applies edits from the end backwards, and rejects an overlapping or malformed one", () => {
const result = applyEdits("abcdef", [edit(0, 2, "X"), edit(1, 3, "Y"), edit(4, 9, "Z")]);
assert.equal(result.text, "aYdef");
assert.equal(result.applied.length, 1);
assert.equal(result.rejected.length, 2);
});
});