77 lines
1.9 KiB
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)
|
|
}
|
|
}
|