10
10
class MenuTests (TestCase ):
11
11
def setUp (self ):
12
12
kids2 = [
13
- MenuItem ("kids2-1" , "/parent2/kids2-1" ),
13
+ MenuItem ("kids2-1" , "/parent2/kids2-1" , weight = 999 ),
14
14
MenuItem ("kids2-2" , "/kids2-2" )
15
15
]
16
16
kids3 = [
17
17
MenuItem ("kids3-1" , "/parent3/kids3-1" , children = [
18
18
MenuItem ("kids3-1-1" , "/parent3/kids3-1/kid1" )
19
- ])
19
+ ]),
20
+ MenuItem ("kids3-2" , "/parent3/kids3-2" )
20
21
]
21
22
22
23
Menu .items = {}
23
24
Menu .sorted = {}
24
25
Menu .loaded = False
25
- Menu .add_item ("test" , MenuItem ("Parent 1" , "/parent1" ))
26
+ Menu .add_item ("test" , MenuItem ("Parent 1" , "/parent1" , weight = 999 ))
26
27
Menu .add_item ("test" , MenuItem ("Parent 2" , "/parent2" , children = kids2 ))
27
28
Menu .add_item ("test" , MenuItem ("Parent 3" , "/parent3" , children = kids3 ))
28
29
@@ -32,54 +33,58 @@ def test_select_parents(self):
32
33
"""
33
34
Ensure the MENU_SELECT_PARENTS setting works
34
35
"""
36
+ settings .MENU_SELECT_PARENTS = False
35
37
request = self .factory .get ('/parent2/kids2-1' )
36
38
Menu .process (request , 'test' )
37
- self .assertEqual (Menu .items ['test' ][1 ].selected , True )
38
- self .assertEqual (Menu .items ['test' ][2 ].selected , False )
39
- self .assertEqual (Menu .items ['test' ][1 ].children [0 ].selected , True )
39
+ self .assertEqual (Menu .items ['test' ][0 ].selected , True )
40
+ self .assertEqual (Menu .items ['test' ][1 ].selected , False )
41
+ self .assertEqual (Menu .items ['test' ][0 ].children [1 ].selected , True )
40
42
41
43
request = self .factory .get ('/kids2-2' )
42
44
Menu .process (request , 'test' )
45
+ self .assertEqual (Menu .items ['test' ][0 ].selected , False )
43
46
self .assertEqual (Menu .items ['test' ][1 ].selected , False )
44
- self .assertEqual (Menu .items ['test' ][2 ].selected , False )
45
- self .assertEqual (Menu .items ['test' ][1 ].children [1 ].selected , True )
47
+ self .assertEqual (Menu .items ['test' ][0 ].children [0 ].selected , True )
46
48
47
49
settings .MENU_SELECT_PARENTS = True
48
50
request = self .factory .get ('/kids2-2' )
49
51
Menu .process (request , 'test' )
50
- self .assertEqual (Menu .items ['test' ][1 ].selected , True )
51
- self .assertEqual (Menu .items ['test' ][2 ].selected , False )
52
- self .assertEqual (Menu .items ['test' ][1 ].children [1 ].selected , True )
52
+ self .assertEqual (Menu .items ['test' ][0 ].selected , True )
53
+ self .assertEqual (Menu .items ['test' ][1 ].selected , False )
54
+ self .assertEqual (Menu .items ['test' ][0 ].children [0 ].selected , True )
53
55
54
- settings .MENU_SELECT_PARENTS = True
55
56
request = self .factory .get ('/parent3/kids3-1/kid1' )
56
57
Menu .process (request , 'test' )
57
58
self .assertEqual (Menu .items ['test' ][0 ].selected , False )
58
- self .assertEqual (Menu .items ['test' ][1 ].selected , False )
59
+ self .assertEqual (Menu .items ['test' ][0 ].children [1 ].selected , False )
60
+ self .assertEqual (Menu .items ['test' ][1 ].selected , True )
61
+ self .assertEqual (Menu .items ['test' ][1 ].children [0 ].selected , True )
62
+ self .assertEqual (Menu .items ['test' ][1 ].children [0 ].children [0 ].selected , True )
59
63
self .assertEqual (Menu .items ['test' ][1 ].children [1 ].selected , False )
60
- self .assertEqual (Menu .items ['test' ][2 ].selected , True )
61
- self .assertEqual (Menu .items ['test' ][2 ].children [0 ].selected , True )
62
- self .assertEqual (Menu .items ['test' ][2 ].children [0 ].children [0 ].selected , True )
64
+ self .assertEqual (Menu .items ['test' ][2 ].selected , False )
63
65
64
66
def test_template_tag (self ):
65
67
"""
66
68
Ensure the templating works
67
69
"""
68
- request = self .factory .get ('/parent2/kids2 -1' )
70
+ request = self .factory .get ('/parent3/kids3 -1' )
69
71
out = Template (
70
72
"{% load menu %}"
71
73
"{% generate_menu %}"
72
74
"{% for item in menus.test %}"
73
75
"{{ item.title }},"
74
76
"{% for child in item.children %}"
75
77
"{{ child.title }},"
78
+ "{% for grandchild in child.children %}"
79
+ "{{ grandchild.title }},"
80
+ "{% endfor %}"
76
81
"{% endfor %}"
77
82
"{% endfor %}"
78
83
).render (Context ({
79
84
'request' : request ,
80
85
}))
81
86
82
- self .assertEqual (out , "Parent 1,Parent 2,kids2-1 ,kids2-2 ,Parent 3,kids3-1," )
87
+ self .assertEqual (out , "Parent 2,kids2-2 ,kids2-1 ,Parent 3,kids3-1,kids3-1-1,kids3-2,Parent 1," )
83
88
84
89
def test_template_tag_missing_attribute (self ):
85
90
"""
@@ -96,7 +101,7 @@ def test_template_tag_missing_attribute(self):
96
101
'request' : request ,
97
102
}))
98
103
99
- self .assertEqual (out , "Parent 1 ,Parent 2 ,Parent 3 ," )
104
+ self .assertEqual (out , "Parent 2 ,Parent 3 ,Parent 1 ," )
100
105
101
106
class MenuItemTests (TestCase ):
102
107
def test_kwargs (self ):
0 commit comments