Refactor Agents to be singleton
Initial work for Last.fm scrobbler
This commit is contained in:
+28
-28
@@ -20,14 +20,14 @@ var _ = Describe("Agents", func() {
|
||||
var ag *Agents
|
||||
BeforeEach(func() {
|
||||
conf.Server.Agents = ""
|
||||
ag = NewAgents(ctx)
|
||||
ag = New(ctx)
|
||||
})
|
||||
|
||||
It("calls the placeholder GetBiography", func() {
|
||||
Expect(ag.GetBiography("123", "John Doe", "mb123")).To(Equal(placeholderBiography))
|
||||
Expect(ag.GetBiography(ctx, "123", "John Doe", "mb123")).To(Equal(placeholderBiography))
|
||||
})
|
||||
It("calls the placeholder GetImages", func() {
|
||||
images, err := ag.GetImages("123", "John Doe", "mb123")
|
||||
images, err := ag.GetImages(ctx, "123", "John Doe", "mb123")
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
Expect(images).To(HaveLen(3))
|
||||
for _, i := range images {
|
||||
@@ -50,24 +50,24 @@ var _ = Describe("Agents", func() {
|
||||
}{}
|
||||
})
|
||||
conf.Server.Agents = "empty,fake"
|
||||
ag = NewAgents(ctx)
|
||||
ag = New(ctx)
|
||||
Expect(ag.AgentName()).To(Equal("agents"))
|
||||
})
|
||||
|
||||
Describe("GetMBID", func() {
|
||||
It("returns on first match", func() {
|
||||
Expect(ag.GetMBID("123", "test")).To(Equal("mbid"))
|
||||
Expect(ag.GetMBID(ctx, "123", "test")).To(Equal("mbid"))
|
||||
Expect(mock.Args).To(ConsistOf("123", "test"))
|
||||
})
|
||||
It("skips the agent if it returns an error", func() {
|
||||
mock.Err = errors.New("error")
|
||||
_, err := ag.GetMBID("123", "test")
|
||||
_, err := ag.GetMBID(ctx, "123", "test")
|
||||
Expect(err).To(MatchError(ErrNotFound))
|
||||
Expect(mock.Args).To(ConsistOf("123", "test"))
|
||||
})
|
||||
It("interrupts if the context is canceled", func() {
|
||||
cancel()
|
||||
_, err := ag.GetMBID("123", "test")
|
||||
_, err := ag.GetMBID(ctx, "123", "test")
|
||||
Expect(err).To(MatchError(ErrNotFound))
|
||||
Expect(mock.Args).To(BeEmpty())
|
||||
})
|
||||
@@ -75,18 +75,18 @@ var _ = Describe("Agents", func() {
|
||||
|
||||
Describe("GetURL", func() {
|
||||
It("returns on first match", func() {
|
||||
Expect(ag.GetURL("123", "test", "mb123")).To(Equal("url"))
|
||||
Expect(ag.GetURL(ctx, "123", "test", "mb123")).To(Equal("url"))
|
||||
Expect(mock.Args).To(ConsistOf("123", "test", "mb123"))
|
||||
})
|
||||
It("skips the agent if it returns an error", func() {
|
||||
mock.Err = errors.New("error")
|
||||
_, err := ag.GetURL("123", "test", "mb123")
|
||||
_, err := ag.GetURL(ctx, "123", "test", "mb123")
|
||||
Expect(err).To(MatchError(ErrNotFound))
|
||||
Expect(mock.Args).To(ConsistOf("123", "test", "mb123"))
|
||||
})
|
||||
It("interrupts if the context is canceled", func() {
|
||||
cancel()
|
||||
_, err := ag.GetURL("123", "test", "mb123")
|
||||
_, err := ag.GetURL(ctx, "123", "test", "mb123")
|
||||
Expect(err).To(MatchError(ErrNotFound))
|
||||
Expect(mock.Args).To(BeEmpty())
|
||||
})
|
||||
@@ -94,17 +94,17 @@ var _ = Describe("Agents", func() {
|
||||
|
||||
Describe("GetBiography", func() {
|
||||
It("returns on first match", func() {
|
||||
Expect(ag.GetBiography("123", "test", "mb123")).To(Equal("bio"))
|
||||
Expect(ag.GetBiography(ctx, "123", "test", "mb123")).To(Equal("bio"))
|
||||
Expect(mock.Args).To(ConsistOf("123", "test", "mb123"))
|
||||
})
|
||||
It("skips the agent if it returns an error", func() {
|
||||
mock.Err = errors.New("error")
|
||||
Expect(ag.GetBiography("123", "test", "mb123")).To(Equal(placeholderBiography))
|
||||
Expect(ag.GetBiography(ctx, "123", "test", "mb123")).To(Equal(placeholderBiography))
|
||||
Expect(mock.Args).To(ConsistOf("123", "test", "mb123"))
|
||||
})
|
||||
It("interrupts if the context is canceled", func() {
|
||||
cancel()
|
||||
_, err := ag.GetBiography("123", "test", "mb123")
|
||||
_, err := ag.GetBiography(ctx, "123", "test", "mb123")
|
||||
Expect(err).To(MatchError(ErrNotFound))
|
||||
Expect(mock.Args).To(BeEmpty())
|
||||
})
|
||||
@@ -112,7 +112,7 @@ var _ = Describe("Agents", func() {
|
||||
|
||||
Describe("GetImages", func() {
|
||||
It("returns on first match", func() {
|
||||
Expect(ag.GetImages("123", "test", "mb123")).To(Equal([]ArtistImage{{
|
||||
Expect(ag.GetImages(ctx, "123", "test", "mb123")).To(Equal([]ArtistImage{{
|
||||
URL: "imageUrl",
|
||||
Size: 100,
|
||||
}}))
|
||||
@@ -120,12 +120,12 @@ var _ = Describe("Agents", func() {
|
||||
})
|
||||
It("skips the agent if it returns an error", func() {
|
||||
mock.Err = errors.New("error")
|
||||
Expect(ag.GetImages("123", "test", "mb123")).To(HaveLen(3))
|
||||
Expect(ag.GetImages(ctx, "123", "test", "mb123")).To(HaveLen(3))
|
||||
Expect(mock.Args).To(ConsistOf("123", "test", "mb123"))
|
||||
})
|
||||
It("interrupts if the context is canceled", func() {
|
||||
cancel()
|
||||
_, err := ag.GetImages("123", "test", "mb123")
|
||||
_, err := ag.GetImages(ctx, "123", "test", "mb123")
|
||||
Expect(err).To(MatchError(ErrNotFound))
|
||||
Expect(mock.Args).To(BeEmpty())
|
||||
})
|
||||
@@ -133,7 +133,7 @@ var _ = Describe("Agents", func() {
|
||||
|
||||
Describe("GetSimilar", func() {
|
||||
It("returns on first match", func() {
|
||||
Expect(ag.GetSimilar("123", "test", "mb123", 1)).To(Equal([]Artist{{
|
||||
Expect(ag.GetSimilar(ctx, "123", "test", "mb123", 1)).To(Equal([]Artist{{
|
||||
Name: "Joe Dohn",
|
||||
MBID: "mbid321",
|
||||
}}))
|
||||
@@ -141,13 +141,13 @@ var _ = Describe("Agents", func() {
|
||||
})
|
||||
It("skips the agent if it returns an error", func() {
|
||||
mock.Err = errors.New("error")
|
||||
_, err := ag.GetSimilar("123", "test", "mb123", 1)
|
||||
_, err := ag.GetSimilar(ctx, "123", "test", "mb123", 1)
|
||||
Expect(err).To(MatchError(ErrNotFound))
|
||||
Expect(mock.Args).To(ConsistOf("123", "test", "mb123", 1))
|
||||
})
|
||||
It("interrupts if the context is canceled", func() {
|
||||
cancel()
|
||||
_, err := ag.GetSimilar("123", "test", "mb123", 1)
|
||||
_, err := ag.GetSimilar(ctx, "123", "test", "mb123", 1)
|
||||
Expect(err).To(MatchError(ErrNotFound))
|
||||
Expect(mock.Args).To(BeEmpty())
|
||||
})
|
||||
@@ -155,7 +155,7 @@ var _ = Describe("Agents", func() {
|
||||
|
||||
Describe("GetTopSongs", func() {
|
||||
It("returns on first match", func() {
|
||||
Expect(ag.GetTopSongs("123", "test", "mb123", 2)).To(Equal([]Song{{
|
||||
Expect(ag.GetTopSongs(ctx, "123", "test", "mb123", 2)).To(Equal([]Song{{
|
||||
Name: "A Song",
|
||||
MBID: "mbid444",
|
||||
}}))
|
||||
@@ -163,13 +163,13 @@ var _ = Describe("Agents", func() {
|
||||
})
|
||||
It("skips the agent if it returns an error", func() {
|
||||
mock.Err = errors.New("error")
|
||||
_, err := ag.GetTopSongs("123", "test", "mb123", 2)
|
||||
_, err := ag.GetTopSongs(ctx, "123", "test", "mb123", 2)
|
||||
Expect(err).To(MatchError(ErrNotFound))
|
||||
Expect(mock.Args).To(ConsistOf("123", "test", "mb123", 2))
|
||||
})
|
||||
It("interrupts if the context is canceled", func() {
|
||||
cancel()
|
||||
_, err := ag.GetTopSongs("123", "test", "mb123", 2)
|
||||
_, err := ag.GetTopSongs(ctx, "123", "test", "mb123", 2)
|
||||
Expect(err).To(MatchError(ErrNotFound))
|
||||
Expect(mock.Args).To(BeEmpty())
|
||||
})
|
||||
@@ -186,7 +186,7 @@ func (a *mockAgent) AgentName() string {
|
||||
return "fake"
|
||||
}
|
||||
|
||||
func (a *mockAgent) GetMBID(id string, name string) (string, error) {
|
||||
func (a *mockAgent) GetMBID(ctx context.Context, id string, name string) (string, error) {
|
||||
a.Args = []interface{}{id, name}
|
||||
if a.Err != nil {
|
||||
return "", a.Err
|
||||
@@ -194,7 +194,7 @@ func (a *mockAgent) GetMBID(id string, name string) (string, error) {
|
||||
return "mbid", nil
|
||||
}
|
||||
|
||||
func (a *mockAgent) GetURL(id, name, mbid string) (string, error) {
|
||||
func (a *mockAgent) GetURL(ctx context.Context, id, name, mbid string) (string, error) {
|
||||
a.Args = []interface{}{id, name, mbid}
|
||||
if a.Err != nil {
|
||||
return "", a.Err
|
||||
@@ -202,7 +202,7 @@ func (a *mockAgent) GetURL(id, name, mbid string) (string, error) {
|
||||
return "url", nil
|
||||
}
|
||||
|
||||
func (a *mockAgent) GetBiography(id, name, mbid string) (string, error) {
|
||||
func (a *mockAgent) GetBiography(ctx context.Context, id, name, mbid string) (string, error) {
|
||||
a.Args = []interface{}{id, name, mbid}
|
||||
if a.Err != nil {
|
||||
return "", a.Err
|
||||
@@ -210,7 +210,7 @@ func (a *mockAgent) GetBiography(id, name, mbid string) (string, error) {
|
||||
return "bio", nil
|
||||
}
|
||||
|
||||
func (a *mockAgent) GetImages(id, name, mbid string) ([]ArtistImage, error) {
|
||||
func (a *mockAgent) GetImages(ctx context.Context, id, name, mbid string) ([]ArtistImage, error) {
|
||||
a.Args = []interface{}{id, name, mbid}
|
||||
if a.Err != nil {
|
||||
return nil, a.Err
|
||||
@@ -221,7 +221,7 @@ func (a *mockAgent) GetImages(id, name, mbid string) ([]ArtistImage, error) {
|
||||
}}, nil
|
||||
}
|
||||
|
||||
func (a *mockAgent) GetSimilar(id, name, mbid string, limit int) ([]Artist, error) {
|
||||
func (a *mockAgent) GetSimilar(ctx context.Context, id, name, mbid string, limit int) ([]Artist, error) {
|
||||
a.Args = []interface{}{id, name, mbid, limit}
|
||||
if a.Err != nil {
|
||||
return nil, a.Err
|
||||
@@ -232,7 +232,7 @@ func (a *mockAgent) GetSimilar(id, name, mbid string, limit int) ([]Artist, erro
|
||||
}}, nil
|
||||
}
|
||||
|
||||
func (a *mockAgent) GetTopSongs(id, artistName, mbid string, count int) ([]Song, error) {
|
||||
func (a *mockAgent) GetTopSongs(ctx context.Context, id, artistName, mbid string, count int) ([]Song, error) {
|
||||
a.Args = []interface{}{id, artistName, mbid, count}
|
||||
if a.Err != nil {
|
||||
return nil, a.Err
|
||||
|
||||
Reference in New Issue
Block a user