Files
notifications-admin/tests/app/main/forms/test_placeholder_form.py

88 lines
2.8 KiB
Python

import pytest
from app.main.forms import get_placeholder_form_instance
def test_form_class_not_mutated(notify_admin):
with notify_admin.test_request_context(
method="POST", data={"placeholder_value": ""}
):
form1 = get_placeholder_form_instance("name", {}, "sms")
form2 = get_placeholder_form_instance("city", {}, "sms")
assert not form1.validate_on_submit()
assert not form2.validate_on_submit()
assert (
str(form1.placeholder_value.label)
== '<label for="placeholder_value">name</label>'
)
assert (
str(form2.placeholder_value.label)
== '<label for="placeholder_value">city</label>'
)
@pytest.mark.parametrize(
(
"service_can_send_international_sms",
"placeholder_name",
"template_type",
"value",
"expected_error",
),
[
(False, "email address", "email", "", "Cannot be empty"),
(False, "email address", "email", "12345", "Enter a valid email address"),
(
False,
"email address",
"email",
"“bad”@email-address.com",
"Enter a valid email address",
),
(False, "email address", "email", "test@example.com", None),
(False, "email address", "email", "test@example.gsa.gov", None),
(False, "phone number", "sms", "", "Cannot be empty"),
(False, "phone number", "sms", "+(44) 7700-900 855", "Not a US number"),
(False, "phone number", "sms", "2028675309", None),
(False, "phone number", "sms", "+1 (202) 867-5309", None),
(True, "phone number", "sms", "+123", "Not enough digits"),
(True, "phone number", "sms", "+1-2345-678890", None),
(False, "anything else", "sms", "", "Cannot be empty"),
(False, "anything else", "email", "", "Cannot be empty"),
(
True,
"phone number",
"sms",
"invalid",
"The string supplied did not seem to be a phone number.",
),
(True, "phone number", "email", "invalid", None),
(True, "email address", "sms", "invalid", None),
],
)
def test_validates_recipients(
notify_admin,
placeholder_name,
template_type,
value,
service_can_send_international_sms,
expected_error,
):
with notify_admin.test_request_context(
method="POST", data={"placeholder_value": value}
):
form = get_placeholder_form_instance(
placeholder_name,
{},
template_type,
allow_international_phone_numbers=service_can_send_international_sms,
)
if expected_error:
assert not form.validate_on_submit()
assert form.placeholder_value.errors[0] == expected_error
else:
assert form.validate_on_submit()