diff --git a/tests/app/main/views/test_templates.py b/tests/app/main/views/test_templates.py index 9c1953a65..06b18e005 100644 --- a/tests/app/main/views/test_templates.py +++ b/tests/app/main/views/test_templates.py @@ -1745,92 +1745,92 @@ def test_can_create_email_template_with_emoji( assert mock_create_service_template.called is True -# @pytest.mark.parametrize( -# ("template_type", "expected_error"), -# [ -# ( -# "sms", -# ( -# "Please remove the unaccepted character 🍜 in your message, then save again" -# ), -# ), -# ], -# ) -# def test_should_not_create_sms_template_with_emoji( -# client_request, -# service_one, -# mock_create_service_template, -# template_type, -# expected_error, -# ): -# service_one["permissions"] += [template_type] -# page = client_request.post( -# ".add_service_template", -# service_id=SERVICE_ONE_ID, -# template_type=template_type, -# _data={ -# "name": "new name", -# "template_content": "here are some noodles 🍜", -# "template_type": "sms", -# "service": SERVICE_ONE_ID, -# "process_type": "normal", -# }, -# _expected_status=200, -# ) -# # print(page.main.prettify()) -# assert expected_error in normalize_spaces( -# page.select_one("#template_content-error").text -# ) -# assert mock_create_service_template.called is False +@pytest.mark.parametrize( + ("template_type", "expected_error"), + [ + ( + "sms", + ( + "Please remove the unaccepted character 🍜 in your message, then save again" + ), + ), + ], +) +def test_should_not_create_sms_template_with_emoji( + client_request, + service_one, + mock_create_service_template, + template_type, + expected_error, +): + service_one["permissions"] += [template_type] + page = client_request.post( + ".add_service_template", + service_id=SERVICE_ONE_ID, + template_type=template_type, + _data={ + "name": "new name", + "template_content": "here are some noodles 🍜", + "template_type": "sms", + "service": SERVICE_ONE_ID, + "process_type": "normal", + }, + _expected_status=200, + ) + # print(page.main.prettify()) + assert expected_error in normalize_spaces( + page.select_one("#template_content-error").text + ) + assert mock_create_service_template.called is False -# @pytest.mark.asyncio -# @pytest.mark.parametrize( -# ("template_type", "expected_error"), -# [ -# ( -# "sms", -# ( -# "Please remove the unaccepted character 🍔 in your message, then save again" -# ), -# ), -# ], -# ) -# async def test_should_not_update_sms_template_with_emoji( -# mocker, -# client_request, -# service_one, -# mock_get_service_template, -# mock_update_service_template, -# fake_uuid, -# template_type, -# expected_error, -# ): -# service_one["permissions"] += [template_type] -# return mocker.patch( -# "app.service_api_client.get_service_template", -# return_value=template_json( -# SERVICE_ONE_ID, -# fake_uuid, -# type_=template_type, -# ), -# ) -# page = client_request.post( -# ".edit_service_template", -# service_id=SERVICE_ONE_ID, -# template_id=fake_uuid, -# _data={ -# "id": fake_uuid, -# "name": "new name", -# "template_content": "here's a burger 🍔", -# "service": SERVICE_ONE_ID, -# "template_type": template_type, -# "process_type": "normal", -# }, -# _expected_status=200, -# ) -# assert expected_error in page.text -# assert mock_update_service_template.called is False +@pytest.mark.asyncio +@pytest.mark.parametrize( + ("template_type", "expected_error"), + [ + ( + "sms", + ( + "Please remove the unaccepted character 🍔 in your message, then save again" + ), + ), + ], +) +async def test_should_not_update_sms_template_with_emoji( + mocker, + client_request, + service_one, + mock_get_service_template, + mock_update_service_template, + fake_uuid, + template_type, + expected_error, +): + service_one["permissions"] += [template_type] + return mocker.patch( + "app.service_api_client.get_service_template", + return_value=template_json( + SERVICE_ONE_ID, + fake_uuid, + type_=template_type, + ), + ) + page = client_request.post( + ".edit_service_template", + service_id=SERVICE_ONE_ID, + template_id=fake_uuid, + _data={ + "id": fake_uuid, + "name": "new name", + "template_content": "here's a burger 🍔", + "service": SERVICE_ONE_ID, + "template_type": template_type, + "process_type": "normal", + }, + _expected_status=200, + ) + assert expected_error in page.text + assert mock_update_service_template.called is False @pytest.mark.parametrize( diff --git a/tests/end_to_end/test_create_new_template.py b/tests/end_to_end/test_create_new_template.py index 916b531fd..3a2cc5e7a 100644 --- a/tests/end_to_end/test_create_new_template.py +++ b/tests/end_to_end/test_create_new_template.py @@ -1,4 +1,5 @@ # import datetime +import datetime import os import re import uuid @@ -98,85 +99,84 @@ async def create_new_template(page): assert "Test message for e2e test" in page.content() -# @pytest.mark.asyncio -# async def test_create_new_template(end_to_end_context): -# page = end_to_end_context.new_page() -# page.goto(f"{E2E_TEST_URI}/sign-in") -# # Wait for the next page to fully load. -# page.wait_for_load_state("domcontentloaded") -# check_axe_report(page) +async def test_create_new_template(end_to_end_context): + page = end_to_end_context.new_page() + page.goto(f"{E2E_TEST_URI}/sign-in") + # Wait for the next page to fully load. + page.wait_for_load_state("domcontentloaded") + check_axe_report(page) -# current_date_time = datetime.datetime.now() -# new_service_name = "E2E Federal Test Service {now} - {browser_type}".format( -# now=current_date_time.strftime("%m/%d/%Y %H:%M:%S"), -# browser_type=page.context.browser.browser_type.name, -# ) -# page.goto(f"{E2E_TEST_URI}/accounts") + current_date_time = datetime.datetime.now() + new_service_name = "E2E Federal Test Service {now} - {browser_type}".format( + now=current_date_time.strftime("%m/%d/%Y %H:%M:%S"), + browser_type=page.context.browser.browser_type.name, + ) + page.goto(f"{E2E_TEST_URI}/accounts") -# # Check to make sure that we've arrived at the next page. -# page.wait_for_load_state("domcontentloaded") -# check_axe_report(page) + # Check to make sure that we've arrived at the next page. + page.wait_for_load_state("domcontentloaded") + check_axe_report(page) -# # Check to make sure that we've arrived at the next page. -# # Check the page title exists and matches what we expect. -# expect(page).to_have_title(re.compile("Choose service")) + # Check to make sure that we've arrived at the next page. + # Check the page title exists and matches what we expect. + expect(page).to_have_title(re.compile("Choose service")) -# # Check for the sign in heading. -# sign_in_heading = page.get_by_role("heading", name="Choose service") -# expect(sign_in_heading).to_be_visible() + # Check for the sign in heading. + sign_in_heading = page.get_by_role("heading", name="Choose service") + expect(sign_in_heading).to_be_visible() -# # Retrieve some prominent elements on the page for testing. -# add_service_button = page.get_by_role( -# "button", name=re.compile("Add a new service") -# ) + # Retrieve some prominent elements on the page for testing. + add_service_button = page.get_by_role( + "button", name=re.compile("Add a new service") + ) -# expect(add_service_button).to_be_visible() + expect(add_service_button).to_be_visible() -# existing_service_link = page.get_by_role("link", name=new_service_name) + existing_service_link = page.get_by_role("link", name=new_service_name) -# # Check to see if the service was already created - if so, we should fail. -# # TODO: Figure out how to make this truly isolated, and/or work in a -# # delete service workflow. -# expect(existing_service_link).to_have_count(0) + # Check to see if the service was already created - if so, we should fail. + # TODO: Figure out how to make this truly isolated, and/or work in a + # delete service workflow. + expect(existing_service_link).to_have_count(0) -# # Click on add a new service. -# add_service_button.click() + # Click on add a new service. + add_service_button.click() -# # Check to make sure that we've arrived at the next page. -# page.wait_for_load_state("domcontentloaded") -# check_axe_report(page) + # Check to make sure that we've arrived at the next page. + page.wait_for_load_state("domcontentloaded") + check_axe_report(page) -# # Check for the sign in heading. -# about_heading = page.get_by_role("heading", name="About your service") -# expect(about_heading).to_be_visible() + # Check for the sign in heading. + about_heading = page.get_by_role("heading", name="About your service") + expect(about_heading).to_be_visible() -# # Retrieve some prominent elements on the page for testing. -# service_name_input = page.locator('xpath=//input[@name="name"]') -# add_service_button = page.get_by_role("button", name=re.compile("Add service")) + # Retrieve some prominent elements on the page for testing. + service_name_input = page.locator('xpath=//input[@name="name"]') + add_service_button = page.get_by_role("button", name=re.compile("Add service")) -# expect(service_name_input).to_be_visible() -# expect(add_service_button).to_be_visible() + expect(service_name_input).to_be_visible() + expect(add_service_button).to_be_visible() -# # Fill in the form. -# service_name_input.fill(new_service_name) + # Fill in the form. + service_name_input.fill(new_service_name) -# # Click on add service. -# add_service_button.click() + # Click on add service. + add_service_button.click() -# # Check to make sure that we've arrived at the next page. -# page.wait_for_load_state("domcontentloaded") -# check_axe_report(page) + # Check to make sure that we've arrived at the next page. + page.wait_for_load_state("domcontentloaded") + check_axe_report(page) -# # TODO this fails on staging due to duplicate results on 'get_by_text' -# # Check for the service name title and heading. -# # service_heading = page.get_by_text(new_service_name, exact=True) -# # expect(service_heading).to_be_visible() + # TODO this fails on staging due to duplicate results on 'get_by_text' + # Check for the service name title and heading. + # service_heading = page.get_by_text(new_service_name, exact=True) + # expect(service_heading).to_be_visible() -# expect(page).to_have_title(re.compile(new_service_name)) + expect(page).to_have_title(re.compile(new_service_name)) -# create_new_template(page) + create_new_template(page) -# _teardown(page) + _teardown(page) def _teardown(page):