mirror of
https://github.com/GSA/notifications-api.git
synced 2026-01-30 22:42:28 -05:00
Update the template_schema to include a parent_folder_id.
When creating the Tempalte from_json, the folder is passed in. Since some validation should done, as in the folder exists and is for the same service, the folder is passed through to the Tempalte.from_json method. When the template is persisted so is the relationship to folders. TODO: If the folder is invalid a specific message should be returned.
This commit is contained in:
@@ -12,7 +12,7 @@ from freezegun import freeze_time
|
||||
from notifications_utils import SMS_CHAR_COUNT_LIMIT
|
||||
|
||||
|
||||
from app.models import Template, SMS_TYPE, EMAIL_TYPE, LETTER_TYPE, TemplateHistory
|
||||
from app.models import Template, SMS_TYPE, EMAIL_TYPE, LETTER_TYPE, TemplateHistory, TemplateFolder
|
||||
from app.dao.templates_dao import dao_get_template_by_id, dao_redact_template
|
||||
|
||||
from tests import create_authorization_header
|
||||
@@ -21,7 +21,10 @@ from tests.app.conftest import (
|
||||
sample_template_without_email_permission,
|
||||
sample_template_without_letter_permission,
|
||||
sample_template_without_sms_permission)
|
||||
from tests.app.db import create_service, create_letter_contact, create_template, create_notification
|
||||
from tests.app.db import (
|
||||
create_service, create_letter_contact, create_template, create_notification,
|
||||
create_template_folder,
|
||||
)
|
||||
from tests.conftest import set_config_values
|
||||
|
||||
|
||||
@@ -71,6 +74,57 @@ def test_should_create_a_new_template_for_a_service(
|
||||
assert sorted(json_resp['data']) == sorted(template_schema.dump(template).data)
|
||||
|
||||
|
||||
def test_should_create_a_new_template_for_a_service_adds_folder_relationship(
|
||||
client, sample_service
|
||||
):
|
||||
parent_folder = create_template_folder(service=sample_service, name='parent folder')
|
||||
|
||||
data = {
|
||||
'name': 'my template',
|
||||
'template_type': 'sms',
|
||||
'content': 'template <b>content</b>',
|
||||
'service': str(sample_service.id),
|
||||
'created_by': str(sample_service.users[0].id),
|
||||
'parent_folder_id': str(parent_folder.id)
|
||||
}
|
||||
data = json.dumps(data)
|
||||
auth_header = create_authorization_header()
|
||||
|
||||
response = client.post(
|
||||
'/service/{}/template'.format(sample_service.id),
|
||||
headers=[('Content-Type', 'application/json'), auth_header],
|
||||
data=data
|
||||
)
|
||||
assert response.status_code == 201
|
||||
template = Template.query.filter(Template.name == 'my template').first()
|
||||
assert template.folder == parent_folder
|
||||
|
||||
|
||||
def test_create_template_should_return_404_if_folder_is_for_a_different_service(
|
||||
client, sample_service
|
||||
):
|
||||
service2 = create_service(service_name='second service')
|
||||
parent_folder = create_template_folder(service=service2)
|
||||
|
||||
data = {
|
||||
'name': 'my template',
|
||||
'template_type': 'sms',
|
||||
'content': 'template <b>content</b>',
|
||||
'service': str(sample_service.id),
|
||||
'created_by': str(sample_service.users[0].id),
|
||||
'parent_folder_id': str(parent_folder.id)
|
||||
}
|
||||
data = json.dumps(data)
|
||||
auth_header = create_authorization_header()
|
||||
|
||||
response = client.post(
|
||||
'/service/{}/template'.format(sample_service.id),
|
||||
headers=[('Content-Type', 'application/json'), auth_header],
|
||||
data=data
|
||||
)
|
||||
assert response.status_code == 404
|
||||
|
||||
|
||||
def test_should_raise_error_if_service_does_not_exist_on_create(client, sample_user, fake_uuid):
|
||||
data = {
|
||||
'name': 'my template',
|
||||
|
||||
Reference in New Issue
Block a user