Use fixtures for SMS provider test data

This avoids the need to manually copy psuedo fixture data to avoid
breaking other tests.
This commit is contained in:
Ben Thorner
2022-04-06 17:30:35 +01:00
parent 6d77ff54b1
commit 05c396434d

View File

@@ -1,4 +1,3 @@
import copy
from datetime import datetime from datetime import datetime
from unittest.mock import call from unittest.mock import call
@@ -7,93 +6,118 @@ from flask import url_for
from app.main.views.providers import add_monthly_traffic from app.main.views.providers import add_monthly_traffic
sms_provider_1 = {
'id': 'sms_provider_1-id',
'active': True,
'priority': 20,
'display_name': 'SMS Provider 1',
'identifier': 'sms_provider_1',
'notification_type': 'sms',
'updated_at': datetime(2017, 1, 16, 15, 20, 40).isoformat(),
'version': 1,
'created_by_name': 'Test User',
'supports_international': False,
'current_month_billable_sms': 5020,
}
sms_provider_2 = { @pytest.fixture
'id': 'sms_provider_2-id', def sms_provider_1():
'active': True, return {
'priority': 10, 'id': 'sms_provider_1-id',
'display_name': 'SMS Provider 2', 'active': True,
'identifier': 'sms_provider_2', 'priority': 20,
'notification_type': 'sms', 'display_name': 'SMS Provider 1',
'updated_at': None, 'identifier': 'sms_provider_1',
'version': 1, 'notification_type': 'sms',
'created_by': None, 'updated_at': datetime(2017, 1, 16, 15, 20, 40).isoformat(),
'supports_international': False, 'version': 1,
'current_month_billable_sms': 6891, 'created_by_name': 'Test User',
} 'supports_international': False,
'current_month_billable_sms': 5020,
email_provider_1 = { }
'id': 'email_provider_1-id',
'active': True,
'priority': 1,
'display_name': 'Email Provider 1',
'identifier': 'email_provider_1',
'notification_type': 'email',
'updated_at': None,
'version': 1,
'created_by': None,
'supports_international': False,
'current_month_billable_sms': 0,
}
email_provider_2 = {
'id': 'email_provider_2-id',
'active': True,
'priority': 2,
'display_name': 'Email Provider 2',
'identifier': 'email_provider_2',
'notification_type': 'email',
'updated_at': None,
'version': 1,
'created_by': None,
'supports_international': False,
'current_month_billable_sms': 0,
}
sms_provider_intl_1 = {
'id': 'sms_provider_intl_1-id',
'active': False,
'priority': 10,
'display_name': 'SMS Provider Intl 1',
'identifier': 'sms_provider_intl_1',
'notification_type': 'sms',
'updated_at': None,
'version': 1,
'created_by': None,
'supports_international': True,
'current_month_billable_sms': 0,
}
sms_provider_intl_2 = {
'id': 'sms_provider_intl_2-id',
'active': False,
'priority': 10,
'display_name': 'SMS Provider Intl 2',
'identifier': 'sms_provider_intl_2',
'notification_type': 'sms',
'updated_at': None,
'version': 1,
'created_by': None,
'supports_international': True,
'current_month_billable_sms': 0,
}
@pytest.fixture @pytest.fixture
def stub_providers(): def sms_provider_2():
return {
'id': 'sms_provider_2-id',
'active': True,
'priority': 10,
'display_name': 'SMS Provider 2',
'identifier': 'sms_provider_2',
'notification_type': 'sms',
'updated_at': None,
'version': 1,
'created_by': None,
'supports_international': False,
'current_month_billable_sms': 6891,
}
@pytest.fixture
def email_provider_1():
return {
'id': 'email_provider_1-id',
'active': True,
'priority': 1,
'display_name': 'Email Provider 1',
'identifier': 'email_provider_1',
'notification_type': 'email',
'updated_at': None,
'version': 1,
'created_by': None,
'supports_international': False,
'current_month_billable_sms': 0,
}
@pytest.fixture
def email_provider_2():
return {
'id': 'email_provider_2-id',
'active': True,
'priority': 2,
'display_name': 'Email Provider 2',
'identifier': 'email_provider_2',
'notification_type': 'email',
'updated_at': None,
'version': 1,
'created_by': None,
'supports_international': False,
'current_month_billable_sms': 0,
}
@pytest.fixture
def sms_provider_intl_1():
return {
'id': 'sms_provider_intl_1-id',
'active': False,
'priority': 10,
'display_name': 'SMS Provider Intl 1',
'identifier': 'sms_provider_intl_1',
'notification_type': 'sms',
'updated_at': None,
'version': 1,
'created_by': None,
'supports_international': True,
'current_month_billable_sms': 0,
}
@pytest.fixture
def sms_provider_intl_2():
return {
'id': 'sms_provider_intl_2-id',
'active': False,
'priority': 10,
'display_name': 'SMS Provider Intl 2',
'identifier': 'sms_provider_intl_2',
'notification_type': 'sms',
'updated_at': None,
'version': 1,
'created_by': None,
'supports_international': True,
'current_month_billable_sms': 0,
}
@pytest.fixture
def stub_providers(
sms_provider_1,
sms_provider_2,
email_provider_1,
email_provider_2,
sms_provider_intl_1,
sms_provider_intl_2,
):
return { return {
'provider_details': [ 'provider_details': [
sms_provider_1, sms_provider_1,
@@ -294,6 +318,7 @@ def test_edit_sms_provider_provider_ratio(
platform_admin_user, platform_admin_user,
mocker, mocker,
stub_providers, stub_providers,
sms_provider_1
): ):
mocker.patch( mocker.patch(
'app.provider_client.get_all_providers', 'app.provider_client.get_all_providers',
@@ -317,15 +342,13 @@ def test_edit_sms_provider_provider_ratio_only_shows_active_providers(
platform_admin_user, platform_admin_user,
mocker, mocker,
stub_providers, stub_providers,
sms_provider_1,
): ):
sms_provider_1_inactive = copy.deepcopy(sms_provider_1) sms_provider_1['active'] = False
sms_provider_1_inactive['active'] = False
mocker.patch( mocker.patch(
'app.provider_client.get_all_providers', 'app.provider_client.get_all_providers',
return_value={ return_value=stub_providers,
'provider_details': [sms_provider_1_inactive, sms_provider_2]
}
) )
client_request.login(platform_admin_user) client_request.login(platform_admin_user)