Esempio n. 1
0
def test_slider_factory(db):
    """
    Factory should correctly create a new object without any errors
    """
    instance = SliderFactory()
    assert instance.template == get_slider_default_template()

    instance = SliderFactory(template="foo")
    assert instance.template == "foo"
Esempio n. 2
0
    def test_no_item_content(self):
        """
        When item content is empty, its HTML part should not be present
        """
        # Create random values for parameters with a factory
        slider = SliderFactory()
        item = SlideItemFactory.create(
            slider=slider,
            content="",
        )

        placeholder, model_instance, context, html = self.create_basic_render(
            SliderPlugin,
            copy_relations_from=slider,
            template=slider.template,
            title=slider.title,
        )

        print()
        print(html)

        pattern = (
            r'<div class="slider__item-content">'
        )
        self.assertIsNone(re.search(pattern, html))
Esempio n. 3
0
    def test_queryset_items_order(self):
        """
        Item order should be respected
        """
        slider = SliderFactory()

        # Create item in various order
        item_third = SlideItemFactory.create(slider=slider, order=3, title="3")
        item_first = SlideItemFactory.create(slider=slider, order=1, title="1")
        item_second = SlideItemFactory.create(slider=slider,
                                              order=2,
                                              title="2")
        item_fourth = SlideItemFactory.create(slider=slider,
                                              order=4,
                                              title="4")

        # Build plugin
        placeholder = Placeholder.objects.create(slot="test")
        model_instance = add_plugin(
            placeholder,
            SliderPlugin,
            "en",
            template=slider.template,
            title=slider.title,
        )
        model_instance.copy_relations(slider)

        # Get the ressources queryset from plugin render context
        plugin_instance = model_instance.get_plugin_class_instance()
        context = plugin_instance.render({}, model_instance, None)
        items = [(item.title, item.order) for item in context["slides"]]

        assert items == [('1', 1), ('2', 2), ('3', 3), ('4', 4)]
Esempio n. 4
0
def test_item_factory(db):
    """
    Factory should correctly create a new object without any errors
    """
    slider = SliderFactory()

    item = SlideItemFactory(slider=slider, title="foo")
    assert item.title == "foo"
    assert item.slider == slider
Esempio n. 5
0
    def test_form_view_edit(self):
        """
        Plugin edition form should return a success status code and every
        expected field should be present in HTML.
        """
        # Create random values for parameters with a factory
        slider = SliderFactory()
        item = SlideItemFactory.create(slider=slider, )

        # Connect a dummy admin
        staff = UserFactory(is_staff=True, is_superuser=True)
        self.client.login(username=staff.username, password="******")

        # Create dummy page
        page = create_page(
            language="en",
            title="Dummy",
            slug="dummy",
            template="pages/default.html",
        )

        # Add slider plugin to placeholder
        placeholder = page.placeholders.get(slot="content")
        model_instance = add_plugin(
            placeholder,
            SliderPlugin,
            "en",
            template=slider.template,
            title=slider.title,
        )
        model_instance.copy_relations(slider)

        # Get the edition plugin form url and open it
        url = admin_reverse('cms_page_edit_plugin', args=[model_instance.id])
        response = self.client.get(url)

        html = response.content.decode("utf-8")

        # Expected http success status
        self.assertEqual(response.status_code, 200)

        # Check expected slider fields are present
        self.assertIsNotNone(re.search((r'<select.*id="id_template".*>'),
                                       html))
        self.assertIsNotNone(
            re.search((r'<input.*type="text.*id="id_title".*>'), html))
        # Check only a single expected empty field
        self.assertIsNotNone(
            re.search((
                r'<input.*type="file.*id="id_slide_item-__prefix__-image".*>'),
                      html))
        # Check only a single expected filled field
        self.assertIsNotNone(
            re.search((r'<input.*type="file.*id="id_slide_item-0-image".*>'),
                      html))
