89 lines
2.1 KiB
Go
89 lines
2.1 KiB
Go
package metadata
|
|
|
|
import (
|
|
"reflect"
|
|
"testing"
|
|
|
|
"github.com/Silo-Server/silo-server/internal/models"
|
|
)
|
|
|
|
func metadataAirTimeField(t *testing.T, result *MetadataResult) reflect.Value {
|
|
t.Helper()
|
|
|
|
field := reflect.ValueOf(result).Elem().FieldByName("AirTime")
|
|
if !field.IsValid() {
|
|
t.Fatal("MetadataResult is missing AirTime")
|
|
}
|
|
return field
|
|
}
|
|
|
|
func setMetadataAirTime(t *testing.T, result *MetadataResult, value string) {
|
|
t.Helper()
|
|
|
|
field := metadataAirTimeField(t, result)
|
|
if !field.CanSet() {
|
|
t.Fatal("MetadataResult.AirTime is not settable")
|
|
}
|
|
field.SetString(value)
|
|
}
|
|
|
|
func getMetadataAirTime(t *testing.T, result *MetadataResult) string {
|
|
t.Helper()
|
|
|
|
return metadataAirTimeField(t, result).String()
|
|
}
|
|
|
|
func TestMetadataResultToItem_CarriesAirTime(t *testing.T) {
|
|
result := &MetadataResult{
|
|
HasMetadata: true,
|
|
Title: "Series",
|
|
}
|
|
setMetadataAirTime(t, result, "20:00")
|
|
|
|
item := metadataResultToItem(result, "series")
|
|
if item.AirTime == nil {
|
|
t.Fatal("expected item air_time to be set")
|
|
}
|
|
if got := *item.AirTime; got != "20:00" {
|
|
t.Fatalf("expected item air_time 20:00, got %q", got)
|
|
}
|
|
}
|
|
|
|
func TestItemToMetadataResult_CarriesAirTime(t *testing.T) {
|
|
airTime := "20:00"
|
|
result := itemToMetadataResult(&models.MediaItem{
|
|
ContentID: "series-1",
|
|
Type: "series",
|
|
Title: "Series",
|
|
AirTime: &airTime,
|
|
})
|
|
|
|
if got := getMetadataAirTime(t, result); got != airTime {
|
|
t.Fatalf("expected metadata air_time %q, got %q", airTime, got)
|
|
}
|
|
}
|
|
|
|
func TestMergeMetadata_CarriesAirTime(t *testing.T) {
|
|
source := &MetadataResult{}
|
|
target := &MetadataResult{}
|
|
setMetadataAirTime(t, source, "20:00")
|
|
|
|
MergeMetadata(source, target, nil, MergeFillEmpty)
|
|
|
|
if got := getMetadataAirTime(t, target); got != "20:00" {
|
|
t.Fatalf("expected merged air_time 20:00, got %q", got)
|
|
}
|
|
}
|
|
|
|
func TestMergeGlobalMetadata_CarriesAirTime(t *testing.T) {
|
|
source := &MetadataResult{}
|
|
target := &MetadataResult{}
|
|
setMetadataAirTime(t, source, "20:00")
|
|
|
|
MergeGlobalMetadata(source, target, nil, MergeFillEmpty)
|
|
|
|
if got := getMetadataAirTime(t, target); got != "20:00" {
|
|
t.Fatalf("expected merged global air_time 20:00, got %q", got)
|
|
}
|
|
}
|