|
17 | 17 |
|
18 | 18 | from cms.api import create_page, create_title
|
19 | 19 | from cms.cms_menus import get_visible_nodes
|
20 |
| -from cms.models import Page, ACCESS_PAGE_AND_DESCENDANTS |
| 20 | +from cms.models import Page, ACCESS_PAGE_AND_DESCENDANTS, Title |
21 | 21 | from cms.models.permissionmodels import GlobalPagePermission, PagePermission
|
22 | 22 | from cms.test_utils.project.sampleapp.cms_menus import SampleAppMenu, StaticMenu, StaticMenu2
|
23 | 23 | from cms.test_utils.fixtures.menus import (MenusFixture, SubMenusFixture,
|
24 | 24 | SoftrootFixture, ExtendedMenusFixture)
|
25 |
| -from cms.test_utils.testcases import CMSTestCase |
| 25 | +from cms.test_utils.testcases import CMSTestCase, URL_CMS_PAGE_ADD, URL_CMS_PAGE |
26 | 26 | from cms.test_utils.util.context_managers import apphooks, LanguageOverride
|
27 | 27 | from cms.test_utils.util.mock import AttributeObject
|
28 | 28 | from cms.utils import get_current_site
|
@@ -297,6 +297,35 @@ def test_basic_cms_menu(self):
|
297 | 297 | [page.get_absolute_url() for page in pages],
|
298 | 298 | )
|
299 | 299 |
|
| 300 | + def test_show_new_draft_page_in_menu(self): |
| 301 | + """ |
| 302 | + Test checks if the menu cache is cleaned after create a new draft page. |
| 303 | + """ |
| 304 | + with self.login_user_context(self.get_superuser()): |
| 305 | + page_data_1 = self.get_new_page_data() |
| 306 | + response = self.client.post(URL_CMS_PAGE_ADD, page_data_1) |
| 307 | + self.assertRedirects(response, URL_CMS_PAGE) |
| 308 | + |
| 309 | + request = self.get_request('/') |
| 310 | + renderer = menu_pool.get_renderer(request) |
| 311 | + renderer.draft_mode_active = True |
| 312 | + renderer.get_nodes() |
| 313 | + self.assertEqual(CacheKey.objects.count(), 1) |
| 314 | + |
| 315 | + with self.login_user_context(self.get_superuser()): |
| 316 | + page_data_2 = self.get_new_page_data() |
| 317 | + self.assertNotEqual(page_data_1['slug'], page_data_2['slug']) |
| 318 | + response = self.client.post(URL_CMS_PAGE_ADD, page_data_2) |
| 319 | + self.assertRedirects(response, URL_CMS_PAGE) |
| 320 | + page = Title.objects.drafts().get(slug=page_data_2['slug']).page |
| 321 | + |
| 322 | + request = self.get_request('/') |
| 323 | + renderer = menu_pool.get_renderer(request) |
| 324 | + renderer.draft_mode_active = True |
| 325 | + nodes = renderer.get_nodes() |
| 326 | + self.assertEqual(CacheKey.objects.count(), 1) |
| 327 | + self.assertEqual(page.get_title(), nodes[-1].title) |
| 328 | + |
300 | 329 | def test_cms_menu_public_with_multiple_languages(self):
|
301 | 330 | for page in Page.objects.drafts():
|
302 | 331 | create_title(
|
|
0 commit comments