Update the query for the notifications activity page to return the data for the days of retention if set.

This commit is contained in:
Rebecca Law
2018-07-19 14:28:15 +01:00
parent 9674005c71
commit dae29a1b61
4 changed files with 67 additions and 24 deletions

View File

@@ -8,10 +8,11 @@ from app.dao.service_data_retention_dao import (
fetch_service_data_retention,
insert_service_data_retention,
update_service_data_retention,
fetch_service_data_retention_by_id
fetch_service_data_retention_by_id,
fetch_service_data_retention_by_notification_type
)
from app.models import ServiceDataRetention
from tests.app.db import create_service
from tests.app.db import create_service, create_service_data_retention
def test_fetch_service_data_retention(sample_service):
@@ -131,3 +132,17 @@ def test_update_service_data_retention_does_not_update_row_if_data_retention_is_
service_id=uuid.uuid4(),
days_of_retention=5)
assert updated_count == 0
@pytest.mark.parametrize('notification_type, alternate',
[('sms', 'email'),
('email', 'sms'), ('letter', 'email')])
def test_fetch_service_data_retention_by_notification_type(sample_service, notification_type, alternate):
data_retention = create_service_data_retention(service_id=sample_service.id, notification_type=notification_type)
create_service_data_retention(service_id=sample_service.id, notification_type=alternate)
result = fetch_service_data_retention_by_notification_type(sample_service.id, notification_type)
assert result == data_retention
def test_fetch_service_data_retention_by_notification_type_returns_none_when_no_rows(sample_service):
assert not fetch_service_data_retention_by_notification_type(sample_service.id, 'email')

View File

@@ -42,7 +42,8 @@ from tests.app.db import (
create_letter_contact,
create_inbound_number,
create_service_sms_sender,
create_service_with_defined_sms_sender
create_service_with_defined_sms_sender,
create_service_data_retention
)
from tests.app.db import create_user
@@ -1225,29 +1226,29 @@ def test_get_service_and_api_key_history(notify_api, notify_db, notify_db_sessio
assert json_resp['data']['api_key_history'][0]['id'] == str(api_key.id)
def test_get_all_notifications_for_service_in_order(notify_api, notify_db, notify_db_session):
with notify_api.test_request_context(), notify_api.test_client() as client:
service_1 = create_service(service_name="1", email_from='1')
service_2 = create_service(service_name="2", email_from='2')
def test_get_all_notifications_for_service_in_order(client, notify_db_session):
service_1 = create_service(service_name="1", email_from='1')
service_2 = create_service(service_name="2", email_from='2')
template_1 = create_template(service=service_1)
template_2 = create_template(service=service_2)
create_notification(template=template_2)
create_sample_notification(notify_db, notify_db_session, service=service_2)
notification_1 = create_notification(template=template_1)
notification_2 = create_notification(template=template_1)
notification_3 = create_notification(template=template_1)
notification_1 = create_sample_notification(notify_db, notify_db_session, service=service_1)
notification_2 = create_sample_notification(notify_db, notify_db_session, service=service_1)
notification_3 = create_sample_notification(notify_db, notify_db_session, service=service_1)
auth_header = create_authorization_header()
auth_header = create_authorization_header()
response = client.get(
path='/service/{}/notifications'.format(service_1.id),
headers=[auth_header])
response = client.get(
path='/service/{}/notifications'.format(service_1.id),
headers=[auth_header])
resp = json.loads(response.get_data(as_text=True))
assert len(resp['notifications']) == 3
assert resp['notifications'][0]['to'] == notification_3.to
assert resp['notifications'][1]['to'] == notification_2.to
assert resp['notifications'][2]['to'] == notification_1.to
assert response.status_code == 200
resp = json.loads(response.get_data(as_text=True))
assert len(resp['notifications']) == 3
assert resp['notifications'][0]['id'] == str(notification_3.id)
assert resp['notifications'][1]['id'] == str(notification_2.id)
assert resp['notifications'][2]['id'] == str(notification_1.id)
assert response.status_code == 200
def test_get_all_notifications_for_service_formatted_for_csv(client, sample_template):
@@ -1268,6 +1269,19 @@ def test_get_all_notifications_for_service_formatted_for_csv(client, sample_temp
assert resp['notifications'][0]['status'] == 'Sending'
def test_get_all_notifications_for_service_limits_days_for_number_of_days_of_retention(client, sample_template):
create_service_data_retention(service_id=sample_template.service_id, notification_type='sms', days_of_retention=9)
create_notification(template=sample_template)
create_notification(template=sample_template, created_at=datetime.utcnow() + timedelta(days=8))
response = client.get(
path='/service/{}/notifications?template_type=sms&limit_days=7'.format(sample_template.service_id),
headers=[create_authorization_header()])
assert response.status_code == 200
json_resp = json.loads(response.get_data(as_text=True))
assert len(json_resp['notifications']) == 2
def test_get_notification_for_service_without_uuid(client, notify_db, notify_db_session):
service_1 = create_service(service_name="1", email_from='1')
response = client.get(