mirror of
https://github.com/GSA/notifications-api.git
synced 2026-06-05 22:08:42 -04:00
New endpoint to search by "to" field of the notification.
The query ignores case and spaces.
This commit is contained in:
@@ -39,7 +39,7 @@ from app.dao.notifications_dao import (
|
||||
dao_delete_notifications_and_history_by_id,
|
||||
dao_timeout_notifications,
|
||||
is_delivery_slow_for_provider,
|
||||
dao_update_notifications_sent_to_dvla)
|
||||
dao_update_notifications_sent_to_dvla, dao_get_notifications_by_to_field)
|
||||
|
||||
from app.dao.services_dao import dao_update_service
|
||||
from tests.app.db import create_notification
|
||||
@@ -1626,3 +1626,33 @@ def test_dao_update_notifications_sent_to_dvla_does_update_history_if_test_key(
|
||||
assert updated_notification.sent_at
|
||||
assert updated_notification.updated_at
|
||||
assert not NotificationHistory.query.get(notification.id)
|
||||
|
||||
|
||||
def test_dao_get_notifications_by_to_field(sample_template):
|
||||
notification1 = create_notification(template=sample_template, to_field='+447700900855')
|
||||
notification2 = create_notification(template=sample_template, to_field='jack@gmail.com')
|
||||
notification3 = create_notification(template=sample_template, to_field='jane@gmail.com')
|
||||
results = dao_get_notifications_by_to_field(notification1.service_id, "+447700900855")
|
||||
assert len(results) == 1
|
||||
assert results[0].id == notification1.id
|
||||
|
||||
|
||||
def test_dao_get_notifications_by_to_field_search_is_not_case_sensitive(sample_template):
|
||||
notification1 = create_notification(template=sample_template, to_field='+447700900855')
|
||||
notification2 = create_notification(template=sample_template, to_field='jack@gmail.com')
|
||||
notification3 = create_notification(template=sample_template, to_field='jane@gmail.com')
|
||||
results = dao_get_notifications_by_to_field(notification1.service_id, 'JACK@gmail.com')
|
||||
assert len(results) == 1
|
||||
assert results[0].id == notification2.id
|
||||
|
||||
|
||||
def test_dao_get_notifications_by_to_field_search_ignores_spaces(sample_template):
|
||||
notification1 = create_notification(template=sample_template, to_field='+447700900855')
|
||||
notification2 = create_notification(template=sample_template, to_field='+44 77 00900 855')
|
||||
notification3 = create_notification(template=sample_template, to_field=' +4477009 00 855 ')
|
||||
notification4 = create_notification(template=sample_template, to_field='jack@gmail.com')
|
||||
results = dao_get_notifications_by_to_field(notification1.service_id, '+447700900855')
|
||||
assert len(results) == 3
|
||||
assert notification1.id in [r.id for r in results]
|
||||
assert notification2.id in [r.id for r in results]
|
||||
assert notification3.id in [r.id for r in results]
|
||||
|
||||
@@ -1614,3 +1614,48 @@ def test_get_monthly_billing_usage_returns_empty_list_if_no_notifications(client
|
||||
)
|
||||
assert response.status_code == 200
|
||||
assert json.loads(response.get_data(as_text=True)) == []
|
||||
|
||||
|
||||
def test_search_for_notification_by_to_field(client, notify_db, notify_db_session):
|
||||
notification1 = create_sample_notification(notify_db, notify_db_session,
|
||||
to_field="+447700900855")
|
||||
notification2 = create_sample_notification(notify_db, notify_db_session, to_field="jack@gmail.com")
|
||||
|
||||
response = client.get('/service/{}/notification/{}'.format(notification1.service_id, "jack@gmail.com"),
|
||||
headers=[create_authorization_header()])
|
||||
assert response.status_code == 200
|
||||
result = json.loads(response.get_data(as_text=True))
|
||||
assert len(result["notifications"]) == 1
|
||||
assert result["notifications"][0]["id"] == str(notification2.id)
|
||||
|
||||
|
||||
def test_search_for_notification_by_to_field_return_empty_list_if_there_is_no_match(
|
||||
client, notify_db, notify_db_session):
|
||||
notification1 = create_sample_notification(notify_db, notify_db_session,
|
||||
to_field="+447700900855")
|
||||
notification2 = create_sample_notification(notify_db, notify_db_session, to_field="jack@gmail.com")
|
||||
|
||||
response = client.get('/service/{}/notification/{}'.format(notification1.service_id, "+447700900800"),
|
||||
headers=[create_authorization_header()])
|
||||
assert response.status_code == 200
|
||||
assert len(json.loads(response.get_data(as_text=True))["notifications"]) == 0
|
||||
|
||||
|
||||
def test_search_for_notification_by_to_field_return_multiple_matches(
|
||||
client, notify_db, notify_db_session):
|
||||
notification1 = create_sample_notification(notify_db, notify_db_session,
|
||||
to_field="+447700900855")
|
||||
notification2 = create_sample_notification(notify_db, notify_db_session,
|
||||
to_field=" +44 77009 00855 ")
|
||||
notification3 = create_sample_notification(notify_db, notify_db_session,
|
||||
to_field="+44770 0900 855")
|
||||
notification4 = create_sample_notification(notify_db, notify_db_session, to_field="jack@gmail.com")
|
||||
|
||||
response = client.get('/service/{}/notification/{}'.format(notification1.service_id, "+447700900855"),
|
||||
headers=[create_authorization_header()])
|
||||
assert response.status_code == 200
|
||||
result = json.loads(response.get_data(as_text=True))
|
||||
assert len(result["notifications"]) == 3
|
||||
assert str(notification1.id) in [n["id"] for n in result["notifications"]]
|
||||
assert str(notification2.id) in [n["id"] for n in result["notifications"]]
|
||||
assert str(notification3.id) in [n["id"] for n in result["notifications"]]
|
||||
|
||||
Reference in New Issue
Block a user