Esempio n. 1
0
def test_url_uniqueness(rf):
    page = create_page(url='bacon', shop=get_default_shop())
    with pytest.raises(ValidationError):
        page = create_page(url='bacon', shop=get_default_shop())

    with transaction.atomic():
        mpage = create_multilanguage_page(url="cheese", shop=get_default_shop())
        with pytest.raises(ValidationError):
            mpage = create_multilanguage_page(url="cheese", shop=get_default_shop())
Esempio n. 2
0
def test_url_uniqueness(rf):
    page = create_page(url='bacon')
    with pytest.raises(ValidationError):
        page = create_page(url='bacon')

    with transaction.atomic():
        mpage = create_multilanguage_page(url="cheese")
        with pytest.raises(IntegrityError):
            mpage = create_multilanguage_page(url="cheese")
Esempio n. 3
0
def test_url_uniqueness(rf):
    page = create_page(url='bacon')
    with pytest.raises(ValidationError):
        page = create_page(url='bacon')

    with transaction.atomic():
        mpage = create_multilanguage_page(url="cheese")
        with pytest.raises(IntegrityError):
            mpage = create_multilanguage_page(url="cheese")
Esempio n. 4
0
def test_url_uniqueness(rf):
    page = create_page(url='bacon', shop=get_default_shop())
    with pytest.raises(ValidationError):
        page = create_page(url='bacon', shop=get_default_shop())

    with transaction.atomic():
        mpage = create_multilanguage_page(url="cheese",
                                          shop=get_default_shop())
        with pytest.raises(ValidationError):
            mpage = create_multilanguage_page(url="cheese",
                                              shop=get_default_shop())
Esempio n. 5
0
def test_invisible_children(rf):
    get_default_shop()
    request = apply_request_middleware(rf.get("/"))

    parent_content = "Parent content"
    page = create_page(available_from=datetime.date(1988, 1, 1), content=parent_content)
    children_content = "Children content"
    create_page(content=children_content, parent=page)  # Create invisible children

    assert page.list_children_on_page == False
    check_children_content(request, page, children_content, False)

    page.list_children_on_page = True
    page.save()
    check_children_content(request, page, children_content, False)
Esempio n. 6
0
def test_invisible_children(rf):
    get_default_shop()
    request = apply_request_middleware(rf.get("/"))

    parent_content = "Parent content"
    page = create_page(available_from=datetime.date(1988, 1, 1), content=parent_content)
    children_content = "Children content"
    create_page(content=children_content, parent=page)  # Create invisible children

    assert page.list_children_on_page == False
    check_children_content(request, page, children_content, False)

    page.list_children_on_page = True
    page.save()
    check_children_content(request, page, children_content, False)
def test_page_delete(rf, admin_user):
    request = apply_request_middleware(rf.post("/"), user=admin_user)

    page = create_page(url="bacon", shop=get_default_shop())
    assert Page.objects.filter(pk=page.pk).not_deleted().exists() is True

    delete_view = PageDeleteView.as_view()
    response = delete_view(request, **{"pk": page.pk})
    assert response.status_code == 302
    assert response.url == reverse("shuup_admin:simple_cms.page.list")

    assert Page.objects.filter(pk=page.pk).not_deleted().exists() is False

    page_two = create_page(url="bacon", shop=get_default_shop())
    assert Page.objects.filter(pk=page_two.pk).exists()
Esempio n. 8
0
def test_page_permission_group(rf):
    shop = get_default_shop()
    page = create_page(available_from=datetime.date(1988, 1, 1), shop=shop)
    permitted_group = Group.objects.create(name="Permitted")
    page.available_permission_groups.add(permitted_group)
    view_func = PageView.as_view()

    # not available for anonymous
    request = apply_request_middleware(rf.get("/"))
    with pytest.raises(Http404):
        response = view_func(request, url=page.url)

    # not available for wrong user group
    user = create_random_user()
    request = apply_request_middleware(rf.get("/"), user=user)
    with pytest.raises(Http404):
        response = view_func(request, url=page.url)

    # available for correct user group
    user.groups.add(permitted_group)
    request = apply_request_middleware(rf.get("/"), user=user)
    response = view_func(request, url=page.url)
    assert response.status_code == 200
    response.render()
    assert "<h1>Bacon ipsum" in response.rendered_content
