diff --git a/app/config.py b/app/config.py index aa3ecb4e7..fbef50457 100644 --- a/app/config.py +++ b/app/config.py @@ -33,14 +33,30 @@ class Config(object): AWS_REGION = 'eu-west-1' DEFAULT_SERVICE_LIMIT = 50 DEFAULT_FREE_SMS_FRAGMENT_LIMITS = { - 'central': 250000, - 'local': 25000, - 'nhs_central': 250000, - 'nhs_local': 25000, - 'nhs_gp': 25000, - 'emergency_service': 25000, - 'school_or_college': 25000, - 'other': 25000, + 'central': { + 2020: 250000, + }, + 'local': { + 2020: 25000, + }, + 'nhs_central': { + 2020: 250000, + }, + 'nhs_local': { + 2020: 25000, + }, + 'nhs_gp': { + 2020: 25000, + }, + 'emergency_service': { + 2020: 25000, + }, + 'school_or_college': { + 2020: 25000, + }, + 'other': { + 2020: 25000, + }, } EMAIL_EXPIRY_SECONDS = 3600 # 1 hour INVITATION_EXPIRY_SECONDS = 3600 * 24 * 2 # 2 days - also set on api diff --git a/app/main/views/add_service.py b/app/main/views/add_service.py index 62337f2a1..975279667 100644 --- a/app/main/views/add_service.py +++ b/app/main/views/add_service.py @@ -6,11 +6,21 @@ from app import billing_api_client, service_api_client from app.formatters import email_safe from app.main import main from app.main.forms import CreateNhsServiceForm, CreateServiceForm -from app.utils import user_is_gov_user, user_is_logged_in +from app.utils import ( + get_current_financial_year, + user_is_gov_user, + user_is_logged_in, +) def _create_service(service_name, organisation_type, email_from, form): - free_sms_fragment_limit = current_app.config['DEFAULT_FREE_SMS_FRAGMENT_LIMITS'].get(organisation_type) + free_sms_fragment_limit = current_app.config[ + 'DEFAULT_FREE_SMS_FRAGMENT_LIMITS' + ][ + organisation_type + ][ + get_current_financial_year() + ] try: service_id = service_api_client.create_service( diff --git a/tests/app/main/views/test_add_service.py b/tests/app/main/views/test_add_service.py index 11ef3dc0a..bed1c687b 100644 --- a/tests/app/main/views/test_add_service.py +++ b/tests/app/main/views/test_add_service.py @@ -1,5 +1,6 @@ import pytest from flask import session, url_for +from freezegun import freeze_time from notifications_python_client.errors import HTTPError from app.utils import is_gov_user @@ -116,6 +117,7 @@ def test_show_different_page_if_user_org_type_is_local( ('other', None, 'other', 25000), ('central', 'local', 'central', 250000), )) +@freeze_time("2021-01-01") def test_should_add_service_and_redirect_to_tour_when_no_services( mocker, client_request, @@ -239,14 +241,14 @@ def test_get_should_only_show_nhs_org_types_radios_if_user_has_nhs_email( ] -@pytest.mark.parametrize('organisation_type, free_allowance', [ - ('central', 250 * 1000), - ('local', 25 * 1000), - ('nhs_central', 250 * 1000), - ('nhs_local', 25 * 1000), - ('school_or_college', 25 * 1000), - ('emergency_service', 25 * 1000), - ('other', 25 * 1000), +@pytest.mark.parametrize('financial_year, organisation_type, free_allowance', [ + (2020, 'central', 250 * 1000), + (2020, 'local', 25 * 1000), + (2020, 'nhs_central', 250 * 1000), + (2020, 'nhs_local', 25 * 1000), + (2020, 'school_or_college', 25 * 1000), + (2020, 'emergency_service', 25 * 1000), + (2020, 'other', 25 * 1000), ]) def test_should_add_service_and_redirect_to_dashboard_when_existing_service( app_, @@ -261,7 +263,13 @@ def test_should_add_service_and_redirect_to_dashboard_when_existing_service( free_allowance, mock_create_or_update_free_sms_fragment_limit, mock_get_all_email_branding, + financial_year, ): + mocker.patch( + 'app.main.views.add_service.get_current_financial_year', + return_value=financial_year, + ) + client_request.post( 'main.add_service', _data={ @@ -308,6 +316,7 @@ def test_add_service_fails_if_service_name_fails_validation( assert error_message in page.find("span", {"class": "govuk-error-message"}).text +@freeze_time("2021-01-01") def test_should_return_form_errors_with_duplicate_service_name_regardless_of_case( client_request, mock_get_organisation_by_domain,