Exemplo 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())
Exemplo n.º 2
0
def test_invisible_children(rf):
    shop = 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, shop=shop)
    children_content = "Children content"
    create_page(content=children_content, parent=page, shop=shop, available_from=None)  # 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)
Exemplo n.º 3
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
Exemplo n.º 4
0
def test_anon_cant_see_invisible_page(rf):
    page = create_page(shop=get_default_shop(), available_from=None)
    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)
Exemplo n.º 5
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
Exemplo n.º 6
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
Exemplo n.º 7
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
Exemplo n.º 8
0
def test_superuser_can_see_invisible_page(rf, template_name):
    template_path = 'E-Commerce/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
Exemplo n.º 9
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"
Exemplo n.º 10
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)),
        shop=get_default_shop()
    )
    assert not Page.objects.visible(get_default_shop()).filter(pk=page.pk).exists()
    assert not page.is_visible()
Exemplo n.º 11
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)
Exemplo n.º 12
0
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("E-Commerce_admin:simple_cms.page.list")

    assert Page.objects.filter(pk=page.pk).not_deleted().exists() is False
Exemplo n.º 13
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
Exemplo n.º 14
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, 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
	def test_create_page__valid_template_and_data__valid_populated_html(self):
		# Arrange
		template_filename = os.path.join("..", "template", "template.html")
		template = read_template(template_filename)
		data_filename = os.path.join("..", "data", "nc_state_fair_vendor_data.csv")
		data = read_csv_file(data_filename)
		print("test_create_page__valid_template_and_data__valid_populated_html")

		# Act
		result = create_page(template, data)

		# Assert
		self.assertTrue("<html>" in result)
		self.assertTrue("Davis Concessions" in result)
Exemplo n.º 16
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
Exemplo n.º 17
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
Exemplo n.º 18
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()
Exemplo n.º 19
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"
Exemplo n.º 20
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)
Exemplo n.º 21
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)