Skip to content
Snippets Groups Projects
Verified Commit 7aebadbd authored by Ernesto Rico Schmidt's avatar Ernesto Rico Schmidt
Browse files

test: remove test for Playlists

parent decc285f
No related branches found
No related tags found
No related merge requests found
......@@ -27,7 +27,6 @@ import (
"reflect"
"strconv"
"testing"
"time"
//"github.com/jinzhu/gorm"
)
......@@ -569,197 +568,3 @@ func TestFilesSourceHash(t *testing.T) {
t.Fatalf("file should now have hash set to %q but has %q", hash, file.Source.Hash)
}
}
// Playlists
//
type playlistTestEntry struct {
uri string
duration *float64
}
func generateTestPlaylist(entries ...playlistTestEntry) (p Playlist) {
for _, entry := range entries {
e := PlaylistEntry{URI: entry.uri, Duration: entry.duration}
p.Entries = append(p.Entries, e)
}
return p
}
func TestPlaylistsListCreateDelete(t *testing.T) {
store := newTestStore(t)
playlists, err := store.ListPlaylists(testShowID, -1, -1)
if err != nil {
t.Fatalf("listing playlists of test show failed: %v", err)
}
if len(playlists) != 0 {
t.Fatalf("a newly created store should contain no playlists in test show but ListPlaylists returned: %v", playlists)
}
playlists, err = store.ListPlaylists(uint64(0), -1, -1)
if err != nil {
t.Fatalf("listing playlists of not existing show shouldn't throw an error but returned: %v", err)
}
if len(playlists) != 0 {
t.Fatalf("listing playlists of not existing show should return and empty list but ListPlaylists returned: %v", playlists)
}
in := generateTestPlaylist(playlistTestEntry{"audioin://1", nil}, playlistTestEntry{"http://stream.example.com/live.mp", nil})
testPlaylist, err := store.CreatePlaylist(testShowID, in)
if err != ErrPlaylistHasMultipleNullDurationEntries {
t.Fatalf("creating playlist with more than one non-file entry without duration should fail with specific error but returned: %v", err)
}
testDuration := time.Second.Seconds()
in = generateTestPlaylist(playlistTestEntry{"audioin://1", &testDuration}, playlistTestEntry{"http://stream.example.com/live.mp", nil})
testPlaylist, err = store.CreatePlaylist(testShowID, in)
if err != nil {
t.Fatalf("creating playlist in test show failed: %v", err)
}
playlists, err = store.ListPlaylists(testShowID, -1, -1)
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
if len(playlists) != 1 {
t.Fatalf("ListPlaylists should return a single playlist but returned: %v", playlists)
}
in1 := generateTestPlaylist(playlistTestEntry{"audioin://1", &testDuration}, playlistTestEntry{"http://stream.example.com/live.mp3", nil})
_, err = store.CreatePlaylist(testShow1, in1)
if err != nil {
t.Fatalf("creating playlist in not existing show shouldn't throw an error but CreatePlaylist returned: %v", err)
}
in2 := generateTestPlaylist(playlistTestEntry{"https://stream.example.com/other.ogg", &testDuration}, playlistTestEntry{"audioin://2", nil})
_, err = store.CreatePlaylist(testShow1, in2)
if err != nil {
t.Fatalf("creating playlist in not existing show shouldn't throw an error but CreatePlaylist returned: %v", err)
}
shows, err := store.ListShows()
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
checkShows(t, shows, []uint64{testShowID, testShow1})
playlists, err = store.ListPlaylists(testShow1, -1, -1)
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
if len(playlists) != 2 {
t.Fatalf("ListPlaylists should return two playlists but returned: %v", playlists)
}
// clean up so next test can run with a clean DB, TODO: remove as soon as newTestStore() can re-init the DB
if err = store.DeleteShow(testShow1); err != nil {
t.Fatalf("unexpected error: %v", err)
}
if err = store.DeletePlaylist(testShowID, testPlaylist.ID); err != nil {
t.Fatalf("deleting playlist %d of show '%d' failed: %v", testPlaylist.ID, testShowID, err)
}
}
func TestPlaylistsCreateAndGet(t *testing.T) {
store := newTestStore(t)
f := File{Size: 12345}
f.Source.URI = testSourceURI1
f.Metadata.Artist = testFileArtist1
f.Metadata.Album = testFileAlbum1
f.Metadata.Title = testFileTitle1
file1, err := store.CreateFile(testShow1, f)
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
if _, err := store.GetPlaylist(testShow1, 0); err != ErrNotFound {
t.Fatalf("getting playlist in not-existing show should return ErrNotFound, but GetPlaylist returned: %v", err)
}
p := generateTestPlaylist(playlistTestEntry{"http://stream.example.com/stream.mp3", nil})
p.Entries = append(p.Entries, PlaylistEntry{File: &File{ShowID: file1.ShowID, ID: file1.ID}})
list1, err := store.CreatePlaylist(testShow1, p)
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
if _, err := store.GetPlaylist(testShow1, list1.ID); err != nil {
t.Fatalf("getting existing playlist from store shouldn't return an error, but GetPlaylist returned: %v", err)
}
// TODO: check if playlists are equal
p = generateTestPlaylist(playlistTestEntry{"http://stream.example.com/other.mp3", nil}, playlistTestEntry{fmt.Sprintf("file://%d/%d", file1.ShowID, file1.ID), nil})
if _, err = store.CreatePlaylist(testShow1, p); err != nil {
t.Fatalf("unexpected error: %v", err)
}
playlists, err := store.ListPlaylists(testShow1, -1, -1)
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
if len(playlists) != 2 {
t.Fatalf("ListPlaylists should return two playlists but returned: %v", playlists)
}
// TODO: check playlists contains both lists
}
// TODO: add test for pagination in store.ListePlaylists()
// File usage
func TestFileUsage(t *testing.T) {
store := newTestStore(t)
file := &File{Size: 12345}
file.Source.URI = testSourceURI1
file.Metadata.Artist = testFileArtist1
file.Metadata.Album = testFileAlbum1
file.Metadata.Title = testFileTitle1
file, err := store.CreateFile(testShow1, *file)
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
lists, err := store.GetFileUsage(file.ShowID, file.ID)
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
if len(lists) != 0 {
t.Fatalf("file should be in use by any playlist but got %d entries in usage list", len(lists))
}
p := generateTestPlaylist(playlistTestEntry{"http://stream.example.com/stream.mp3", nil})
p.Entries = append(p.Entries, PlaylistEntry{File: &File{ShowID: file.ShowID, ID: file.ID}})
list, err := store.CreatePlaylist(testShow1, p)
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
lists, err = store.GetFileUsage(file.ShowID, file.ID)
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
if len(lists) != 1 {
t.Fatalf("file should be used by exactly one playlist but got %d entries in usage list", len(lists))
}
if lists[0].ID != list.ID {
t.Fatalf("file should be in use by playlist %d but entries of usage list only contains: %d", list.ID, lists[0].ID)
}
err = store.DeleteFile(file.ShowID, file.ID)
errInUse, ok := err.(*ErrFileInUse)
if !ok {
t.Fatalf("deleting file that is in use should return an error of type ErrFileInUs, but returned: %v (type: %t)", err, err)
}
if len(errInUse.Playlists) != 1 || errInUse.Playlists[0].ID != list.ID {
t.Fatalf("usage reports invalid playlist-list: %+v", errInUse.Playlists)
}
if err = store.DeletePlaylist(list.ShowID, list.ID); err != nil {
t.Fatalf("unexpected error: %v", err)
}
if err = store.DeleteFile(file.ShowID, file.ID); err != nil {
t.Fatalf("unexpected error: %v", err)
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment