Browse Source

api: fix wrong pageCount in /list endpoints (#1813) (#1824)

pull/1829/head
Alessandro Ros 3 years ago committed by GitHub
parent
commit
67672ea9c6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 5
      internal/core/api.go
  2. 32
      internal/core/api_test.go

5
internal/core/api.go

@ -84,7 +84,10 @@ func paginate2(itemsPtr interface{}, itemsPerPage int, page int) int {
return 0 return 0
} }
pageCount := (itemsLen / itemsPerPage) + 1 pageCount := (itemsLen / itemsPerPage)
if (itemsLen % itemsPerPage) != 0 {
pageCount++
}
min := page * itemsPerPage min := page * itemsPerPage
if min >= itemsLen { if min >= itemsLen {

32
internal/core/api_test.go

@ -78,6 +78,38 @@ func httpRequest(method string, ur string, in interface{}, out interface{}) erro
return json.NewDecoder(res.Body).Decode(out) return json.NewDecoder(res.Body).Decode(out)
} }
func TestPagination(t *testing.T) {
items := make([]int, 5)
for i := 0; i < 5; i++ {
items[i] = i
}
pageCount, err := paginate(&items, "1", "1")
require.NoError(t, err)
require.Equal(t, 5, pageCount)
require.Equal(t, []int{1}, items)
items = make([]int, 5)
for i := 0; i < 5; i++ {
items[i] = i
}
pageCount, err = paginate(&items, "3", "2")
require.NoError(t, err)
require.Equal(t, 2, pageCount)
require.Equal(t, []int{4}, items)
items = make([]int, 6)
for i := 0; i < 6; i++ {
items[i] = i
}
pageCount, err = paginate(&items, "3", "3")
require.NoError(t, err)
require.Equal(t, 2, pageCount)
require.Equal(t, []int{5}, items)
}
func TestAPIConfigGet(t *testing.T) { func TestAPIConfigGet(t *testing.T) {
// since the HTTP server is created and deleted multiple times, // since the HTTP server is created and deleted multiple times,
// we can't reuse TCP connections. // we can't reuse TCP connections.

Loading…
Cancel
Save