feat: renderer
This commit is contained in:
88
renderer/renderer_test.go
Normal file
88
renderer/renderer_test.go
Normal file
@@ -0,0 +1,88 @@
|
||||
package renderer_test
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"git.max-richter.dev/max/marka/renderer"
|
||||
"git.max-richter.dev/max/marka/testdata"
|
||||
"github.com/google/go-cmp/cmp"
|
||||
)
|
||||
|
||||
func TestRenderFile_RecipeSalad(t *testing.T) {
|
||||
inputJSON := testdata.Read(t, "recipe_salad/output.json")
|
||||
expectedMarkdown := testdata.Read(t, "recipe_salad/input.md")
|
||||
|
||||
gotMarkdown, err := renderer.RenderFile([]byte(inputJSON))
|
||||
if err != nil {
|
||||
t.Fatalf("RenderFile failed: %v", err)
|
||||
}
|
||||
|
||||
if diff := cmp.Diff(string(expectedMarkdown), string(gotMarkdown)); diff != "" {
|
||||
t.Errorf("Rendered markdown mismatch (-want +got):\n%s", diff)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRenderFile_RecipeNoDescription(t *testing.T) {
|
||||
inputJSON := testdata.Read(t, "recipe_no_description/output.json")
|
||||
expectedMarkdown := testdata.Read(t, "recipe_no_description/input.md")
|
||||
|
||||
gotMarkdown, err := renderer.RenderFile([]byte(inputJSON))
|
||||
if err != nil {
|
||||
t.Fatalf("RenderFile failed: %v", err)
|
||||
}
|
||||
|
||||
if diff := cmp.Diff(string(expectedMarkdown), string(gotMarkdown)); diff != "" {
|
||||
t.Errorf("Rendered markdown mismatch (-want +got):\n%s", diff)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRenderFile_MissingType(t *testing.T) {
|
||||
rawJSON := []byte(`{"name": "Test"}`)
|
||||
_, err := renderer.RenderFile(rawJSON)
|
||||
if err == nil {
|
||||
t.Fatal("expected error for missing @type, got nil")
|
||||
}
|
||||
if !strings.Contains(err.Error(), "JSON does not contain a valid '@type' property") {
|
||||
t.Errorf("expected missing @type error, got: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRenderFile_InvalidJSON(t *testing.T) {
|
||||
rawJSON := []byte(`{"name": "Test"`)
|
||||
_, err := renderer.RenderFile(rawJSON)
|
||||
if err == nil {
|
||||
t.Fatal("expected error for invalid JSON, got nil")
|
||||
}
|
||||
if !strings.Contains(err.Error(), "failed to parse JSON") {
|
||||
t.Errorf("expected invalid JSON error, got: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRenderFile_RecipeBaguette(t *testing.T) {
|
||||
inputJSON := testdata.Read(t, "baguette/output.json")
|
||||
expectedMarkdown := testdata.Read(t, "baguette/input.md")
|
||||
|
||||
gotMarkdown, err := renderer.RenderFile(inputJSON)
|
||||
if err != nil {
|
||||
t.Fatalf("RenderFile failed: %v", err)
|
||||
}
|
||||
|
||||
if diff := cmp.Diff(string(expectedMarkdown), string(gotMarkdown)); diff != "" {
|
||||
t.Errorf("Rendered markdown mismatch (-want +got):\n%s", diff)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRenderFile_ArticleSimple(t *testing.T) {
|
||||
inputJSON := testdata.Read(t, "article_simple/output.json")
|
||||
expectedMarkdown := testdata.Read(t, "article_simple/input.md")
|
||||
|
||||
gotMarkdown, err := renderer.RenderFile([]byte(inputJSON))
|
||||
if err != nil {
|
||||
t.Fatalf("RenderFile failed: %v", err)
|
||||
}
|
||||
|
||||
if diff := cmp.Diff(string(expectedMarkdown), string(gotMarkdown)); diff != "" {
|
||||
t.Errorf("Rendered markdown mismatch (-want +got):\n%s", diff)
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user