@@ -301,6 +301,40 @@ def test_basic_cms_menu(self):
301301 [page .get_absolute_url () for page in pages ],
302302 )
303303
304+ def test_show_page_in_menu_after_move_page (self ):
305+ """
306+ Test checks if the menu cache is cleaned after move page.
307+ """
308+ page = create_page ('page to move' , 'nav_playground.html' , 'en' )
309+
310+ request = self .get_request ('/' )
311+ renderer = menu_pool .get_renderer (request )
312+ renderer .draft_mode_active = True
313+ nodes_before = renderer .get_nodes ()
314+ index_before = [i for i , s in enumerate (nodes_before ) if s .title == page .get_title ()]
315+ self .assertEqual (CacheKey .objects .count (), 1 )
316+
317+ with self .login_user_context (self .get_superuser ()):
318+ # Moves the page to the second position in the tree
319+ data = {'id' : page .pk , 'position' : 1 }
320+ endpoint = self .get_admin_url (Page , 'move_page' , page .pk )
321+ response = self .client .post (endpoint , data )
322+ self .assertEqual (response .status_code , 200 )
323+ self .assertEqual (CacheKey .objects .count (), 0 )
324+
325+ request = self .get_request ('/' )
326+ renderer = menu_pool .get_renderer (request )
327+ renderer .draft_mode_active = True
328+ nodes_after = renderer .get_nodes ()
329+ index_after = [i for i , s in enumerate (nodes_after ) if s .title == page .get_title ()]
330+
331+ self .assertEqual (CacheKey .objects .count (), 1 )
332+ self .assertNotEqual (
333+ index_before ,
334+ index_after ,
335+ 'Index should not be the same after move page in navigation'
336+ )
337+
304338 def test_cms_menu_public_with_multiple_languages (self ):
305339 pages = self .get_all_pages ().order_by ('node__path' )
306340
0 commit comments