diff --git a/app/dao/services_dao.py b/app/dao/services_dao.py index ab4e71b56..6d0b22ef8 100644 --- a/app/dao/services_dao.py +++ b/app/dao/services_dao.py @@ -169,16 +169,6 @@ def dao_update_service(service): db.session.add(service) -@transactional -@version_class(Service) -def dao_remove_service_permission(service, permission): - for p in service.permissions: - if p.permission == permission: - service.permissions.remove(p) - - db.session.add(service) - - def dao_add_user_to_service(service, user, permissions=None): permissions = permissions or [] try: diff --git a/app/models.py b/app/models.py index ba667f599..8c1e22e79 100644 --- a/app/models.py +++ b/app/models.py @@ -241,7 +241,8 @@ class ServicePermission(db.Model): service = db.relationship("Service") created_at = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False) - service_permission_types = db.relationship(Service, backref=db.backref("permissions")) + service_permission_types = db.relationship( + Service, backref=db.backref("permissions", cascade="all, delete-orphan")) def __repr__(self): return '<{} has service permission: {}>'.format(self.service_id, self.permission) diff --git a/tests/app/dao/test_services_dao.py b/tests/app/dao/test_services_dao.py index 0c78a7940..aac063f9b 100644 --- a/tests/app/dao/test_services_dao.py +++ b/tests/app/dao/test_services_dao.py @@ -11,7 +11,6 @@ from app.dao.services_dao import ( dao_create_service, dao_add_user_to_service, dao_remove_user_from_service, - dao_remove_service_permission as dao_services_remove_service_permission, dao_fetch_all_services, dao_fetch_service_by_id, dao_fetch_all_services_by_user, @@ -46,10 +45,7 @@ from app.models import ( InvitedUser, Service, ServicePermission, -<<<<<<< HEAD ServicePermissionTypes, -======= ->>>>>>> Updated service DAO and API end points BRANDING_GOVUK, DVLA_ORG_HM_GOVERNMENT, KEY_TYPE_NORMAL, @@ -298,7 +294,7 @@ def test_remove_service_does_not_remove_service_permission_types(sample_service) services = dao_fetch_all_services() assert len(services) == 0 - assert set([p.name for p in ServicePermissionTypes.query.all()]) & set(SERVICE_PERMISSION_TYPES) + assert set([p.name for p in ServicePermissionTypes.query.all()]) == set(SERVICE_PERMISSION_TYPES) def test_create_service_by_id_adding_and_removing_letter_returns_service_without_letter(service_factory): @@ -397,7 +393,9 @@ def test_update_service_permission_creates_a_history_record_with_current_data(sa assert service_from_db.version == 2 assert LETTER_TYPE in [p.permission for p in service_from_db.permissions] - dao_services_remove_service_permission(service, permission='sms') + permission = [p for p in service.permissions if p.permission == 'sms'][0] + service.permissions.remove(permission) + dao_update_service(service) assert Service.query.count() == 1 assert Service.get_history_model().query.count() == 3