Files
silo-server/internal/metadata/air_time_test.go
T

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)
}
}