mirror of
https://github.com/GSA/notifications-api.git
synced 2026-01-30 06:21:50 -05:00
Adding new data models for letter branding.
This commit is contained in:
23
tests/app/dao/test_letter_branding_dao.py
Normal file
23
tests/app/dao/test_letter_branding_dao.py
Normal file
@@ -0,0 +1,23 @@
|
||||
from app.dao.letter_branding_dao import get_letter_branding_or_platform_default
|
||||
from tests.app.db import create_letter_branding
|
||||
|
||||
|
||||
def test_get_letter_branding_or_platform_default_returns_platform_default_if_domain_is_none(notify_db_session):
|
||||
create_letter_branding()
|
||||
result = get_letter_branding_or_platform_default(domain=None)
|
||||
assert result.filename == 'hm-government'
|
||||
|
||||
|
||||
def test_get_letter_branding_or_platform_default_if_domain_is_not_associated_with_a_brand(notify_db_session):
|
||||
create_letter_branding()
|
||||
result = get_letter_branding_or_platform_default(domain="foo.bar")
|
||||
assert result.filename == 'hm-government'
|
||||
|
||||
|
||||
def test_get_letter_branding_or_platform_default_returns_correct_brand_for_domain(notify_db_session):
|
||||
create_letter_branding()
|
||||
test_domain_branding = create_letter_branding(
|
||||
name='test domain', filename='test-domain', domain='test.domain', platform_default=False
|
||||
)
|
||||
result = get_letter_branding_or_platform_default(domain='test.domain')
|
||||
result == test_domain_branding
|
||||
@@ -65,7 +65,8 @@ from tests.app.db import (
|
||||
create_template,
|
||||
create_notification,
|
||||
create_api_key,
|
||||
create_invited_user
|
||||
create_invited_user,
|
||||
create_letter_branding,
|
||||
)
|
||||
|
||||
|
||||
@@ -76,6 +77,7 @@ def test_should_have_decorated_services_dao_functions():
|
||||
|
||||
def test_create_service(notify_db_session):
|
||||
user = create_user()
|
||||
create_letter_branding()
|
||||
assert Service.query.count() == 0
|
||||
service = Service(name="service_name",
|
||||
email_from="email_from",
|
||||
@@ -97,6 +99,27 @@ def test_create_service(notify_db_session):
|
||||
assert user in service_db.users
|
||||
assert service_db.organisation_type == 'central'
|
||||
assert service_db.crown is True
|
||||
assert not service.letter_branding
|
||||
|
||||
|
||||
def test_create_service_with_letter_branding(notify_db_session):
|
||||
user = create_user()
|
||||
create_letter_branding()
|
||||
letter_branding = create_letter_branding(
|
||||
name='test domain', filename='test-domain', domain='test.domain', platform_default=False
|
||||
)
|
||||
assert Service.query.count() == 0
|
||||
service = Service(name="service_name",
|
||||
email_from="email_from",
|
||||
message_limit=1000,
|
||||
restricted=False,
|
||||
organisation_type='central',
|
||||
created_by=user)
|
||||
dao_create_service(service, user, letter_branding=letter_branding)
|
||||
assert Service.query.count() == 1
|
||||
service_db = Service.query.one()
|
||||
assert service_db.id == service.id
|
||||
assert service.letter_branding == letter_branding
|
||||
|
||||
|
||||
def test_cannot_create_two_services_with_same_name(notify_db_session):
|
||||
@@ -332,6 +355,7 @@ def test_create_service_by_id_adding_and_removing_letter_returns_service_without
|
||||
|
||||
def test_create_service_creates_a_history_record_with_current_data(notify_db_session):
|
||||
user = create_user()
|
||||
create_letter_branding()
|
||||
assert Service.query.count() == 0
|
||||
assert Service.get_history_model().query.count() == 0
|
||||
service = Service(name="service_name",
|
||||
|
||||
@@ -50,6 +50,7 @@ from app.models import (
|
||||
Complaint,
|
||||
InvitedUser,
|
||||
TemplateFolder,
|
||||
LetterBranding
|
||||
)
|
||||
|
||||
|
||||
@@ -724,3 +725,14 @@ def create_template_folder(service, name='foo', parent=None):
|
||||
db.session.add(tf)
|
||||
db.session.commit()
|
||||
return tf
|
||||
|
||||
|
||||
def create_letter_branding(name='HM Government', filename='hm-government', domain=None, platform_default=True):
|
||||
test_domain_branding = LetterBranding(name=name,
|
||||
filename=filename,
|
||||
domain=domain,
|
||||
platform_default=platform_default
|
||||
)
|
||||
db.session.add(test_domain_branding)
|
||||
db.session.commit()
|
||||
return test_domain_branding
|
||||
|
||||
@@ -43,7 +43,8 @@ from tests.app.db import (
|
||||
create_letter_contact,
|
||||
create_inbound_number,
|
||||
create_service_sms_sender,
|
||||
create_service_with_defined_sms_sender
|
||||
create_service_with_defined_sms_sender,
|
||||
create_letter_branding
|
||||
)
|
||||
from tests.app.db import create_user
|
||||
|
||||
@@ -218,6 +219,7 @@ def test_get_service_by_id_should_404_if_no_service_for_user(notify_api, sample_
|
||||
|
||||
|
||||
def test_create_service(client, sample_user):
|
||||
platform_default = create_letter_branding()
|
||||
data = {
|
||||
'name': 'created service',
|
||||
'user_id': str(sample_user.id),
|
||||
@@ -259,6 +261,80 @@ def test_create_service(client, sample_user):
|
||||
service_sms_senders = ServiceSmsSender.query.filter_by(service_id=service_db.id).all()
|
||||
assert len(service_sms_senders) == 1
|
||||
assert service_sms_senders[0].sms_sender == current_app.config['FROM_NUMBER']
|
||||
assert json_resp['data']['letter_branding'] == str(platform_default.id)
|
||||
|
||||
|
||||
def test_create_service_with_domain_sets_letter_branding(client, sample_user):
|
||||
letter_branding = create_letter_branding(
|
||||
name='test domain', filename='test-domain', domain='test.domain', platform_default=False
|
||||
)
|
||||
data = {
|
||||
'name': 'created service',
|
||||
'user_id': str(sample_user.id),
|
||||
'message_limit': 1000,
|
||||
'restricted': False,
|
||||
'active': False,
|
||||
'email_from': 'created.service',
|
||||
'created_by': str(sample_user.id),
|
||||
'service_domain': letter_branding.domain
|
||||
}
|
||||
auth_header = create_authorization_header()
|
||||
headers = [('Content-Type', 'application/json'), auth_header]
|
||||
resp = client.post(
|
||||
'/service',
|
||||
data=json.dumps(data),
|
||||
headers=headers)
|
||||
json_resp = resp.json
|
||||
assert resp.status_code == 201
|
||||
assert json_resp['data']['letter_branding'] == str(letter_branding.id)
|
||||
assert json_resp['data']['letter_logo_filename'] == str(letter_branding.filename)
|
||||
|
||||
|
||||
def test_create_service_when_letter_branding_is_empty(client, sample_user):
|
||||
# test create service before the data migration
|
||||
data = {
|
||||
'name': 'created service',
|
||||
'user_id': str(sample_user.id),
|
||||
'message_limit': 1000,
|
||||
'restricted': False,
|
||||
'active': False,
|
||||
'email_from': 'created.service',
|
||||
'created_by': str(sample_user.id),
|
||||
'service_domain': 'test.domain'
|
||||
}
|
||||
auth_header = create_authorization_header()
|
||||
headers = [('Content-Type', 'application/json'), auth_header]
|
||||
resp = client.post(
|
||||
'/service',
|
||||
data=json.dumps(data),
|
||||
headers=headers)
|
||||
json_resp = resp.json
|
||||
assert resp.status_code == 201
|
||||
assert not json_resp['data']['letter_branding']
|
||||
assert json_resp['data']['letter_logo_filename'] == 'hm-government'
|
||||
|
||||
|
||||
def test_get_service_by_id_returns_letter_branding_not_dvla_organisation(
|
||||
client, sample_service
|
||||
):
|
||||
letter_branding = create_letter_branding(
|
||||
name='test domain', filename='test-domain', domain='test.domain', platform_default=False
|
||||
)
|
||||
data = {
|
||||
'letter_branding': str(letter_branding.id)
|
||||
}
|
||||
client.post(
|
||||
'/service/{}'.format(sample_service.id),
|
||||
data=json.dumps(data),
|
||||
headers=[('Content-Type', 'application/json'), create_authorization_header()]
|
||||
)
|
||||
resp = client.get('/service/{}'.format(sample_service.id),
|
||||
headers=[('Content-Type', 'application/json'), create_authorization_header()])
|
||||
json_resp = resp.json
|
||||
assert json_resp['data']['name'] == sample_service.name
|
||||
assert json_resp['data']['id'] == str(sample_service.id)
|
||||
assert json_resp['data']['dvla_organisation'] == '001'
|
||||
assert json_resp['data']['letter_logo_filename'] == 'test-domain'
|
||||
|
||||
|
||||
def test_should_not_create_service_with_missing_user_id_field(notify_api, fake_uuid):
|
||||
@@ -438,6 +514,24 @@ def test_update_service(client, notify_db, sample_service):
|
||||
assert result['data']['organisation_type'] == 'foo'
|
||||
|
||||
|
||||
def test_update_service_letter_branding(client, notify_db, sample_service):
|
||||
letter_branding = create_letter_branding(name='test brand', filename='test-brand', platform_default=False)
|
||||
data = {
|
||||
'letter_branding': str(letter_branding.id)
|
||||
}
|
||||
|
||||
auth_header = create_authorization_header()
|
||||
|
||||
resp = client.post(
|
||||
'/service/{}'.format(sample_service.id),
|
||||
data=json.dumps(data),
|
||||
headers=[('Content-Type', 'application/json'), auth_header]
|
||||
)
|
||||
result = resp.json
|
||||
assert resp.status_code == 200
|
||||
assert result['data']['letter_branding'] == str(letter_branding.id)
|
||||
|
||||
|
||||
def test_update_service_remove_email_branding(admin_request, notify_db, sample_service):
|
||||
brand = EmailBranding(colour='#000000', logo='justice-league.png', name='Justice League')
|
||||
sample_service.email_branding = brand
|
||||
|
||||
Reference in New Issue
Block a user