Skip to content

Commit 61239e8

Browse files
author
Evan Borgstrom
committed
More test coverage
1 parent 70526ad commit 61239e8

File tree

1 file changed

+54
-6
lines changed

1 file changed

+54
-6
lines changed

menu/tests/test_menu.py

Lines changed: 54 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,28 @@
99

1010
class MenuTests(TestCase):
1111
def setUp(self):
12+
# allow the title of kids3-2 to be changed
13+
self.kids3_2_desired_title = None
14+
def kids3_2_title(request):
15+
if self.kids3_2_desired_title is not None:
16+
return "-".join([request.path, self.kids3_2_desired_title])
17+
return 'kids3-2'
18+
19+
# hide kids2-2 whenever the request path ends with /hidden
20+
def kids2_2_check(request):
21+
if request.path.endswith('/hidden'):
22+
return False
23+
return True
24+
1225
kids2 = [
1326
MenuItem("kids2-1", "/parent2/kids2-1", weight=999),
14-
MenuItem("kids2-2", "/kids2-2")
27+
MenuItem("kids2-2", "/kids2-2", check=kids2_2_check)
1528
]
1629
kids3 = [
1730
MenuItem("kids3-1", "/parent3/kids3-1", children=[
18-
MenuItem("kids3-1-1", "/parent3/kids3-1/kid1")
31+
MenuItem("kids3-1-1", "/parent3/kids3-1/kid1", exact_url=True)
1932
]),
20-
MenuItem("kids3-2", "/parent3/kids3-2")
33+
MenuItem(kids3_2_title, "/parent3/kids3-2")
2134
]
2235

2336
Menu.items = {}
@@ -29,6 +42,41 @@ def setUp(self):
2942

3043
self.factory = RequestFactory()
3144

45+
def test_exact_url(self):
46+
"""
47+
Ensure that the exact_url setting works
48+
"""
49+
# the extra stuff will still cause kids3-2 to be selected
50+
request = self.factory.get('/parent3/kids3-2/extra_stuff_here')
51+
Menu.process(request, 'test')
52+
self.assertEqual(Menu.items['test'][1].children[1].selected, True)
53+
54+
# but here it won't, because exact_url is set
55+
request = self.factory.get('/parent3/kids3-1/kid1/extra_stuff_here')
56+
Menu.process(request, 'test')
57+
self.assertEqual(Menu.items['test'][1].children[0].children[0].selected, False)
58+
59+
def test_callable_title(self):
60+
"""
61+
Ensure callable titles work
62+
"""
63+
self.kids3_2_desired_title = "fun"
64+
request = self.factory.get('/parent3')
65+
Menu.process(request, 'test')
66+
self.assertEqual(Menu.items['test'][1].children[1].title, "/parent3-fun")
67+
68+
def test_checks(self):
69+
"""
70+
Ensure checks on menus work
71+
"""
72+
request = self.factory.get('/kids2-2/visible')
73+
Menu.process(request, 'test')
74+
self.assertEqual(len(Menu.items['test'][0].children), 2)
75+
76+
request = self.factory.get('/kids2-2/hidden')
77+
Menu.process(request, 'test')
78+
self.assertEqual(len(Menu.items['test'][0].children), 1)
79+
3280
def test_select_parents(self):
3381
"""
3482
Ensure the MENU_SELECT_PARENTS setting works
@@ -37,21 +85,21 @@ def test_select_parents(self):
3785
request = self.factory.get('/parent2/kids2-1')
3886
Menu.process(request, 'test')
3987
self.assertEqual(Menu.items['test'][0].selected, True)
40-
self.assertEqual(Menu.items['test'][1].selected, False)
4188
self.assertEqual(Menu.items['test'][0].children[1].selected, True)
89+
self.assertEqual(Menu.items['test'][1].selected, False)
4290

4391
request = self.factory.get('/kids2-2')
4492
Menu.process(request, 'test')
4593
self.assertEqual(Menu.items['test'][0].selected, False)
46-
self.assertEqual(Menu.items['test'][1].selected, False)
4794
self.assertEqual(Menu.items['test'][0].children[0].selected, True)
95+
self.assertEqual(Menu.items['test'][1].selected, False)
4896

4997
settings.MENU_SELECT_PARENTS = True
5098
request = self.factory.get('/kids2-2')
5199
Menu.process(request, 'test')
52100
self.assertEqual(Menu.items['test'][0].selected, True)
53-
self.assertEqual(Menu.items['test'][1].selected, False)
54101
self.assertEqual(Menu.items['test'][0].children[0].selected, True)
102+
self.assertEqual(Menu.items['test'][1].selected, False)
55103

56104
request = self.factory.get('/parent3/kids3-1/kid1')
57105
Menu.process(request, 'test')

0 commit comments

Comments
 (0)