def test_page_form(rf, admin_user): with override_settings(LANGUAGES=[("en", "en")]): activate("en") shop = get_default_shop() gdpr_settings = GDPRSettings.get_for_shop(shop) gdpr_settings.enabled = True gdpr_settings.save() original_gdpr_page = ensure_gdpr_privacy_policy(shop) versions = Version.objects.get_for_object(original_gdpr_page) assert len(versions) == 1 # consent to this with user user = factories.create_random_user("en") create_user_consent_for_all_documents(shop, user) version = versions[0] assert GDPRUserConsentDocument.objects.filter( page=original_gdpr_page, version=version).exists() assert is_documents_consent_in_sync(shop, user) assert Page.objects.count() == 1 view = PageEditView.as_view() # load the page request = apply_request_middleware(rf.get("/"), user=admin_user) response = view(request, pk=original_gdpr_page.pk) assert 200 <= response.status_code < 300 # update the page post_data = { "content__en": "test_data", "available_from": "", "url__en": "test", "title__en": "defa", "available_to": "", "page_type": PageType.REVISIONED.value } request = apply_request_middleware(rf.post("/", post_data), user=admin_user) response = view(request, pk=original_gdpr_page.pk) assert response.status_code == 302 versions = Version.objects.get_for_object(original_gdpr_page) assert len(versions) == 4 # saved 4 times in total assert not is_documents_consent_in_sync(shop, user) create_user_consent_for_all_documents(shop, user) assert is_documents_consent_in_sync(shop, user)
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"
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"
def test_page_form(rf, admin_user): with override_settings(LANGUAGES=[("en", "en")]): activate("en") shop = get_default_shop() gdpr_settings = GDPRSettings.get_for_shop(shop) gdpr_settings.enabled = True gdpr_settings.save() original_gdpr_page = ensure_gdpr_privacy_policy(shop) versions = Version.objects.get_for_object(original_gdpr_page) assert len(versions) == 1 # consent to this with user user = factories.create_random_user("en") assert not GDPRUserConsent.objects.filter(shop=shop, user=user).exists() original_consent = create_user_consent_for_all_documents(shop, user) assert GDPRUserConsent.objects.filter(shop=shop, user=user).count() == 1 # create one outside the usual flow GDPRUserConsent.objects.create(user=user, shop=shop) assert GDPRUserConsent.objects.filter(shop=shop, user=user).count() == 2 # consent again new_consent = create_user_consent_for_all_documents(shop, user) assert GDPRUserConsent.objects.filter(shop=shop, user=user).count() == 1 assert original_consent.pk == new_consent.pk version = versions[0] assert GDPRUserConsentDocument.objects.filter( page=original_gdpr_page, version=version).exists() assert is_documents_consent_in_sync(shop, user) assert Page.objects.count() == 1 view = PageEditView.as_view() # load the page request = apply_request_middleware(rf.get("/"), user=admin_user) response = view(request, pk=original_gdpr_page.pk) assert 200 <= response.status_code < 300 # update the page post_data = { "base-content__en": "test_data", "base-available_from": "", "base-url__en": "test", "base-title__en": "defa", "base-available_to": "", } request = apply_request_middleware(rf.post("/", post_data), user=admin_user) response = view(request, pk=original_gdpr_page.pk) if hasattr(response, "render"): content = response.render() assert response.status_code in [200, 302] versions = Version.objects.get_for_object(original_gdpr_page) assert len(versions) == 4 # saved 4 times in total assert not is_documents_consent_in_sync(shop, user) create_user_consent_for_all_documents(shop, user) assert is_documents_consent_in_sync(shop, user)
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()
def test_page_form(rf, admin_user): with override_settings(LANGUAGES=[("en", "en")]): activate("en") shop = get_default_shop() gdpr_settings = GDPRSettings.get_for_shop(shop) gdpr_settings.enabled = True gdpr_settings.save() original_gdpr_page = ensure_gdpr_privacy_policy(shop) versions = Version.objects.get_for_object(original_gdpr_page) assert len(versions) == 1 # consent to this with user user = factories.create_random_user("en") assert not GDPRUserConsent.objects.filter(shop=shop, user=user).exists() original_consent = create_user_consent_for_all_documents(shop, user) assert GDPRUserConsent.objects.filter(shop=shop, user=user).count() == 1 # create one outside the usual flow GDPRUserConsent.objects.create(user=user, shop=shop) assert GDPRUserConsent.objects.filter(shop=shop, user=user).count() == 2 # consent again new_consent = create_user_consent_for_all_documents(shop, user) assert GDPRUserConsent.objects.filter(shop=shop, user=user).count() == 1 assert original_consent.pk == new_consent.pk version = versions[0] assert GDPRUserConsentDocument.objects.filter(page=original_gdpr_page, version=version).exists() assert is_documents_consent_in_sync(shop, user) assert Page.objects.count() == 1 view = PageEditView.as_view() # load the page request = apply_request_middleware(rf.get("/"), user=admin_user) response = view(request, pk=original_gdpr_page.pk) assert 200 <= response.status_code < 300 # update the page post_data = { "base-content__en": "test_data", "base-available_from": "", "base-url__en": "test", "base-title__en": "defa", "base-available_to": "", } request = apply_request_middleware(rf.post("/", post_data), user=admin_user) response = view(request, pk=original_gdpr_page.pk) if hasattr(response, "render"): content = response.render() assert response.status_code in [200, 302] versions = Version.objects.get_for_object(original_gdpr_page) assert len(versions) == 4 # saved 4 times in total assert not is_documents_consent_in_sync(shop, user) create_user_consent_for_all_documents(shop, user) assert is_documents_consent_in_sync(shop, user)