diff --git a/pkg/page/pager.go b/pkg/page/pager.go index 050da74..85f530f 100644 --- a/pkg/page/pager.go +++ b/pkg/page/pager.go @@ -34,6 +34,7 @@ type Pager struct { func NewPager(ctx echo.Context, itemsPerPage int) Pager { p := Pager{ ItemsPerPage: itemsPerPage, + Pages: 1, Page: 1, } @@ -53,7 +54,12 @@ func NewPager(ctx echo.Context, itemsPerPage int) Pager { // This should be used rather than setting either items or pages directly. func (p *Pager) SetItems(items int) { p.Items = items - p.Pages = int(math.Ceil(float64(items) / float64(p.ItemsPerPage))) + + if items > 0 { + p.Pages = int(math.Ceil(float64(items) / float64(p.ItemsPerPage))) + } else { + p.Pages = 1 + } if p.Page > p.Pages { p.Page = p.Pages diff --git a/pkg/page/pager_test.go b/pkg/page/pager_test.go index b8aaaea..bfb5880 100644 --- a/pkg/page/pager_test.go +++ b/pkg/page/pager_test.go @@ -17,7 +17,7 @@ func TestNewPager(t *testing.T) { assert.Equal(t, 10, pgr.ItemsPerPage) assert.Equal(t, 1, pgr.Page) assert.Equal(t, 0, pgr.Items) - assert.Equal(t, 0, pgr.Pages) + assert.Equal(t, 1, pgr.Pages) ctx, _ = tests.NewContext(e, fmt.Sprintf("/abc?%s=%d", PageQueryKey, 2)) pgr = NewPager(ctx, 10) @@ -34,6 +34,11 @@ func TestPager_SetItems(t *testing.T) { pgr.SetItems(100) assert.Equal(t, 100, pgr.Items) assert.Equal(t, 5, pgr.Pages) + + pgr.SetItems(0) + assert.Equal(t, 0, pgr.Items) + assert.Equal(t, 1, pgr.Pages) + assert.Equal(t, 1, pgr.Page) } func TestPager_IsBeginning(t *testing.T) {