Introduced NowPlayingRepository. Don't do anything for now
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
package engine
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"time"
|
||||
)
|
||||
|
||||
func CreateMockNowPlayingRepo() *MockNowPlaying {
|
||||
return &MockNowPlaying{data: make(map[string]time.Time)}
|
||||
}
|
||||
|
||||
type MockNowPlaying struct {
|
||||
NowPlayingRepository
|
||||
data map[string]time.Time
|
||||
err bool
|
||||
}
|
||||
|
||||
func (m *MockNowPlaying) SetError(err bool) {
|
||||
m.err = err
|
||||
}
|
||||
|
||||
func (m *MockNowPlaying) Add(id string) error {
|
||||
if m.err {
|
||||
return errors.New("Error!")
|
||||
}
|
||||
m.data[id] = time.Now()
|
||||
return nil
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package engine
|
||||
|
||||
import "time"
|
||||
|
||||
const NowPlayingExpire = time.Duration(30) * time.Minute
|
||||
|
||||
type NowPlayingInfo struct {
|
||||
TrackId string
|
||||
Start time.Time
|
||||
}
|
||||
|
||||
type NowPlayingRepository interface {
|
||||
Add(trackId string) error
|
||||
}
|
||||
+3
-2
@@ -13,13 +13,14 @@ type Scrobbler interface {
|
||||
Register(id string, playDate time.Time, submit bool) (*domain.MediaFile, error)
|
||||
}
|
||||
|
||||
func NewScrobbler(itunes itunesbridge.ItunesControl, mr domain.MediaFileRepository) Scrobbler {
|
||||
return scrobbler{itunes, mr}
|
||||
func NewScrobbler(itunes itunesbridge.ItunesControl, mr domain.MediaFileRepository, npr NowPlayingRepository) Scrobbler {
|
||||
return scrobbler{itunes, mr, npr}
|
||||
}
|
||||
|
||||
type scrobbler struct {
|
||||
itunes itunesbridge.ItunesControl
|
||||
mfRepo domain.MediaFileRepository
|
||||
npRepo NowPlayingRepository
|
||||
}
|
||||
|
||||
func (s scrobbler) Register(id string, playDate time.Time, submit bool) (*domain.MediaFile, error) {
|
||||
|
||||
@@ -17,9 +17,10 @@ func TestScrobbler(t *testing.T) {
|
||||
Init(t, false)
|
||||
|
||||
mfRepo := persistence.CreateMockMediaFileRepo()
|
||||
npRepo := engine.CreateMockNowPlayingRepo()
|
||||
itCtrl := &mockItunesControl{}
|
||||
|
||||
scrobbler := engine.NewScrobbler(itCtrl, mfRepo)
|
||||
scrobbler := engine.NewScrobbler(itCtrl, mfRepo, npRepo)
|
||||
|
||||
Convey("Given a DB with one song", t, func() {
|
||||
mfRepo.SetData(`[{"Id":"2","Title":"Hands Of Time"}]`, 1)
|
||||
|
||||
Reference in New Issue
Block a user