Esempio n. 9
0
def test_superuser_can_see_invisible_page(rf, admin_user):
    page = create_page(shop=get_default_shop(), available_from=None)
    view_func = PageView.as_view()
    request = apply_request_middleware(rf.get("/"), user=admin_user)
    response = view_func(request, url=page.url)
    response.render()
    assert "<h1>Bacon ipsum" in response.rendered_content
Esempio n. 10
0
def test_none_dates_page_not_visible():
    # create page that is not anymore visible
    page = create_page(shop=get_default_shop(), available_from=None)

    assert not Page.objects.visible(
        get_default_shop()).filter(pk=page.pk).exists()
    assert not page.is_visible()
Esempio n. 11
0
def test_superuser_can_see_invisible_page(rf, admin_user):
    page = create_page(shop=get_default_shop(), available_from=None)
    view_func = PageView.as_view()
    request = apply_request_middleware(rf.get("/"), user=admin_user)
    response = view_func(request, url=page.url)
    response.render()
    assert "<h1>Bacon ipsum" in response.rendered_content
Esempio n. 12
0
def test_visible_page_has_right_content(rf):
    page = create_page(available_from=datetime.date(1988, 1, 1), shop=get_default_shop())
    view_func = PageView.as_view()
    request = apply_request_middleware(rf.get("/"))
    assert is_anonymous(request.user)
    response = view_func(request, url=page.url)
    response.render()
    assert "<h1>Bacon ipsum" in response.rendered_content
Esempio n. 13
0
def test_future_page_not_visible():
    today = now()
    page = create_page(
        available_from=(today + datetime.timedelta(days=1)),
        available_to=(today + datetime.timedelta(days=2)),
    )
    assert not Page.objects.visible().filter(pk=page.pk).exists()
    assert not page.is_visible()
Esempio n. 14
0
def test_visible_page_has_right_content(rf):
    page = create_page(available_from=datetime.date(1988, 1, 1), shop=get_default_shop())
    view_func = PageView.as_view()
    request = apply_request_middleware(rf.get("/"))
    assert request.user.is_anonymous()
    response = view_func(request, url=page.url)
    response.render()
    assert "<h1>Bacon ipsum" in response.rendered_content
Esempio n. 15
0
def test_anon_cant_see_invisible_page(rf):
    page = create_page()
    get_default_shop()
    view_func = PageView.as_view()
    request = apply_request_middleware(rf.get("/"))
    assert request.user.is_anonymous()
    with pytest.raises(Http404):
        response = view_func(request, url=page.url)
Esempio n. 16
0
def test_anon_cant_see_invisible_page(rf):
    page = create_page()
    get_default_shop()
    view_func = PageView.as_view()
    request = apply_request_middleware(rf.get("/"))
    assert request.user.is_anonymous()
    with pytest.raises(Http404):
        response = view_func(request, url=page.url)
Esempio n. 17
0
def test_superuser_can_see_invisible_page(rf, template_name):
    template_path = "shuup/simple_cms/" + template_name
    page = create_page(template_name=template_path, available_from=datetime.date(1988, 1, 1), shop=get_default_shop())
    view_func = PageView.as_view()
    request = apply_request_middleware(rf.get("/"))
    response = view_func(request, url=page.url)
    response.render()
    assert response.template_name[0] == template_path
Esempio n. 18
0
def test_suppliers_deleted(admin_user):
    page = create_page(url="bacon", shop=get_default_shop())

    with pytest.raises(NotImplementedError):
        page.delete()

    page.soft_delete(admin_user)
    assert page.deleted is True
Esempio n. 19
0
def test_visible_children(rf):
    shop = get_default_shop()
    request = apply_request_middleware(rf.get("/"))
    assert request.user.is_anonymous()

    parent_content = "Parent content"
    page = create_page(available_from=datetime.date(1988, 1, 1), content=parent_content, shop=shop)
    children_content = "Children content"
    # Visible child
    create_page(available_from=datetime.date(2000, 1, 1), content=children_content, parent=page, shop=shop)

    assert page.list_children_on_page == False
    check_children_content(request, page, children_content, False)

    page.list_children_on_page = True
    page.save()
    check_children_content(request, page, children_content, True)
