Publish current app and server
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
// The TV decodes this into GatewayRelated. Both field names and the empty-value encoding
|
||||
// are part of the contract: kotlinx.serialization would reject a null where it expects a
|
||||
// list, so a title with no reasons must still send `[]`.
|
||||
func TestRelatedResponseWireShape(t *testing.T) {
|
||||
raw, err := json.Marshal(relatedResponse{
|
||||
Reasons: nonNilStrings(nil),
|
||||
Items: nonNilRaws(nil),
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatalf("marshal: %v", err)
|
||||
}
|
||||
if got := string(raw); got != `{"reasons":[],"items":[]}` {
|
||||
t.Fatalf("empty response encoded as %s", got)
|
||||
}
|
||||
|
||||
raw, err = json.Marshal(relatedResponse{
|
||||
Reasons: []string{"Because you watch Thriller"},
|
||||
Items: []json.RawMessage{json.RawMessage(`{"Id":"1","Name":"Sicario"}`)},
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatalf("marshal: %v", err)
|
||||
}
|
||||
// Items are Emby's item JSON forwarded verbatim, exactly as every other row is.
|
||||
if !strings.Contains(string(raw), `"items":[{"Id":"1","Name":"Sicario"}]`) {
|
||||
t.Fatalf("item payload was not forwarded verbatim: %s", raw)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRelatedFieldsAskEmbyForStudios(t *testing.T) {
|
||||
// Why() names the studio a viewer keeps returning to, and Emby omits Studios unless
|
||||
// the request asks for it.
|
||||
if !strings.Contains(fieldsRelated, "Studios") {
|
||||
t.Fatalf("fieldsRelated must request Studios, got %q", fieldsRelated)
|
||||
}
|
||||
if !strings.Contains(fieldsRelated, "People") {
|
||||
t.Fatalf("fieldsRelated must request People, got %q", fieldsRelated)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user