110 lines
2.8 KiB
Go
110 lines
2.8 KiB
Go
package parser_test
|
|
|
|
import (
|
|
"encoding/json"
|
|
"testing"
|
|
|
|
"git.max-richter.dev/max/marka/parser"
|
|
"git.max-richter.dev/max/marka/testdata"
|
|
"github.com/google/go-cmp/cmp"
|
|
)
|
|
|
|
func TestParse_DetectType(t *testing.T) {
|
|
recipe := testdata.Read(t, "recipe_salad/input.md")
|
|
article := testdata.Read(t, "article_simple/input.md")
|
|
|
|
recipeType, err := parser.DetectType(string(recipe))
|
|
if err != nil {
|
|
t.Fatalf("failed to detect recipeType: %v", err)
|
|
}
|
|
|
|
articleType, err := parser.DetectType(string(article))
|
|
if err != nil {
|
|
t.Fatalf("failed to detect articleType: %v", err)
|
|
}
|
|
|
|
if recipeType != "Recipe" {
|
|
t.Errorf("recipeType did not match expected type 'Recipe' -> %s", recipeType)
|
|
}
|
|
|
|
if articleType != "Article" {
|
|
t.Errorf("articleType did not match expected type 'Article' -> %s", articleType)
|
|
}
|
|
}
|
|
|
|
func TestParse_RecipeSalad(t *testing.T) {
|
|
inputContent := testdata.Read(t, "recipe_salad/input.md")
|
|
output := testdata.Read(t, "recipe_salad/output.json")
|
|
|
|
got, err := parser.ParseFile(string(inputContent))
|
|
if err != nil {
|
|
t.Fatalf("ParseFile: %v", err)
|
|
}
|
|
|
|
var want map[string]any
|
|
if err := json.Unmarshal(output, &want); err != nil {
|
|
t.Fatalf("unmarshal expected.json: %v", err)
|
|
}
|
|
|
|
if diff := cmp.Diff(want, got); diff != "" {
|
|
t.Fatalf("JSON mismatch (-want +got):\n%s", diff)
|
|
}
|
|
}
|
|
|
|
func TestParse_RecipeNoDescription(t *testing.T) {
|
|
inputContent := testdata.Read(t, "recipe_no_description/input.md")
|
|
|
|
got, err := parser.ParseFile(string(inputContent))
|
|
if err != nil {
|
|
t.Fatalf("ParseFile: %v", err)
|
|
}
|
|
|
|
var want map[string]any
|
|
output := testdata.Read(t, "recipe_no_description/output.json")
|
|
if err := json.Unmarshal(output, &want); err != nil {
|
|
t.Fatalf("unmarshal expected.json: %v", err)
|
|
}
|
|
|
|
if diff := cmp.Diff(want, got); diff != "" {
|
|
t.Fatalf("JSON mismatch (-want +got):\n%s", diff)
|
|
}
|
|
}
|
|
|
|
func TestParse_Baguette(t *testing.T) {
|
|
inputContent := testdata.Read(t, "baguette/input.md")
|
|
|
|
got, err := parser.ParseFile(string(inputContent))
|
|
if err != nil {
|
|
t.Fatalf("ParseFile: %v", err)
|
|
}
|
|
|
|
var want map[string]any
|
|
output := testdata.Read(t, "baguette/output.json")
|
|
if err := json.Unmarshal(output, &want); err != nil {
|
|
t.Fatalf("unmarshal expected.json: %v", err)
|
|
}
|
|
|
|
if diff := cmp.Diff(want, got); diff != "" {
|
|
t.Fatalf("JSON mismatch (-want +got):\n%s", diff)
|
|
}
|
|
}
|
|
|
|
func TestParse_Article(t *testing.T) {
|
|
inputContent := testdata.Read(t, "article_simple/input.md")
|
|
|
|
got, err := parser.ParseFile(string(inputContent))
|
|
if err != nil {
|
|
t.Fatalf("ParseFile: %v", err)
|
|
}
|
|
|
|
var want map[string]any
|
|
output := testdata.Read(t, "article_simple/output.json")
|
|
if err := json.Unmarshal(output, &want); err != nil {
|
|
t.Fatalf("unmarshal expected.json: %v", err)
|
|
}
|
|
|
|
if diff := cmp.Diff(want, got); diff != "" {
|
|
t.Fatalf("JSON mismatch (-want +got):\n%s", diff)
|
|
}
|
|
}
|