Esempio n. 20
0
def test_past_page_not_visible():
    today = now()
    page = create_page(available_from=(today - datetime.timedelta(days=2)),
                       available_to=(today - datetime.timedelta(days=1)),
                       shop=get_default_shop())
    assert not Page.objects.visible(
        get_default_shop()).filter(pk=page.pk).exists()
    assert not page.is_visible()
Esempio n. 21
0
def test_suppliers_manager(admin_user):
    shop = get_default_shop()
    page = create_page(url="bacon", shop=get_default_shop())

    assert Page.objects.visible(shop).count() == 1
    assert Page.objects.visible(shop, user=admin_user).count() == 1
    page.soft_delete(admin_user)
    assert Page.objects.visible(shop).count() == 0
Esempio n. 22
0
def test_visible_children(rf):
    shop = get_default_shop()
    request = apply_request_middleware(rf.get("/"))
    assert is_anonymous(request.user)

    parent_content = "Parent content"
    page = create_page(available_from=datetime.date(1988, 1, 1),
                       content=parent_content,
                       shop=shop,
                       url="test")
    children_content = "Children content"
    # Visible child
    create_page(available_from=datetime.date(2000, 1, 1),
                content=children_content,
                parent=page,
                shop=shop)

    assert page.list_children_on_page == False
    check_children_content(request, page, children_content, False)

    page.list_children_on_page = True
    page.save()
    check_children_content(request, page, children_content, True)

    # check timestamps
    page.show_child_timestamps = True
    page.save()
    page.refresh_from_db()

    view = PageView.as_view()
    response = view(request=request, pk=page.pk, url="test")
    response.render()
    content = force_text(response.content)
    assert "Children content" in content
    assert "Jan 1, 2000, 12:00:00 AM" in content

    page.show_child_timestamps = False
    page.save()
    page.refresh_from_db()
    view = PageView.as_view()
    response = view(request=request, pk=page.pk, url="test")
    response.render()
    content = force_text(response.content)
    assert "Children content" in content
    assert "Jan 1, 2000, 12:00:00 AM" not in content
Esempio n. 23
0
def test_current_page_is_visible():
    today = now()
    page = create_page(available_from=today,
                       available_to=today,
                       shop=get_default_shop())

    assert Page.objects.visible(get_default_shop(),
                                today).filter(pk=page.pk).exists()
    assert page.is_visible(today)
Esempio n. 24
0
def test_render_page_title(rf):
    page = create_page(render_title=False, available_from=datetime.date(1988, 1, 1), shop=get_default_shop())
    view_func = PageView.as_view()
    request = apply_request_middleware(rf.get("/"))
    response = view_func(request, url=page.url)
    response.render()
    soup = BeautifulSoup(response.content)
    title = soup.find("h1", class_= "page-header").text
    assert title == "\n"
Esempio n. 25
0
def test_past_page_not_visible():
    today = now()
    page = create_page(
        available_from=(today - datetime.timedelta(days=2)),
        available_to=(today - datetime.timedelta(days=1)),
        shop=get_default_shop()
    )
    assert not Page.objects.visible(get_default_shop()).filter(pk=page.pk).exists()
    assert not page.is_visible()
Esempio n. 26
0
def test_page_without_visibility_end_is_visible():
    today = now()
    page = create_page(available_from=today,
                       available_to=None,
                       shop=get_default_shop())

    assert Page.objects.visible(get_default_shop(),
                                today).filter(pk=page.pk).exists()
    assert page.is_visible(today)
Esempio n. 27
0
def test_render_page_title(rf):
    page = create_page(render_title=False, available_from=datetime.date(1988, 1, 1), shop=get_default_shop())
    view_func = PageView.as_view()
    request = apply_request_middleware(rf.get("/"))
    response = view_func(request, url=page.url)
    response.render()
    soup = BeautifulSoup(response.content)
    title = soup.find("h1", class_="page-header").text
    assert title == "\n"
def test_edit_page_in_admin_toolbar(rf, admin_user):
    shop = get_default_shop()  # test
    shop.staff_members.add(admin_user)
    model = create_page(shop=shop)
    view = PageView.as_view()
    request = apply_request_middleware(rf.get("/"), user=admin_user)
    response = view(request, url=model.url)
    response.render()
    content = (response.content)
    soup = BeautifulSoup(content)
    check_url(soup, model)
