from werkzeug.exceptions import BadRequest from redash.handlers.base import paginate from unittest import TestCase from mock import MagicMock class DummyResults(object): items = [i for i in range(25)] dummy_results = DummyResults() class TestPaginate(TestCase): def setUp(self): self.query_set = MagicMock() self.query_set.count = MagicMock(return_value=102) self.query_set.paginate = MagicMock(return_value=dummy_results) def test_returns_paginated_results(self): page = paginate(self.query_set, 1, 25, lambda x: x) self.assertEqual(page["page"], 1) self.assertEqual(page["page_size"], 25) self.assertEqual(page["count"], 102) self.assertEqual(page["results"], dummy_results.items) def test_raises_error_for_bad_page(self): self.assertRaises( BadRequest, lambda: paginate(self.query_set, -1, 25, lambda x: x) ) self.assertRaises( BadRequest, lambda: paginate(self.query_set, 6, 25, lambda x: x) ) def test_raises_error_for_bad_page_size(self): self.assertRaises( BadRequest, lambda: paginate(self.query_set, 1, 251, lambda x: x) ) self.assertRaises( BadRequest, lambda: paginate(self.query_set, 1, -1, lambda x: x) )