Add dao method to get notification by reference with tests

This commit is contained in:
Imdad Ahad
2016-12-07 14:08:22 +00:00
parent f02869c1e6
commit d4d733f997
3 changed files with 25 additions and 3 deletions

View File

@@ -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)

View File

@@ -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

View File

@@ -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)