48 lines
1.1 KiB
Go
48 lines
1.1 KiB
Go
![]() |
package scanner
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
|
||
|
"github.com/deluan/navidrome/model"
|
||
|
"github.com/deluan/navidrome/persistence"
|
||
|
. "github.com/onsi/ginkgo"
|
||
|
. "github.com/onsi/gomega"
|
||
|
)
|
||
|
|
||
|
var _ = Describe("playlistSync", func() {
|
||
|
Describe("parsePlaylist", func() {
|
||
|
var ds model.DataStore
|
||
|
var ps *playlistSync
|
||
|
ctx := context.TODO()
|
||
|
BeforeEach(func() {
|
||
|
ds = &persistence.MockDataStore{
|
||
|
MockedMediaFile: &mockedMediaFile{},
|
||
|
}
|
||
|
ps = newPlaylistSync(ds)
|
||
|
})
|
||
|
|
||
|
It("parses well-formed playlists", func() {
|
||
|
pls, err := ps.parsePlaylist(ctx, "lf-ended.m3u", "tests/fixtures/playlists")
|
||
|
Expect(err).To(BeNil())
|
||
|
Expect(pls.Tracks).To(HaveLen(2))
|
||
|
})
|
||
|
|
||
|
It("parses playlists using CR ending (old Mac format)", func() {
|
||
|
pls, err := ps.parsePlaylist(ctx, "cr-ended.m3u", "tests/fixtures/playlists")
|
||
|
Expect(err).To(BeNil())
|
||
|
Expect(pls.Tracks).To(HaveLen(2))
|
||
|
})
|
||
|
})
|
||
|
})
|
||
|
|
||
|
type mockedMediaFile struct {
|
||
|
model.MediaFileRepository
|
||
|
}
|
||
|
|
||
|
func (r *mockedMediaFile) FindByPath(s string) (*model.MediaFile, error) {
|
||
|
return &model.MediaFile{
|
||
|
ID: "123",
|
||
|
Path: s,
|
||
|
}, nil
|
||
|
}
|