forked from ungleich-public/dynamicweb
111 lines
4.8 KiB
Python
111 lines
4.8 KiB
Python
import warnings
|
|
|
|
from django.conf import settings
|
|
from django.test.utils import override_settings
|
|
|
|
from cms.api import create_page
|
|
from cms.models import Page, UrlconfRevision
|
|
from cms.signals import move_page, urls_need_reloading
|
|
from cms.test_utils.project.sampleapp.cms_apps import SampleApp
|
|
from cms.test_utils.testcases import CMSTestCase
|
|
from cms.test_utils.util.context_managers import apphooks, signal_tester
|
|
from cms.utils.compat.warnings import RemovedInDjangoCMS60Warning
|
|
|
|
overrides = {
|
|
'MIDDLEWARE': ['cms.middleware.utils.ApphookReloadMiddleware'] + settings.MIDDLEWARE,
|
|
'CMS_PERMISSION': False,
|
|
}
|
|
|
|
|
|
@override_settings(**overrides)
|
|
class SignalTests(CMSTestCase):
|
|
def test_move_page_signal_warns_on_connect(self):
|
|
def receiver(**kwargs):
|
|
return None
|
|
|
|
with warnings.catch_warnings(record=True) as caught:
|
|
warnings.simplefilter("always", RemovedInDjangoCMS60Warning)
|
|
move_page.connect(receiver)
|
|
|
|
self.assertTrue(
|
|
any(issubclass(warning.category, RemovedInDjangoCMS60Warning) for warning in caught),
|
|
"Expected deprecation warning when connecting to move_page signal.",
|
|
)
|
|
|
|
def test_urls_need_reloading_signal_set_apphook(self):
|
|
superuser = self.get_superuser()
|
|
|
|
with apphooks(SampleApp):
|
|
with self.login_user_context(superuser):
|
|
with signal_tester(urls_need_reloading) as env:
|
|
self.assertEqual(env.call_count, 0)
|
|
cms_page = create_page(
|
|
"apphooked-page",
|
|
"nav_playground.html",
|
|
"en",
|
|
)
|
|
redirect_to = self.get_pages_admin_list_uri(site_id=cms_page.site_id)
|
|
endpoint = self.get_admin_url(Page, 'advanced', cms_page.pk)
|
|
current_revision, _ = UrlconfRevision.get_or_create_revision()
|
|
page_data = {
|
|
"reverse_id": "",
|
|
"navigation_extenders": "",
|
|
"application_urls": "SampleApp",
|
|
"application_namespace": "sampleapp",
|
|
}
|
|
response = self.client.post(endpoint, page_data)
|
|
self.assertRedirects(response, redirect_to)
|
|
self.assertEqual(env.call_count, 1)
|
|
new_revision, _ = UrlconfRevision.get_or_create_revision()
|
|
self.assertNotEqual(current_revision, new_revision)
|
|
|
|
def test_urls_need_reloading_signal_delete(self):
|
|
superuser = self.get_superuser()
|
|
|
|
with apphooks(SampleApp):
|
|
with self.login_user_context(superuser):
|
|
page = create_page(
|
|
"apphooked-page",
|
|
"nav_playground.html",
|
|
"en",
|
|
apphook="SampleApp",
|
|
apphook_namespace="test"
|
|
)
|
|
|
|
with signal_tester(urls_need_reloading) as env:
|
|
endpoint = self.get_admin_url(Page, 'delete', page.pk)
|
|
current_revision, _ = UrlconfRevision.get_or_create_revision()
|
|
self.assertEqual(env.call_count, 0)
|
|
self.client.post(endpoint, {'post': 'yes'})
|
|
self.assertEqual(env.call_count, 1)
|
|
new_revision, _ = UrlconfRevision.get_or_create_revision()
|
|
self.assertNotEqual(current_revision, new_revision)
|
|
|
|
def test_urls_need_reloading_signal_change_slug(self):
|
|
superuser = self.get_superuser()
|
|
redirect_to = self.get_pages_admin_list_uri()
|
|
|
|
with apphooks(SampleApp):
|
|
with self.login_user_context(superuser):
|
|
with signal_tester(urls_need_reloading) as env:
|
|
current_revision, _ = UrlconfRevision.get_or_create_revision()
|
|
self.assertEqual(env.call_count, 0)
|
|
page = create_page(
|
|
"apphooked-page",
|
|
"nav_playground.html",
|
|
"en",
|
|
apphook="SampleApp",
|
|
apphook_namespace="test"
|
|
)
|
|
# Change slug should trigger the signal
|
|
endpoint = self.get_page_change_uri('en', page)
|
|
page_data = {
|
|
'title': 'apphooked-page',
|
|
'slug': 'apphooked-page-2',
|
|
'template': 'nav_playground.html'
|
|
}
|
|
response = self.client.post(endpoint, page_data)
|
|
self.assertRedirects(response, redirect_to)
|
|
self.assertEqual(env.call_count, 1)
|
|
new_revision, _ = UrlconfRevision.get_or_create_revision()
|
|
self.assertNotEqual(current_revision, new_revision)
|