59 lines
1.5 KiB
Go
59 lines
1.5 KiB
Go
package outputschema
|
|
|
|
import (
|
|
"encoding/json"
|
|
"strings"
|
|
"testing"
|
|
|
|
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
|
|
)
|
|
|
|
func tinyTranscript() *schema.Transcript {
|
|
return &schema.Transcript{Segments: []schema.Segment{
|
|
{ID: 1, Speaker: "A", Start: 0, End: 1, Text: "hello"},
|
|
}}
|
|
}
|
|
|
|
func TestResolveBareSegments(t *testing.T) {
|
|
def, err := Resolve(SchemaBareSegments)
|
|
if err != nil {
|
|
t.Fatalf("Resolve error: %v", err)
|
|
}
|
|
raw, err := def.Encoder(tinyTranscript())
|
|
if err != nil {
|
|
t.Fatalf("encode error: %v", err)
|
|
}
|
|
if !strings.HasPrefix(strings.TrimSpace(string(raw)), "[") {
|
|
t.Fatalf("expected bare-segments array output, got %s", string(raw))
|
|
}
|
|
}
|
|
|
|
func TestResolveAuditaV1(t *testing.T) {
|
|
def, err := Resolve(SchemaAuditaV1)
|
|
if err != nil {
|
|
t.Fatalf("Resolve error: %v", err)
|
|
}
|
|
raw, err := def.Encoder(tinyTranscript())
|
|
if err != nil {
|
|
t.Fatalf("encode error: %v", err)
|
|
}
|
|
var out struct {
|
|
Schema string `json:"schema"`
|
|
Version string `json:"version"`
|
|
Segments []map[string]any `json:"segments"`
|
|
}
|
|
if err := json.Unmarshal(raw, &out); err != nil {
|
|
t.Fatalf("unmarshal error: %v", err)
|
|
}
|
|
if out.Schema != "audita-v1" || out.Version != "v1" || len(out.Segments) != 1 {
|
|
t.Fatalf("unexpected audita-v1 output: %+v", out)
|
|
}
|
|
}
|
|
|
|
func TestResolveUnknown(t *testing.T) {
|
|
_, err := Resolve("seriatim-intermediate")
|
|
if err == nil || !strings.Contains(err.Error(), "unsupported output schema") {
|
|
t.Fatalf("expected unsupported output schema error, got %v", err)
|
|
}
|
|
}
|