11import pytest
22from django .contrib .admin import site
3- from django .template import Context
43from django .urls import reverse
54
65from jazzmin .templatetags .jazzmin import get_side_menu
@@ -24,10 +23,21 @@ def test_side_menu(admin_client, settings):
2423
2524 assert parse_sidemenu (response ) == {
2625 "Administration" : ["/en/admin/admin/logentry/" ],
27- "Authentication and Authorization" : ["/en/admin/auth/group/" , "/en/admin/auth/user/" ,],
28- "Books" : ["/en/admin/books/author/" , "/en/admin/books/book/" , "/en/admin/books/genre/" ,],
26+ "Authentication and Authorization" : [
27+ "/en/admin/auth/group/" ,
28+ "/en/admin/auth/user/" ,
29+ ],
30+ "Books" : [
31+ "/en/admin/books/author/" ,
32+ "/en/admin/books/book/" ,
33+ "/en/admin/books/genre/" ,
34+ ],
2935 "Global" : ["/en/admin/" ],
30- "Loans" : ["/make_messages/" , "/en/admin/loans/bookloan/" , "/en/admin/loans/library/" ,],
36+ "Loans" : [
37+ "/make_messages/" ,
38+ "/en/admin/loans/bookloan/" ,
39+ "/en/admin/loans/library/" ,
40+ ],
3141 }
3242
3343 settings .JAZZMIN_SETTINGS = override_jazzmin_settings (hide_models = ["auth.user" ])
@@ -36,8 +46,16 @@ def test_side_menu(admin_client, settings):
3646 assert parse_sidemenu (response ) == {
3747 "Global" : ["/en/admin/" ],
3848 "Authentication and Authorization" : ["/en/admin/auth/group/" ],
39- "Books" : ["/en/admin/books/author/" , "/en/admin/books/book/" , "/en/admin/books/genre/" ,],
40- "Loans" : ["/make_messages/" , "/en/admin/loans/bookloan/" , "/en/admin/loans/library/" ,],
49+ "Books" : [
50+ "/en/admin/books/author/" ,
51+ "/en/admin/books/book/" ,
52+ "/en/admin/books/genre/" ,
53+ ],
54+ "Loans" : [
55+ "/make_messages/" ,
56+ "/en/admin/loans/bookloan/" ,
57+ "/en/admin/loans/library/" ,
58+ ],
4159 "Administration" : ["/en/admin/admin/logentry/" ],
4260 }
4361
@@ -87,7 +105,11 @@ def test_top_menu(admin_client, settings):
87105 settings .JAZZMIN_SETTINGS = override_jazzmin_settings (
88106 topmenu_links = [
89107 {"name" : "Home" , "url" : "admin:index" , "permissions" : ["auth.view_user" ]},
90- {"name" : "Support" , "url" : "https://github.com/farridav/django-jazzmin/issues" , "new_window" : True ,},
108+ {
109+ "name" : "Support" ,
110+ "url" : "https://github.com/farridav/django-jazzmin/issues" ,
111+ "new_window" : True ,
112+ },
91113 {"model" : "auth.User" },
92114 {"app" : "books" },
93115 ]
@@ -97,7 +119,10 @@ def test_top_menu(admin_client, settings):
97119
98120 assert parse_topmenu (response ) == [
99121 {"name" : "Home" , "link" : "/en/admin/" },
100- {"name" : "Support" , "link" : "https://github.com/farridav/django-jazzmin/issues" ,},
122+ {
123+ "name" : "Support" ,
124+ "link" : "https://github.com/farridav/django-jazzmin/issues" ,
125+ },
101126 {"name" : "Users" , "link" : "/en/admin/auth/user/" },
102127 {
103128 "name" : "Books" ,
@@ -139,12 +164,71 @@ def test_user_menu(admin_user, client, settings):
139164 ]
140165
141166
142- def test_custom_menu_grouping (settings , rf ):
143- context = site .each_context (rf )
167+ def test_custom_menu_grouping (admin_user , settings , rf ):
168+ """
169+ When we use a custom menu we get exactly what we ask for
170+ """
171+ request = rf .request ()
172+ request .user = admin_user
173+ context = site .each_context (request )
174+ context .update ({"user" : admin_user })
175+
144176 settings .JAZZMIN_SETTINGS = override_jazzmin_settings (
145177 custom_menu = {"auth" : ["books.book" ], "arbitrary name" : ["auth.user" , "auth.group" ]}
146178 )
147179
148180 menu = get_side_menu (context )
149181
150- assert menu == []
182+ assert menu == [
183+ {
184+ "app_label" : "auth" ,
185+ "app_url" : "/en/admin/auth/" ,
186+ "has_module_perms" : True ,
187+ "icon" : "fas fa-users-cog" ,
188+ "models" : [
189+ {
190+ "add_url" : "/en/admin/books/book/add/" ,
191+ "admin_url" : "/en/admin/books/book/" ,
192+ "icon" : "fas fa-circle" ,
193+ "model_str" : "auth.book" ,
194+ "name" : "Books" ,
195+ "object_name" : "Book" ,
196+ "perms" : {"add" : True , "change" : True , "delete" : True , "view" : True },
197+ "url" : "/en/admin/books/book/" ,
198+ "view_only" : False ,
199+ }
200+ ],
201+ "name" : "Authentication and Authorization" ,
202+ },
203+ {
204+ "app_label" : "arbitrary name" ,
205+ "app_url" : None ,
206+ "has_module_perms" : True ,
207+ "icon" : "fas fa-chevron-circle-right" ,
208+ "models" : [
209+ {
210+ "add_url" : "/en/admin/auth/user/add/" ,
211+ "admin_url" : "/en/admin/auth/user/" ,
212+ "icon" : "fas fa-circle" ,
213+ "model_str" : "arbitrary name.user" ,
214+ "name" : "Users" ,
215+ "object_name" : "User" ,
216+ "perms" : {"add" : True , "change" : True , "delete" : True , "view" : True },
217+ "url" : "/en/admin/auth/user/" ,
218+ "view_only" : False ,
219+ },
220+ {
221+ "add_url" : "/en/admin/auth/group/add/" ,
222+ "admin_url" : "/en/admin/auth/group/" ,
223+ "icon" : "fas fa-circle" ,
224+ "model_str" : "arbitrary name.group" ,
225+ "name" : "Groups" ,
226+ "object_name" : "Group" ,
227+ "perms" : {"add" : True , "change" : True , "delete" : True , "view" : True },
228+ "url" : "/en/admin/auth/group/" ,
229+ "view_only" : False ,
230+ },
231+ ],
232+ "name" : "Arbitrary Name" ,
233+ },
234+ ]
0 commit comments