Files
notifications-admin/tests/app/main/views/test_email_preview.py
Tom Byers 6b0d79ad72 Stop email preview showing brand name
This is a leftover from when email brands didn't
have a 'text' field.

It also adds some tests to check the brand name
is displaying correctly.
2018-08-15 13:52:17 +01:00

109 lines
3.9 KiB
Python

import re
import pytest
from bs4 import BeautifulSoup
from flask import url_for
@pytest.mark.parametrize(
"query_args, result", [
({}, True),
({'govuk_banner': 'false'}, 'false')
]
)
def test_renders(client, mocker, query_args, result):
mocker.patch('app.main.views.index.HTMLEmailTemplate.__str__', return_value='rendered')
response = client.get(url_for('main.email_template', **query_args))
assert response.status_code == 200
assert response.get_data(as_text=True) == 'rendered'
def test_displays_govuk_branding_by_default(client):
response = client.get(url_for('main.email_template'))
page = BeautifulSoup(response.data.decode("utf-8"), "html.parser")
assert response.status_code == 200
assert page.find("a", attrs={"href": "https://www.gov.uk"})
def test_displays_govuk_branding(client):
response = client.get(url_for('main.email_template', branding_type="govuk", branding_style="1"))
page = BeautifulSoup(response.data.decode("utf-8"), "html.parser")
assert response.status_code == 200
assert page.find("a", attrs={"href": "https://www.gov.uk"})
def test_displays_both_branding(client, mock_get_email_branding):
response = client.get(url_for('main.email_template', branding_type="both", branding_style="1"))
page = BeautifulSoup(response.data.decode("utf-8"), "html.parser")
assert response.status_code == 200
mock_get_email_branding.assert_called_once_with('1')
assert page.find("a", attrs={"href": "https://www.gov.uk"})
assert page.find("img", attrs={"src": re.compile("example.png$")})
assert page.select("body > table table > tr:nth-of-type(2) > td:nth-of-type(5)")[0]\
.get_text().strip() == 'Organisation text' # brand text is set
def test_displays_org_branding(client, mock_get_email_branding):
response = client.get(url_for('main.email_template', branding_type="org", branding_style="1"))
page = BeautifulSoup(response.data.decode("utf-8"), "html.parser")
assert response.status_code == 200
mock_get_email_branding.assert_called_once_with('1')
assert not page.find("a", attrs={"href": "https://www.gov.uk"})
assert page.find("img", attrs={"src": re.compile("example.png")})
assert not page.select("body > table > tr > td[bgcolor='#f00']") # banner colour is not set
assert page.select("body > table table > tr:nth-of-type(2) > td:nth-of-type(5)")[0]\
.get_text().strip() == 'Organisation text' # brand text is set
def test_displays_org_branding_with_banner(client, mock_get_email_branding):
response = client.get(url_for('main.email_template', branding_type="org_banner",
branding_style="1"))
page = BeautifulSoup(response.data.decode("utf-8"), "html.parser")
assert response.status_code == 200
mock_get_email_branding.assert_called_once_with('1')
assert not page.find("a", attrs={"href": "https://www.gov.uk"})
assert page.find("img", attrs={"src": re.compile("example.png")})
assert page.select("body > table > tr > td[bgcolor='#f00']") # banner colour is set
assert page.select("body > table table > tr > td > span")[0]\
.get_text().strip() == 'Organisation text' # brand text is set
def test_displays_org_branding_with_banner_without_brand_text(
client, mock_get_email_branding_without_brand_text):
response = client.get(url_for('main.email_template', branding_type="org_banner",
branding_style="1"))
page = BeautifulSoup(response.data.decode("utf-8"), "html.parser")
assert response.status_code == 200
mock_get_email_branding_without_brand_text.assert_called_once_with('1')
assert not page.find("a", attrs={"href": "https://www.gov.uk"})
assert page.find("img", attrs={"src": re.compile("example.png")})
assert page.select("body > table > tr > td[bgcolor='#f00']") # banner colour is set
assert not page.select("body > table table > tr > td > span") == 0 # brand text is not set