from unittest.mock import call, ANY, Mock import pytest from flask import url_for from bs4 import BeautifulSoup from werkzeug.exceptions import InternalServerError import app from app.utils import email_safe from tests import validate_route_permission, service_json def test_should_show_overview( logged_in_client, service_one, ): response = logged_in_client.get(url_for( 'main.service_settings', service_id=service_one['id'] )) assert response.status_code == 200 page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser') assert page.find('h1').text == 'Settings' for index, row in enumerate([ 'Service name service one Change', 'Email reply to address None Change', 'Text message sender 40604 Change' ]): assert row == " ".join(page.find_all('tr')[index + 1].text.split()) app.service_api_client.get_service.assert_called_with(service_one['id']) def test_should_show_overview_for_service_with_more_things_set( client, active_user_with_permissions, mocker, service_with_reply_to_addresses, mock_get_organisation, ): client.login(active_user_with_permissions, mocker, service_with_reply_to_addresses) response = client.get(url_for( 'main.service_settings', service_id=service_with_reply_to_addresses['id'] )) page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser') for index, row in enumerate([ 'Service name service one Change', 'Email reply to address test@example.com Change', 'Text message sender elevenchars Change' ]): assert row == " ".join(page.find_all('tr')[index + 1].text.split()) def test_if_cant_send_letters_then_cant_see_letter_contact_block( logged_in_client, service_one, ): response = logged_in_client.get(url_for( 'main.service_settings', service_id=service_one['id'] )) assert 'Letter contact block' not in response.get_data(as_text=True) def test_letter_contact_block_shows_None_if_not_set( logged_in_client, service_one, mocker ): service_one['can_send_letters'] = True response = logged_in_client.get(url_for( 'main.service_settings', service_id=service_one['id'] )) page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser') div = page.find_all('tr')[4].find_all('td')[1].div assert div.text.strip() == 'None' assert 'default' in div.attrs['class'][0] def test_escapes_letter_contact_block( logged_in_client, service_one, mocker, ): service_one['can_send_letters'] = True service_one['letter_contact_block'] = 'foo\nbar' response = logged_in_client.get(url_for( 'main.service_settings', service_id=service_one['id'] )) page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser') div = str(page.find_all('tr')[4].find_all('td')[1].div) assert 'foo
bar' in div assert '