Esempio n. 6
0
    def test_slider_success(self):
        """
        Form should be valid with factory datas.
        """
        slider = SliderFactory()

        form = SliderForm({
            "title": slider.title,
            "template": slider.template,
        })
        self.assertTrue(form.is_valid())

        instance = form.save()

        # Checked saved values are the same from factory
        self.assertEqual(instance.title, slider.title)
        self.assertEqual(instance.template, slider.template)
Esempio n. 7
0
    def test_empty(self):
        """
        When there is no item, there should not be any HTML item part
        """
        # Create random values for parameters with a factory
        slider = SliderFactory(title="Lorem ipsum dolore")

        placeholder, model_instance, context, html = self.create_basic_render(
            SliderPlugin,
            template=slider.template,
            title=slider.title,
        )

        expected_title = """<p class="slider__title">{}</p>""".format(
            slider.title
        )
        self.assertInHTML(expected_title, html)

        expected_empty_items = """<div class="slider__items"></div>"""
        self.assertInHTML(expected_empty_items, html)
Esempio n. 8
0
    def test_item_success(self):
        """
        Item form should be valid with factory datas.
        """
        slider = SliderFactory()
        item = SlideItemFactory(slider=slider)

        form = SlideItemForm({
            "slider": item.slider,
            "title": item.title,
            "order": item.order,
        }, {
            "image": item.image,
        })
        self.assertTrue(form.is_valid())

        instance = form.save()

        # Checked saved values are the same from factory
        self.assertEqual(instance.slider, slider)
        self.assertEqual(instance.order, item.order)
        self.assertEqual(instance.image, item.image)
Esempio n. 9
0
    def test_many_item(self):
        """
        When slider has many item, every item titles should be here
        """
        # Create random values for parameters with a factory
        slider = SliderFactory()

        item_first = SlideItemFactory.create(
            slider=slider,
        )
        item_second = SlideItemFactory.create(
            slider=slider,
        )

        placeholder, model_instance, context, html = self.create_basic_render(
            SliderPlugin,
            copy_relations_from=slider,
            template=slider.template,
            title=slider.title,
        )

        #print()
        #print(html)

        # Item titles
        self.assertInHTML(
            """<p class="slider__item-title">{}</p>""".format(
                item_first.title
            ),
            html
        )

        self.assertInHTML(
            """<p class="slider__item-title">{}</p>""".format(
                item_second.title
            ),
            html
        )
Esempio n. 10
0
    def test_single_full_item(self):
        """
        Full single item should build all HTML parts
        """
        # Create random values for parameters with a factory
        slider = SliderFactory.create()
        item = SlideItemFactory.create(
            slider=slider,
            link_name="CTA link",
            link_url="http://perdu.com",
            link_open_blank=True,
        )

        placeholder, model_instance, context, html = self.create_basic_render(
            SliderPlugin,
            copy_relations_from=slider,
            template=slider.template,
            title=slider.title,
        )

        print()
        print(html)

        # Slider title
        self.assertInHTML(
            """<p class="slider__title">{}</p>""".format(
                slider.title
            ),
            html
        )

        # Item image and title
        pattern = (
            r'<div class="slider__item" style="background-image\: url\(/media/cache/.*\.png.*>'
            r'<p class="slider__item-title">{title:s}</p>'
        ).format(
            title=item.title,
        )
        self.assertIsNotNone(re.search(pattern, html))

        # Ensure there is no hidden sorl errors
        for log in self._caplog.record_tuples:
            if log[0].startswith("sorl.thumbnail.base") and log[1] == logging.ERROR:
                raise AssertionError("There is some 'sorl.thumbnail' error(s)")

        # Item content
        self.assertInHTML(
            """<div class="slider__item-content">{}</div>""".format(
                item.content
            ),
            html
        )

        link_template = (
            """<p class="slider__item-link">"""
            """<a class="button" href="{url}" target="_blank">"""
            """{name}"""
            """</a>"""
            """</p>"""
        )
        self.assertInHTML(
            link_template.format(
                name=item.link_name,
                url=item.link_url,
            ),
            html
        )