Merge pull request #1309 from alphagov/reinstate-new-rate-api

Reinstate new rate api
This commit is contained in:
minglis
2017-06-08 14:07:33 +01:00
committed by GitHub
6 changed files with 87 additions and 3 deletions

View File

@@ -50,6 +50,7 @@ def test_get_started(
mock_get_detailed_service,
mock_get_usage,
mock_get_inbound_sms_summary,
mock_get_yearly_sms_unit_count_and_cost
):
mock_template_stats = mocker.patch('app.template_statistics_client.get_template_statistics_for_service',
return_value=copy.deepcopy(stub_template_stats))
@@ -69,6 +70,7 @@ def test_get_started_is_hidden_once_templates_exist(
mock_get_detailed_service,
mock_get_usage,
mock_get_inbound_sms_summary,
mock_get_yearly_sms_unit_count_and_cost
):
mock_template_stats = mocker.patch('app.template_statistics_client.get_template_statistics_for_service',
return_value=copy.deepcopy(stub_template_stats))
@@ -88,6 +90,7 @@ def test_inbound_messages_not_visible_to_service_without_permissions(
mock_get_template_statistics,
mock_get_usage,
mock_get_inbound_sms_summary,
mock_get_yearly_sms_unit_count_and_cost
):
service_one['permissions'] = []
@@ -115,6 +118,7 @@ def test_inbound_messages_shows_count_of_messages(
mock_get_usage,
inbound_summary_mock,
expected_text,
mock_get_yearly_sms_unit_count_and_cost
):
service_one['permissions'] = ['inbound_sms']
@@ -204,6 +208,7 @@ def test_should_show_recent_templates_on_dashboard(
mock_get_detailed_service,
mock_get_usage,
mock_get_inbound_sms_summary,
mock_get_yearly_sms_unit_count_and_cost
):
mock_template_stats = mocker.patch('app.template_statistics_client.get_template_statistics_for_service',
return_value=copy.deepcopy(stub_template_stats))
@@ -270,6 +275,7 @@ def test_should_show_upcoming_jobs_on_dashboard(
mock_get_jobs,
mock_get_usage,
mock_get_inbound_sms_summary,
mock_get_yearly_sms_unit_count_and_cost
):
response = logged_in_client.get(url_for('main.service_dashboard', service_id=SERVICE_ONE_ID))
@@ -301,6 +307,7 @@ def test_should_show_recent_jobs_on_dashboard(
mock_get_jobs,
mock_get_usage,
mock_get_inbound_sms_summary,
mock_get_yearly_sms_unit_count_and_cost
):
response = logged_in_client.get(url_for('main.service_dashboard', service_id=SERVICE_ONE_ID))
@@ -420,6 +427,7 @@ def test_menu_send_messages(
mock_get_detailed_service,
mock_get_usage,
mock_get_inbound_sms_summary,
mock_get_yearly_sms_unit_count_and_cost
):
with app_.test_request_context():
resp = _test_dashboard_menu(
@@ -451,6 +459,7 @@ def test_menu_manage_service(
mock_get_detailed_service,
mock_get_usage,
mock_get_inbound_sms_summary,
mock_get_yearly_sms_unit_count_and_cost
):
with app_.test_request_context():
resp = _test_dashboard_menu(
@@ -481,6 +490,7 @@ def test_menu_manage_api_keys(
mock_get_detailed_service,
mock_get_usage,
mock_get_inbound_sms_summary,
mock_get_yearly_sms_unit_count_and_cost
):
with app_.test_request_context():
resp = _test_dashboard_menu(
@@ -511,6 +521,7 @@ def test_menu_all_services_for_platform_admin_user(
mock_get_detailed_service,
mock_get_usage,
mock_get_inbound_sms_summary,
mock_get_yearly_sms_unit_count_and_cost
):
with app_.test_request_context():
resp = _test_dashboard_menu(
@@ -541,6 +552,7 @@ def test_route_for_service_permissions(
mock_get_detailed_service,
mock_get_usage,
mock_get_inbound_sms_summary,
mock_get_yearly_sms_unit_count_and_cost
):
with app_.test_request_context():
validate_route_permission(
@@ -578,6 +590,7 @@ def test_service_dashboard_updates_gets_dashboard_totals(
mock_get_jobs,
mock_get_usage,
mock_get_inbound_sms_summary,
mock_get_yearly_sms_unit_count_and_cost
):
mocker.patch('app.main.views.dashboard.get_dashboard_totals', return_value={
'email': {'requested': 123, 'delivered': 0, 'failed': 0},
@@ -803,6 +816,7 @@ def test_should_show_all_jobs_with_valid_statuses(
mock_get_jobs,
mock_get_usage,
mock_get_inbound_sms_summary,
mock_get_yearly_sms_unit_count_and_cost
):
logged_in_client.get(url_for('main.service_dashboard', service_id=SERVICE_ONE_ID))
@@ -819,3 +833,45 @@ def test_should_show_all_jobs_with_valid_statuses(
'ready to send',
'sent to dvla'
})
def test_should_show_remaining_free_tier_count(
logged_in_client,
mock_get_service_templates,
mock_get_template_statistics,
mock_get_detailed_service,
mock_get_jobs,
mock_get_usage,
mocker
):
mocker.patch(
'app.service_api_client.get_yearly_sms_unit_count_and_cost',
return_value={"billable_sms_units": 100, "total_cost": 200.0}
)
response = logged_in_client.get(url_for('main.service_dashboard', service_id=SERVICE_ONE_ID))
assert response.status_code == 200
assert '249,900' in response.get_data(as_text=True)
assert 'free text messages left' in response.get_data(as_text=True)
def test_should_show_cost_if_exceeded_free_tier_count(
logged_in_client,
mock_get_service_templates,
mock_get_template_statistics,
mock_get_detailed_service,
mock_get_jobs,
mock_get_usage,
mocker
):
mocker.patch(
'app.service_api_client.get_yearly_sms_unit_count_and_cost',
return_value={"billable_sms_units": 300000, "total_cost": 1500.50}
)
response = logged_in_client.get(url_for('main.service_dashboard', service_id=SERVICE_ONE_ID))
assert response.status_code == 200
assert '£1,500.50' in response.get_data(as_text=True)
assert 'spent on text messages' in response.get_data(as_text=True)

View File

@@ -23,6 +23,7 @@ def test_sign_out_user(
mock_has_permissions,
mock_get_template_statistics,
mock_get_detailed_service,
mock_get_yearly_sms_unit_count_and_cost,
mock_get_usage,
mock_get_inbound_sms_summary,
):

View File

@@ -92,6 +92,7 @@ def mock_get_detailed_service(mocker, api_user_active):
return {
'data': {
'id': service_id,
'free_sms_fragment_limit': 250000,
'statistics': {
'email': {'requested': 0, 'delivered': 0, 'failed': 0},
'sms': {'requested': 0, 'delivered': 0, 'failed': 0}
@@ -109,6 +110,7 @@ def mock_get_detailed_service_for_today(mocker, api_user_active):
return {
'data': {
'id': service_id,
'free_sms_fragment_limit': 250000,
'statistics': {
'email': {'requested': 0, 'delivered': 0, 'failed': 0},
'sms': {'requested': 0, 'delivered': 0, 'failed': 0}
@@ -1398,6 +1400,15 @@ def mock_get_usage(mocker, service_one, fake_uuid):
'app.service_api_client.get_service_usage', side_effect=_get_usage)
@pytest.fixture(scope='function')
def mock_get_yearly_sms_unit_count_and_cost(mocker, service_one, fake_uuid):
def _get_usage(service_id, year=None):
return {"billable_sms_units": 100, "total_cost": 200.0}
return mocker.patch(
'app.service_api_client.get_yearly_sms_unit_count_and_cost', side_effect=_get_usage)
@pytest.fixture(scope='function')
def mock_get_billable_units(mocker):
def _get_usage(service_id, year):