package render import ( "html/template" "strings" "testing" "slidewalk/internal/parser" ) func TestRender_OrderAndStructure(t *testing.T) { page := Page{ Title: "My Deck", Slides: []parser.Slide{ {Filename: "010-intro.md", Title: "Intro", HTML: template.HTML("

Intro

")}, {Filename: "020-diagram.md", Class: "center", Notes: "remember the punchline", HTML: template.HTML("

Diagram

")}, {Filename: "030-outro.md", HTML: template.HTML("

Outro

")}, }, } var buf strings.Builder if err := Render(&buf, page); err != nil { t.Fatalf("Render() error = %v", err) } out := buf.String() if !strings.Contains(out, "My Deck") { t.Errorf("output missing document title: %s", out) } idxFirst := strings.Index(out, `data-slide="1"`) idxSecond := strings.Index(out, `data-slide="2"`) idxThird := strings.Index(out, `data-slide="3"`) if idxFirst == -1 || idxSecond == -1 || idxThird == -1 { t.Fatalf("output missing expected data-slide attributes: %s", out) } if !(idxFirst < idxSecond && idxSecond < idxThird) { t.Errorf("slides not in presentation order: %s", out) } if !strings.Contains(out, `class="slide center"`) { t.Errorf("output missing merged slide+custom class: %s", out) } if !strings.Contains(out, `
remember the punchline
`) { t.Errorf("output missing rendered notes: %s", out) } if strings.Count(out, "

Intro

") != 1 || strings.Count(out, "

Diagram

") != 1 || strings.Count(out, "

Outro

") != 1 { t.Errorf("output missing one or more slide bodies: %s", out) } if !strings.Contains(out, ``) { t.Errorf("output missing stylesheet link: %s", out) } if !strings.Contains(out, "mermaid.initialize") { t.Errorf("output missing mermaid.initialize call: %s", out) } if !strings.Contains(out, `