58 lines
1.2 KiB
Go
58 lines
1.2 KiB
Go
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)
|
|
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)
|
|
}
|