From 84578e8a1d87581f24f472844d79ae5d5b204eec Mon Sep 17 00:00:00 2001 From: Ben Thorner Date: Fri, 25 Mar 2022 11:46:01 +0000 Subject: [PATCH] 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. --- tests/app/dao/test_provider_details_dao.py | 43 +++++++++++----------- tests/app/provider_details/test_rest.py | 6 +-- 2 files changed, 24 insertions(+), 25 deletions(-) diff --git a/tests/app/dao/test_provider_details_dao.py b/tests/app/dao/test_provider_details_dao.py index eb7ed5d98..5e68498e9 100644 --- a/tests/app/dao/test_provider_details_dao.py +++ b/tests/app/dao/test_provider_details_dao.py @@ -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 diff --git a/tests/app/provider_details/test_rest.py b/tests/app/provider_details/test_rest.py index 79606b7c0..4e973568f 100644 --- a/tests/app/provider_details/test_rest.py +++ b/tests/app/provider_details/test_rest.py @@ -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())