diff --git a/internal/render/markdown_test.go b/internal/render/markdown_test.go index afaefee..1160dbf 100644 --- a/internal/render/markdown_test.go +++ b/internal/render/markdown_test.go @@ -138,3 +138,41 @@ func TestMarkdownRendererCategoryHintItalicsAndUnknownCategories(t *testing.T) { t.Fatalf("expected unknown category to be ignored:\n%s", output) } } + +func TestMarkdownRendererIsDeterministic(t *testing.T) { + transcript := Transcript{ + Schema: "seriatim-intermediate", + Metadata: Metadata{ + Application: "seriatim", + Version: "v-test", + }, + Segments: []Segment{ + {ID: 1, Start: 1.2, End: 4.4, Speaker: "Eric", Text: "Hello there.", Categories: []string{"unknown-tag"}}, + {ID: 2, Start: 65.1, End: 68.8, Speaker: "Mike", Text: "Yeah.", Categories: []string{"backchannel"}}, + }, + } + opts := Options{ + Title: "Transcript", + IncludeTimestamps: true, + IncludeSegmentIDs: true, + IncludeMetadata: true, + } + + first, err := MarkdownRenderer{}.Render(transcript, opts) + if err != nil { + t.Fatalf("first render failed: %v", err) + } + second, err := MarkdownRenderer{}.Render(transcript, opts) + if err != nil { + t.Fatalf("second render failed: %v", err) + } + if first != second { + t.Fatalf("render output is not deterministic:\nfirst:\n%s\nsecond:\n%s", first, second) + } + if !strings.Contains(first, "[00:00:01–00:00:04] [#1] **Eric:** Hello there.") { + t.Fatalf("expected HH:MM:SS timestamp formatting:\n%s", first) + } + if !strings.Contains(first, "[00:01:05–00:01:09] [#2] **Mike:** *Yeah.*") { + t.Fatalf("expected HH:MM:SS timestamp formatting:\n%s", first) + } +}