2020-01-15 00:23:29 +01:00
|
|
|
package persistence
|
2020-01-12 23:32:06 +01:00
|
|
|
|
|
|
|
import (
|
2020-01-15 04:22:34 +01:00
|
|
|
"github.com/cloudsonic/sonic-server/model"
|
2020-01-12 23:32:06 +01:00
|
|
|
. "github.com/onsi/ginkgo"
|
|
|
|
. "github.com/onsi/gomega"
|
|
|
|
)
|
|
|
|
|
|
|
|
var _ = Describe("ArtistRepository", func() {
|
2020-01-15 04:22:34 +01:00
|
|
|
var repo model.ArtistRepository
|
2020-01-12 23:32:06 +01:00
|
|
|
|
|
|
|
BeforeEach(func() {
|
|
|
|
repo = NewArtistRepository()
|
|
|
|
})
|
|
|
|
|
|
|
|
It("saves and retrieves data", func() {
|
2020-01-15 04:22:34 +01:00
|
|
|
Expect(repo.Get("1")).To(Equal(&model.Artist{ID: "1", Name: "Saara Saara", AlbumCount: 2}))
|
2020-01-12 23:32:06 +01:00
|
|
|
})
|
|
|
|
|
|
|
|
It("overrides data if ID already exists", func() {
|
2020-01-15 04:22:34 +01:00
|
|
|
Expect(repo.Put(&model.Artist{ID: "1", Name: "Saara Saara is The Best!", AlbumCount: 3})).To(BeNil())
|
|
|
|
Expect(repo.Get("1")).To(Equal(&model.Artist{ID: "1", Name: "Saara Saara is The Best!", AlbumCount: 3}))
|
2020-01-12 23:32:06 +01:00
|
|
|
})
|
|
|
|
|
|
|
|
It("returns ErrNotFound when the ID does not exist", func() {
|
|
|
|
_, err := repo.Get("999")
|
2020-01-15 04:22:34 +01:00
|
|
|
Expect(err).To(MatchError(model.ErrNotFound))
|
2020-01-12 23:32:06 +01:00
|
|
|
})
|
|
|
|
|
2020-01-13 00:55:55 +01:00
|
|
|
Describe("PurgeInactive", func() {
|
2020-01-12 23:32:06 +01:00
|
|
|
BeforeEach(func() {
|
|
|
|
for _, a := range testArtists {
|
|
|
|
repo.Put(&a)
|
|
|
|
}
|
|
|
|
})
|
|
|
|
|
|
|
|
It("purges inactive records", func() {
|
2020-01-15 04:22:34 +01:00
|
|
|
active := model.Artists{{ID: "1"}, {ID: "3"}}
|
2020-01-15 00:23:29 +01:00
|
|
|
|
|
|
|
Expect(repo.PurgeInactive(active)).To(BeNil())
|
|
|
|
|
2020-01-12 23:32:06 +01:00
|
|
|
Expect(repo.CountAll()).To(Equal(int64(2)))
|
|
|
|
Expect(repo.Exists("2")).To(BeFalse())
|
|
|
|
})
|
|
|
|
|
|
|
|
It("doesn't delete anything if all is active", func() {
|
2020-01-15 04:22:34 +01:00
|
|
|
active := model.Artists{{ID: "1"}, {ID: "2"}, {ID: "3"}}
|
2020-01-15 00:23:29 +01:00
|
|
|
|
|
|
|
Expect(repo.PurgeInactive(active)).To(BeNil())
|
|
|
|
|
2020-01-12 23:32:06 +01:00
|
|
|
Expect(repo.CountAll()).To(Equal(int64(3)))
|
|
|
|
Expect(repo.Exists("1")).To(BeTrue())
|
|
|
|
})
|
|
|
|
})
|
|
|
|
})
|