44 lines
985 B
Go
44 lines
985 B
Go
package dto
|
|
|
|
import (
|
|
"encoding/json"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestOpenAIVideoJSONShape(t *testing.T) {
|
|
v := NewOpenAIVideo()
|
|
v.ID = "task_test"
|
|
v.Model = "Seedance2.0"
|
|
v.Status = VideoStatusInProgress
|
|
v.Progress = 30
|
|
v.CreatedAt = FormatTimeUnixRFC3339(1778292296)
|
|
|
|
raw, err := json.Marshal(v)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
s := string(raw)
|
|
|
|
if strings.Contains(s, `"task_id"`) {
|
|
t.Fatalf("unexpected task_id in JSON: %s", s)
|
|
}
|
|
if strings.Contains(s, `"video_url"`) {
|
|
t.Fatalf("unexpected top-level video_url in JSON: %s", s)
|
|
}
|
|
if !strings.Contains(s, `"object":"video.generation"`) {
|
|
t.Fatalf("expected object video.generation, got: %s", s)
|
|
}
|
|
if !strings.Contains(s, `"created_at":"`) {
|
|
t.Fatalf("expected RFC3339 created_at string, got: %s", s)
|
|
}
|
|
|
|
var m map[string]any
|
|
if err := json.Unmarshal(raw, &m); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if _, ok := m["completed_at"]; ok {
|
|
t.Fatalf("completed_at should be omitted when empty, got: %s", s)
|
|
}
|
|
}
|