Esempio n. 29
0
def test_edit_page_in_admin_toolbar(rf, admin_user):
    shop = get_default_shop()  # test 
    shop.staff_members.add(admin_user)
    model = create_page(shop=shop)
    view = PageView.as_view()
    request = apply_request_middleware(rf.get("/"), user=admin_user)
    response = view(request, url=model.url)
    response.render()
    content = (response.content)
    soup = BeautifulSoup(content)
    check_url(soup, model)
Esempio n. 30
0
def test_owner_can_see_invisible_page(rf):
    user = create_random_user()
    page = create_page(shop=get_default_shop(), available_from=None)
    view_func = PageView.as_view()
    request = apply_request_middleware(rf.get("/"), user=user)
    with pytest.raises(Http404):
        response = view_func(request, url=page.url)

    page.created_by = user
    page.save()
    response = view_func(request, url=page.url)
    response.render()
    assert "<h1>Bacon ipsum" in response.rendered_content
Esempio n. 31
0
def test_owner_can_see_invisible_page(rf):
    user = create_random_user()
    page = create_page(shop=get_default_shop(), available_from=None)
    view_func = PageView.as_view()
    request = apply_request_middleware(rf.get("/"), user=user)
    with pytest.raises(Http404):
        response = view_func(request, url=page.url)

    page.created_by = user
    page.save()
    response = view_func(request, url=page.url)
    response.render()
    assert "<h1>Bacon ipsum" in response.rendered_content
Esempio n. 32
0
def test_ensure_deleted_inlist(rf, admin_user):
    page = create_page(url="bacon", shop=get_default_shop())

    list_view = PageListView.as_view()
    request = apply_request_middleware(rf.get("/", {"jq": json.dumps({"perPage": 100, "page": 1})}), user=admin_user)

    response = list_view(request)
    data = json.loads(response.content.decode("utf-8"))
    assert data["pagination"]["nItems"] == 1

    page.soft_delete()
    response = list_view(request)
    data = json.loads(response.content.decode("utf-8"))
    assert data["pagination"]["nItems"] == 0
Esempio n. 33
0
def test_slide_admin_form(rf, admin_user):
    translation.activate("en")
    shop = get_default_shop()
    category = get_default_category()
    assert category.shops.first() == shop
    page = create_page(**{"url": "test", "shop": shop})
    assert page.shop == shop

    test_carousel = Carousel.objects.create(name="test")
    request = apply_request_middleware(rf.get("/"))
    request.user = admin_user
    request.shop = shop
    slide_form = SlideForm(
        carousel=test_carousel,
        languages=settings.LANGUAGES,
        default_language=settings.PARLER_DEFAULT_LANGUAGE_CODE,
        request=request,
    )

    soup = BeautifulSoup(slide_form.as_table())
    options = soup.find(id="id_category_link").find_all("option")
    assert len(options) == 2
    assert options[0]["value"] == ""
    assert options[1]["value"] == "%s" % category.pk

    options = soup.find(id="id_cms_page_link").find_all("option")
    assert len(options) == 2
    assert options[0]["value"] == ""
    assert options[1]["value"] == "%s" % page.pk

    new_shop = get_shop(identifier="second-shop")
    category.shops.set([new_shop])
    page.shop = new_shop
    page.save()

    slide_form = SlideForm(
        carousel=test_carousel,
        languages=settings.LANGUAGES,
        default_language=settings.PARLER_DEFAULT_LANGUAGE_CODE,
        request=request,
    )

    soup = BeautifulSoup(slide_form.as_table())
    options = soup.find(id="id_category_link").find_all("option")
    assert len(options) == 1
    assert options[0]["value"] == ""

    options = soup.find(id="id_cms_page_link").find_all("option")
    assert len(options) == 1
    assert options[0]["value"] == ""
