Merge pull request #2273 from alphagov/cautious_prepping_for_pytest4

Preparation for pytest 4 by sorting our use of fixtures in conftest
This commit is contained in:
Pea (Malgorzata Tyczynska)
2019-01-03 11:12:52 +00:00
committed by GitHub
5 changed files with 57 additions and 45 deletions

View File

@@ -76,20 +76,26 @@ def service_factory(notify_db, notify_db_session):
user = create_user()
if not email_from:
email_from = service_name
service = sample_service(notify_db, notify_db_session, service_name, user, email_from=email_from)
service = create_service(
email_from=email_from,
service_name=service_name,
service_permissions=None,
user=user,
check_if_service_exists=True,
)
if template_type == 'email':
sample_template(
notify_db,
notify_db_session,
create_template(
service,
template_name="Template Name",
template_type=template_type,
subject_line=service.email_from,
service=service
subject=service.email_from,
)
else:
sample_template(
notify_db,
notify_db_session,
service=service
create_template(
service,
template_name="Template Name",
template_type='sms',
)
return service
@@ -195,7 +201,8 @@ def sample_service(
def _sample_service_full_permissions(notify_db_session):
service = create_service(
service_name="sample service full permissions",
service_permissions=set(SERVICE_PERMISSION_TYPES)
service_permissions=set(SERVICE_PERMISSION_TYPES),
check_if_service_exists=True
)
create_inbound_number('12345', service_id=service.id)
return service
@@ -228,7 +235,7 @@ def sample_template(
if service is None:
service = Service.query.filter_by(name='Sample service').first()
if not service:
service = create_service(service_permissions=permissions)
service = create_service(service_permissions=permissions, check_if_service_exists=True)
if created_by is None:
created_by = create_user()
@@ -290,7 +297,7 @@ def sample_email_template(
if user is None:
user = create_user()
if service is None:
service = sample_service(notify_db, notify_db_session, permissions=permissions)
service = create_service(user=user, service_permissions=permissions, check_if_service_exists=True)
data = {
'name': template_name,
'template_type': template_type,
@@ -345,7 +352,7 @@ def sample_api_key(notify_db,
key_type=KEY_TYPE_NORMAL,
name=None):
if service is None:
service = sample_service(notify_db, notify_db_session)
service = create_service(check_if_service_exists=True)
data = {'service': service, 'name': name or uuid.uuid4(), 'created_by': service.created_by, 'key_type': key_type}
api_key = ApiKey(**data)
save_model_api_key(api_key)
@@ -377,10 +384,9 @@ def sample_job(
archived=False
):
if service is None:
service = sample_service(notify_db, notify_db_session)
service = create_service(check_if_service_exists=True)
if template is None:
template = sample_template(notify_db, notify_db_session,
service=service)
template = create_template(service=service)
data = {
'id': uuid.uuid4(),
'service_id': service.id,
@@ -437,7 +443,7 @@ def sample_email_job(notify_db,
service=None,
template=None):
if service is None:
service = sample_service(notify_db, notify_db_session)
service = create_service(check_if_service_exists=True)
if template is None:
template = sample_email_template(
notify_db,
@@ -545,9 +551,9 @@ def sample_notification(
if created_at is None:
created_at = datetime.utcnow()
if service is None:
service = sample_service(notify_db, notify_db_session)
service = create_service(check_if_service_exists=True)
if template is None:
template = sample_template(notify_db, notify_db_session, service=service)
template = create_template(service=service)
if job is None and api_key is None:
# we didn't specify in test - lets create it
@@ -634,7 +640,7 @@ def sample_notification_with_api_key(notify_db, notify_db_session):
@pytest.fixture(scope='function')
def sample_email_notification(notify_db, notify_db_session):
created_at = datetime.utcnow()
service = sample_service(notify_db, notify_db_session)
service = create_service(check_if_service_exists=True)
template = sample_email_template(notify_db, notify_db_session, service=service)
job = sample_job(notify_db, notify_db_session, service=service, template=template)
@@ -736,7 +742,7 @@ def sample_invited_user(notify_db,
to_email_address=None):
if service is None:
service = sample_service(notify_db, notify_db_session)
service = create_service(check_if_service_exists=True)
if to_email_address is None:
to_email_address = 'invited_user@digital.gov.uk'
@@ -776,7 +782,7 @@ def sample_permission(notify_db,
'permission': permission
}
if service is None:
service = sample_service(notify_db, notify_db_session)
service = create_service(check_if_service_exists=True)
if service:
data['service'] = service
p_model = Permission.query.filter_by(
@@ -797,7 +803,7 @@ def sample_user_service_permission(
if user is None:
user = create_user()
if service is None:
service = sample_service(notify_db, notify_db_session, user=user)
service = create_service(user=user, check_if_service_exists=True)
data = {
'user': user,
'service': service,
@@ -1031,7 +1037,7 @@ def notify_service(notify_db, notify_db_session):
@pytest.fixture(scope='function')
def sample_service_whitelist(notify_db, notify_db_session, service=None, email_address=None, mobile_number=None):
if service is None:
service = sample_service(notify_db, notify_db_session)
service = create_service(check_if_service_exists=True)
if email_address:
whitelisted_user = ServiceWhitelist.from_string(service.id, EMAIL_TYPE, email_address)
@@ -1056,7 +1062,7 @@ def sample_provider_rate(notify_db, notify_db_session, valid_from=None, rate=Non
@pytest.fixture
def sample_inbound_numbers(notify_db, notify_db_session, sample_service):
service = create_service(service_name='sample service 2')
service = create_service(service_name='sample service 2', check_if_service_exists=True)
inbound_numbers = list()
inbound_numbers.append(create_inbound_number(number='1', provider='mmg'))
inbound_numbers.append(create_inbound_number(number='2', provider='mmg', active=False, service_id=service.id))

View File

@@ -22,7 +22,7 @@ from tests.app.db import (
def test_last_template_usage_should_get_right_data(sample_notification):
results = dao_get_last_template_usage(sample_notification.template_id, 'sms', sample_notification.service_id)
assert results.template.name == 'Template Name'
assert results.template.name == 'sms Template Name'
assert results.template.template_type == 'sms'
assert results.created_at == sample_notification.created_at
assert results.template_id == sample_notification.template_id

View File

@@ -17,7 +17,7 @@ from app.dao.service_data_retention_dao import insert_service_data_retention
from app.dao.service_inbound_api_dao import save_service_inbound_api
from app.dao.service_permissions_dao import dao_add_service_permission
from app.dao.service_sms_sender_dao import update_existing_sms_sender_with_inbound_number, dao_update_service_sms_sender
from app.dao.services_dao import dao_create_service
from app.dao.services_dao import dao_create_service, dao_add_user_to_service
from app.dao.templates_dao import dao_create_template, dao_update_template
from app.dao.users_dao import save_model_user
from app.models import (
@@ -81,23 +81,29 @@ def create_service(
prefix_sms=True,
message_limit=1000,
organisation_type='central',
postage='second'
postage='second',
check_if_service_exists=False
):
service = Service(
name=service_name,
message_limit=message_limit,
restricted=restricted,
email_from=email_from if email_from else service_name.lower().replace(' ', '.'),
created_by=user or create_user(email='{}@digital.cabinet-office.gov.uk'.format(uuid.uuid4())),
prefix_sms=prefix_sms,
organisation_type=organisation_type,
postage=postage
)
if check_if_service_exists:
service = Service.query.filter_by(name=service_name).first()
if (not check_if_service_exists) or (check_if_service_exists and not service):
service = Service(
name=service_name,
message_limit=message_limit,
restricted=restricted,
email_from=email_from if email_from else service_name.lower().replace(' ', '.'),
created_by=user if user else create_user(email='{}@digital.cabinet-office.gov.uk'.format(uuid.uuid4())),
prefix_sms=prefix_sms,
organisation_type=organisation_type,
postage=postage
)
dao_create_service(service, service.created_by, service_id, service_permissions=service_permissions)
dao_create_service(service, service.created_by, service_id, service_permissions=service_permissions)
service.active = active
service.research_mode = research_mode
service.active = active
service.research_mode = research_mode
else:
if user and user not in service.users:
dao_add_user_to_service(service, user)
return service

View File

@@ -153,7 +153,7 @@ def test_get_all_notifications(client, sample_notification):
assert notifications['notifications'][0]['to'] == '+447700900855'
assert notifications['notifications'][0]['service'] == str(sample_notification.service_id)
assert notifications['notifications'][0]['body'] == "This is a template:\nwith a newline"
assert notifications['notifications'][0]['body'] == 'Dear Sir/Madam, Hello. Yours Truly, The Government.'
def test_normal_api_key_returns_notifications_created_from_jobs_and_from_api(

View File

@@ -59,7 +59,7 @@ def test_get_template_statistics_for_service_by_day_returns_template_info(admin_
assert json_resp['data'][0]['count'] == 1
assert json_resp['data'][0]['template_id'] == str(sample_notification.template_id)
assert json_resp['data'][0]['template_name'] == 'Template Name'
assert json_resp['data'][0]['template_name'] == 'sms Template Name'
assert json_resp['data'][0]['template_type'] == 'sms'
assert json_resp['data'][0]['is_precompiled_letter'] is False