Make provider tests agnostic to actual data

The provider tests are coupled to actual data in the DB, but we
shouldn't have to overhaul the tests when this changes.

Assuming we don't delete old providers, just testing a subset of
the fixture data should give us enough confidence in the code.
This commit is contained in:
Ben Thorner
2022-03-25 11:46:01 +00:00
parent 22e055f4d1
commit 84578e8a1d
2 changed files with 24 additions and 25 deletions

View File

@@ -40,7 +40,7 @@ def set_primary_sms_provider(identifier):
def test_can_get_sms_non_international_providers(notify_db_session):
sms_providers = get_provider_details_by_notification_type('sms')
assert len(sms_providers) == 2
assert len(sms_providers) > 0
assert all('sms' == prov.notification_type for prov in sms_providers)
@@ -53,8 +53,8 @@ def test_can_get_sms_international_providers(notify_db_session):
def test_can_get_sms_providers_in_order_of_priority(notify_db_session):
providers = get_provider_details_by_notification_type('sms', False)
assert providers[0].priority < providers[1].priority
priorities = [provider.priority for provider in providers]
assert priorities == sorted(priorities)
def test_can_get_email_providers_in_order_of_priority(notify_db_session):
@@ -332,27 +332,26 @@ def test_dao_get_provider_stats(notify_db_session):
create_ft_billing('2018-06-15', sms_template_1, provider='firetext', billable_unit=1)
create_ft_billing('2018-06-28', sms_template_2, provider='mmg', billable_unit=2)
result = dao_get_provider_stats()
results = dao_get_provider_stats()
assert len(result) == 4
assert len(results) > 0
assert result[0].identifier == 'ses'
assert result[0].display_name == 'AWS SES'
assert result[0].created_by_name is None
assert result[0].current_month_billable_sms == 0
ses = next(result for result in results if result.identifier == 'ses')
firetext = next(result for result in results if result.identifier == 'firetext')
mmg = next(result for result in results if result.identifier == 'mmg')
assert result[1].identifier == 'firetext'
assert result[1].notification_type == 'sms'
assert result[1].supports_international is False
assert result[1].active is True
assert result[1].current_month_billable_sms == 5
assert ses.display_name == 'AWS SES'
assert ses.created_by_name is None
assert ses.current_month_billable_sms == 0
assert result[2].identifier == 'mmg'
assert result[2].display_name == 'MMG'
assert result[2].supports_international is True
assert result[2].active is True
assert result[2].current_month_billable_sms == 4
assert firetext.display_name == 'Firetext'
assert firetext.notification_type == 'sms'
assert firetext.supports_international is False
assert firetext.active is True
assert firetext.current_month_billable_sms == 5
assert result[3].identifier == 'dvla'
assert result[3].current_month_billable_sms == 0
assert result[3].supports_international is False
assert mmg.identifier == 'mmg'
assert mmg.display_name == 'MMG'
assert mmg.supports_international is True
assert mmg.active is True
assert mmg.current_month_billable_sms == 4

View File

@@ -10,8 +10,8 @@ from tests.app.db import create_ft_billing
def test_get_provider_details_returns_all_providers(admin_request, notify_db_session):
json_resp = admin_request.get('provider_details.get_providers')['provider_details']
assert len(json_resp) == 4
assert {x['identifier'] for x in json_resp} == {'ses', 'firetext', 'mmg', 'dvla'}
assert len(json_resp) > 0
assert {'ses', 'firetext', 'mmg', 'dvla'} < {x['identifier'] for x in json_resp}
def test_get_provider_details_by_id(client, notify_db):
@@ -45,7 +45,7 @@ def test_get_provider_contains_correct_fields(client, sample_template):
"active", "updated_at", "supports_international",
"current_month_billable_sms"
}
assert len(json_resp) == 4
assert len(json_resp) > 0
assert allowed_keys == set(json_resp[0].keys())