def test_has_functions(self):
     paginator = SqlPaginator(self.artist_sql, Artist, page=6,
                              order_by='name', per_page=3)
     artists = paginator.page(6)
     self.assertTrue(len(artists) > 0)
     self.assertTrue(artists.has_next())
     self.assertTrue(artists.has_previous())
    def test_zero_count(self):
        ''' what happens when the sql creates 0 rows (count=0) '''

        sql = "%s WHERE albumid < 0" % self.album_sql
        paginator = SqlPaginator(sql, Album, page=1,
                                 order_by='albumid', direction='desc')

        self.assertEqual(len([a.albumid for a in paginator.page(1)]), 0)
    def test_albums(self):
        page = 1
        paginator = SqlPaginator(self.album_sql, Album,
                                 page=page, order_by='title')

        albums = paginator.page(page)
        self.assertTrue(len(albums) > 0)

        # last page
        albums = paginator.page(paginator.num_pages)
        self.assertTrue(len(albums) > 0)
    def test_sql_query(self):
        ''' test sql query created has the appropriate pagination clauses '''

        sql = "SELECT DISTINCT(auth_user.id) FROM auth_user WHERE (DATE_PART('YEAR',AGE(auth_user.dob)) > 10)"
        sql_paginator = SqlPaginator(sql, User)
        self.assertTrue('limit' in sql_paginator.sql)
        self.assertTrue('order' in sql_paginator.sql)
    def test_invalid_number(self):
        self.assertRaises(ValueError, SqlPaginator, self.album_sql, Album,
                                 page="one", order_by='albumid')

        paginator = SqlPaginator(self.album_sql, Album, page=1,
                                 order_by='albumid', direction='descending')

        self.assertRaises(PageNotAnInteger, paginator.page, 'one')
        self.assertRaises(EmptyPage, paginator.page, paginator.num_pages + 1)
        self.assertRaises(EmptyPage, paginator.page, -1)
    def test_order_by_direction(self):
        page = 1
        paginator = SqlPaginator(self.album_sql, Album,
                                 page=page, order_by='albumid')

        albums = [a.albumid for a in paginator.page(page)]
        self.assertTrue(len(albums) > 0)
        self.assertEqual(albums, range(1, 11))

        paginator = SqlPaginator(self.album_sql, Album, page=page,
                                 order_by='albumid', direction='desc')

        albums = [a.albumid for a in paginator.page(page)]
        self.assertEqual(albums, list(reversed(range(338, 348))))
 def test_get_page_range(self):
     page = 1
     paginator = SqlPaginator(self.album_sql, Album,
                              page=page, order_by='albumid')
     self.assertEqual(len(paginator.page_range), paginator.num_pages)
 def test_order_by(self):
     paginator = SqlPaginator(self.artist_sql, Artist,
                              page=6, order_by='artistid')
     artists = paginator.page(6)
     self.assertEqual([a.artistid for a in artists.object_list][0], 51)
 def test_returns_objects(self):
     sql_paginator = SqlPaginator(self.artist_sql, Artist,
                                  page=1, order_by='artistid')
     artists = sql_paginator.page(1)
     self.assertTrue(len(artists) > 0)