Esempio n. 34
0
def test_slide_links():
    test_carousel = Carousel.objects.create(name="test")
    test_image_1 = Image.objects.create(original_filename="slide1.jpg")
    with translation.override("en"):
        test_slide = Slide.objects.create(carousel=test_carousel,
                                          name="test",
                                          image=test_image_1)

    # Test external link
    assert len(test_carousel.slides.all()) == 1
    test_link = "http://example.com"
    test_slide.external_link = test_link
    test_slide.save()
    assert test_slide.get_translated_field("external_link") == test_link
    assert test_slide.get_link_url() == test_link

    # Test Product url and link priorities
    test_product = get_default_product()
    test_slide.product_link = test_product
    test_slide.save()
    assert test_slide.get_link_url() == test_link
    test_slide.external_link = None
    test_slide.save()
    assert test_slide.get_link_url().startswith("/p/")  # Close enough...

    # Test Category url and link priorities
    test_category = get_default_category()
    test_slide.category_link = test_category
    test_slide.save()
    assert test_slide.get_link_url().startswith("/p/")  # Close enough...
    test_slide.product_link = None
    test_slide.save()
    assert test_slide.get_link_url().startswith("/c/")  # Close enough...

    # Test CMS page url and link priorities
    attrs = {"url": "test"}
    test_page = create_page(**attrs)
    test_slide.cms_page_link = test_page
    test_slide.save()
    assert test_slide.get_link_url().startswith("/c/")  # Close enough...
    test_slide.category_link = None
    test_slide.save()
    assert test_slide.get_link_url().startswith("/test/")

    # Check that external link overrides everything
    test_slide.external_link = test_link
    test_slide.save()
    assert test_slide.get_link_url() == test_link
Esempio n. 35
0
def test_page_different_shops(rf):
    shop1 = get_shop(status=ShopStatus.ENABLED, identifier="shop-1", name="Shop 1", domain="shop1")
    shop2 = get_shop(status=ShopStatus.ENABLED, identifier="shop-2", name="Shop 2", domain="shop2")

    # dreate page only for shop2
    page = create_page(available_from=datetime.date(1988, 1, 1), shop=shop2)
    view_func = PageView.as_view()

    request = apply_request_middleware(rf.get("/", HTTP_HOST=shop1.domain))
    with pytest.raises(Http404):
        response = view_func(request, url=page.url)

    request = apply_request_middleware(rf.get("/", HTTP_HOST=shop2.domain))
    response = view_func(request, url=page.url)
    assert response.status_code == 200
    response.render()
    assert "<h1>Bacon ipsum" in response.rendered_content
Esempio n. 36
0
def test_page_different_shops(rf):
    shop1 = get_shop(status=ShopStatus.ENABLED, identifier="shop-1", name="Shop 1", domain="shop1")
    shop2 = get_shop(status=ShopStatus.ENABLED, identifier="shop-2", name="Shop 2", domain="shop2")

    # dreate page only for shop2
    page = create_page(available_from=datetime.date(1988, 1, 1), shop=shop2)
    view_func = PageView.as_view()

    request = apply_request_middleware(rf.get("/", HTTP_HOST=shop1.domain))
    with pytest.raises(Http404):
        response = view_func(request, url=page.url)

    request = apply_request_middleware(rf.get("/", HTTP_HOST=shop2.domain))
    response = view_func(request, url=page.url)
    assert response.status_code == 200
    response.render()
    assert "<h1>Bacon ipsum" in response.rendered_content
Esempio n. 37
0
def test_slide_links():
    test_carousel = Carousel.objects.create(name="test")
    test_image_1 = Image.objects.create(original_filename="slide1.jpg")
    with translation.override("en"):
        test_slide = Slide.objects.create(carousel=test_carousel, name="test", image=test_image_1)

    # Test external link
    assert len(test_carousel.slides.all()) == 1
    test_link = "http://example.com"
    test_slide.external_link = test_link
    test_slide.save()
    assert test_slide.get_translated_field("external_link") == test_link
    assert test_slide.get_link_url() == test_link

    # Test Product url and link priorities
    test_product = get_default_product()
    test_slide.product_link = test_product
    test_slide.save()
    assert test_slide.get_link_url() == test_link
    test_slide.external_link = None
    test_slide.save()
    assert test_slide.get_link_url().startswith("/p/")  # Close enough...

    # Test Category url and link priorities
    test_category = get_default_category()
    test_slide.category_link = test_category
    test_slide.save()
    assert test_slide.get_link_url().startswith("/p/")  # Close enough...
    test_slide.product_link = None
    test_slide.save()
    assert test_slide.get_link_url().startswith("/c/")  # Close enough...

    # Test CMS page url and link priorities
    attrs = {"url": "test", "shop": get_default_shop()}
    test_page = create_page(**attrs)
    test_slide.cms_page_link = test_page
    test_slide.save()
    assert test_slide.get_link_url().startswith("/c/")  # Close enough...
    test_slide.category_link = None
    test_slide.save()
    assert test_slide.get_link_url().startswith("/test/")

    # Check that external link overrides everything
    test_slide.external_link = test_link
    test_slide.save()
    assert test_slide.get_link_url() == test_link
