75 lines
2.1 KiB
Go
75 lines
2.1 KiB
Go
package watchsync
|
|
|
|
import "testing"
|
|
|
|
type stubProvider struct {
|
|
key string
|
|
displayName string
|
|
capabilities Capabilities
|
|
}
|
|
|
|
func (s stubProvider) Key() string { return s.key }
|
|
func (s stubProvider) DisplayName() string { return s.displayName }
|
|
func (s stubProvider) Capabilities() Capabilities { return s.capabilities }
|
|
|
|
func TestRegistryRejectsDuplicateProvider(t *testing.T) {
|
|
registry := NewRegistry()
|
|
provider := stubProvider{key: "trakt", displayName: "Trakt"}
|
|
|
|
if err := registry.Register(provider); err != nil {
|
|
t.Fatalf("register first provider: %v", err)
|
|
}
|
|
if err := registry.Register(provider); err == nil {
|
|
t.Fatal("expected duplicate provider to be rejected")
|
|
}
|
|
}
|
|
|
|
func TestRegistryListWithCapabilities(t *testing.T) {
|
|
registry := NewRegistry()
|
|
|
|
if err := registry.Register(stubProvider{
|
|
key: "trakt",
|
|
displayName: "Trakt",
|
|
capabilities: Capabilities{
|
|
ImportWatched: true,
|
|
ImportProgress: true,
|
|
ExportWatched: true,
|
|
ScrobblePlayback: true,
|
|
},
|
|
}); err != nil {
|
|
t.Fatalf("register trakt: %v", err)
|
|
}
|
|
if err := registry.Register(stubProvider{
|
|
key: "letterboxd",
|
|
displayName: "Letterboxd",
|
|
capabilities: Capabilities{
|
|
ImportWatched: true,
|
|
ExportWatched: true,
|
|
},
|
|
}); err != nil {
|
|
t.Fatalf("register letterboxd: %v", err)
|
|
}
|
|
|
|
summaries := registry.List()
|
|
if len(summaries) != 2 {
|
|
t.Fatalf("got %d summaries, want 2", len(summaries))
|
|
}
|
|
if summaries[0].Key != "letterboxd" || summaries[1].Key != "trakt" {
|
|
t.Fatalf("summaries are not sorted by provider key: %#v", summaries)
|
|
}
|
|
if summaries[0].DisplayName != "Letterboxd" {
|
|
t.Fatalf("got first provider display name %q, want Letterboxd", summaries[0].DisplayName)
|
|
}
|
|
if summaries[0].Capabilities != (Capabilities{ImportWatched: true, ExportWatched: true}) {
|
|
t.Fatalf("unexpected letterboxd capabilities: %#v", summaries[0].Capabilities)
|
|
}
|
|
if summaries[1].Capabilities != (Capabilities{
|
|
ImportWatched: true,
|
|
ImportProgress: true,
|
|
ExportWatched: true,
|
|
ScrobblePlayback: true,
|
|
}) {
|
|
t.Fatalf("unexpected trakt capabilities: %#v", summaries[1].Capabilities)
|
|
}
|
|
}
|