78 lines
1.7 KiB
Go
78 lines
1.7 KiB
Go
package pagination
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
func TestDefaultPagination(t *testing.T) {
|
|
p := DefaultPagination()
|
|
if p.Page != 1 {
|
|
t.Errorf("expected default page 1, got %d", p.Page)
|
|
}
|
|
if p.PageSize != 20 {
|
|
t.Errorf("expected default page_size 20, got %d", p.PageSize)
|
|
}
|
|
}
|
|
|
|
func TestPaginationParams_Offset(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
page int
|
|
pageSize int
|
|
wantOffset int
|
|
}{
|
|
{"page 1", 1, 20, 0},
|
|
{"page 2", 2, 20, 20},
|
|
{"page 5", 5, 20, 80},
|
|
{"zero page", 0, 20, 0},
|
|
{"negative page", -1, 20, 0},
|
|
{"page 1 size 10", 1, 10, 0},
|
|
{"page 3 size 10", 3, 10, 20},
|
|
}
|
|
|
|
for _, tc := range tests {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
p := PaginationParams{Page: tc.page, PageSize: tc.pageSize}
|
|
if got := p.Offset(); got != tc.wantOffset {
|
|
t.Errorf("expected offset %d, got %d", tc.wantOffset, got)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestPaginationParams_Limit(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
pageSize int
|
|
want int
|
|
}{
|
|
{"default", 20, 20},
|
|
{"size 10", 10, 10},
|
|
{"size 50", 50, 50},
|
|
{"size 100", 100, 100},
|
|
{"max cap", 101, 100},
|
|
{"zero size", 0, 20},
|
|
{"negative size", -1, 20},
|
|
{"size 1", 1, 1},
|
|
}
|
|
|
|
for _, tc := range tests {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
p := PaginationParams{PageSize: tc.pageSize}
|
|
if got := p.Limit(); got != tc.want {
|
|
t.Errorf("expected limit %d, got %d", tc.want, got)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestPaginationParams_OffsetAndLimit(t *testing.T) {
|
|
p := PaginationParams{Page: 3, PageSize: 15}
|
|
if got := p.Offset(); got != 30 {
|
|
t.Errorf("expected offset 30, got %d", got)
|
|
}
|
|
if got := p.Limit(); got != 15 {
|
|
t.Errorf("expected limit 15, got %d", got)
|
|
}
|
|
}
|