Files
oh-my-pi/packages/coding-agent/test/discovery/helpers.test.ts
T
can1357 0fe761dc4b build(deps): refactored TypeScript and package configuration across monorepo
- Added tsconfig.publish.json files to all packages with optimized publish-time configuration.
- Updated all package.json scripts with prepublishOnly hooks for correct type checking during publish.
- Added @oh-my-pi/omp-stats path mappings to root tsconfig.json for consistent imports.
- Added WASM generation script for photon module and integrated into install:dev script.
2026-01-23 13:46:06 +01:00

132 lines
3.0 KiB
TypeScript

import { describe, expect, test } from "bun:test";
import { parseFrontmatter } from "@oh-my-pi/pi-coding-agent/utils/frontmatter";
describe("parseFrontmatter", () => {
const parse = (content: string) => parseFrontmatter(content, { source: "tests:frontmatter", level: "off" });
test("parses simple key-value pairs", () => {
const content = `---
name: test
enabled: true
---
Body content`;
const result = parse(content);
expect(result.frontmatter).toEqual({ name: "test", enabled: true });
expect(result.body).toBe("Body content");
});
test("parses YAML list syntax", () => {
const content = `---
tags:
- javascript
- typescript
- react
---
Body content`;
const result = parse(content);
expect(result.frontmatter).toEqual({
tags: ["javascript", "typescript", "react"],
});
expect(result.body).toBe("Body content");
});
test("parses multi-line string values", () => {
const content = `---
description: |
This is a multi-line
description block
with several lines
---
Body content`;
const result = parse(content);
expect(result.frontmatter).toEqual({
description: "This is a multi-line\ndescription block\nwith several lines\n",
});
expect(result.body).toBe("Body content");
});
test("parses nested objects", () => {
const content = `---
config:
server:
port: 3000
host: localhost
database:
name: mydb
---
Body content`;
const result = parse(content);
expect(result.frontmatter).toEqual({
config: {
server: { port: 3000, host: "localhost" },
database: { name: "mydb" },
},
});
expect(result.body).toBe("Body content");
});
test("parses mixed complex YAML", () => {
const content = `---
name: complex-test
version: 1.0.0
tags:
- prod
- critical
metadata:
author: tester
created: 2024-01-01
description: |
Multi-line description
with formatting
---
Body content`;
const result = parse(content);
expect(result.frontmatter).toEqual({
name: "complex-test",
version: "1.0.0",
tags: ["prod", "critical"],
metadata: {
author: "tester",
created: "2024-01-01",
},
description: "Multi-line description\nwith formatting\n",
});
expect(result.body).toBe("Body content");
});
test("handles missing frontmatter", () => {
const content = "Just body content";
const result = parse(content);
expect(result.frontmatter).toEqual({});
expect(result.body).toBe("Just body content");
});
test("handles invalid YAML in frontmatter", () => {
const content = `---
invalid: [unclosed array
---
Body content`;
const result = parse(content);
// Simple fallback parser extracts key:value pairs it can parse
expect(result.frontmatter).toEqual({ invalid: "[unclosed array" });
// Body is still extracted even with invalid YAML
expect(result.body).toBe("Body content");
});
test("handles empty frontmatter", () => {
const content = `---
---
Body content`;
const result = parse(content);
expect(result.frontmatter).toEqual({});
expect(result.body).toBe("Body content");
});
});