diff --git a/app/dao/organisations_dao.py b/app/dao/organisations_dao.py index f8cb22090..c4f265c7f 100644 --- a/app/dao/organisations_dao.py +++ b/app/dao/organisations_dao.py @@ -1,5 +1,5 @@ from app import db -from app.dao.dao_utils import transactional +from app.dao.dao_utils import transactional, version_class from app.models import Organisation @@ -12,10 +12,12 @@ def dao_get_organisation_by_id(org_id): @transactional +@version_class(Organisation) def dao_create_organisation(organisation): db.session.add(organisation) @transactional +@version_class(Organisation) def dao_update_organisation(organisation): db.session.add(organisation) diff --git a/app/models.py b/app/models.py index f1eb075f5..8dd56c96e 100644 --- a/app/models.py +++ b/app/models.py @@ -130,7 +130,7 @@ class BrandingTypes(db.Model): name = db.Column(db.String(255), primary_key=True) -class Organisation(db.Model): +class Organisation(db.Model, Versioned): __tablename__ = 'organisation' id = db.Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) colour = db.Column(db.String(7), nullable=True) @@ -142,8 +142,7 @@ class Organisation(db.Model): """ Assumption: data has been validated appropriately. - Returns a Service object based on the provided data. Deserialises created_by to created_by_id as marshmallow - would. + Returns a Organisation object based on the provided data. """ # validate json with marshmallow fields = data.copy() diff --git a/tests/app/dao/test_organisations_dao.py b/tests/app/dao/test_organisations_dao.py index f5e9ecd4b..75e2f40b6 100644 --- a/tests/app/dao/test_organisations_dao.py +++ b/tests/app/dao/test_organisations_dao.py @@ -38,7 +38,7 @@ def test_update_organisation(notify_db, notify_db_session): organisation = create_organisation() organisation_from_db = Organisation.query.first() - assert organisation.name != updated_name + assert organisation_from_db.name != updated_name organisation.name = updated_name @@ -46,3 +46,21 @@ def test_update_organisation(notify_db, notify_db_session): organisation_from_db = Organisation.query.first() assert organisation_from_db.name == updated_name + + +def test_create_organisation_creates_a_history_record_with_current_data(sample_user): + assert Organisation.query.count() == 0 + assert Organisation.get_history_model().query.count() == 0 + organisation = create_organisation() + assert Organisation.query.count() == 1 + assert Organisation.get_history_model().query.count() == 1 + + organisation_from_db = Organisation.query.first() + organisation_history = Organisation.get_history_model().query.first() + + assert organisation_from_db.id == organisation_history.id + assert organisation_from_db.name == organisation_history.name + assert organisation_from_db.version == 1 + assert organisation_from_db.version == organisation_history.version + assert sample_user.id == organisation_history.created_by_id + assert organisation_from_db.created_by.id == organisation_history.created_by_id