add tests for frontmatter parser
This commit is contained in:
parent
a2c3e38583
commit
a39915e603
@ -1,3 +1,93 @@
|
|||||||
open Rechiko.Frontmatter
|
open Rechiko.Frontmatter
|
||||||
|
|
||||||
(* TODO: add tests for extract_frontmatter & parse_frontmatter *)
|
let simple_markdown =
|
||||||
|
{|
|
||||||
|
---
|
||||||
|
Title: "Test Document"
|
||||||
|
Draft: true
|
||||||
|
Date: "2023-10-01"
|
||||||
|
---
|
||||||
|
|
||||||
|
# Test Document
|
||||||
|
|
||||||
|
This is a test document with frontmatter.
|
||||||
|
|}
|
||||||
|
|
||||||
|
let simple_markdown_yaml_section =
|
||||||
|
{|
|
||||||
|
Title: "Test Document"
|
||||||
|
Draft: true
|
||||||
|
Date: "2023-10-01"
|
||||||
|
|}
|
||||||
|
|
||||||
|
let simple_markdown_content =
|
||||||
|
{|
|
||||||
|
# Test Document
|
||||||
|
|
||||||
|
This is a test document with frontmatter.
|
||||||
|
|}
|
||||||
|
|
||||||
|
let markdown_with_empty_frontmatter =
|
||||||
|
{|
|
||||||
|
---
|
||||||
|
---
|
||||||
|
|
||||||
|
# Empty Frontmatter Document
|
||||||
|
|}
|
||||||
|
|
||||||
|
let markdown_when_frontmatter_is_invalid_yaml =
|
||||||
|
{|
|
||||||
|
---
|
||||||
|
John: "Doe
|
||||||
|
---
|
||||||
|
|
||||||
|
" # bad yaml
|
||||||
|
|}
|
||||||
|
|
||||||
|
let invalid_yaml_frontmatter = {|John: "Doe|}
|
||||||
|
|
||||||
|
let%test "extract yaml from simplie markdown 1" =
|
||||||
|
let yaml_section, _ = extract_frontmatter simple_markdown in
|
||||||
|
String.trim yaml_section = String.trim simple_markdown_yaml_section
|
||||||
|
|
||||||
|
let%test "extract content from simple markdown" =
|
||||||
|
let _, content = extract_frontmatter simple_markdown in
|
||||||
|
String.trim content = String.trim simple_markdown_content
|
||||||
|
|
||||||
|
let%test "extract yaml from md with empty frontmatter" =
|
||||||
|
let yaml_section, _ = extract_frontmatter markdown_with_empty_frontmatter in
|
||||||
|
String.trim yaml_section = ""
|
||||||
|
|
||||||
|
let%test "extract content from md with empty frontmatter" =
|
||||||
|
let _, content = extract_frontmatter markdown_with_empty_frontmatter in
|
||||||
|
String.trim content = "# Empty Frontmatter Document"
|
||||||
|
|
||||||
|
let%test "extract yaml from md with invalid frontmatter" =
|
||||||
|
let yaml_section, _ =
|
||||||
|
extract_frontmatter markdown_when_frontmatter_is_invalid_yaml
|
||||||
|
in
|
||||||
|
String.trim yaml_section = invalid_yaml_frontmatter
|
||||||
|
|
||||||
|
let%test "extract content from md with invalid frontmatter" =
|
||||||
|
let _, content =
|
||||||
|
extract_frontmatter markdown_when_frontmatter_is_invalid_yaml
|
||||||
|
in
|
||||||
|
String.trim content = {|" # bad yaml|}
|
||||||
|
|
||||||
|
let%test "parse valid yaml" =
|
||||||
|
let fm = parse_frontmatter simple_markdown_yaml_section in
|
||||||
|
let expected =
|
||||||
|
StringMap.of_list
|
||||||
|
[
|
||||||
|
("Title", `String "Test Document");
|
||||||
|
("Draft", `Bool true);
|
||||||
|
("Date", `String "2023-10-01");
|
||||||
|
]
|
||||||
|
in
|
||||||
|
StringMap.equal Yojson.Safe.equal fm expected
|
||||||
|
|
||||||
|
let%test "parse invalid yaml" =
|
||||||
|
try
|
||||||
|
ignore (parse_frontmatter invalid_yaml_frontmatter);
|
||||||
|
false
|
||||||
|
with Frontmatter_parse_error _ -> true
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user