def test_copy_language_backend(self): """ Testing how the copy button works. It calls the ``get_placeholder_data_view`` function. """ self.admin_site.register(PlaceholderFieldTestPage, PlaceholderFieldTestPageAdmin) modeladmin = self.admin_site._registry[PlaceholderFieldTestPage] page = factories.create_page() placeholder = factories.create_placeholder(page=page) item1 = factories.create_content_item(RawHtmlTestItem, placeholder=placeholder, html="AA") item2 = factories.create_content_item(RawHtmlTestItem, placeholder=placeholder, html="BB") request = self._get_request( admin_urlname(page._meta, "get_placeholder_data")) data = modeladmin.get_placeholder_data_view(request, page.pk).jsondata self.assertEqual(len(data["formset_forms"]), 2) self.assertEqual(data["formset_forms"][0]["model"], "RawHtmlTestItem") self.assertEqual(data["formset_forms"][0]["contentitem_id"], item1.pk) self.assertEqual(data["formset_forms"][1]["contentitem_id"], item2.pk) self.assertTrue("AA" in data["formset_forms"][0]["html"])
def test_copy_language_backend(self): """ Testing how the copy button works. It calls the ``get_placeholder_data_view`` function. """ self.admin_site.register(PlaceholderFieldTestPage, PlaceholderFieldTestPageAdmin) modeladmin = self.admin_site._registry[PlaceholderFieldTestPage] page = factories.create_page() placeholder = factories.create_placeholder(page=page) item1 = factories.create_content_item(RawHtmlTestItem, placeholder=placeholder, html='AA') item2 = factories.create_content_item(RawHtmlTestItem, placeholder=placeholder, html='BB') request = self._get_request( admin_urlname(page._meta, 'get_placeholder_data')) data = modeladmin.get_placeholder_data_view(request, page.pk).jsondata self.assertEqual(len(data['formset_forms']), 2) self.assertEqual(data['formset_forms'][0]['model'], 'RawHtmlTestItem') self.assertEqual(data['formset_forms'][0]['contentitem_id'], item1.pk) self.assertEqual(data['formset_forms'][1]['contentitem_id'], item2.pk) self.assertTrue('AA' in data['formset_forms'][0]['html'])
def test_dumppages(self): HomePage.objects.all().delete() homepage = HomePage.objects.create(pk=1) placeholder = create_placeholder(page=homepage, slot='content') create_content_item( SlidesContent, placeholder=placeholder, sort_order=1, language_code='en', ) steps = create_content_item( StepsContent, placeholder=placeholder, sort_order=2, language_code='en', ) Step.objects.create( block=steps, header='First', text='Go!', sequence=1 ) Step.objects.create( block=steps, header='Second', text='Go!', sequence=2 ) Step.objects.create( block=steps, header='Third', text='Go!', sequence=3 ) page = PageFactory.create( slug='about', title='About this platform', language='en', publication_date='2020-01-01 00:00+00:00' ) create_content_item( TextItem, create_placeholder(page=page, slot='blog_contents'), sort_order=1, language_code='en', text='A really engaging text!' ) call_command('dumppages', '-f', 'test_pages.json') json_file = open("test_pages.json", "r") test_output = json.load(json_file) self.assertEqual(test_output, PAGE_DUMP)
def test_render_redirect(self): cache.clear() page = factories.create_page() placeholder = factories.create_placeholder(page=page) factories.create_content_item(RedirectTestItem, placeholder=placeholder, html="MEDIA_TEST") response = self.client.get(reverse("testpage", args=(page.pk,))) self.assertTrue(response.status_code, 301) self.assertIsInstance(response, HttpResponseRedirect) self.assertTrue(response["Location"].endswith("/contact/success/"))
def test_render_redirect(self): cache.clear() page = factories.create_page() placeholder = factories.create_placeholder(page=page) factories.create_content_item(RedirectTestItem, placeholder=placeholder, html='MEDIA_TEST') response = self.client.get(reverse('testpage', args=(page.pk,))) self.assertTrue(response.status_code, 301) self.assertIsInstance(response, HttpResponseRedirect) self.assertTrue(response['Location'].endswith('/contact/success/'))
def test_get_homepage(client): # Create the page user = User.objects.create(username='******') layout = PageLayout.objects.create(title='homepage', template_path='pages/homepage.html') page = FluentPage.objects.create(slug='homepage', override_url='/', layout=layout, author=user, status=FluentPage.PUBLISHED) placeholder = create_placeholder(page, slot='homepage') create_content_item(JumbotronItem, placeholder, title="JUMBO_TEST", content="Hello!") response = client.get('/en/') assert b'JUMBO_TEST' in response.content
def test_render_media(self): """ Test that 'class FrontendMedia' works. """ placeholder = factories.create_placeholder() factories.create_content_item(MediaTestItem, placeholder=placeholder, html="MEDIA_TEST") output = rendering.render_placeholder(self.dummy_request, placeholder) self.assertEqual(output.html.strip(), "MEDIA_TEST") self.assertEqual(output.media._js, ["testapp/media_item.js"]) self.assertEqual(output.media._css, {"screen": ["testapp/media_item.css"]})
def test_render_media(self): """ Test that 'class FrontendMedia' works. """ placeholder = factories.create_placeholder() factories.create_content_item(MediaTestItem, placeholder=placeholder, html='MEDIA_TEST') output = rendering.render_placeholder(self.dummy_request, placeholder) self.assertEqual(output.html.strip(), 'MEDIA_TEST') self.assertEqual(output.media._js, ['testapp/media_item.js']) self.assertEqual(output.media._css, {'screen': ['testapp/media_item.css']})
def test_rendering(self): placeholder = create_placeholder() row = create_content_item(BootstrapRow, placeholder=placeholder) col1 = create_content_item(BootstrapColumn, placeholder=placeholder, parent_item=row, col_xs=6) col2 = create_content_item(BootstrapColumn, placeholder=placeholder, parent_item=row, col_xs=6, col_sm=12) text = create_content_item(RawHtmlTestItem, placeholder=placeholder, parent_item=col1, html='AA') text = create_content_item(RawHtmlTestItem, placeholder=placeholder, parent_item=col2, html='BB') items = placeholder.get_content_items() self.assertHTMLEqual(render_content_items(items).html, '' '<div class="row">' '<div class="col-xs-6">AA</div>' '<div class="col-sm-12 col-xs-6">BB</div>' '</div>')
def test_rendering(self): """ Test the standard button """ item = create_content_item({{ model }}, title="TEST1") output = render_content_items([item]) self.assertIn('TEST1', output.html)
def test_submit(self): """ Testing submit """ item = create_content_item(ContactFormItem, pk=2, form_style='default', email_to='*****@*****.**', success_message='Thanks!') # Submit, but not via the form button request = get_dummy_request('post', data={}) request.resolver_match = resolve('/admin/') output = render_content_items([item], request=request) self.assertTrue(output.html.count('name="contact2_submit"'), 1) # still displays form self.assertTrue('error' not in output.html) # no errors! # Submit, but not via the form button request = get_dummy_request('post', data={ 'contact2-name': "Test", 'contact2-email': '*****@*****.**', 'contact2-phone_number': '', 'contact2-subject': 'Test!', 'contact2-message': "Hello!", 'contact2_submit': "Submit", }) request.resolver_match = resolve('/admin/') self.assertRaises(HttpRedirectRequest, lambda: render_content_items([item], request=request)) self.assertTrue(request.session['contact2_submitted'])
def test_align_center(self): """ Test the center-align feature. """ item = create_content_item(ButtonItem, url='http://example.com', style='btn-default', title='TEST2', align='center') self.assertHTMLEqual( render_content_items([item]).html, u'<p class="text-center btn-center-wrapper"><a href="http://example.com" class="btn btn-default">TEST2</a></p>' )
def test_markup(self): RstItem = LANGUAGE_MODEL_CLASSES['restructuredtext'] item = create_content_item(RstItem, text=""" RST ---- * Markup!""") expected = '''<div class="markup"><h1 class="title">RST</h1><ul class="simple"><li>Markup!</li></ul></div>''' self.assertHTMLEqual(force_text(render_content_items([item])), expected)
def test_copy_language_backend(self): """ Testing how the copy button works. It calls the ``get_placeholder_data_view`` function. """ self.admin_site.register(PlaceholderFieldTestPage, PlaceholderFieldTestPageAdmin) modeladmin = self.admin_site._registry[PlaceholderFieldTestPage] page = factories.create_page() placeholder = factories.create_placeholder(page=page) item1 = factories.create_content_item(RawHtmlTestItem, placeholder=placeholder, html='AA') item2 = factories.create_content_item(RawHtmlTestItem, placeholder=placeholder, html='BB') request = self._get_request(admin_urlname(page._meta, 'get_placeholder_data')) data = modeladmin.get_placeholder_data_view(request, page.pk).jsondata self.assertEqual(len(data['formset_forms']), 2) self.assertEqual(data['formset_forms'][0]['model'], 'RawHtmlTestItem') self.assertEqual(data['formset_forms'][0]['contentitem_id'], item1.pk) self.assertEqual(data['formset_forms'][1]['contentitem_id'], item2.pk) self.assertTrue('AA' in data['formset_forms'][0]['html'])
def test_rendering(self): """ Test the standard button """ item = create_content_item(ContactFormItem, pk=1, form_style='default', email_to='*****@*****.**', success_message='Thanks!') output = render_content_items([item]) self.assertTrue(output.html.count('<form '), 1) # no helper! self.assertTrue(output.html.count('<input type="submit"'), 1) # button found! self.assertTrue(output.html.count('name="contact1_submit"'), 1) # button text self.assertEqual(str(item), '*****@*****.**')
def test_output(self): """ Test the standard teaser """ item = create_content_item(TeaserItem, url="http://example.com", title="TEST") self.assertHTMLEqual( render_content_items([item]).html, '<div class="teaser">' " <h2>TEST</h2>" ' <a href="http://example.com" class="readmore">more »</a>' "</div>", )
def test_primary(self): """ Test the standard button """ item = create_content_item( CountDownItem, title="Until 2030", until=datetime(2030, 1, 1, 10, 0, 0, tzinfo=timezone(timedelta(hours=5))), ) self.assertHTMLEqual( render_content_items([item]).html, '<div class="countdown" data-until="2030-01-01 05:00:00+00:00" data-expiry-text="null">' ' <p>Until 2030</p>' ' <span class="timer"></span>' '</div>' )
def test_markup(self): RstItem = LANGUAGE_MODEL_CLASSES["restructuredtext"] item = create_content_item( RstItem, text=""" RST ---- * Markup!""", ) expected = """<div class="markup"><h1 class="title">RST</h1><ul class="simple"><li>Markup!</li></ul></div>""" self.assertHTMLEqual(force_str(render_content_items([item])), expected)
def test_rendering(self): """ Test the standard button """ item = create_content_item(CookieLawItem, text="Do you like cookies?", button_text="Jummie!") output = render_content_items([item]) self.assertHTMLEqual(output.html, '''<div id="cookielaw-banner"> <div class="container"> <a class="btn" href="javascript:Cookielaw.accept();">Jummie!</a> Do you like cookies? </div> </div>''') self.assertHTMLEqual(str(output.media), '<script type="text/javascript" src="/static/fluentcms_cookielaw/js/cookielaw.js"></script>') self.assertEqual(str(item), 'Do you like cookies?')
def test_rendering(self): """ Test the standard button """ item = create_content_item( ContactFormItem, pk=1, form_style="default", email_to="*****@*****.**", success_message="Thanks!", ) output = render_content_items([item]) self.assertTrue(output.html.count("<form "), 1) # no helper! self.assertTrue(output.html.count('<input type="submit"'), 1) # button found! self.assertTrue(output.html.count('name="contact1_submit"'), 1) # button text self.assertEqual(str(item), "*****@*****.**")
def test_output(self): """ Test the standard picture """ file_obj = SimpleUploadedFile("file.jpg", b"file_content", content_type="image/jpeg") image, _ = Image.objects.get_or_create(file=DjangoFile(file_obj), defaults={"name": "file.jpg"}) item = create_content_item(PictureItem, image=image, caption="file.jpg") self.assertHTMLEqual( render_content_items([item]).html, '<figure class="picture ">' f'<img src="{item.image.url}" width="0.0" height="0.0" alt="" />' '<figcaption>file.jpg</figcaption>' '</figure>', )
def test_output(self): """ Test the standard file """ item = create_content_item(FileItem, file=SimpleUploadedFile( "file.jpg", b"file_content", content_type="image/jpeg"), name="file.jpg") self.assertHTMLEqual( render_content_items([item]).html, '<p class="file">' f'<a href="{item.file.url}">' '<span class="filename">' 'file.jpg<span class="filesize">' '(12 bytes)' '</span>' '</span>' '</a>' "</p>", )
def test_submit(self): """ Testing submit """ item = create_content_item( ContactFormItem, pk=2, form_style="default", email_to="*****@*****.**", success_message="Thanks!", ) # Submit, but not via the form button request = get_dummy_request("post", data={}) request.resolver_match = resolve("/admin/") output = render_content_items([item], request=request) self.assertTrue(output.html.count('name="contact2_submit"'), 1) # still displays form self.assertTrue("error" not in output.html) # no errors! # Submit, but not via the form button request = get_dummy_request( "post", data={ "contact2-name": "Test", "contact2-email": "*****@*****.**", "contact2-phone_number": "", "contact2-subject": "Test!", "contact2-message": "Hello!", "contact2_submit": "Submit", }, ) request.resolver_match = resolve("/admin/") self.assertRaises( HttpRedirectRequest, lambda: render_content_items([item], request=request)) self.assertTrue(request.session["contact2_submitted"])
def test_output(self): """ Test the standard file """ file_obj = SimpleUploadedFile("file.jpg", b"file_content", content_type="image/jpeg") image, _ = Image.objects.get_or_create(file=DjangoFile(file_obj), defaults={"name": "file.jpg"}) item = create_content_item(FileItem, file=image, name="file.jpg") self.assertHTMLEqual( render_content_items([item]).html, '<p class="file">' f'<a href="{item.file.url}">' '<span class="filename">' 'file.jpg<span class="filesize">' '(12 bytes)' '</span>' '</span>' '</a>' "</p>", )
def test_primary(self): """ Test the standard button """ item = create_content_item(ButtonItem, url='http://example.com', style='btn-primary', title='TEST') self.assertHTMLEqual(render_content_items([item]).html, u'<a href="http://example.com" class="btn btn-primary">TEST</a>')
def test_no_output(self): """ Test that the item doens't produce output. """ item = create_content_item(PrivateNotesItem, notes="HIDDEN-NOTES!") self.assertEqual(render_content_items([item]).html, u'')
def test_no_output(self): """ Test that the item doens't produce output. """ item = create_content_item(PrivateNotesItem, notes="HIDDEN-NOTES!") self.assertEqual(render_content_items([item]).html, u'')