big tings
This commit is contained in:
56
parser/decoders/decoder_test.go
Normal file
56
parser/decoders/decoder_test.go
Normal file
@@ -0,0 +1,56 @@
|
||||
package decoders_test
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"git.max-richter.dev/max/marka/parser/decoders"
|
||||
"git.max-richter.dev/max/marka/parser/matcher"
|
||||
"git.max-richter.dev/max/marka/parser/utils"
|
||||
"git.max-richter.dev/max/marka/registry"
|
||||
"git.max-richter.dev/max/marka/template"
|
||||
)
|
||||
|
||||
func TestParseBaguette(t *testing.T) {
|
||||
recipeMd := utils.ReadTestDataFile(t, "baguette.md")
|
||||
|
||||
templateContent, err := registry.GetTemplate("Recipe")
|
||||
if err != nil {
|
||||
t.Fatalf("Err: %s", err)
|
||||
}
|
||||
|
||||
blocks, err := template.CompileTemplate(templateContent)
|
||||
if err != nil {
|
||||
t.Fatalf("Err: %s", err)
|
||||
}
|
||||
|
||||
matches := matcher.MatchBlocksFuzzy(recipeMd, blocks, 0.3)
|
||||
parsed, err := decoders.Parse(matches)
|
||||
if err != nil {
|
||||
t.Fatalf("Err: %s", err)
|
||||
}
|
||||
expected := map[string]any{
|
||||
"name": "Baguette",
|
||||
"description": "My favourite baguette recipe",
|
||||
"recipeIngredient": []string{"Flour", "Water", "Salt"},
|
||||
"recipeInstructions": []string{
|
||||
"Mix Flour Water and Salt",
|
||||
"Bake the bread",
|
||||
},
|
||||
}
|
||||
|
||||
out, _ := json.MarshalIndent(parsed, "", " ")
|
||||
fmt.Printf("Parsed: \n%s\n", string(out))
|
||||
|
||||
outMap, ok := parsed.(map[string]any)
|
||||
if !ok {
|
||||
t.Fatalf("expected parsed to be map[string]any, got %T", parsed)
|
||||
}
|
||||
|
||||
for k, v := range expected {
|
||||
if fmt.Sprintf("%v", outMap[k]) != fmt.Sprintf("%v", v) {
|
||||
t.Errorf("Expected %v but got %v", v, outMap[k])
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user