mirror of
https://github.com/GSA/notifications-api.git
synced 2026-08-18 21:48:49 -04:00
Added joins to template, job and user for returned letter query.
Added unit tests Comleted endpoint to get returned letter details
This commit is contained in:
@@ -6,7 +6,7 @@ from app.dao.returned_letters_dao import (
|
||||
insert_or_update_returned_letters, get_returned_letter_summary,
|
||||
fetch_returned_letters
|
||||
)
|
||||
from app.models import ReturnedLetter
|
||||
from app.models import ReturnedLetter, NOTIFICATION_RETURNED_LETTER
|
||||
from tests.app.db import create_notification, create_notification_history, create_returned_letter
|
||||
|
||||
|
||||
@@ -121,14 +121,62 @@ def test_get_returned_letter_summary_orders_by_reported_at(sample_service):
|
||||
assert results[1].returned_letter_count == 2
|
||||
|
||||
|
||||
def test_fetch_returned_letters(sample_service):
|
||||
def test_fetch_returned_letters_from_notifications_and_notification_history(sample_letter_template):
|
||||
today = datetime.now()
|
||||
last_month = datetime.now() - timedelta(days=30)
|
||||
|
||||
create_returned_letter(service=sample_service, reported_at=today)
|
||||
create_returned_letter(service=sample_service, reported_at=today)
|
||||
create_returned_letter(service=sample_service, reported_at=last_month)
|
||||
letter_1 = create_notification(template=sample_letter_template, client_reference='letter_1',
|
||||
status=NOTIFICATION_RETURNED_LETTER,
|
||||
created_at=datetime.utcnow() - timedelta(days=1))
|
||||
returned_letter_1 = create_returned_letter(service=sample_letter_template.service, reported_at=today,
|
||||
notification_id=letter_1.id)
|
||||
letter_2 = create_notification_history(template=sample_letter_template, client_reference='letter_2',
|
||||
status=NOTIFICATION_RETURNED_LETTER, created_at=datetime.utcnow())
|
||||
returned_letter_2 = create_returned_letter(service=sample_letter_template.service, reported_at=today,
|
||||
notification_id=letter_2.id)
|
||||
letter_3 = create_notification_history(template=sample_letter_template, client_reference='letter_3',
|
||||
status=NOTIFICATION_RETURNED_LETTER)
|
||||
create_returned_letter(service=sample_letter_template.service, reported_at=last_month,
|
||||
notification_id=letter_3.id)
|
||||
|
||||
results = fetch_returned_letters(service_id=sample_service.id, report_date=today.date())
|
||||
results = fetch_returned_letters(service_id=sample_letter_template.service_id, report_date=today.date())
|
||||
|
||||
assert len(results) == 2
|
||||
assert results[0] == (letter_2.id, returned_letter_2.reported_at, letter_2.client_reference, letter_2.created_at,
|
||||
sample_letter_template.name, letter_2.template_id, letter_2.template_version,
|
||||
letter_2.created_by_id, None, None, None)
|
||||
assert results[1] == (letter_1.id, returned_letter_1.reported_at, letter_1.client_reference, letter_1.created_at,
|
||||
sample_letter_template.name, letter_1.template_id, letter_1.template_version,
|
||||
letter_1.created_by_id, None, None, None)
|
||||
|
||||
|
||||
def test_fetch_returned_letters_with_jobs(sample_letter_job):
|
||||
today = datetime.now()
|
||||
letter_1 = create_notification_history(template=sample_letter_job.template, client_reference='letter_1',
|
||||
status=NOTIFICATION_RETURNED_LETTER,
|
||||
job=sample_letter_job, job_row_number=20,
|
||||
created_at=datetime.utcnow() - timedelta(minutes=1))
|
||||
returned_letter_1 = create_returned_letter(service=sample_letter_job.service, reported_at=today,
|
||||
notification_id=letter_1.id)
|
||||
|
||||
results = fetch_returned_letters(service_id=sample_letter_job.service_id, report_date=today.date())
|
||||
assert len(results) == 1
|
||||
assert results[0] == (letter_1.id, returned_letter_1.reported_at, letter_1.client_reference, letter_1.created_at,
|
||||
sample_letter_job.template.name, letter_1.template_id, letter_1.template_version,
|
||||
letter_1.created_by_id, None, sample_letter_job.original_file_name, letter_1.job_row_number)
|
||||
|
||||
|
||||
def test_fetch_returned_letters_with_create_by_user(sample_letter_template):
|
||||
today = datetime.now()
|
||||
letter_1 = create_notification_history(template=sample_letter_template, client_reference='letter_1',
|
||||
status=NOTIFICATION_RETURNED_LETTER,
|
||||
created_at=datetime.utcnow() - timedelta(minutes=1),
|
||||
created_by_id=sample_letter_template.service.users[0].id)
|
||||
returned_letter_1 = create_returned_letter(service=sample_letter_template.service, reported_at=today,
|
||||
notification_id=letter_1.id)
|
||||
|
||||
results = fetch_returned_letters(service_id=sample_letter_template.service_id, report_date=today.date())
|
||||
assert len(results) == 1
|
||||
assert results[0] == (letter_1.id, returned_letter_1.reported_at, letter_1.client_reference, letter_1.created_at,
|
||||
sample_letter_template.name, letter_1.template_id, letter_1.template_version,
|
||||
letter_1.created_by_id, sample_letter_template.service.users[0].name, None, None)
|
||||
|
||||
@@ -60,7 +60,6 @@ from app.models import (
|
||||
LetterBranding,
|
||||
Domain,
|
||||
NotificationHistory,
|
||||
NOTIFICATION_RETURNED_LETTER,
|
||||
ReturnedLetter
|
||||
)
|
||||
|
||||
@@ -944,15 +943,13 @@ def set_up_usage_data(start_date):
|
||||
return org, org_3, service, service_3, service_4, service_sms_only
|
||||
|
||||
|
||||
def create_returned_letter(service=None, reported_at=None):
|
||||
def create_returned_letter(service=None, reported_at=None, notification_id=None):
|
||||
if not service:
|
||||
service = create_service(service_name='a - with sms and letter')
|
||||
template = create_template(service=service, template_type=LETTER_TYPE)
|
||||
notification = create_notification(template=template, status=NOTIFICATION_RETURNED_LETTER)
|
||||
returned_letter = ReturnedLetter(
|
||||
service_id=service.id,
|
||||
reported_at=reported_at or datetime.utcnow(),
|
||||
notification_id=notification.id,
|
||||
notification_id=notification_id or uuid.uuid4(),
|
||||
created_at=datetime.utcnow(),
|
||||
)
|
||||
|
||||
|
||||
@@ -27,6 +27,7 @@ from app.models import (
|
||||
KEY_TYPE_NORMAL, KEY_TYPE_TEAM, KEY_TYPE_TEST,
|
||||
EMAIL_TYPE, SMS_TYPE, LETTER_TYPE,
|
||||
INTERNATIONAL_SMS_TYPE, INBOUND_SMS_TYPE,
|
||||
NOTIFICATION_RETURNED_LETTER
|
||||
)
|
||||
from tests import create_authorization_header
|
||||
from tests.app.db import (
|
||||
@@ -47,7 +48,9 @@ from tests.app.db import (
|
||||
create_domain,
|
||||
create_email_branding,
|
||||
create_annual_billing,
|
||||
create_returned_letter)
|
||||
create_returned_letter, create_notification_history,
|
||||
create_job
|
||||
)
|
||||
from tests.app.db import create_user
|
||||
|
||||
|
||||
@@ -3385,3 +3388,59 @@ def test_get_returned_letter_summary(admin_request, sample_service):
|
||||
assert len(response) == 2
|
||||
assert response[0] == {'returned_letter_count': 2, 'reported_at': '2019-12-11'}
|
||||
assert response[1] == {'returned_letter_count': 1, 'reported_at': '2019-12-08'}
|
||||
|
||||
|
||||
@freeze_time('2019-12-11 13:30')
|
||||
def test_get_returned_letter(admin_request, sample_letter_template):
|
||||
letter_1 = create_notification_history(template=sample_letter_template, client_reference='letter_1',
|
||||
status=NOTIFICATION_RETURNED_LETTER,
|
||||
created_at=datetime.utcnow() - timedelta(minutes=1),
|
||||
created_by_id=sample_letter_template.service.users[0].id)
|
||||
create_returned_letter(service=sample_letter_template.service, reported_at=datetime.utcnow() - timedelta(days=3),
|
||||
notification_id=letter_1.id)
|
||||
|
||||
job = create_job(template=sample_letter_template)
|
||||
letter_2 = create_notification(template=sample_letter_template, client_reference='letter_2',
|
||||
status=NOTIFICATION_RETURNED_LETTER,
|
||||
job=job, job_row_number=2,
|
||||
created_at=datetime.utcnow() - timedelta(days=5))
|
||||
create_returned_letter(service=sample_letter_template.service, reported_at=datetime.utcnow(),
|
||||
notification_id=letter_2.id)
|
||||
|
||||
letter_3 = create_notification(template=sample_letter_template, client_reference='letter_3',
|
||||
status=NOTIFICATION_RETURNED_LETTER,
|
||||
created_at=datetime.utcnow() - timedelta(days=1),
|
||||
created_by_id=sample_letter_template.service.users[0].id)
|
||||
create_returned_letter(service=sample_letter_template.service, reported_at=datetime.utcnow(),
|
||||
notification_id=letter_3.id)
|
||||
not_included_in_results = create_template(service=create_service(service_name='not included in results'),
|
||||
template_type='letter')
|
||||
letter_4 = create_notification_history(template=not_included_in_results,
|
||||
status=NOTIFICATION_RETURNED_LETTER)
|
||||
create_returned_letter(service=not_included_in_results.service, reported_at=datetime.utcnow(),
|
||||
notification_id=letter_4.id)
|
||||
response = admin_request.get('service.get_returned_letters', service_id=sample_letter_template.service_id,
|
||||
reported_at='2019-12-11')
|
||||
|
||||
assert len(response) == 2
|
||||
assert response[0]['notification_id'] == str(letter_3.id)
|
||||
assert response[0]['client_reference'] == 'letter_3'
|
||||
assert response[0]['reported_at'] == '2019-12-11'
|
||||
assert response[0]['created_at'] == '2019-12-10T13:30:00.000000Z'
|
||||
assert response[0]['template_name'] == sample_letter_template.name
|
||||
assert response[0]['template_id'] == str(sample_letter_template.id)
|
||||
assert response[0]['template_version'] == sample_letter_template.version
|
||||
assert response[0]['user_name'] == sample_letter_template.service.users[0].name
|
||||
assert not response[0]['original_file_name']
|
||||
assert not response[0]['job_row_number']
|
||||
|
||||
assert response[1]['notification_id'] == str(letter_2.id)
|
||||
assert response[1]['client_reference'] == 'letter_2'
|
||||
assert response[1]['reported_at'] == '2019-12-11'
|
||||
assert response[1]['created_at'] == '2019-12-06T13:30:00.000000Z'
|
||||
assert response[1]['template_name'] == sample_letter_template.name
|
||||
assert response[1]['template_id'] == str(sample_letter_template.id)
|
||||
assert response[1]['template_version'] == sample_letter_template.version
|
||||
assert not response[1]['user_name']
|
||||
assert response[1]['original_file_name'] == job.original_file_name
|
||||
assert response[1]['job_row_number'] == 2
|
||||
|
||||
Reference in New Issue
Block a user