diff --git a/coldfront/core/utils/templatetags/common_tags.py b/coldfront/core/utils/templatetags/common_tags.py index 9a42d42013..429af6e41a 100644 --- a/coldfront/core/utils/templatetags/common_tags.py +++ b/coldfront/core/utils/templatetags/common_tags.py @@ -33,7 +33,7 @@ def get_icon(expand_accordion): @register.filter def convert_boolean_to_icon(boolean): - if boolean == False: + if boolean is False: return mark_safe( '' ) @@ -83,7 +83,7 @@ def get_value_by_index(array, index): @register.simple_tag -def navbar_active_item(menu_item, request): +def navbar_active_item(menu_item, request=None): view_map = { "center-summary": ["center-summary"], "home": ["home"], @@ -107,7 +107,10 @@ def navbar_active_item(menu_item, request): "grant-report", ], } - view_name = request.resolver_match.view_name + resolver_match = getattr(request, "resolver_match", None) + view_name = getattr(resolver_match, "view_name", None) + if view_name is None: + return "" if menu_item in view_map: if view_name in view_map[menu_item]: diff --git a/coldfront/core/utils/tests/tests.py b/coldfront/core/utils/tests/tests.py index a39b155ac3..7f349749d0 100644 --- a/coldfront/core/utils/tests/tests.py +++ b/coldfront/core/utils/tests/tests.py @@ -1 +1,21 @@ -# Create your tests here. +from django.template import Context, Template +from django.test import RequestFactory, SimpleTestCase +from django.urls import resolve + + +class NavbarActiveItemTests(SimpleTestCase): + def test_missing_request_context_returns_empty_string(self): + template = Template("{% load common_tags %}{% navbar_active_item 'home' request %}") + + rendered = template.render(Context({})) + + self.assertEqual(rendered, "") + + def test_matching_view_returns_active(self): + template = Template("{% load common_tags %}{% navbar_active_item 'home' request %}") + request = RequestFactory().get("/") + request.resolver_match = resolve("/") + + rendered = template.render(Context({"request": request})) + + self.assertEqual(rendered, "active")