feat: add inline icons for edit

This commit is contained in:
2026-07-16 02:49:55 +05:00
parent bda6c6b2e0
commit 7c0584707a
35 changed files with 1280 additions and 94 deletions
+49
View File
@@ -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");
});
});