github.com/royge/pop@v4.13.1+incompatible/pagination_test.go (about) 1 package pop 2 3 import ( 4 "net/url" 5 "reflect" 6 "testing" 7 8 "github.com/gobuffalo/nulls" 9 "github.com/stretchr/testify/require" 10 ) 11 12 func Test_NewPaginator(t *testing.T) { 13 a := require.New(t) 14 15 p := NewPaginator(1, 10) 16 a.Equal(p.Offset, 0) 17 18 p = NewPaginator(2, 10) 19 a.Equal(p.Offset, 10) 20 21 p = NewPaginator(2, 30) 22 a.Equal(p.Offset, 30) 23 } 24 25 func Test_NewPaginatorFromParams(t *testing.T) { 26 a := require.New(t) 27 28 params := url.Values{} 29 30 p := NewPaginatorFromParams(params) 31 a.Equal(p.Page, 1) 32 a.Equal(p.PerPage, 20) 33 34 params.Set("page", "2") 35 p = NewPaginatorFromParams(params) 36 a.Equal(p.Page, 2) 37 a.Equal(p.PerPage, 20) 38 39 params.Set("per_page", "30") 40 p = NewPaginatorFromParams(params) 41 a.Equal(p.Page, 2) 42 a.Equal(p.PerPage, 30) 43 } 44 45 func Test_Pagination(t *testing.T) { 46 if PDB == nil { 47 t.Skip("skipping integration tests") 48 } 49 transaction(func(tx *Connection) { 50 a := require.New(t) 51 52 for _, name := range []string{"Mark", "Joe", "Jane"} { 53 user := User{Name: nulls.NewString(name)} 54 err := tx.Create(&user) 55 a.NoError(err) 56 } 57 58 u := Users{} 59 q := tx.Paginate(1, 2) 60 err := q.All(&u) 61 a.NoError(err) 62 a.Equal(len(u), 2) 63 64 p := q.Paginator 65 a.Equal(p.CurrentEntriesSize, 2) 66 a.Equal(p.TotalEntriesSize, 3) 67 a.Equal(p.TotalPages, 2) 68 69 u = Users{} 70 err = tx.Where("name = 'Mark'").All(&u) 71 a.NoError(err) 72 a.Equal(reflect.ValueOf(&u).Elem().Len(), 1) 73 }) 74 }