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 @@ -30,10 +30,14 @@ import mock # Django imports. from django.template import Context, Template, TemplateSyntaxError from django.test import TestCase +from django.urls import reverse # Application imports from conntrackt.templatetags.conntrackt_tags import html_link, active_link, current_url_equals +# Test imports. +from .helpers import create_get_request + @mock.patch('conntrackt.templatetags.conntrackt_tags.urls.reverse') class HtmlLinkTest(TestCase): @@ -187,3 +191,59 @@ class HtmlLinkTest(TestCase): ) self.assertEqual(link, 'My </a> link') + + +class CurrentUrlEqualsTest(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_non_matching_url_returns_false(self): + request = create_get_request("/this/url/does/not/exist") + context = Context({'request': request}) + + self.assertEqual(current_url_equals(context, 'index'), False) + + def test_matching_url_returns_true(self): + context = self.get_context_for_view('project_create') + + self.assertEqual(current_url_equals(context, 'project_create'), True) + + def test_matching_url_with_different_args_returns_false(self): + context = self.get_context_for_view('project', 1) + + self.assertEqual(current_url_equals(context, 'project', 2), False) + + def test_matching_url_with_different_kwargs_returns_false(self): + context = self.get_context_for_view('project', pk=1) + + self.assertEqual(current_url_equals(context, 'project', pk=2), False) + + def test_matching_url_with_GET_parameters_returns_true(self): + request = create_get_request(reverse('project', kwargs={'pk': 1}) + '?my_get_param=10') + context = Context({'request': request}) + + self.assertEqual(current_url_equals(context, 'project', pk=1), True)