mirror of
https://github.com/GSA/notifications-api.git
synced 2026-01-30 06:21:50 -05:00
New table and endpoints for service contact lists.
- Table to store meta data for the emergency contact list for a service. - Endpoint for fetching contact lists for service - Endpoint for saving contact list for service. The list will be stored in S3. The service will then be able to send emergency announcements to staff.
This commit is contained in:
10
tests/app/dao/test_service_contact_list_dao.py
Normal file
10
tests/app/dao/test_service_contact_list_dao.py
Normal file
@@ -0,0 +1,10 @@
|
||||
from app.dao.service_contact_list_dao import dao_get_contact_lists
|
||||
from tests.app.db import create_service_contact_list
|
||||
|
||||
|
||||
def test_dao_get_contact_lists(notify_db_session):
|
||||
contact_list = create_service_contact_list()
|
||||
fetched_list = dao_get_contact_lists(contact_list.service_id)
|
||||
|
||||
assert len(fetched_list) == 1
|
||||
assert fetched_list[0] == contact_list
|
||||
@@ -60,7 +60,8 @@ from app.models import (
|
||||
LetterBranding,
|
||||
Domain,
|
||||
NotificationHistory,
|
||||
ReturnedLetter
|
||||
ReturnedLetter,
|
||||
ServiceContactList
|
||||
)
|
||||
|
||||
|
||||
@@ -965,3 +966,26 @@ def create_returned_letter(service=None, reported_at=None, notification_id=None)
|
||||
db.session.add(returned_letter)
|
||||
db.session.commit()
|
||||
return returned_letter
|
||||
|
||||
|
||||
def create_service_contact_list(
|
||||
service=None,
|
||||
original_file_name='EmergencyContactList.xls',
|
||||
row_count=100,
|
||||
template_type='email',
|
||||
created_by_id=None
|
||||
):
|
||||
if not service:
|
||||
service = create_service(service_name='service for contact list', user=create_user())
|
||||
|
||||
contact_list = ServiceContactList(
|
||||
service_id=service.id,
|
||||
original_file_name=original_file_name,
|
||||
row_count=row_count,
|
||||
template_type=template_type,
|
||||
created_by_id=created_by_id or service.users[0].id,
|
||||
created_at=datetime.utcnow(),
|
||||
)
|
||||
db.session.add(contact_list)
|
||||
db.session.commit()
|
||||
return contact_list
|
||||
|
||||
81
tests/app/service/test_service_contact_list_rest.py
Normal file
81
tests/app/service/test_service_contact_list_rest.py
Normal file
@@ -0,0 +1,81 @@
|
||||
import uuid
|
||||
|
||||
from app.models import ServiceContactList
|
||||
from tests.app.db import create_service_contact_list, create_service
|
||||
|
||||
|
||||
def test_create_service_contact_list(sample_service, admin_request):
|
||||
data = {
|
||||
"id": str(uuid.uuid4()),
|
||||
"row_count": 100,
|
||||
"original_file_name": "staff_emergency_list.xls",
|
||||
"template_type": 'email',
|
||||
"created_by": str(sample_service.users[0].id)
|
||||
}
|
||||
|
||||
response = admin_request.post(
|
||||
'service.create_contact_list',
|
||||
_data=data,
|
||||
service_id=sample_service.id,
|
||||
_expected_status=201
|
||||
)
|
||||
|
||||
assert response['id'] == data['id']
|
||||
assert response['original_file_name'] == 'staff_emergency_list.xls'
|
||||
assert response['row_count'] == 100
|
||||
assert response['template_type'] == 'email'
|
||||
assert response['service_id'] == str(sample_service.id)
|
||||
assert response['created_at']
|
||||
|
||||
db_results = ServiceContactList.query.all()
|
||||
assert len(db_results) == 1
|
||||
assert str(db_results[0].id) == data['id']
|
||||
|
||||
|
||||
def test_create_service_contact_list_cannot_save_type_letter(sample_service, admin_request):
|
||||
data = {
|
||||
"id": str(uuid.uuid4()),
|
||||
"row_count": 100,
|
||||
"original_file_name": "staff_emergency_list.xls",
|
||||
"template_type": 'letter',
|
||||
"created_by": str(sample_service.users[0].id)
|
||||
}
|
||||
|
||||
response = admin_request.post(
|
||||
'service.create_contact_list',
|
||||
_data=data,
|
||||
service_id=sample_service.id,
|
||||
_expected_status=400
|
||||
)
|
||||
assert response['errors'][0]['message'] == "template_type letter is not one of [email, sms]"
|
||||
|
||||
|
||||
def test_get_contact_list(admin_request, notify_db_session):
|
||||
contact_list = create_service_contact_list()
|
||||
|
||||
response = admin_request.get(
|
||||
'service.get_contact_list',
|
||||
service_id=contact_list.service_id
|
||||
)
|
||||
|
||||
assert len(response) == 1
|
||||
assert response[0] == contact_list.serialize()
|
||||
|
||||
|
||||
def test_get_contact_list_returns_for_service(admin_request, notify_db_session):
|
||||
service_1 = create_service(service_name='Service under test')
|
||||
service_2 = create_service(service_name='Service should return results')
|
||||
|
||||
expected_list_1 = create_service_contact_list(service=service_1)
|
||||
expected_list_2 = create_service_contact_list(service=service_1)
|
||||
# not included in results
|
||||
create_service_contact_list(service=service_2)
|
||||
|
||||
response = admin_request.get(
|
||||
'service.get_contact_list',
|
||||
service_id=service_1.id
|
||||
)
|
||||
|
||||
assert len(response) == 2
|
||||
assert response[0] == expected_list_2.serialize()
|
||||
assert response[1] == expected_list_1.serialize()
|
||||
Reference in New Issue
Block a user