-
-
Notifications
You must be signed in to change notification settings - Fork 120
/
Copy pathplaylist_test.go
57 lines (46 loc) · 1.22 KB
/
playlist_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package playlist_test
import (
"testing"
"github.com/stretchr/testify/require"
"go.senan.xyz/gonic/playlist"
)
func TestPlaylist(t *testing.T) {
t.Parallel()
tmp := t.TempDir()
store, err := playlist.NewStore(tmp, false)
require.NoError(t, err)
playlistIDs, err := store.List()
require.NoError(t, err)
require.Empty(t, playlistIDs)
for _, playlistID := range playlistIDs {
playlist, err := store.Read(playlistID)
require.NoError(t, err)
require.NotZero(t, playlist.UpdatedAt)
}
before := playlist.Playlist{
UserID: 10,
Name: "Examlpe playlist name",
Comment: `
Example comment
It has multiple lines 👍
`,
Items: []string{
"/item 1.flac",
"/item 2.flac",
"/item 3.flac",
},
IsPublic: true,
}
newPath := playlist.NewPath(before.UserID, before.Name)
require.NoError(t, store.Write(newPath, &before))
after, err := store.Read(newPath)
require.NoError(t, err)
require.Equal(t, after.UserID, before.UserID)
require.Equal(t, after.Name, before.Name)
require.Equal(t, after.Comment, before.Comment)
require.Equal(t, after.Items, before.Items)
require.Equal(t, after.IsPublic, before.IsPublic)
playlistIDs, err = store.List()
require.NoError(t, err)
require.True(t, len(playlistIDs) == 1)
}