Example #1
0
 def setUp(self):
     """Setup the URLPopularityViewTest TestCase"""
     self.view = URLPopularityView()
Example #2
0
 def setUp(self):
     """Setup the URLPopularityViewTest TestCase"""
     self.view = URLPopularityView()
Example #3
0
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'], '')
Example #4
0
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'], '')