Change Organisation DAO update method

- Changed the organisation DAO update method to only make 1 query
- Updated the update rest endpoint to not return an organisation when
the update is successful
This commit is contained in:
Katie Smith
2018-02-09 11:17:13 +00:00
parent 269923ba28
commit 4a14225d04
4 changed files with 27 additions and 12 deletions

View File

@@ -19,7 +19,7 @@ def dao_create_organisation(organisation):
@transactional @transactional
def dao_update_organisation(organisation, **kwargs): def dao_update_organisation(organisation_id, **kwargs):
for key, value in kwargs.items(): return Organisation.query.filter_by(id=organisation_id).update(
setattr(organisation, key, value) kwargs
db.session.add(organisation) )

View File

@@ -6,7 +6,7 @@ from app.dao.organisation_dao import (
dao_get_organisation_by_id, dao_get_organisation_by_id,
dao_update_organisation, dao_update_organisation,
) )
from app.errors import register_errors from app.errors import register_errors, InvalidRequest
from app.models import Organisation from app.models import Organisation
from app.organisation.organisation_schema import ( from app.organisation.organisation_schema import (
post_create_organisation_schema, post_create_organisation_schema,
@@ -48,10 +48,10 @@ def create_organisation():
@organisation_blueprint.route('/<uuid:organisation_id>', methods=['POST']) @organisation_blueprint.route('/<uuid:organisation_id>', methods=['POST'])
def update_organisation(organisation_id): def update_organisation(organisation_id):
data = request.get_json() data = request.get_json()
validate(data, post_update_organisation_schema) validate(data, post_update_organisation_schema)
result = dao_update_organisation(organisation_id, **data)
fetched_organisation = dao_get_organisation_by_id(organisation_id) if result:
dao_update_organisation(fetched_organisation, **data) return '', 204
else:
return jsonify(fetched_organisation.serialize()), 200 raise InvalidRequest("Organisation not found", 404)

View File

@@ -45,7 +45,7 @@ def test_update_organisation(notify_db, notify_db_session):
assert len(organisation) == 1 assert len(organisation) == 1
assert organisation[0].name != updated_name assert organisation[0].name != updated_name
dao_update_organisation(organisation[0], name=updated_name) dao_update_organisation(organisation[0].id, **{'name': updated_name})
organisation = Organisation.query.all() organisation = Organisation.query.all()

View File

@@ -79,7 +79,7 @@ def test_post_update_organisation_updates_fields(admin_request, notify_db_sessio
'organisation.update_organisation', 'organisation.update_organisation',
_data=data, _data=data,
organisation_id=org.id, organisation_id=org.id,
_expected_status=200 _expected_status=204
) )
organisation = Organisation.query.all() organisation = Organisation.query.all()
@@ -88,3 +88,18 @@ def test_post_update_organisation_updates_fields(admin_request, notify_db_sessio
assert organisation[0].id == org.id assert organisation[0].id == org.id
assert organisation[0].name == data['name'] assert organisation[0].name == data['name']
assert organisation[0].active == data['active'] assert organisation[0].active == data['active']
def test_post_update_organisation_gives_404_status_if_org_does_not_exist(admin_request, notify_db_session):
data = {'name': 'new organisation name'}
admin_request.post(
'organisation.update_organisation',
_data=data,
organisation_id='31d42ce6-3dac-45a7-95cb-94423d5ca03c',
_expected_status=404
)
organisation = Organisation.query.all()
assert not organisation