Esempio n. 38
0
def test_slide_admin_form(rf, admin_user):
    translation.activate("en")
    shop = get_default_shop()
    category = get_default_category()
    assert category.shops.first() == shop
    page = create_page(**{"url": "test", "shop": shop})
    assert page.shop == shop

    test_carousel = Carousel.objects.create(name="test")
    request = apply_request_middleware(rf.get("/"))
    request.user = admin_user
    request.shop = shop
    slide_form = SlideForm(
        carousel=test_carousel,
        languages=settings.LANGUAGES,
        default_language=settings.PARLER_DEFAULT_LANGUAGE_CODE,
        request=request)

    soup = BeautifulSoup(slide_form.as_table())
    options = soup.find(id="id_category_link").find_all("option")
    assert len(options) == 2
    assert options[0]["value"] == ""
    assert options[1]["value"] == "%s" % category.pk

    options = soup.find(id="id_cms_page_link").find_all("option")
    assert len(options) == 2
    assert options[0]["value"] == ""
    assert options[1]["value"] == "%s" % page.pk

    new_shop = get_shop(identifier="second-shop")
    category.shops = [new_shop]
    page.shop = new_shop
    page.save()

    soup = BeautifulSoup(slide_form.as_table())
    options = soup.find(id="id_category_link").find_all("option")
    assert len(options) == 1
    assert options[0]["value"] == ""

    options = soup.find(id="id_cms_page_link").find_all("option")
    assert len(options) == 1
    assert options[0]["value"] == ""
Esempio n. 39
0
def test_page_without_visibility_end_is_visible():
    today = now()
    page = create_page(available_from=today, available_to=None)

    assert Page.objects.visible(today).filter(pk=page.pk).exists()
    assert page.is_visible(today)
Esempio n. 40
0
def test_current_page_is_visible():
    today = now()
    page = create_page(available_from=today, available_to=today)

    assert Page.objects.visible(today).filter(pk=page.pk).exists()
    assert page.is_visible(today)
Esempio n. 41
0
def test_none_dates_page_not_visible():
    # create page that is not anymore visible
    page = create_page()

    assert not Page.objects.visible().filter(pk=page.pk).exists()
    assert not page.is_visible()
