0.3.27 - Omni search fixes, Services in genre browser..
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestDiscoveryQueryNormalisationCollapsesTheSameQuestion(t *testing.T) {
|
||||
same := []string{"Disclosure Day", "disclosure day", " disclosure day ", "DISCLOSURE Day"}
|
||||
want := normaliseDiscoveryQuery(same[0])
|
||||
for _, query := range same[1:] {
|
||||
if got := normaliseDiscoveryQuery(query); got != want {
|
||||
t.Fatalf("%q normalised to %q, want %q", query, got, want)
|
||||
}
|
||||
}
|
||||
if normaliseDiscoveryQuery("disclosure") == want {
|
||||
t.Fatal("a materially different query must not share a cache key")
|
||||
}
|
||||
}
|
||||
|
||||
func TestDiscoveryFloorIsCountedInRunes(t *testing.T) {
|
||||
for _, query := range []string{"", " ", "d", "di", " di "} {
|
||||
if discoveryQueryEligible(query) {
|
||||
t.Fatalf("%q should not reach Sonarr or Radarr", query)
|
||||
}
|
||||
}
|
||||
for _, query := range []string{"dis", "disclosure day", "君の名は"} {
|
||||
if !discoveryQueryEligible(query) {
|
||||
t.Fatalf("%q should be eligible for discovery", query)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestRequestableIsStampedOnTheWayOut(t *testing.T) {
|
||||
items := []json.RawMessage{
|
||||
searchExternalItem("Disclosure Day", 2027, "", "Movie", "radarr", RequestStatusRequestable, "12", "", false),
|
||||
searchExternalItem("Something Tracked", 2020, "", "Series", "sonarr", RequestStatusProcessing, "34", "", false),
|
||||
}
|
||||
for _, canRequest := range []bool{true, false} {
|
||||
decorated := applyRequestable(append([]json.RawMessage{}, items...), canRequest)
|
||||
var requestable, processing map[string]any
|
||||
if err := json.Unmarshal(decorated[0], &requestable); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err := json.Unmarshal(decorated[1], &processing); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if requestable["MembyRequestable"] != canRequest {
|
||||
t.Fatalf("canRequest=%v: requestable candidate got %v", canRequest, requestable["MembyRequestable"])
|
||||
}
|
||||
// Only a title nothing has and nobody has asked for offers the button, whatever
|
||||
// this viewer is permitted to do.
|
||||
if processing["MembyRequestable"] != false {
|
||||
t.Fatalf("canRequest=%v: a tracked title must never offer Request", canRequest)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestDiscoveryMergeCollapsesOnProviderID(t *testing.T) {
|
||||
merged := []json.RawMessage{}
|
||||
one := searchExternalItem("Disclosure Day", 2027, "", "Movie", "radarr", RequestStatusRequestable, "12", "", false)
|
||||
merged = mergeSearchRaw(merged, one, 20)
|
||||
merged = mergeSearchRaw(merged, one, 20)
|
||||
if len(merged) != 1 {
|
||||
t.Fatalf("one title reported twice produced %d cards", len(merged))
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user