feat: add inline icons for edit
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { findFieldRange, replaceFrontmatterField } from "./frontmatterFields";
|
||||
|
||||
const sample = `---
|
||||
id: abc
|
||||
title: Hello
|
||||
status: todo
|
||||
priority: medium
|
||||
---
|
||||
|
||||
Body
|
||||
`;
|
||||
|
||||
describe("replaceFrontmatterField", () => {
|
||||
it("replaces status value", () => {
|
||||
const result = replaceFrontmatterField(sample, "status", "done");
|
||||
expect(result.ok).toBe(true);
|
||||
if (!result.ok) return;
|
||||
expect(result.content).toContain("status: done");
|
||||
expect(result.content).toContain("title: Hello");
|
||||
expect(result.content).toContain("Body");
|
||||
});
|
||||
|
||||
it("replaces priority value", () => {
|
||||
const result = replaceFrontmatterField(sample, "priority", "critical");
|
||||
expect(result.ok).toBe(true);
|
||||
if (!result.ok) return;
|
||||
expect(result.content).toContain("priority: critical");
|
||||
});
|
||||
|
||||
it("fails when field is missing", () => {
|
||||
const result = replaceFrontmatterField(sample, "assignee", "me");
|
||||
expect(result).toEqual({ ok: false, reason: "no-field" });
|
||||
});
|
||||
|
||||
it("fails without frontmatter", () => {
|
||||
const result = replaceFrontmatterField("plain", "status", "todo");
|
||||
expect(result).toEqual({ ok: false, reason: "no-frontmatter" });
|
||||
});
|
||||
});
|
||||
|
||||
describe("findFieldRange", () => {
|
||||
it("points at the value column", () => {
|
||||
const range = findFieldRange(sample, "status");
|
||||
expect(range).toBeDefined();
|
||||
const line = sample.split("\n")[range!.startLine];
|
||||
expect(line.slice(range!.startCol, range!.endCol)).toBe("todo");
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user