github.com/solongordon/pop@v4.10.0+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 transaction(func(tx *Connection) { 47 a := require.New(t) 48 49 for _, name := range []string{"Mark", "Joe", "Jane"} { 50 user := User{Name: nulls.NewString(name)} 51 err := tx.Create(&user) 52 a.NoError(err) 53 } 54 55 u := Users{} 56 q := tx.Paginate(1, 2) 57 err := q.All(&u) 58 a.NoError(err) 59 a.Equal(len(u), 2) 60 61 p := q.Paginator 62 a.Equal(p.CurrentEntriesSize, 2) 63 a.Equal(p.TotalEntriesSize, 3) 64 a.Equal(p.TotalPages, 2) 65 66 u = Users{} 67 err = tx.Where("name = 'Mark'").All(&u) 68 a.NoError(err) 69 a.Equal(reflect.ValueOf(&u).Elem().Len(), 1) 70 }) 71 }