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 '