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/"))
Exemple #5
0
    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"]})
Exemple #8
0
    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>')
Exemple #10
0
 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'])
Exemple #12
0
 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 &#187;</a>'
         "</div>",
     )
Exemple #17
0
 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>'
     )
Exemple #18
0
    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)
Exemple #19
0
    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), "*****@*****.**")
Exemple #21
0
    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>',
        )
Exemple #22
0
 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"])
Exemple #24
0
    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>",
        )
Exemple #25
0
 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>')
Exemple #26
0
 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'')