mirror of
https://github.com/gabehf/Koito.git
synced 2026-03-17 11:16:35 -07:00
transition time ranged queries to timeframe (#117)
This commit is contained in:
parent
ad3c51a70e
commit
d327729bff
26 changed files with 2032 additions and 335 deletions
|
|
@ -14,7 +14,7 @@ func TestGetTopTracksPaginated(t *testing.T) {
|
|||
ctx := context.Background()
|
||||
|
||||
// Test valid
|
||||
resp, err := store.GetTopTracksPaginated(ctx, db.GetItemsOpts{Period: db.PeriodAllTime})
|
||||
resp, err := store.GetTopTracksPaginated(ctx, db.GetItemsOpts{Timeframe: db.Timeframe{Period: db.PeriodAllTime}})
|
||||
require.NoError(t, err)
|
||||
require.Len(t, resp.Items, 4)
|
||||
assert.Equal(t, int64(4), resp.TotalCount)
|
||||
|
|
@ -27,13 +27,13 @@ func TestGetTopTracksPaginated(t *testing.T) {
|
|||
assert.Equal(t, "Artist One", resp.Items[0].Artists[0].Name)
|
||||
|
||||
// Test pagination
|
||||
resp, err = store.GetTopTracksPaginated(ctx, db.GetItemsOpts{Limit: 1, Page: 2, Period: db.PeriodAllTime})
|
||||
resp, err = store.GetTopTracksPaginated(ctx, db.GetItemsOpts{Limit: 1, Page: 2, Timeframe: db.Timeframe{Period: db.PeriodAllTime}})
|
||||
require.NoError(t, err)
|
||||
require.Len(t, resp.Items, 1)
|
||||
assert.Equal(t, "Track Two", resp.Items[0].Title)
|
||||
|
||||
// Test page out of range
|
||||
resp, err = store.GetTopTracksPaginated(ctx, db.GetItemsOpts{Limit: 1, Page: 10, Period: db.PeriodAllTime})
|
||||
resp, err = store.GetTopTracksPaginated(ctx, db.GetItemsOpts{Limit: 1, Page: 10, Timeframe: db.Timeframe{Period: db.PeriodAllTime}})
|
||||
require.NoError(t, err)
|
||||
assert.Empty(t, resp.Items)
|
||||
assert.False(t, resp.HasNextPage)
|
||||
|
|
@ -46,7 +46,7 @@ func TestGetTopTracksPaginated(t *testing.T) {
|
|||
assert.Error(t, err)
|
||||
|
||||
// Test specify period
|
||||
resp, err = store.GetTopTracksPaginated(ctx, db.GetItemsOpts{Period: db.PeriodDay})
|
||||
resp, err = store.GetTopTracksPaginated(ctx, db.GetItemsOpts{Timeframe: db.Timeframe{Period: db.PeriodDay}})
|
||||
require.NoError(t, err)
|
||||
require.Len(t, resp.Items, 0) // empty
|
||||
assert.Equal(t, int64(0), resp.TotalCount)
|
||||
|
|
@ -56,20 +56,20 @@ func TestGetTopTracksPaginated(t *testing.T) {
|
|||
require.Len(t, resp.Items, 0) // empty
|
||||
assert.Equal(t, int64(0), resp.TotalCount)
|
||||
|
||||
resp, err = store.GetTopTracksPaginated(ctx, db.GetItemsOpts{Period: db.PeriodWeek})
|
||||
resp, err = store.GetTopTracksPaginated(ctx, db.GetItemsOpts{Timeframe: db.Timeframe{Period: db.PeriodWeek}})
|
||||
require.NoError(t, err)
|
||||
require.Len(t, resp.Items, 1)
|
||||
assert.Equal(t, int64(1), resp.TotalCount)
|
||||
assert.Equal(t, "Track Four", resp.Items[0].Title)
|
||||
|
||||
resp, err = store.GetTopTracksPaginated(ctx, db.GetItemsOpts{Period: db.PeriodMonth})
|
||||
resp, err = store.GetTopTracksPaginated(ctx, db.GetItemsOpts{Timeframe: db.Timeframe{Period: db.PeriodMonth}})
|
||||
require.NoError(t, err)
|
||||
require.Len(t, resp.Items, 2)
|
||||
assert.Equal(t, int64(2), resp.TotalCount)
|
||||
assert.Equal(t, "Track Three", resp.Items[0].Title)
|
||||
assert.Equal(t, "Track Four", resp.Items[1].Title)
|
||||
|
||||
resp, err = store.GetTopTracksPaginated(ctx, db.GetItemsOpts{Period: db.PeriodYear})
|
||||
resp, err = store.GetTopTracksPaginated(ctx, db.GetItemsOpts{Timeframe: db.Timeframe{Period: db.PeriodYear}})
|
||||
require.NoError(t, err)
|
||||
require.Len(t, resp.Items, 3)
|
||||
assert.Equal(t, int64(3), resp.TotalCount)
|
||||
|
|
@ -78,19 +78,19 @@ func TestGetTopTracksPaginated(t *testing.T) {
|
|||
assert.Equal(t, "Track Four", resp.Items[2].Title)
|
||||
|
||||
// Test filter by artists and releases
|
||||
resp, err = store.GetTopTracksPaginated(ctx, db.GetItemsOpts{Period: db.PeriodAllTime, ArtistID: 1})
|
||||
resp, err = store.GetTopTracksPaginated(ctx, db.GetItemsOpts{Timeframe: db.Timeframe{Period: db.PeriodAllTime}, ArtistID: 1})
|
||||
require.NoError(t, err)
|
||||
require.Len(t, resp.Items, 1)
|
||||
assert.Equal(t, int64(1), resp.TotalCount)
|
||||
assert.Equal(t, "Track One", resp.Items[0].Title)
|
||||
|
||||
resp, err = store.GetTopTracksPaginated(ctx, db.GetItemsOpts{Period: db.PeriodAllTime, AlbumID: 2})
|
||||
resp, err = store.GetTopTracksPaginated(ctx, db.GetItemsOpts{Timeframe: db.Timeframe{Period: db.PeriodAllTime}, AlbumID: 2})
|
||||
require.NoError(t, err)
|
||||
require.Len(t, resp.Items, 1)
|
||||
assert.Equal(t, int64(1), resp.TotalCount)
|
||||
assert.Equal(t, "Track Two", resp.Items[0].Title)
|
||||
// when both artistID and albumID are specified, artist id is ignored
|
||||
resp, err = store.GetTopTracksPaginated(ctx, db.GetItemsOpts{Period: db.PeriodAllTime, AlbumID: 2, ArtistID: 1})
|
||||
resp, err = store.GetTopTracksPaginated(ctx, db.GetItemsOpts{Timeframe: db.Timeframe{Period: db.PeriodAllTime}, AlbumID: 2, ArtistID: 1})
|
||||
require.NoError(t, err)
|
||||
require.Len(t, resp.Items, 1)
|
||||
assert.Equal(t, int64(1), resp.TotalCount)
|
||||
|
|
@ -100,19 +100,15 @@ func TestGetTopTracksPaginated(t *testing.T) {
|
|||
|
||||
testDataAbsoluteListenTimes(t)
|
||||
|
||||
resp, err = store.GetTopTracksPaginated(ctx, db.GetItemsOpts{Year: 2023})
|
||||
resp, err = store.GetTopTracksPaginated(ctx, db.GetItemsOpts{Timeframe: db.Timeframe{Year: 2023}})
|
||||
require.NoError(t, err)
|
||||
require.Len(t, resp.Items, 1)
|
||||
assert.Equal(t, int64(1), resp.TotalCount)
|
||||
assert.Equal(t, "Track One", resp.Items[0].Title)
|
||||
|
||||
resp, err = store.GetTopTracksPaginated(ctx, db.GetItemsOpts{Month: 6, Year: 2024})
|
||||
resp, err = store.GetTopTracksPaginated(ctx, db.GetItemsOpts{Timeframe: db.Timeframe{Month: 6, Year: 2024}})
|
||||
require.NoError(t, err)
|
||||
require.Len(t, resp.Items, 1)
|
||||
assert.Equal(t, int64(1), resp.TotalCount)
|
||||
assert.Equal(t, "Track Two", resp.Items[0].Title)
|
||||
|
||||
// invalid, year required with month
|
||||
_, err = store.GetTopTracksPaginated(ctx, db.GetItemsOpts{Month: 10})
|
||||
require.Error(t, err)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue