pkg/paginator/paginator_test.go

69 lines
1.6 KiB
Go

package paginator
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestCut(t *testing.T) {
items := []int{1, 2, 3}
page := 2
limit := 1
pageCount := 1
pag := New(items, page, limit, pageCount)
t.Logf("pag: %s", pag)
}
func TestNilItems(t *testing.T) {
pag := New[int](nil, 1, 10, 0)
assert.Equal(t, 0, pag.TotalCount())
assert.Equal(t, 0, pag.TotalPage())
assert.Empty(t, pag.Items())
assert.Equal(t, 0, pag.CurPage())
assert.Equal(t, 0, pag.PreviewPage())
assert.Equal(t, 0, pag.NextPage())
assert.Equal(t, 0, pag.FirstPage())
assert.Equal(t, 0, pag.LastPage())
assert.Empty(t, pag.PageRange())
}
func TestEmptyItems(t *testing.T) {
pag := New([]int{}, 1, 10, 0)
assert.Equal(t, 0, pag.TotalCount())
assert.Equal(t, 0, pag.TotalPage())
assert.Empty(t, pag.Items())
assert.Equal(t, 0, pag.CurPage())
assert.Equal(t, 0, pag.PreviewPage())
assert.Equal(t, 0, pag.NextPage())
assert.Equal(t, 0, pag.FirstPage())
assert.Equal(t, 0, pag.LastPage())
assert.Empty(t, pag.PageRange())
}
func TestNilItemsWithDifferentPages(t *testing.T) {
tests := []struct {
name string
page int
limit int
pageCount int
}{
{name: "page=0,limit=1", page: 0, limit: 1, pageCount: 0},
{name: "page=1,limit=1", page: 1, limit: 1, pageCount: 0},
{name: "page=5,limit=10", page: 5, limit: 10, pageCount: 0},
{name: "page=1,limit=1,pageCount=3", page: 1, limit: 1, pageCount: 3},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
pag := New[string](nil, tt.page, tt.limit, tt.pageCount)
assert.Equal(t, 0, pag.TotalCount())
assert.Equal(t, 0, pag.TotalPage())
assert.Empty(t, pag.Items())
})
}
}