Esempio n. 42
0
def test_page_form(rf):
    view = PageEditView(request=rf.get("/"))
    form_class = view.get_form_class()
    form_kwargs = view.get_form_kwargs()
    form = form_class(**form_kwargs)
    assert not form.is_bound

    data = get_form_data(form)
    data.update({
        "available_from": "",
        "available_to": "",
        "content__en": "",
        "content__fi": "suomi",
        "content__ja": "",
        "identifier": "",
        "title__en": "",
        "title__fi": "",
        "title__ja": "",
        "url__en": "",
        "url__fi": "suomi",
        "url__ja": "",
    })

    form = form_class(**dict(form_kwargs, data=data))
    form.full_clean()
    assert "title__fi" in form.errors  # We get an error because all of a given language's fields must be filled if any are
    data["title__fi"] = "suomi"
    form = form_class(**dict(form_kwargs, data=data))
    form.full_clean()
    assert not form.errors
    page = form.save()
    assert set(page.get_available_languages()) == {"fi"}  # The page should be only in Finnish
    # Let's edit that page
    original_url = "errrnglish"
    data.update({"title__en": "englaish", "url__en": original_url, "content__en": "ennnn ennnn ennnnnnn-nn-n-n"})
    form = form_class(**dict(form_kwargs, data=data, instance=page))
    form.full_clean()
    assert not form.errors
    page = form.save()
    assert set(page.get_available_languages()) == {"fi", "en"}  # English GET

    # Try to make page a child of itself
    data.update({"parent": page.pk})
    form = form_class(**dict(form_kwargs, data=data, instance=page))
    form.full_clean()
    assert form.errors
    del data["parent"]

    # add dummy page with simple url, page is in english
    dummy = create_page(url="test")

    # edit page again and try to set duplicate url
    data.update({"title__en": "englaish", "url__en": "test", "content__en": "ennnn ennnn ennnnnnn-nn-n-n"})
    form = form_class(**dict(form_kwargs, data=data, instance=page))
    form.full_clean()

    assert len(form.errors) == 1
    assert "url__en" in form.errors
    assert form.errors["url__en"].as_data()[0].code == "invalid_url"

    # it should be possible to change back to the original url
    data.update({"title__en": "englaish", "url__en": original_url, "content__en": "ennnn ennnn ennnnnnn-nn-n-n"})
    form = form_class(**dict(form_kwargs, data=data, instance=page))
    form.full_clean()
    assert not form.errors
    page = form.save()

    # add finnish urls, it should not be possible to enter original url
    data.update({"title__fi": "englaish", "url__fi": original_url, "content__fi": "ennnn ennnn ennnnnnn-nn-n-n"})
    form = form_class(**dict(form_kwargs, data=data, instance=page))
    form.full_clean()
    assert len(form.errors) == 1
    assert "url__fi" in form.errors
    assert form.errors["url__fi"].as_data()[0].code == "invalid_url"
Esempio n. 43
0
def test_page_form(rf, admin_user):
    shop = get_default_shop()
    request = rf.get("/")
    request.user = admin_user
    request.shop = shop
    view = PageEditView(request=request)
    form_class = PageForm
    form = form_class(**dict(request=request, languages=settings.LANGUAGES))
    assert not form.is_bound

    data = get_form_data(form)
    data.update({
        "available_from": "",
        "available_to": "",
        "content__en": "",
        "content__fi": "suomi",
        "content__ja": "",
        "identifier": "",
        "title__en": "",
        "title__fi": "",
        "title__ja": "",
        "url__en": "",
        "url__fi": "suomi",
        "url__ja": "",
    })

    form = form_class(
        **dict(request=request, languages=settings.LANGUAGES, data=data))
    form.full_clean()
    assert (
        "title__fi" in form.errors
    )  # We get an error because all of a given language's fields must be filled if any are
    data["title__fi"] = "suomi"
    form = form_class(
        **dict(request=request, languages=settings.LANGUAGES, data=data))
    form.full_clean()
    assert not form.errors
    page = form.save()
    assert set(page.get_available_languages()) == {
        "fi"
    }  # The page should be only in Finnish
    # Let's edit that page
    original_url = "errrnglish"
    data.update({
        "title__en": "englaish",
        "url__en": original_url,
        "content__en": "ennnn ennnn ennnnnnn-nn-n-n"
    })
    form = form_class(**dict(request=request,
                             languages=settings.LANGUAGES,
                             data=data,
                             instance=page))
    form.full_clean()
    assert not form.errors
    page = form.save()
    assert set(page.get_available_languages()) == {"fi", "en"}  # English GET

    # Try to make page a child of itself
    data.update({"parent": page.pk})
    form = form_class(**dict(request=request,
                             languages=settings.LANGUAGES,
                             data=data,
                             instance=page))
    form.full_clean()
    assert form.errors
    del data["parent"]

    # add dummy page with simple url, page is in english
    dummy = create_page(url="test", shop=get_default_shop())

    # edit page again and try to set duplicate url
    data.update({
        "title__en": "englaish",
        "url__en": "test",
        "content__en": "ennnn ennnn ennnnnnn-nn-n-n"
    })
    form = form_class(**dict(request=request,
                             languages=settings.LANGUAGES,
                             data=data,
                             instance=page))
    form.full_clean()

    assert len(form.errors) == 1
    assert "url__en" in form.errors
    assert form.errors["url__en"].as_data()[0].code == "invalid_url"

    # it should be possible to change back to the original url
    data.update({
        "title__en": "englaish",
        "url__en": original_url,
        "content__en": "ennnn ennnn ennnnnnn-nn-n-n"
    })
    form = form_class(**dict(request=request,
                             languages=settings.LANGUAGES,
                             data=data,
                             instance=page))
    form.full_clean()
    assert not form.errors
    page = form.save()

    # add finnish urls, it should not be possible to enter original url
    data.update({
        "title__fi": "englaish",
        "url__fi": original_url,
        "content__fi": "ennnn ennnn ennnnnnn-nn-n-n"
    })

    assert data["url__fi"] == data[
        "url__en"]  # both urls are same, should raise two errors

    form = form_class(**dict(request=request,
                             languages=settings.LANGUAGES,
                             data=data,
                             instance=page))
    form.full_clean()
    assert len(form.errors) == 1
    assert "url__fi" in form.errors
    error_data = form.errors["url__fi"].as_data()
    assert error_data[0].code == "invalid_url"
    assert error_data[1].code == "invalid_unique_url"
    page.soft_delete()

    data["url__fi"] = "suomi"
    form = form_class(
        **dict(request=request, languages=settings.LANGUAGES, data=data))
    form.full_clean()
    assert len(form.errors) == 0
    page = form.save()
