Files
silo-server/internal/metadata/release_date_test.go

77 lines
1.9 KiB
Go

package metadata
import (
"reflect"
"testing"
"github.com/Silo-Server/silo-server/internal/models"
)
func metadataReleaseDateField(t *testing.T, result *MetadataResult) reflect.Value {
t.Helper()
field := reflect.ValueOf(result).Elem().FieldByName("ReleaseDate")
if !field.IsValid() {
t.Fatal("MetadataResult is missing ReleaseDate")
}
return field
}
func setMetadataReleaseDate(t *testing.T, result *MetadataResult, value string) {
t.Helper()
field := metadataReleaseDateField(t, result)
if !field.CanSet() {
t.Fatal("MetadataResult.ReleaseDate is not settable")
}
field.SetString(value)
}
func getMetadataReleaseDate(t *testing.T, result *MetadataResult) string {
t.Helper()
return metadataReleaseDateField(t, result).String()
}
func TestMetadataResultToItem_CarriesReleaseDate(t *testing.T) {
result := &MetadataResult{
HasMetadata: true,
Title: "Movie",
}
setMetadataReleaseDate(t, result, "2024-01-02")
item := metadataResultToItem(result, "movie")
if item.ReleaseDate == nil {
t.Fatal("expected item release_date to be set")
}
if got := *item.ReleaseDate; got != "2024-01-02" {
t.Fatalf("expected item release_date 2024-01-02, got %q", got)
}
}
func TestItemToMetadataResult_CarriesReleaseDate(t *testing.T) {
releaseDate := "2024-01-02"
result := itemToMetadataResult(&models.MediaItem{
ContentID: "movie-1",
Type: "movie",
Title: "Movie",
ReleaseDate: &releaseDate,
})
if got := getMetadataReleaseDate(t, result); got != releaseDate {
t.Fatalf("expected metadata release_date %q, got %q", releaseDate, got)
}
}
func TestMergeMetadata_CarriesReleaseDate(t *testing.T) {
source := &MetadataResult{}
target := &MetadataResult{}
setMetadataReleaseDate(t, source, "2024-01-02")
MergeMetadata(source, target, nil, MergeFillEmpty)
if got := getMetadataReleaseDate(t, target); got != "2024-01-02" {
t.Fatalf("expected merged release_date 2024-01-02, got %q", got)
}
}