def test_clean_overwrite_url(self): user = AnonymousUser() user.is_superuser = True user.pk = 1 request = type('Request', (object,), {'user': user}) with SettingsOverride(): data = { 'title': 'TestPage', 'slug': 'test-page', 'language': 'en', 'overwrite_url': '/overwrite/url/', 'site': Site.objects.get_current().pk, 'template': get_cms_setting('TEMPLATES')[0][0], 'published': True } form = PageForm(data) self.assertTrue(form.is_valid(), form.errors.as_text()) # WTF? WHY DOES form.save() not handle this stuff??? instance = form.save() instance.permission_user_cache = user instance.permission_advanced_settings_cache = True Title.objects.set_or_create(request, instance, form, 'en') form = PageForm(data, instance=instance) self.assertTrue(form.is_valid(), form.errors.as_text())
class TestPageTitles(CMSTestCase): """ Test Custom page titles """ def setUp(self): # Create superuser self.superuser = self.get_superuser() def __create_page(self, page_data, without_h1=False): """ Creates page with h1 or without it :param page_data: dict :return Page """ if not without_h1: page_data["title"] = "Page with titles and META" page_data["slug"] = "page-with-data-and-meta" # rewrite template name page_data['template'] = settings.CMS_TEMPLATES[0][0] # Save page self.page_form = PageForm(page_data) self.assertTrue(self.page_form.is_valid()) page = self.page_form.save(commit=False) return page def __extend_page(self, page, page_data): """ Creates Title and Meta Extension for given page :param page: Page :param page_data: dict """ # Get Request request = HttpRequest() request.user = self.superuser # Get Title Object title = Title.objects.set_or_create(request, page, self.page_form, settings.LANGUAGE_CODE) # Extend page ext = Metadata(extended_object=title, h1='H1 is ready to use') ext.save() def test_titles_and_meta(self): """ Test H1 attribute """ from django import template with self.login_user_context(self.superuser): # Create pages page_data = self.get_new_page_data() pages = { 'page_with': self.__create_page(page_data), 'page_without': self.__create_page(page_data, without_h1=True) } # Create template t = template.Template( "{% load cms_tags %}Page: {{ request.current_page.get_title_obj.metadata.h1 }}") # Post pages on the site for page_type, page in pages.items(): page.save() # If page must to be with extra Titles and META data if page_type == 'page_with': self.__extend_page(page, page_data) page.publish(settings.LANGUAGE_CODE) # Test page without h1 req = HttpRequest() req.current_page = pages['page_without'] req.REQUEST = {} rendered = t.render(template.Context({"request": req})) self.assertEqual(rendered, "Page: ") # Test page with h1 req = HttpRequest() req.current_page = pages['page_with'] req.REQUEST = {} rendered = '{0}'.format(t.render(template.Context({"request": req}))) self.assertEqual(rendered, "Page: H1 is ready to use")