def test_delete_project( db: DBInterface, db_session: sqlalchemy.orm.Session, ): project_name = "project-name" project_description = "some description" db.create_project( db_session, mlrun.api.schemas.Project(name=project_name, description=project_description), ) db.delete_project(db_session, project_name) with pytest.raises(mlrun.errors.MLRunNotFoundError): db.get_project(db_session, project_name)
def test_delete_project_with_resources(db: DBInterface, db_session: sqlalchemy.orm.Session): project_to_keep = "project-to-keep" project_to_remove = "project-to-remove" _create_resources_of_all_kinds(db, db_session, project_to_keep) _create_resources_of_all_kinds(db, db_session, project_to_remove) project_to_keep_table_name_records_count_map_before_project_removal = _assert_resources_in_project( db, db_session, project_to_keep) _assert_resources_in_project(db, db_session, project_to_remove) db.delete_project(db_session, project_to_remove) project_to_keep_table_name_records_count_map_after_project_removal = _assert_resources_in_project( db, db_session, project_to_keep) _assert_resources_in_project(db, db_session, project_to_remove, assert_no_resources=True) assert (deepdiff.DeepDiff( project_to_keep_table_name_records_count_map_before_project_removal, project_to_keep_table_name_records_count_map_after_project_removal, ignore_order=True, ) == {})
def test_delete_project_with_resources(db: DBInterface, db_session: sqlalchemy.orm.Session): project_to_keep = "project-to-keep" project_to_remove = "project-to-remove" _create_resources_of_all_kinds(db, db_session, project_to_keep) _create_resources_of_all_kinds(db, db_session, project_to_remove) project_to_keep_table_name_records_count_map_before_project_removal = _assert_resources_in_project( db, db_session, project_to_keep) _assert_resources_in_project(db, db_session, project_to_remove) # deletion strategy - restrict - should fail because there are resources with pytest.raises(mlrun.errors.MLRunPreconditionFailedError): db.delete_project(db_session, project_to_remove, mlrun.api.schemas.DeletionStrategy.restrict) # deletion strategy - cascade - should succeed and remove all related resources db.delete_project(db_session, project_to_remove, mlrun.api.schemas.DeletionStrategy.cascade) project_to_keep_table_name_records_count_map_after_project_removal = _assert_resources_in_project( db, db_session, project_to_keep) _assert_resources_in_project(db, db_session, project_to_remove, assert_no_resources=True) assert (deepdiff.DeepDiff( project_to_keep_table_name_records_count_map_before_project_removal, project_to_keep_table_name_records_count_map_after_project_removal, ignore_order=True, ) == {}) # deletion strategy - restrict - should succeed cause no project db.delete_project(db_session, project_to_remove, mlrun.api.schemas.DeletionStrategy.restrict)