mirror of
https://github.com/GSA/notifications-api.git
synced 2026-02-04 02:11:11 -05:00
Add dao method to get notification by reference with tests
This commit is contained in:
@@ -248,6 +248,15 @@ def get_notification_by_id(notification_id):
|
|||||||
return Notification.query.filter_by(id=notification_id).first()
|
return Notification.query.filter_by(id=notification_id).first()
|
||||||
|
|
||||||
|
|
||||||
|
@statsd(namespace="dao")
|
||||||
|
def get_notification_by_reference(service_id, reference, key_type):
|
||||||
|
filter_dict = {'service_id': service_id, 'client_reference': reference}
|
||||||
|
if key_type:
|
||||||
|
filter_dict['key_type'] = key_type
|
||||||
|
|
||||||
|
return Notification.query.filter_by(**filter_dict).options(joinedload('template_history')).one()
|
||||||
|
|
||||||
|
|
||||||
def get_notifications(filter_dict=None):
|
def get_notifications(filter_dict=None):
|
||||||
return _filter_query(Notification.query, filter_dict=filter_dict)
|
return _filter_query(Notification.query, filter_dict=filter_dict)
|
||||||
|
|
||||||
|
|||||||
@@ -411,7 +411,8 @@ def sample_notification(notify_db,
|
|||||||
personalisation=None,
|
personalisation=None,
|
||||||
api_key_id=None,
|
api_key_id=None,
|
||||||
key_type=KEY_TYPE_NORMAL,
|
key_type=KEY_TYPE_NORMAL,
|
||||||
sent_by=None):
|
sent_by=None,
|
||||||
|
client_reference=None):
|
||||||
if created_at is None:
|
if created_at is None:
|
||||||
created_at = datetime.utcnow()
|
created_at = datetime.utcnow()
|
||||||
if service is None:
|
if service is None:
|
||||||
@@ -445,7 +446,8 @@ def sample_notification(notify_db,
|
|||||||
'api_key_id': api_key_id,
|
'api_key_id': api_key_id,
|
||||||
'key_type': key_type,
|
'key_type': key_type,
|
||||||
'sent_by': sent_by,
|
'sent_by': sent_by,
|
||||||
'updated_at': created_at if status in NOTIFICATION_STATUS_TYPES_COMPLETED else None
|
'updated_at': created_at if status in NOTIFICATION_STATUS_TYPES_COMPLETED else None,
|
||||||
|
'client_reference': client_reference
|
||||||
}
|
}
|
||||||
if job_row_number:
|
if job_row_number:
|
||||||
data['job_row_number'] = job_row_number
|
data['job_row_number'] = job_row_number
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ from app.dao.notifications_dao import (
|
|||||||
dao_update_notification,
|
dao_update_notification,
|
||||||
delete_notifications_created_more_than_a_week_ago,
|
delete_notifications_created_more_than_a_week_ago,
|
||||||
get_notification_by_id,
|
get_notification_by_id,
|
||||||
|
get_notification_by_reference,
|
||||||
get_notification_for_job,
|
get_notification_for_job,
|
||||||
get_notification_billable_unit_count_per_month,
|
get_notification_billable_unit_count_per_month,
|
||||||
get_notification_with_personalisation,
|
get_notification_with_personalisation,
|
||||||
@@ -616,7 +617,7 @@ def test_save_notification_with_no_job(sample_template, mmg_provider):
|
|||||||
assert notification_from_db.status == 'created'
|
assert notification_from_db.status == 'created'
|
||||||
|
|
||||||
|
|
||||||
def test_get_notification(sample_notification):
|
def test_get_notification_by_id(sample_notification):
|
||||||
notification_from_db = get_notification_with_personalisation(
|
notification_from_db = get_notification_with_personalisation(
|
||||||
sample_notification.service.id,
|
sample_notification.service.id,
|
||||||
sample_notification.id,
|
sample_notification.id,
|
||||||
@@ -625,6 +626,16 @@ def test_get_notification(sample_notification):
|
|||||||
assert sample_notification == notification_from_db
|
assert sample_notification == notification_from_db
|
||||||
|
|
||||||
|
|
||||||
|
def test_get_notification_by_reference(notify_db, notify_db_session):
|
||||||
|
notification = sample_notification(notify_db, notify_db_session, client_reference="some-client-ref")
|
||||||
|
notification_from_db = get_notification_by_reference(
|
||||||
|
notification.service.id,
|
||||||
|
notification.client_reference,
|
||||||
|
key_type=None
|
||||||
|
)
|
||||||
|
assert notification == notification_from_db
|
||||||
|
|
||||||
|
|
||||||
def test_save_notification_no_job_id(sample_template, mmg_provider):
|
def test_save_notification_no_job_id(sample_template, mmg_provider):
|
||||||
assert Notification.query.count() == 0
|
assert Notification.query.count() == 0
|
||||||
data = _notification_json(sample_template)
|
data = _notification_json(sample_template)
|
||||||
|
|||||||
Reference in New Issue
Block a user