mirror of
https://github.com/GSA/notifications-api.git
synced 2025-12-20 23:41:17 -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_mapper = obj.__history_mapper__
|
||||||
history_cls = history_mapper.class_
|
history_cls = history_mapper.class_
|
||||||
|
|
||||||
history = history_cls()
|
|
||||||
obj_mapper = object_mapper(obj)
|
obj_mapper = object_mapper(obj)
|
||||||
|
|
||||||
obj_state = attributes.instance_state(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
|
# not yet have a value before insert
|
||||||
|
|
||||||
elif isinstance(prop, RelationshipProperty):
|
elif isinstance(prop, RelationshipProperty):
|
||||||
if hasattr(history, prop.key + '_id'):
|
if hasattr(history_cls, prop.key + '_id'):
|
||||||
foreign_obj = getattr(obj, prop.key)
|
foreign_obj = getattr(obj, prop.key)
|
||||||
# if it's a nullable relationship, foreign_obj will be None, and we actually want to record that
|
# 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)
|
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['version'] = obj.version
|
||||||
data['created_at'] = obj.created_at
|
data['created_at'] = obj.created_at
|
||||||
|
|
||||||
for key, value in data.items():
|
return history_cls(**data)
|
||||||
if not hasattr(history_cls, key):
|
|
||||||
raise AttributeError("{} has no attribute '{}'".format(history_cls.__name__, key))
|
|
||||||
setattr(history, key, value)
|
|
||||||
|
|
||||||
return history
|
|
||||||
|
|||||||
@@ -565,6 +565,29 @@ def test_update_set_process_type_on_template(client, sample_template):
|
|||||||
assert template.process_type == 'priority'
|
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):
|
def test_get_template_reply_to(client, sample_letter_template):
|
||||||
auth_header = create_authorization_header()
|
auth_header = create_authorization_header()
|
||||||
letter_contact = create_letter_contact(sample_letter_template.service, "Edinburgh, ED1 1AA")
|
letter_contact = create_letter_contact(sample_letter_template.service, "Edinburgh, ED1 1AA")
|
||||||
|
|||||||
Reference in New Issue
Block a user