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): def test_can_get_sms_non_international_providers(notify_db_session):
sms_providers = get_provider_details_by_notification_type('sms') 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) 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): def test_can_get_sms_providers_in_order_of_priority(notify_db_session):
providers = get_provider_details_by_notification_type('sms', False) providers = get_provider_details_by_notification_type('sms', False)
priorities = [provider.priority for provider in providers]
assert providers[0].priority < providers[1].priority assert priorities == sorted(priorities)
def test_can_get_email_providers_in_order_of_priority(notify_db_session): 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-15', sms_template_1, provider='firetext', billable_unit=1)
create_ft_billing('2018-06-28', sms_template_2, provider='mmg', billable_unit=2) 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' ses = next(result for result in results if result.identifier == 'ses')
assert result[0].display_name == 'AWS SES' firetext = next(result for result in results if result.identifier == 'firetext')
assert result[0].created_by_name is None mmg = next(result for result in results if result.identifier == 'mmg')
assert result[0].current_month_billable_sms == 0
assert result[1].identifier == 'firetext' assert ses.display_name == 'AWS SES'
assert result[1].notification_type == 'sms' assert ses.created_by_name is None
assert result[1].supports_international is False assert ses.current_month_billable_sms == 0
assert result[1].active is True
assert result[1].current_month_billable_sms == 5
assert result[2].identifier == 'mmg' assert firetext.display_name == 'Firetext'
assert result[2].display_name == 'MMG' assert firetext.notification_type == 'sms'
assert result[2].supports_international is True assert firetext.supports_international is False
assert result[2].active is True assert firetext.active is True
assert result[2].current_month_billable_sms == 4 assert firetext.current_month_billable_sms == 5
assert result[3].identifier == 'dvla' assert mmg.identifier == 'mmg'
assert result[3].current_month_billable_sms == 0 assert mmg.display_name == 'MMG'
assert result[3].supports_international is False 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): def test_get_provider_details_returns_all_providers(admin_request, notify_db_session):
json_resp = admin_request.get('provider_details.get_providers')['provider_details'] json_resp = admin_request.get('provider_details.get_providers')['provider_details']
assert len(json_resp) == 4 assert len(json_resp) > 0
assert {x['identifier'] for x in json_resp} == {'ses', 'firetext', 'mmg', 'dvla'} assert {'ses', 'firetext', 'mmg', 'dvla'} < {x['identifier'] for x in json_resp}
def test_get_provider_details_by_id(client, notify_db): 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", "active", "updated_at", "supports_international",
"current_month_billable_sms" "current_month_billable_sms"
} }
assert len(json_resp) == 4 assert len(json_resp) > 0
assert allowed_keys == set(json_resp[0].keys()) assert allowed_keys == set(json_resp[0].keys())