- package core
-
- import (
- "fmt"
- "testing"
-
- "github.com/stretchr/testify/assert"
- )
-
- func TestPaginationPage(t *testing.T) {
- cases := []struct {
- totalCount int
- perPage int
- page int
- newPage int
- expErr bool
- }{
- {0, 10, 1, 1, false},
-
- {0, 10, 0, 1, false},
- {0, 10, 1, 1, false},
- {0, 10, 2, 0, true},
-
- {5, 10, -1, 0, true},
- {5, 10, 0, 1, false},
- {5, 10, 1, 1, false},
- {5, 10, 2, 0, true},
- {5, 10, 2, 0, true},
-
- {5, 5, 1, 1, false},
- {5, 5, 2, 0, true},
- {5, 5, 3, 0, true},
-
- {5, 3, 2, 2, false},
- {5, 3, 3, 0, true},
-
- {5, 2, 2, 2, false},
- {5, 2, 3, 3, false},
- {5, 2, 4, 0, true},
- }
-
- for _, c := range cases {
- p, err := validatePage(&c.page, c.perPage, c.totalCount)
- if c.expErr {
- assert.Error(t, err)
- continue
- }
-
- assert.Equal(t, c.newPage, p, fmt.Sprintf("%v", c))
- }
-
- // nil case
- p, err := validatePage(nil, 1, 1)
- if assert.NoError(t, err) {
- assert.Equal(t, 1, p)
- }
- }
-
- func TestPaginationPerPage(t *testing.T) {
- cases := []struct {
- perPage int
- newPerPage int
- }{
- {0, defaultPerPage},
- {1, 1},
- {2, 2},
- {defaultPerPage, defaultPerPage},
- {maxPerPage - 1, maxPerPage - 1},
- {maxPerPage, maxPerPage},
- {maxPerPage + 1, maxPerPage},
- }
-
- for _, c := range cases {
- p := validatePerPage(&c.perPage)
- assert.Equal(t, c.newPerPage, p, fmt.Sprintf("%v", c))
- }
-
- // nil case
- p := validatePerPage(nil)
- assert.Equal(t, defaultPerPage, p)
-
- // test in unsafe mode
- env.Config.Unsafe = true
- perPage := 1000
- p = validatePerPage(&perPage)
- assert.Equal(t, perPage, p)
- env.Config.Unsafe = false
- }
|