Esempio n. 44
0
def test_page_form(rf):
    view = PageEditView(request=rf.get("/"))
    form_class = view.get_form_class()
    form_kwargs = view.get_form_kwargs()
    form = form_class(**form_kwargs)
    assert not form.is_bound

    data = get_form_data(form)
    data.update({
        "available_from": "",
        "available_to": "",
        "content__en": "",
        "content__fi": "suomi",
        "content__ja": "",
        "identifier": "",
        "title__en": "",
        "title__fi": "",
        "title__ja": "",
        "url__en": "",
        "url__fi": "suomi",
        "url__ja": "",
    })

    form = form_class(**dict(form_kwargs, data=data))
    form.full_clean()
    assert "title__fi" in form.errors  # We get an error because all of a given language's fields must be filled if any are
    data["title__fi"] = "suomi"
    form = form_class(**dict(form_kwargs, data=data))
    form.full_clean()
    assert not form.errors
    page = form.save()
    assert set(page.get_available_languages()) == {"fi"}  # The page should be only in Finnish
    # Let's edit that page
    original_url = "errrnglish"
    data.update({"title__en": "englaish", "url__en": original_url, "content__en": "ennnn ennnn ennnnnnn-nn-n-n"})
    form = form_class(**dict(form_kwargs, data=data, instance=page))
    form.full_clean()
    assert not form.errors
    page = form.save()
    assert set(page.get_available_languages()) == {"fi", "en"}  # English GET

    # add dummy page with simple url, page is in english
    dummy = create_page(url="test")

    # edit page again and try to set duplicate url
    data.update({"title__en": "englaish", "url__en": "test", "content__en": "ennnn ennnn ennnnnnn-nn-n-n"})
    form = form_class(**dict(form_kwargs, data=data, instance=page))
    form.full_clean()

    assert len(form.errors) == 1
    assert "url__en" in form.errors
    assert form.errors["url__en"].as_data()[0].code == "invalid_url"

    # it should be possible to change back to the original url
    data.update({"title__en": "englaish", "url__en": original_url, "content__en": "ennnn ennnn ennnnnnn-nn-n-n"})
    form = form_class(**dict(form_kwargs, data=data, instance=page))
    form.full_clean()
    assert not form.errors
    page = form.save()

    # add finnish urls, it should not be possible to enter original url
    data.update({"title__fi": "englaish", "url__fi": original_url, "content__fi": "ennnn ennnn ennnnnnn-nn-n-n"})
    form = form_class(**dict(form_kwargs, data=data, instance=page))
    form.full_clean()
    assert len(form.errors) == 1
    assert "url__fi" in form.errors
    assert form.errors["url__fi"].as_data()[0].code == "invalid_url"
Esempio n. 45
0
def test_none_dates_page_not_visible():
    # create page that is not anymore visible
    page = create_page(shop=get_default_shop(), available_from=None)

    assert not Page.objects.visible(get_default_shop()).filter(pk=page.pk).exists()
    assert not page.is_visible()