mirror of
https://github.com/GSA/notifications-api.git
synced 2025-12-20 15:31:15 -05:00
Merge pull request #1424 from alphagov/create-history-using-init-kwargs
Use model constructors when creating history instances
This commit is contained in:
@@ -176,7 +176,6 @@ def create_history(obj, history_cls=None):
|
||||
history_mapper = obj.__history_mapper__
|
||||
history_cls = history_mapper.class_
|
||||
|
||||
history = history_cls()
|
||||
obj_mapper = object_mapper(obj)
|
||||
|
||||
obj_state = attributes.instance_state(obj)
|
||||
@@ -201,7 +200,7 @@ def create_history(obj, history_cls=None):
|
||||
# not yet have a value before insert
|
||||
|
||||
elif isinstance(prop, RelationshipProperty):
|
||||
if hasattr(history, prop.key + '_id'):
|
||||
if hasattr(history_cls, prop.key + '_id'):
|
||||
foreign_obj = getattr(obj, prop.key)
|
||||
# if it's a nullable relationship, foreign_obj will be None, and we actually want to record that
|
||||
data[prop.key + '_id'] = getattr(foreign_obj, 'id', None)
|
||||
@@ -218,9 +217,4 @@ def create_history(obj, history_cls=None):
|
||||
data['version'] = obj.version
|
||||
data['created_at'] = obj.created_at
|
||||
|
||||
for key, value in data.items():
|
||||
if not hasattr(history_cls, key):
|
||||
raise AttributeError("{} has no attribute '{}'".format(history_cls.__name__, key))
|
||||
setattr(history, key, value)
|
||||
|
||||
return history
|
||||
return history_cls(**data)
|
||||
|
||||
@@ -565,6 +565,29 @@ def test_update_set_process_type_on_template(client, sample_template):
|
||||
assert template.process_type == 'priority'
|
||||
|
||||
|
||||
def test_create_a_template_with_reply_to(admin_request, sample_user):
|
||||
service = create_service(service_permissions=['letter'])
|
||||
letter_contact = create_letter_contact(service, "Edinburgh, ED1 1AA")
|
||||
data = {
|
||||
'name': 'my template',
|
||||
'subject': 'subject',
|
||||
'template_type': 'letter',
|
||||
'content': 'template <b>content</b>',
|
||||
'service': str(service.id),
|
||||
'created_by': str(sample_user.id),
|
||||
'reply_to': str(letter_contact.id),
|
||||
}
|
||||
|
||||
json_resp = admin_request.post('template.create_template', service_id=service.id, _data=data, _expected_status=201)
|
||||
|
||||
assert json_resp['data']['template_type'] == 'letter'
|
||||
assert json_resp['data']['reply_to'] == str(letter_contact.id)
|
||||
|
||||
template = Template.query.get(json_resp['data']['id'])
|
||||
from app.schemas import template_schema
|
||||
assert sorted(json_resp['data']) == sorted(template_schema.dump(template).data)
|
||||
|
||||
|
||||
def test_get_template_reply_to(client, sample_letter_template):
|
||||
auth_header = create_authorization_header()
|
||||
letter_contact = create_letter_contact(sample_letter_template.service, "Edinburgh, ED1 1AA")
|
||||
|
||||
Reference in New Issue
Block a user