From 5d9de292ac4ec1baff8933a8d56822a225bbf9e0 Mon Sep 17 00:00:00 2001 From: Dominik George <nik@naturalnet.de> Date: Mon, 16 Nov 2020 23:01:19 +0100 Subject: [PATCH] Add tests for related_views Move catch-all URL pattern to bottom; it was actually shadowing all other patterns. --- menu_generator/tests/test_menu.py | 46 +++++++++++++++++++++++++++++++ menu_generator/tests/urls.py | 10 +++++-- 2 files changed, 53 insertions(+), 3 deletions(-) diff --git a/menu_generator/tests/test_menu.py b/menu_generator/tests/test_menu.py index c25a89c..6b46fd7 100755 --- a/menu_generator/tests/test_menu.py +++ b/menu_generator/tests/test_menu.py @@ -2,6 +2,7 @@ from django.core.exceptions import ImproperlyConfigured from django.http import HttpRequest from django.test import TestCase +from .urls import testview from .utils import TestUser, is_main_site, is_paid_user from ..menu import MenuBase from ..templatetags.menu_generator import get_menu @@ -306,3 +307,48 @@ class MenuTestCase(TestCase): self.assertEqual(nav[0]["selected"], True) self.assertEqual(nav[0]["submenu"][0]["selected"], True) self.assertEqual(nav[0]["submenu"][1]["selected"], False) + + def test_generate_menu_selected_related_views_simple(self): + self.request.user = TestUser(authenticated=True) + self.request.path = "/known-view/" + self.menu.save_user_state(self.request) + list_dict = [ + { + "name": "parent1", + "url": "/user/account/", + "related_views": [testview], + } + ] + nav = self.menu.generate_menu(list_dict) + + self.assertEqual(len(nav), 1) + self.assertEqual(nav[0]["selected"], True) + + def test_generate_menu_selected_related_views_submenu(self): + self.request.user = TestUser(authenticated=True) + self.request.path = "/known-view/" + self.menu.save_user_state(self.request) + list_dict = [ + { + "name": "parent1", + "url": "/user/account/", + "submenu": [ + { + "name": "child1", + "url": '/user/account/profile/', + "related_views": [testview] + }, + { + "name": "child2", + "url": 'named_url', + "related_views": [] + }, + ], + } + ] + nav = self.menu.generate_menu(list_dict) + + self.assertEqual(len(nav), 1) + self.assertEqual(nav[0]["selected"], True) + self.assertEqual(nav[0]["submenu"][0]["selected"], True) + self.assertEqual(nav[0]["submenu"][1]["selected"], False) diff --git a/menu_generator/tests/urls.py b/menu_generator/tests/urls.py index fb9c4f1..1ddb11b 100755 --- a/menu_generator/tests/urls.py +++ b/menu_generator/tests/urls.py @@ -1,7 +1,11 @@ from django.conf.urls import url +def testview(request): + return 'foo' + urlpatterns = [ - url('', lambda: 'foo'), - url('named-url', lambda: 'foo', name='named_url'), - url('named-with-params/(?P<pk>\d+)/', lambda: 'foo', name='named_with_params') + url(r'named-url', lambda: 'foo', name='named_url'), + url(r'named-with-params/(?P<pk>\d+)/', lambda: 'foo', name='named_with_params'), + url(r'known-view', testview, name='known_view'), + url(r'', lambda: 'foo'), ] -- GitLab