def setUp(self): """Setup the URLPopularityViewTest TestCase""" self.view = URLPopularityView()
class URLPopularityViewTest(ConnectMessageTestCase): """Tests for URLPopularityView.""" def setUp(self): """Setup the URLPopularityViewTest TestCase""" self.view = URLPopularityView() def test_order_by_accepts_valid_values(self): """order_by in query params should sort by valid values.""" for value in ['message_count', 'url', 'short_code', 'created_at']: request = self.request_factory.get('/?order_by=%s' % value) self.view.request = request result = self.view.get_queryset() self.assertEqual(result.query.order_by, ['-%s' % value]) def test_order_by_defaults_to_click_count(self): """if there is no order_by in query, default to click_count.""" request = self.request_factory.get('/') self.view.request = request result = self.view.get_queryset() self.assertEqual(result.query.order_by, ['-click_count']) def test_order_by_is_click_count_if_value_is_invalid(self): """if order_by isn't a valid value, order by click_count.""" request = self.request_factory.get('/?order_by=invalid') self.view.request = request result = self.view.get_queryset() self.assertEqual(result.query.order_by, ['-click_count']) def test_order_is_asc(self): """if order is asc, queryset should be sorted ascending.""" request = self.request_factory.get('/?sort=asc') self.view.request = request result = self.view.get_queryset() self.assertEqual(result.query.order_by, ['click_count']) def test_order_is_desc(self): """if order is desc, queryset should be sorted descending.""" request = self.request_factory.get('/?sort=desc') self.view.request = request result = self.view.get_queryset() self.assertEqual(result.query.order_by, ['-click_count']) def test_order_is_other(self): """if order is invalid, default to descending.""" request = self.request_factory.get('/?sort=cows!') self.view.request = request result = self.view.get_queryset() self.assertEqual(result.query.order_by, ['-click_count']) def test_get_context_data_query_string_removes_order_and_order_by(self): """order and order_by keys should be removed from query string.""" request = self.request_factory.get('/?sort=desc&order_by=url') self.view.request = request self.view.kwargs = {} result = self.view.get_context_data( object_list=ShortenedURL.objects.all()) self.assertEqual(result['query_string'], '') def test_get_context_data_query_string_has_other_values(self): """ querystring in context should have any values that aren't filtered """ request = self.request_factory.get('/?sort=desc&order_by=url&cow=moo') self.view.request = request self.view.kwargs = {} result = self.view.get_context_data( object_list=ShortenedURL.objects.all()) self.assertEqual(result['query_string'], 'cow=moo') def test_get_context_data_query_string_is_empty(self): """ query_string in context should be empty if there's no query string """ request = self.request_factory.get('/') self.view.request = request self.view.kwargs = {} result = self.view.get_context_data( object_list=ShortenedURL.objects.all()) self.assertEqual(result['query_string'], '')