package api import ( "strings" "testing" "github.com/stretchr/testify/assert" ) func TestParseFrontmatterSplitsHeaderAndBody(t *testing.T) { src := "---\nwing: jepa-fx\nhall: facts\ncreated_at: 2026-01-01T00:00:00Z\n---\n# Title\n\nbody text\n" fm, body := parseFrontmatter(src) assert.Equal(t, "jepa-fx", fm.get("wing")) assert.Equal(t, "facts", fm.get("hall")) assert.Equal(t, "2026-01-01T00:00:00Z", fm.get("created_at")) assert.Equal(t, "# Title\n\nbody text\n", body) } func TestParseFrontmatterNoHeader(t *testing.T) { src := "# Just a body\n\nno frontmatter here\n" fm, body := parseFrontmatter(src) assert.Empty(t, fm.lines) assert.Equal(t, src, body) } func TestFrontmatterSetOverridesExistingKey(t *testing.T) { fm, _ := parseFrontmatter("---\nwing: a\nupdated_at: old\n---\nbody\n") fm.set("updated_at", "new") assert.Equal(t, "new", fm.get("updated_at")) // No duplicate key. assert.Equal(t, 1, strings.Count(fm.render(), "updated_at:")) } func TestFrontmatterSetAppendsNewKey(t *testing.T) { fm, _ := parseFrontmatter("---\nwing: a\n---\nbody\n") fm.set("supersedes", "abc123") out := fm.render() assert.Contains(t, out, "wing: a") assert.Contains(t, out, "supersedes: abc123") } func TestFrontmatterRenderPreservesCustomFields(t *testing.T) { src := "---\nwing: a\nhall: facts\ncustom_field: keep-me\ntags: [x, y]\n---\nbody\n" fm, _ := parseFrontmatter(src) fm.set("updated_at", "2026-06-22T00:00:00Z") out := fm.render() assert.Contains(t, out, "custom_field: keep-me") assert.Contains(t, out, "tags: [x, y]") assert.Contains(t, out, "updated_at: 2026-06-22T00:00:00Z") } func TestFrontmatterRenderRoundTrips(t *testing.T) { src := "---\nwing: a\nhall: facts\n---\n" fm, _ := parseFrontmatter(src) assert.Equal(t, src, fm.render()) }