diff --git a/conntrackt/tests/test_tags.py b/conntrackt/tests/test_tags.py --- a/conntrackt/tests/test_tags.py +++ b/conntrackt/tests/test_tags.py @@ -247,3 +247,75 @@ class CurrentUrlEqualsTest(TestCase): context = Context({'request': request}) self.assertEqual(current_url_equals(context, 'project', pk=1), True) + + +class ActiveLinkTest(TestCase): + + def get_context_for_view(self, view, *args, **kwargs): + """ + Returns a Context instance where the request path has been + constructed using the passed-in view (or view name), and view + positional/keyword arguments. + + Arguments: + + view + View function or name for request object. + + args + Positional arguments to pass into the view. + + kwargs + Keyword arguments to pass into the view. + + Returns: + + django.template.Context instance with request. + """ + request = create_get_request(reverse(view, args=args, kwargs=kwargs)) + context = Context({'request': request}) + + return context + + def test_empty_string_returned_on_view_without_arguments_and_no_match(self): + + context = self.get_context_for_view('index') + + self.assertEqual(active_link(context, 'project_create'), '') + + def test_default_value_returned_on_view_without_arguments_and_match(self): + + context = self.get_context_for_view('index') + + self.assertEqual(active_link(context, 'index'), 'active') + + def test_empty_string_returned_on_view_with_positional_arguments_and_no_match(self): + + context = self.get_context_for_view('project', 1) + + self.assertEqual(active_link(context, 'project', 'active', 2), '') + + def test_value_returned_on_view_with_positional_arguments_and_match(self): + + context = self.get_context_for_view('project', 1) + + self.assertEqual(active_link(context, 'project', 'active', 1), 'active') + + def test_empty_string_returned_on_view_with_keyword_arguments_and_no_match(self): + + context = self.get_context_for_view('project', 1) + + self.assertEqual(active_link(context, 'project', pk=2), '') + + def test_default_value_returned_on_view_with_keyword_arguments_and_match(self): + + context = self.get_context_for_view('project', 1) + + self.assertEqual(active_link(context, 'project', pk=1), 'active') + + def test_provided_value_returned_on_view_with_matching_url(self): + + context = self.get_context_for_view('project', 1) + + self.assertEqual(active_link(context, 'project', 'myvalue', 1), 'myvalue') + self.assertEqual(active_link(context, 'project', 'myvalue', pk=1), 'myvalue')