package engine import ( "context" "errors" "github.com/deluan/navidrome/model" "github.com/deluan/navidrome/persistence" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) var _ = Describe("Browser", func() { var repo *mockGenreRepository var b Browser BeforeEach(func() { repo = &mockGenreRepository{data: model.Genres{ {Name: "Rock", SongCount: 1000, AlbumCount: 100}, {Name: "", SongCount: 13, AlbumCount: 13}, {Name: "Electronic", SongCount: 4000, AlbumCount: 40}, }} var ds = &persistence.MockDataStore{MockedGenre: repo} b = &browser{ds: ds} }) It("returns sorted data", func() { Expect(b.GetGenres(context.TODO())).To(Equal(model.Genres{ {Name: "", SongCount: 13, AlbumCount: 13}, {Name: "Electronic", SongCount: 4000, AlbumCount: 40}, {Name: "Rock", SongCount: 1000, AlbumCount: 100}, })) }) It("bubbles up errors", func() { repo.err = errors.New("generic error") _, err := b.GetGenres(context.TODO()) Expect(err).ToNot(BeNil()) }) }) type mockGenreRepository struct { data model.Genres err error } func (r *mockGenreRepository) GetAll() (model.Genres, error) { if r.err != nil { return nil, r.err } return r.data, nil }