2016-12-19 17:45:46 +00:00
|
|
|
from datetime import datetime
|
|
|
|
|
|
|
|
|
|
from freezegun import freeze_time
|
|
|
|
|
|
2016-12-19 17:34:26 +00:00
|
|
|
from app.models import ProviderDetails, ProviderDetailsHistory
|
2016-05-10 09:04:22 +01:00
|
|
|
from app import clients
|
|
|
|
|
from app.dao.provider_details_dao import (
|
|
|
|
|
get_provider_details,
|
2016-12-19 17:34:26 +00:00
|
|
|
get_provider_details_by_notification_type,
|
|
|
|
|
dao_update_provider_details
|
2016-05-10 09:04:22 +01:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
2016-12-19 17:10:15 +00:00
|
|
|
def test_can_get_all_providers(restore_provider_details):
|
2016-05-11 11:34:46 +01:00
|
|
|
assert len(get_provider_details()) == 4
|
2016-05-10 09:04:22 +01:00
|
|
|
|
|
|
|
|
|
2016-12-19 17:10:15 +00:00
|
|
|
def test_can_get_sms_providers(restore_provider_details):
|
|
|
|
|
sms_providers = get_provider_details_by_notification_type('sms')
|
|
|
|
|
assert len(sms_providers) == 3
|
|
|
|
|
assert all('sms' == prov.notification_type for prov in sms_providers)
|
2016-05-10 09:04:22 +01:00
|
|
|
|
|
|
|
|
|
2016-12-19 17:10:15 +00:00
|
|
|
def test_can_get_sms_providers_in_order(restore_provider_details):
|
2016-05-10 09:04:22 +01:00
|
|
|
providers = get_provider_details_by_notification_type('sms')
|
|
|
|
|
|
|
|
|
|
assert providers[0].identifier == "mmg"
|
|
|
|
|
assert providers[1].identifier == "firetext"
|
2016-05-11 11:34:46 +01:00
|
|
|
assert providers[2].identifier == "loadtesting"
|
2016-05-10 09:04:22 +01:00
|
|
|
|
|
|
|
|
|
2016-12-19 17:10:15 +00:00
|
|
|
def test_can_get_email_providers_in_order(restore_provider_details):
|
2016-05-10 09:04:22 +01:00
|
|
|
providers = get_provider_details_by_notification_type('email')
|
|
|
|
|
|
|
|
|
|
assert providers[0].identifier == "ses"
|
|
|
|
|
|
|
|
|
|
|
2016-12-19 17:10:15 +00:00
|
|
|
def test_can_get_email_providers(restore_provider_details):
|
2016-05-10 09:04:22 +01:00
|
|
|
assert len(get_provider_details_by_notification_type('email')) == 1
|
|
|
|
|
types = [provider.notification_type for provider in get_provider_details_by_notification_type('email')]
|
|
|
|
|
assert all('email' == notification_type for notification_type in types)
|
|
|
|
|
|
|
|
|
|
|
2016-12-19 17:10:15 +00:00
|
|
|
def test_should_not_error_if_any_provider_in_code_not_in_database(restore_provider_details):
|
2016-05-10 09:04:22 +01:00
|
|
|
providers = ProviderDetails.query.all()
|
|
|
|
|
|
|
|
|
|
ProviderDetails.query.filter_by(identifier='mmg').delete()
|
|
|
|
|
|
2016-12-19 17:10:15 +00:00
|
|
|
assert clients.get_sms_client('mmg')
|
2016-12-19 17:34:26 +00:00
|
|
|
|
|
|
|
|
|
2016-12-19 17:45:46 +00:00
|
|
|
@freeze_time('2000-01-01T00:00:00')
|
2016-12-19 17:34:26 +00:00
|
|
|
def test_update_adds_history(restore_provider_details):
|
|
|
|
|
ses = ProviderDetails.query.filter(ProviderDetails.identifier == 'ses').one()
|
|
|
|
|
ses_history = ProviderDetailsHistory.query.filter(ProviderDetailsHistory.id == ses.id).one()
|
|
|
|
|
|
|
|
|
|
assert ses.version == 1
|
|
|
|
|
assert ses_history.version == 1
|
2016-12-19 17:45:46 +00:00
|
|
|
assert ses.updated_at is None
|
2016-12-19 17:34:26 +00:00
|
|
|
|
|
|
|
|
ses.active = False
|
|
|
|
|
|
|
|
|
|
dao_update_provider_details(ses)
|
|
|
|
|
|
|
|
|
|
assert not ses.active
|
2016-12-19 17:45:46 +00:00
|
|
|
assert ses.updated_at == datetime(2000, 1, 1, 0, 0, 0)
|
2016-12-19 17:34:26 +00:00
|
|
|
|
|
|
|
|
ses_history = ProviderDetailsHistory.query.filter(
|
|
|
|
|
ProviderDetailsHistory.id == ses.id
|
|
|
|
|
).order_by(
|
|
|
|
|
ProviderDetailsHistory.version
|
|
|
|
|
).all()
|
|
|
|
|
|
|
|
|
|
assert ses_history[0].active
|
|
|
|
|
assert ses_history[0].version == 1
|
2016-12-19 17:45:46 +00:00
|
|
|
assert ses_history[0].updated_at is None
|
2016-12-19 17:34:26 +00:00
|
|
|
|
|
|
|
|
assert not ses_history[1].active
|
|
|
|
|
assert ses_history[1].version == 2
|
2016-12-19 17:45:46 +00:00
|
|
|
assert ses_history[1].updated_at == datetime(2000, 1, 1, 0, 0, 0)
|