141 lines
4.0 KiB
Go
141 lines
4.0 KiB
Go
package render
|
||
|
||
import (
|
||
"strings"
|
||
"testing"
|
||
)
|
||
|
||
func TestMarkdownRendererDefaultTranscriptShape(t *testing.T) {
|
||
transcript := Transcript{
|
||
Schema: "seriatim-intermediate",
|
||
Metadata: Metadata{
|
||
Application: "seriatim",
|
||
Version: "v-test",
|
||
},
|
||
Segments: []Segment{
|
||
{ID: 1, Start: 1, End: 4, Speaker: "Eric", Text: "Hello there."},
|
||
{ID: 2, Start: 5, End: 8, Speaker: "Mike", Text: "Welcome back, everyone."},
|
||
},
|
||
}
|
||
|
||
output, err := MarkdownRenderer{}.Render(transcript, Options{
|
||
Title: "Transcript",
|
||
IncludeTimestamps: true,
|
||
})
|
||
if err != nil {
|
||
t.Fatalf("render markdown: %v", err)
|
||
}
|
||
|
||
if !strings.Contains(output, "# Transcript") {
|
||
t.Fatalf("expected title in output:\n%s", output)
|
||
}
|
||
if !strings.Contains(output, "[00:00:01–00:00:04] **Eric:** Hello there.") {
|
||
t.Fatalf("expected first segment in output:\n%s", output)
|
||
}
|
||
if !strings.Contains(output, "[00:00:05–00:00:08] **Mike:** Welcome back, everyone.") {
|
||
t.Fatalf("expected second segment in output:\n%s", output)
|
||
}
|
||
}
|
||
|
||
func TestMarkdownRendererWithoutTimestamps(t *testing.T) {
|
||
transcript := Transcript{
|
||
Segments: []Segment{
|
||
{ID: 1, Start: 1, End: 4, Speaker: "Eric", Text: "Hello."},
|
||
},
|
||
}
|
||
|
||
output, err := MarkdownRenderer{}.Render(transcript, Options{
|
||
Title: "Transcript",
|
||
IncludeTimestamps: false,
|
||
})
|
||
if err != nil {
|
||
t.Fatalf("render markdown: %v", err)
|
||
}
|
||
if strings.Contains(output, "[00:00:01") {
|
||
t.Fatalf("timestamps should be omitted:\n%s", output)
|
||
}
|
||
if !strings.Contains(output, "**Eric:** Hello.") {
|
||
t.Fatalf("expected speaker/text line:\n%s", output)
|
||
}
|
||
}
|
||
|
||
func TestMarkdownRendererWithSegmentIDs(t *testing.T) {
|
||
transcript := Transcript{
|
||
Segments: []Segment{
|
||
{ID: 17, Start: 1, End: 4, Speaker: "Eric", Text: "Hello."},
|
||
},
|
||
}
|
||
|
||
output, err := MarkdownRenderer{}.Render(transcript, Options{
|
||
Title: "Transcript",
|
||
IncludeTimestamps: true,
|
||
IncludeSegmentIDs: true,
|
||
})
|
||
if err != nil {
|
||
t.Fatalf("render markdown: %v", err)
|
||
}
|
||
if !strings.Contains(output, "[#17]") {
|
||
t.Fatalf("expected segment ID in output:\n%s", output)
|
||
}
|
||
}
|
||
|
||
func TestMarkdownRendererMetadataOnlyWhenRequested(t *testing.T) {
|
||
transcript := Transcript{
|
||
Schema: "seriatim-full",
|
||
Metadata: Metadata{
|
||
Application: "seriatim",
|
||
Version: "v-test",
|
||
},
|
||
}
|
||
|
||
withMetadata, err := MarkdownRenderer{}.Render(transcript, Options{
|
||
Title: "Transcript",
|
||
IncludeMetadata: true,
|
||
})
|
||
if err != nil {
|
||
t.Fatalf("render with metadata: %v", err)
|
||
}
|
||
if !strings.Contains(withMetadata, "- Application: seriatim") {
|
||
t.Fatalf("expected metadata block:\n%s", withMetadata)
|
||
}
|
||
|
||
withoutMetadata, err := MarkdownRenderer{}.Render(transcript, Options{Title: "Transcript"})
|
||
if err != nil {
|
||
t.Fatalf("render without metadata: %v", err)
|
||
}
|
||
if strings.Contains(withoutMetadata, "- Application: seriatim") {
|
||
t.Fatalf("metadata should be omitted:\n%s", withoutMetadata)
|
||
}
|
||
}
|
||
|
||
func TestMarkdownRendererCategoryHintItalicsAndUnknownCategories(t *testing.T) {
|
||
transcript := Transcript{
|
||
Segments: []Segment{
|
||
{ID: 1, Start: 1, End: 2, Speaker: "A", Text: "bg", Categories: []string{"background"}},
|
||
{ID: 2, Start: 2, End: 3, Speaker: "B", Text: "bc", Categories: []string{"backchannel"}},
|
||
{ID: 3, Start: 3, End: 4, Speaker: "C", Text: "fill", Categories: []string{"filler"}},
|
||
{ID: 4, Start: 4, End: 5, Speaker: "D", Text: "plain", Categories: []string{"unknown-tag"}},
|
||
},
|
||
}
|
||
|
||
output, err := MarkdownRenderer{}.Render(transcript, Options{
|
||
Title: "Transcript",
|
||
IncludeTimestamps: false,
|
||
})
|
||
if err != nil {
|
||
t.Fatalf("render markdown: %v", err)
|
||
}
|
||
if !strings.Contains(output, "**A:** *bg*") {
|
||
t.Fatalf("expected background italics:\n%s", output)
|
||
}
|
||
if !strings.Contains(output, "**B:** *bc*") {
|
||
t.Fatalf("expected backchannel italics:\n%s", output)
|
||
}
|
||
if !strings.Contains(output, "**C:** *fill*") {
|
||
t.Fatalf("expected filler italics:\n%s", output)
|
||
}
|
||
if !strings.Contains(output, "**D:** plain") {
|
||
t.Fatalf("expected unknown category to be ignored:\n%s", output)
|
||
}
|
||
}
|