This commit is contained in:
Deluan 2023-05-22 11:59:33 -04:00 • committed by Deluan
commit ea231fe265
8 changed files with 142 additions and 90 deletions

View file

@ -6,6 +6,7 @@ import (
"net/http/httptest"
"net/url"
. "github.com/navidrome/navidrome/utils/gg"
. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
)
@ -34,44 +35,44 @@ var _ = Describe("BuildPaginationLinksAndMeta", func() {
It("returns correct pagination links and meta", func() {
links, meta := buildPaginationLinksAndMeta(totalItems, params, resourceName)
testLinkEquality(links.First, p("api/resource?page[offset]=0&page[limit]=10"))
testLinkEquality(links.Last, p("api/resource?page[offset]=140&page[limit]=10"))
testLinkEquality(links.Next, p("api/resource?page[offset]=10&page[limit]=10"))
testLinkEquality(links.First, P("api/resource?page[offset]=0&page[limit]=10"))
testLinkEquality(links.Last, P("api/resource?page[offset]=140&page[limit]=10"))
testLinkEquality(links.Next, P("api/resource?page[offset]=10&page[limit]=10"))
Expect(links.Prev).To(BeNil())
Expect(meta.CurrentPage).To(Equal(p(int32(1))))
Expect(meta.TotalItems).To(Equal(p(int32(150))))
Expect(meta.TotalPages).To(Equal(p(int32(15))))
Expect(meta.CurrentPage).To(Equal(P(int32(1))))
Expect(meta.TotalItems).To(Equal(P(int32(150))))
Expect(meta.TotalPages).To(Equal(P(int32(15))))
})
})
Context("with custom page limit and offset", func() {
BeforeEach(func() {
params = GetTracksParams{
PageLimit: p((PageLimit)(20)),
PageOffset: p((PageOffset)(40)),
PageLimit: P((PageLimit)(20)),
PageOffset: P((PageOffset)(40)),
}
})
It("returns correct pagination links and meta", func() {
links, meta := buildPaginationLinksAndMeta(totalItems, params, resourceName)
testLinkEquality(links.First, p("api/resource?page[offset]=0&page[limit]=20"))
testLinkEquality(links.Last, p("api/resource?page[offset]=140&page[limit]=20"))
testLinkEquality(links.Next, p("api/resource?page[offset]=60&page[limit]=20"))
testLinkEquality(links.Prev, p("api/resource?page[offset]=20&page[limit]=20"))
testLinkEquality(links.First, P("api/resource?page[offset]=0&page[limit]=20"))
testLinkEquality(links.Last, P("api/resource?page[offset]=140&page[limit]=20"))
testLinkEquality(links.Next, P("api/resource?page[offset]=60&page[limit]=20"))
testLinkEquality(links.Prev, P("api/resource?page[offset]=20&page[limit]=20"))
Expect(meta.CurrentPage).To(Equal(p(int32(3))))
Expect(meta.TotalItems).To(Equal(p(int32(150))))
Expect(meta.TotalPages).To(Equal(p(int32(8))))
Expect(meta.CurrentPage).To(Equal(P(int32(3))))
Expect(meta.TotalItems).To(Equal(P(int32(150))))
Expect(meta.TotalPages).To(Equal(P(int32(8))))
})
})
Context("with various filter params", func() {
BeforeEach(func() {
params = GetTracksParams{
PageLimit: p((PageLimit)(20)),
PageOffset: p((PageOffset)(40)),
PageLimit: P((PageLimit)(20)),
PageOffset: P((PageOffset)(40)),
FilterEquals: &[]string{"property1:value1", "property2:value2"},
FilterContains: &[]string{"property3:value3"},
FilterLessThan: &[]string{"property4:value4"},