diff --git a/cmd/wire_gen.go b/cmd/wire_gen.go index 10deceef..0f5fa90c 100644 --- a/cmd/wire_gen.go +++ b/cmd/wire_gen.go @@ -49,7 +49,7 @@ func CreateSubsonicAPIRouter() *subsonic.Router { transcodingCache := core.NewTranscodingCache() mediaStreamer := core.NewMediaStreamer(dataStore, transcoderTranscoder, transcodingCache) archiver := core.NewArchiver(dataStore) - players := engine.NewPlayers(dataStore) + players := core.NewPlayers(dataStore) client := core.LastFMNewClient() spotifyClient := core.SpotifyNewClient() externalInfo := core.NewExternalInfo(dataStore, client, spotifyClient) diff --git a/core/artwork_test.go b/core/artwork_test.go index 289bca84..91b8e97a 100644 --- a/core/artwork_test.go +++ b/core/artwork_test.go @@ -10,7 +10,7 @@ import ( "github.com/deluan/navidrome/conf" "github.com/deluan/navidrome/log" "github.com/deluan/navidrome/model" - "github.com/deluan/navidrome/persistence" + "github.com/deluan/navidrome/tests" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) @@ -21,13 +21,13 @@ var _ = Describe("Artwork", func() { ctx := log.NewContext(context.TODO()) BeforeEach(func() { - ds = &persistence.MockDataStore{MockedTranscoding: &mockTranscodingRepository{}} - ds.Album(ctx).(*persistence.MockAlbum).SetData(model.Albums{ + ds = &tests.MockDataStore{MockedTranscoding: &tests.MockTranscodingRepository{}} + ds.Album(ctx).(*tests.MockAlbum).SetData(model.Albums{ {ID: "222", CoverArtId: "123", CoverArtPath: "tests/fixtures/test.mp3"}, {ID: "333", CoverArtId: ""}, {ID: "444", CoverArtId: "444", CoverArtPath: "tests/fixtures/cover.jpg"}, }) - ds.MediaFile(ctx).(*persistence.MockMediaFile).SetData(model.MediaFiles{ + ds.MediaFile(ctx).(*tests.MockMediaFile).SetData(model.MediaFiles{ {ID: "123", AlbumID: "222", Path: "tests/fixtures/test.mp3", HasCoverArt: true}, {ID: "456", AlbumID: "222", Path: "tests/fixtures/test.ogg", HasCoverArt: false}, }) @@ -132,14 +132,14 @@ var _ = Describe("Artwork", func() { Context("Errors", func() { It("returns err if gets error from album table", func() { - ds.Album(ctx).(*persistence.MockAlbum).SetError(true) + ds.Album(ctx).(*tests.MockAlbum).SetError(true) buf := new(bytes.Buffer) Expect(artwork.Get(ctx, "al-222", 0, buf)).To(MatchError("Error!")) }) It("returns err if gets error from media_file table", func() { - ds.MediaFile(ctx).(*persistence.MockMediaFile).SetError(true) + ds.MediaFile(ctx).(*tests.MockMediaFile).SetError(true) buf := new(bytes.Buffer) Expect(artwork.Get(ctx, "123", 0, buf)).To(MatchError("Error!")) diff --git a/core/media_streamer_test.go b/core/media_streamer_test.go index 4a5ed6e8..e2bbb976 100644 --- a/core/media_streamer_test.go +++ b/core/media_streamer_test.go @@ -11,7 +11,7 @@ import ( "github.com/deluan/navidrome/log" "github.com/deluan/navidrome/model" "github.com/deluan/navidrome/model/request" - "github.com/deluan/navidrome/persistence" + "github.com/deluan/navidrome/tests" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) @@ -25,8 +25,8 @@ var _ = Describe("MediaStreamer", func() { BeforeEach(func() { conf.Server.DataFolder, _ = ioutil.TempDir("", "file_caches") conf.Server.TranscodingCacheSize = "100MB" - ds = &persistence.MockDataStore{MockedTranscoding: &mockTranscodingRepository{}} - ds.MediaFile(ctx).(*persistence.MockMediaFile).SetData(model.MediaFiles{ + ds = &tests.MockDataStore{MockedTranscoding: &tests.MockTranscodingRepository{}} + ds.MediaFile(ctx).(*tests.MockMediaFile).SetData(model.MediaFiles{ {ID: "123", Path: "tests/fixtures/test.mp3", Suffix: "mp3", BitRate: 128, Duration: 257.0}, }) testCache := NewTranscodingCache() diff --git a/server/subsonic/engine/players.go b/core/players.go similarity index 99% rename from server/subsonic/engine/players.go rename to core/players.go index d560d418..e643b388 100644 --- a/server/subsonic/engine/players.go +++ b/core/players.go @@ -1,4 +1,4 @@ -package engine +package core import ( "context" diff --git a/server/subsonic/engine/players_test.go b/core/players_test.go similarity index 96% rename from server/subsonic/engine/players_test.go rename to core/players_test.go index 7d0a9a52..1f7d2822 100644 --- a/server/subsonic/engine/players_test.go +++ b/core/players_test.go @@ -1,4 +1,4 @@ -package engine +package core import ( "context" @@ -7,7 +7,7 @@ import ( "github.com/deluan/navidrome/log" "github.com/deluan/navidrome/model" "github.com/deluan/navidrome/model/request" - "github.com/deluan/navidrome/persistence" + "github.com/deluan/navidrome/tests" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) @@ -22,7 +22,7 @@ var _ = Describe("Players", func() { BeforeEach(func() { repo = &mockPlayerRepository{} - ds := &persistence.MockDataStore{MockedPlayer: repo, MockedTranscoding: &mockTranscodingRepository{}} + ds := &tests.MockDataStore{MockedPlayer: repo, MockedTranscoding: &tests.MockTranscodingRepository{}} players = NewPlayers(ds) beforeRegister = time.Now() }) diff --git a/scanner/playlist_sync_test.go b/scanner/playlist_sync_test.go index 1f19cbf8..a0aed99d 100644 --- a/scanner/playlist_sync_test.go +++ b/scanner/playlist_sync_test.go @@ -4,7 +4,7 @@ import ( "context" "github.com/deluan/navidrome/model" - "github.com/deluan/navidrome/persistence" + "github.com/deluan/navidrome/tests" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) @@ -15,7 +15,7 @@ var _ = Describe("playlistSync", func() { var ps *playlistSync ctx := context.TODO() BeforeEach(func() { - ds = &persistence.MockDataStore{ + ds = &tests.MockDataStore{ MockedMediaFile: &mockedMediaFile{}, } ps = newPlaylistSync(ds) diff --git a/server/app/serve_index_test.go b/server/app/serve_index_test.go index d660be0a..bf0621c4 100644 --- a/server/app/serve_index_test.go +++ b/server/app/serve_index_test.go @@ -11,7 +11,7 @@ import ( "github.com/deluan/navidrome/conf" "github.com/deluan/navidrome/consts" "github.com/deluan/navidrome/model" - "github.com/deluan/navidrome/persistence" + "github.com/deluan/navidrome/tests" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) @@ -22,7 +22,7 @@ var _ = Describe("serveIndex", func() { fs := http.Dir("tests/fixtures") BeforeEach(func() { - ds = &persistence.MockDataStore{MockedUser: mockUser} + ds = &tests.MockDataStore{MockedUser: mockUser} conf.Server.UILoginBackgroundURL = "" }) diff --git a/server/subsonic/album_lists_test.go b/server/subsonic/album_lists_test.go index d1ed6047..6f6fcf57 100644 --- a/server/subsonic/album_lists_test.go +++ b/server/subsonic/album_lists_test.go @@ -6,7 +6,7 @@ import ( "github.com/deluan/navidrome/log" "github.com/deluan/navidrome/model" - "github.com/deluan/navidrome/persistence" + "github.com/deluan/navidrome/tests" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) @@ -14,13 +14,13 @@ import ( var _ = Describe("AlbumListController", func() { var controller *AlbumListController var ds model.DataStore - var mockRepo *persistence.MockAlbum + var mockRepo *tests.MockAlbum var w *httptest.ResponseRecorder ctx := log.NewContext(context.TODO()) BeforeEach(func() { - ds = &persistence.MockDataStore{} - mockRepo = ds.Album(ctx).(*persistence.MockAlbum) + ds = &tests.MockDataStore{} + mockRepo = ds.Album(ctx).(*tests.MockAlbum) controller = NewAlbumListController(ds, nil) w = httptest.NewRecorder() }) diff --git a/server/subsonic/api.go b/server/subsonic/api.go index 9017f1ee..278a0a72 100644 --- a/server/subsonic/api.go +++ b/server/subsonic/api.go @@ -27,7 +27,7 @@ type Router struct { Playlists engine.Playlists Streamer core.MediaStreamer Archiver core.Archiver - Players engine.Players + Players core.Players ExternalInfo core.ExternalInfo DataStore model.DataStore @@ -36,7 +36,7 @@ type Router struct { func New(artwork core.Artwork, playlists engine.Playlists, streamer core.MediaStreamer, - archiver core.Archiver, players engine.Players, externalInfo core.ExternalInfo, ds model.DataStore) *Router { + archiver core.Archiver, players core.Players, externalInfo core.ExternalInfo, ds model.DataStore) *Router { r := &Router{Artwork: artwork, Playlists: playlists, Streamer: streamer, Archiver: archiver, Players: players, ExternalInfo: externalInfo, DataStore: ds} r.mux = r.routes() diff --git a/server/subsonic/engine/engine_suite_test.go b/server/subsonic/engine/engine_suite_test.go deleted file mode 100644 index bd2e5064..00000000 --- a/server/subsonic/engine/engine_suite_test.go +++ /dev/null @@ -1,17 +0,0 @@ -package engine - -import ( - "testing" - - "github.com/deluan/navidrome/log" - "github.com/deluan/navidrome/tests" - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" -) - -func TestEngine(t *testing.T) { - tests.Init(t, false) - log.SetLevel(log.LevelCritical) - RegisterFailHandler(Fail) - RunSpecs(t, "Engine Suite") -} diff --git a/server/subsonic/engine/mock_transcoding_repo_test.go b/server/subsonic/engine/mock_transcoding_repo_test.go deleted file mode 100644 index f9523e80..00000000 --- a/server/subsonic/engine/mock_transcoding_repo_test.go +++ /dev/null @@ -1,22 +0,0 @@ -package engine - -import "github.com/deluan/navidrome/model" - -type mockTranscodingRepository struct { - model.TranscodingRepository -} - -func (m *mockTranscodingRepository) Get(id string) (*model.Transcoding, error) { - return &model.Transcoding{ID: id, TargetFormat: "mp3", DefaultBitRate: 160}, nil -} - -func (m *mockTranscodingRepository) FindByFormat(format string) (*model.Transcoding, error) { - switch format { - case "mp3": - return &model.Transcoding{ID: "mp31", TargetFormat: "mp3", DefaultBitRate: 160}, nil - case "oga": - return &model.Transcoding{ID: "oga1", TargetFormat: "oga", DefaultBitRate: 128}, nil - default: - return nil, model.ErrNotFound - } -} diff --git a/server/subsonic/engine/wire_providers.go b/server/subsonic/engine/wire_providers.go index dd0c0585..124e2c33 100644 --- a/server/subsonic/engine/wire_providers.go +++ b/server/subsonic/engine/wire_providers.go @@ -1,10 +1,11 @@ package engine import ( + "github.com/deluan/navidrome/core" "github.com/google/wire" ) var Set = wire.NewSet( NewPlaylists, - NewPlayers, + core.NewPlayers, ) diff --git a/server/subsonic/middlewares.go b/server/subsonic/middlewares.go index d7c1d50a..3901c27d 100644 --- a/server/subsonic/middlewares.go +++ b/server/subsonic/middlewares.go @@ -10,11 +10,11 @@ import ( "net/url" "strings" + "github.com/deluan/navidrome/core" "github.com/deluan/navidrome/core/auth" "github.com/deluan/navidrome/log" "github.com/deluan/navidrome/model" "github.com/deluan/navidrome/model/request" - "github.com/deluan/navidrome/server/subsonic/engine" "github.com/deluan/navidrome/server/subsonic/responses" "github.com/deluan/navidrome/utils" ) @@ -139,7 +139,7 @@ func validateUser(ctx context.Context, ds model.DataStore, username, pass, token return user, nil } -func getPlayer(players engine.Players) func(next http.Handler) http.Handler { +func getPlayer(players core.Players) func(next http.Handler) http.Handler { return func(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { ctx := r.Context() diff --git a/server/subsonic/middlewares_test.go b/server/subsonic/middlewares_test.go index 6e310a28..beb076a2 100644 --- a/server/subsonic/middlewares_test.go +++ b/server/subsonic/middlewares_test.go @@ -7,12 +7,12 @@ import ( "net/http/httptest" "strings" + "github.com/deluan/navidrome/core" "github.com/deluan/navidrome/core/auth" "github.com/deluan/navidrome/log" "github.com/deluan/navidrome/model" "github.com/deluan/navidrome/model/request" - "github.com/deluan/navidrome/persistence" - "github.com/deluan/navidrome/server/subsonic/engine" + "github.com/deluan/navidrome/tests" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) @@ -117,7 +117,7 @@ var _ = Describe("Middlewares", func() { Describe("Authenticate", func() { var ds model.DataStore BeforeEach(func() { - ds = &persistence.MockDataStore{} + ds = &tests.MockDataStore{} }) It("passes authentication with correct credentials", func() { @@ -222,7 +222,7 @@ var _ = Describe("Middlewares", func() { Describe("validateUser", func() { var ds model.DataStore BeforeEach(func() { - ds = &persistence.MockDataStore{} + ds = &tests.MockDataStore{} }) Context("Plaintext password", func() { @@ -302,7 +302,7 @@ func (mh *mockHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { } type mockPlayers struct { - engine.Players + core.Players transcoding *model.Transcoding } diff --git a/persistence/mock_album_repo.go b/tests/mock_album_repo.go similarity index 98% rename from persistence/mock_album_repo.go rename to tests/mock_album_repo.go index 437b81f3..66111446 100644 --- a/persistence/mock_album_repo.go +++ b/tests/mock_album_repo.go @@ -1,4 +1,4 @@ -package persistence +package tests import ( "errors" diff --git a/persistence/mock_artist_repo.go b/tests/mock_artist_repo.go similarity index 97% rename from persistence/mock_artist_repo.go rename to tests/mock_artist_repo.go index 0fadf520..0e228fa6 100644 --- a/persistence/mock_artist_repo.go +++ b/tests/mock_artist_repo.go @@ -1,4 +1,4 @@ -package persistence +package tests import ( "errors" diff --git a/persistence/mock_mediafile_repo.go b/tests/mock_mediafile_repo.go similarity index 98% rename from persistence/mock_mediafile_repo.go rename to tests/mock_mediafile_repo.go index 410ab36c..044332ac 100644 --- a/persistence/mock_mediafile_repo.go +++ b/tests/mock_mediafile_repo.go @@ -1,4 +1,4 @@ -package persistence +package tests import ( "errors" diff --git a/persistence/mock_persistence.go b/tests/mock_persistence.go similarity index 99% rename from persistence/mock_persistence.go rename to tests/mock_persistence.go index 3f88e860..24ee1699 100644 --- a/persistence/mock_persistence.go +++ b/tests/mock_persistence.go @@ -1,4 +1,4 @@ -package persistence +package tests import ( "context" diff --git a/core/mock_transcoding_repo_test.go b/tests/mock_transcoding_repo.go similarity index 72% rename from core/mock_transcoding_repo_test.go rename to tests/mock_transcoding_repo.go index 6907390c..f9fdf4aa 100644 --- a/core/mock_transcoding_repo_test.go +++ b/tests/mock_transcoding_repo.go @@ -1,16 +1,16 @@ -package core +package tests import "github.com/deluan/navidrome/model" -type mockTranscodingRepository struct { +type MockTranscodingRepository struct { model.TranscodingRepository } -func (m *mockTranscodingRepository) Get(id string) (*model.Transcoding, error) { +func (m *MockTranscodingRepository) Get(id string) (*model.Transcoding, error) { return &model.Transcoding{ID: id, TargetFormat: "mp3", DefaultBitRate: 160}, nil } -func (m *mockTranscodingRepository) FindByFormat(format string) (*model.Transcoding, error) { +func (m *MockTranscodingRepository) FindByFormat(format string) (*model.Transcoding, error) { switch format { case "mp3": return &model.Transcoding{ID: "mp31", TargetFormat: "mp3", DefaultBitRate: 160}, nil