Remove NotificationStatistics

NotificationStatistics was added as a spike but didn't work out as expected. This is finally removing all that unused code.
I'll drop the table in the next PR
This commit is contained in:
Rebecca Law
2017-11-01 15:02:50 +00:00
parent ea1b6d1b31
commit f5e79302cd
12 changed files with 5 additions and 399 deletions

View File

@@ -9,7 +9,6 @@ import app.celery.tasks
from app.dao.notifications_dao import (
get_notification_by_id
)
from app.models import NotificationStatistics
from tests.app.notifications.test_notifications_ses_callback import ses_confirmation_callback
from tests.app.conftest import sample_notification as create_sample_notification
@@ -431,10 +430,6 @@ def test_firetext_callback_should_record_statsd(client, notify_db, notify_db_ses
app.statsd_client.incr.assert_any_call("callback.firetext.delivered")
def get_notification_stats(service_id):
return NotificationStatistics.query.filter_by(service_id=service_id).one()
def _sample_sns_s3_callback():
return json.dumps({
"SigningCertURL": "foo.pem",

View File

@@ -1,225 +0,0 @@
from datetime import date, timedelta
from flask import json
from freezegun import freeze_time
from datetime import datetime
from tests import create_authorization_header
from tests.app.conftest import (
sample_notification_statistics as create_sample_notification_statistics,
sample_service as create_sample_service
)
def test_get_notification_statistics(notify_api, sample_notification_statistics):
with notify_api.test_request_context():
with notify_api.test_client() as client:
auth_header = create_authorization_header(
service_id=sample_notification_statistics.service_id
)
response = client.get(
'/notifications/statistics?day={}'.format(date.today().isoformat()),
headers=[auth_header]
)
notifications = json.loads(response.get_data(as_text=True))
assert len(notifications['data']) == 1
stats = notifications['data'][0]
assert stats['emails_requested'] == 2
assert stats['emails_delivered'] == 1
assert stats['emails_failed'] == 1
assert stats['sms_requested'] == 2
assert stats['sms_delivered'] == 1
assert stats['sms_failed'] == 1
assert stats['service'] == str(sample_notification_statistics.service_id)
assert response.status_code == 200
@freeze_time('1955-11-05T12:00:00')
def test_get_notification_statistics_only_returns_today(notify_api, notify_db, notify_db_session, sample_service):
with notify_api.test_request_context():
with notify_api.test_client() as client:
yesterdays_notification_statistics = create_sample_notification_statistics(
notify_db,
notify_db_session,
service=sample_service,
day=date.today() - timedelta(days=1)
)
todays_notification_statistics = create_sample_notification_statistics(
notify_db,
notify_db_session,
service=sample_service,
day=date.today()
)
tomorrows_notification_statistics = create_sample_notification_statistics(
notify_db,
notify_db_session,
service=sample_service,
day=date.today() + timedelta(days=1)
)
auth_header = create_authorization_header(
service_id=sample_service.id
)
response = client.get(
'/notifications/statistics?day={}'.format(date.today().isoformat()),
headers=[auth_header]
)
notifications = json.loads(response.get_data(as_text=True))
assert len(notifications['data']) == 1
assert notifications['data'][0]['day'] == date.today().isoformat()
assert response.status_code == 200
def test_get_notification_statistics_fails_if_no_date(notify_api, sample_notification_statistics):
with notify_api.test_request_context():
with notify_api.test_client() as client:
auth_header = create_authorization_header(
service_id=sample_notification_statistics.service_id
)
response = client.get(
'/notifications/statistics',
headers=[auth_header]
)
resp = json.loads(response.get_data(as_text=True))
assert resp['result'] == 'error'
assert resp['message'] == {'day': ['Missing data for required field.']}
assert response.status_code == 400
def test_get_notification_statistics_fails_if_invalid_date(notify_api, sample_notification_statistics):
with notify_api.test_request_context():
with notify_api.test_client() as client:
auth_header = create_authorization_header(
service_id=sample_notification_statistics.service_id
)
response = client.get(
'/notifications/statistics?day=2016-99-99',
headers=[auth_header]
)
resp = json.loads(response.get_data(as_text=True))
assert resp['result'] == 'error'
assert resp['message'] == {'day': ['Not a valid date.']}
assert response.status_code == 400
def test_get_notification_statistics_returns_zeros_if_not_in_db(notify_api, sample_service):
with notify_api.test_request_context():
with notify_api.test_client() as client:
auth_header = create_authorization_header(
service_id=sample_service.id
)
response = client.get(
'/notifications/statistics?day={}'.format(date.today().isoformat()),
headers=[auth_header]
)
notifications = json.loads(response.get_data(as_text=True))
assert len(notifications['data']) == 1
stats = notifications['data'][0]
assert stats['emails_requested'] == 0
assert stats['emails_delivered'] == 0
assert stats['emails_failed'] == 0
assert stats['sms_requested'] == 0
assert stats['sms_delivered'] == 0
assert stats['sms_failed'] == 0
assert stats['service'] == str(sample_service.id)
assert response.status_code == 200
def test_get_notification_statistics_returns_both_existing_stats_and_generated_zeros(
notify_api,
notify_db,
notify_db_session
):
with notify_api.test_request_context():
with notify_api.test_client() as client:
service_with_stats = create_sample_service(
notify_db,
notify_db_session,
service_name='service_with_stats',
email_from='service_with_stats'
)
service_without_stats = create_sample_service(
notify_db,
notify_db_session,
service_name='service_without_stats',
email_from='service_without_stats'
)
notification_statistics = create_sample_notification_statistics(
notify_db,
notify_db_session,
service=service_with_stats,
day=date.today()
)
auth_header = create_authorization_header(
service_id=service_with_stats.id
)
response = client.get(
'/notifications/statistics?day={}'.format(date.today().isoformat()),
headers=[auth_header]
)
notifications = json.loads(response.get_data(as_text=True))
assert len(notifications['data']) == 2
retrieved_stats = notifications['data'][0]
generated_stats = notifications['data'][1]
assert retrieved_stats['emails_requested'] == 2
assert retrieved_stats['emails_delivered'] == 1
assert retrieved_stats['emails_failed'] == 1
assert retrieved_stats['sms_requested'] == 2
assert retrieved_stats['sms_delivered'] == 1
assert retrieved_stats['sms_failed'] == 1
assert retrieved_stats['service'] == str(service_with_stats.id)
assert generated_stats['emails_requested'] == 0
assert generated_stats['emails_delivered'] == 0
assert generated_stats['emails_failed'] == 0
assert generated_stats['sms_requested'] == 0
assert generated_stats['sms_delivered'] == 0
assert generated_stats['sms_failed'] == 0
assert generated_stats['service'] == str(service_without_stats.id)
assert response.status_code == 200
def test_get_notification_statistics_returns_zeros_when_only_stats_for_different_date(
notify_api,
sample_notification_statistics
):
with notify_api.test_request_context():
with notify_api.test_client() as client:
with freeze_time('1985-10-26T00:06:00'):
auth_header = create_authorization_header(
service_id=sample_notification_statistics.service_id
)
response = client.get(
'/notifications/statistics?day={}'.format(datetime.utcnow().isoformat()),
headers=[auth_header]
)
notifications = json.loads(response.get_data(as_text=True))
assert response.status_code == 200
assert len(notifications['data']) == 1
assert notifications['data'][0]['emails_requested'] == 0
assert notifications['data'][0]['emails_delivered'] == 0
assert notifications['data'][0]['emails_failed'] == 0
assert notifications['data'][0]['sms_requested'] == 0
assert notifications['data'][0]['sms_delivered'] == 0
assert notifications['data'][0]['sms_failed'] == 0
assert notifications['data'][0]['service'] == str(sample_notification_statistics.service_id)