Skip to content
Snippets Groups Projects
Commit 55543a00 authored by piotr.kupczyk@id.ethz.ch's avatar piotr.kupczyk@id.ethz.ch
Browse files

NG_UI : type browser : when deleting an entity type also remove all LOCAL...

NG_UI : type browser : when deleting an entity type also remove all LOCAL property types related with that entity type
parent 5da3d1b7
No related branches found
No related tags found
No related merge requests found
...@@ -103,39 +103,69 @@ export default class TypeBrowserController extends BrowserController { ...@@ -103,39 +103,69 @@ export default class TypeBrowserController extends BrowserController {
const { type, id } = node.object const { type, id } = node.object
const reason = 'deleted via ng_ui' const reason = 'deleted via ng_ui'
let promise = null const operations = []
if (type === objectType.OBJECT_TYPE) { if (type === objectType.OBJECT_TYPE) {
const options = new openbis.SampleTypeDeletionOptions() const options = new openbis.SampleTypeDeletionOptions()
options.setReason(reason) options.setReason(reason)
promise = openbis.deleteSampleTypes( operations.push(
[new openbis.EntityTypePermId(id)], new openbis.DeleteSampleTypesOperation(
options [new openbis.EntityTypePermId(id)],
options
)
) )
} else if (type === objectType.COLLECTION_TYPE) { } else if (type === objectType.COLLECTION_TYPE) {
const options = new openbis.ExperimentTypeDeletionOptions() const options = new openbis.ExperimentTypeDeletionOptions()
options.setReason(reason) options.setReason(reason)
promise = openbis.deleteExperimentTypes( operations.push(
[new openbis.EntityTypePermId(id)], new openbis.DeleteExperimentTypesOperation(
options [new openbis.EntityTypePermId(id)],
options
)
) )
} else if (type === objectType.DATA_SET_TYPE) { } else if (type === objectType.DATA_SET_TYPE) {
const options = new openbis.DataSetTypeDeletionOptions() const options = new openbis.DataSetTypeDeletionOptions()
options.setReason(reason) options.setReason(reason)
promise = openbis.deleteDataSetTypes( operations.push(
[new openbis.EntityTypePermId(id)], new openbis.DeleteDataSetTypesOperation(
options [new openbis.EntityTypePermId(id)],
options
)
) )
} else if (type === objectType.MATERIAL_TYPE) { } else if (type === objectType.MATERIAL_TYPE) {
const options = new openbis.MaterialTypeDeletionOptions() const options = new openbis.MaterialTypeDeletionOptions()
options.setReason(reason) options.setReason(reason)
promise = openbis.deleteMaterialTypes( operations.push(
[new openbis.EntityTypePermId(id)], new openbis.DeleteMaterialTypesOperation(
options [new openbis.EntityTypePermId(id)],
options
)
) )
} }
return promise const criteria = new openbis.PropertyTypeSearchCriteria()
criteria.withCode().thatStartsWith(id + '.')
const fo = new openbis.PropertyTypeFetchOptions()
return openbis
.searchPropertyTypes(criteria, fo)
.then(results => {
const ids = results
.getObjects()
.map(propertyType => propertyType.getPermId())
if (!_.isEmpty(ids)) {
const options = new openbis.PropertyTypeDeletionOptions()
options.setReason(reason)
operations.push(
new openbis.DeletePropertyTypesOperation(ids, options)
)
}
})
.then(() => {
const options = new openbis.SynchronousOperationExecutionOptions()
options.setExecuteInOrder(true)
return openbis.executeOperations(operations, options)
})
.then(() => { .then(() => {
this.context.dispatch(actions.objectDelete(this.getPage(), type, id)) this.context.dispatch(actions.objectDelete(this.getPage(), type, id))
}) })
......
...@@ -4,6 +4,7 @@ const CLASS_FULL_NAMES = [ ...@@ -4,6 +4,7 @@ const CLASS_FULL_NAMES = [
'as/dto/dataset/create/CreateDataSetTypesOperation', 'as/dto/dataset/create/CreateDataSetTypesOperation',
'as/dto/dataset/create/DataSetTypeCreation', 'as/dto/dataset/create/DataSetTypeCreation',
'as/dto/dataset/delete/DataSetTypeDeletionOptions', 'as/dto/dataset/delete/DataSetTypeDeletionOptions',
'as/dto/dataset/delete/DeleteDataSetTypesOperation',
'as/dto/dataset/fetchoptions/DataSetFetchOptions', 'as/dto/dataset/fetchoptions/DataSetFetchOptions',
'as/dto/dataset/fetchoptions/DataSetTypeFetchOptions', 'as/dto/dataset/fetchoptions/DataSetTypeFetchOptions',
'as/dto/dataset/search/DataSetSearchCriteria', 'as/dto/dataset/search/DataSetSearchCriteria',
...@@ -16,6 +17,7 @@ const CLASS_FULL_NAMES = [ ...@@ -16,6 +17,7 @@ const CLASS_FULL_NAMES = [
'as/dto/experiment/create/CreateExperimentTypesOperation', 'as/dto/experiment/create/CreateExperimentTypesOperation',
'as/dto/experiment/create/ExperimentTypeCreation', 'as/dto/experiment/create/ExperimentTypeCreation',
'as/dto/experiment/delete/ExperimentTypeDeletionOptions', 'as/dto/experiment/delete/ExperimentTypeDeletionOptions',
'as/dto/experiment/delete/DeleteExperimentTypesOperation',
'as/dto/experiment/fetchoptions/ExperimentFetchOptions', 'as/dto/experiment/fetchoptions/ExperimentFetchOptions',
'as/dto/experiment/fetchoptions/ExperimentTypeFetchOptions', 'as/dto/experiment/fetchoptions/ExperimentTypeFetchOptions',
'as/dto/experiment/search/ExperimentSearchCriteria', 'as/dto/experiment/search/ExperimentSearchCriteria',
...@@ -26,6 +28,7 @@ const CLASS_FULL_NAMES = [ ...@@ -26,6 +28,7 @@ const CLASS_FULL_NAMES = [
'as/dto/material/create/CreateMaterialTypesOperation', 'as/dto/material/create/CreateMaterialTypesOperation',
'as/dto/material/create/MaterialTypeCreation', 'as/dto/material/create/MaterialTypeCreation',
'as/dto/material/delete/MaterialTypeDeletionOptions', 'as/dto/material/delete/MaterialTypeDeletionOptions',
'as/dto/material/delete/DeleteMaterialTypesOperation',
'as/dto/material/fetchoptions/MaterialFetchOptions', 'as/dto/material/fetchoptions/MaterialFetchOptions',
'as/dto/material/fetchoptions/MaterialTypeFetchOptions', 'as/dto/material/fetchoptions/MaterialTypeFetchOptions',
'as/dto/material/search/MaterialSearchCriteria', 'as/dto/material/search/MaterialSearchCriteria',
...@@ -60,6 +63,7 @@ const CLASS_FULL_NAMES = [ ...@@ -60,6 +63,7 @@ const CLASS_FULL_NAMES = [
'as/dto/sample/create/CreateSampleTypesOperation', 'as/dto/sample/create/CreateSampleTypesOperation',
'as/dto/sample/create/SampleTypeCreation', 'as/dto/sample/create/SampleTypeCreation',
'as/dto/sample/delete/SampleTypeDeletionOptions', 'as/dto/sample/delete/SampleTypeDeletionOptions',
'as/dto/sample/delete/DeleteSampleTypesOperation',
'as/dto/sample/fetchoptions/SampleFetchOptions', 'as/dto/sample/fetchoptions/SampleFetchOptions',
'as/dto/sample/fetchoptions/SampleTypeFetchOptions', 'as/dto/sample/fetchoptions/SampleTypeFetchOptions',
'as/dto/sample/fetchoptions/SampleTypeFetchOptions', 'as/dto/sample/fetchoptions/SampleTypeFetchOptions',
......
...@@ -31,14 +31,23 @@ TEST_PLUGIN_DTO.setName('TEST_PLUGIN') ...@@ -31,14 +31,23 @@ TEST_PLUGIN_DTO.setName('TEST_PLUGIN')
const TEST_PROPERTY_TYPE_1_DTO = new openbis.PropertyType() const TEST_PROPERTY_TYPE_1_DTO = new openbis.PropertyType()
TEST_PROPERTY_TYPE_1_DTO.setCode('TEST_PROPERTY_TYPE_1') TEST_PROPERTY_TYPE_1_DTO.setCode('TEST_PROPERTY_TYPE_1')
TEST_PROPERTY_TYPE_1_DTO.setPermId(
new openbis.PropertyTypePermId(TEST_PROPERTY_TYPE_1_DTO.getCode())
)
TEST_PROPERTY_TYPE_1_DTO.setDataType(openbis.DataType.VARCHAR) TEST_PROPERTY_TYPE_1_DTO.setDataType(openbis.DataType.VARCHAR)
const TEST_PROPERTY_TYPE_2_DTO = new openbis.PropertyType() const TEST_PROPERTY_TYPE_2_DTO = new openbis.PropertyType()
TEST_PROPERTY_TYPE_2_DTO.setCode('TEST_PROPERTY_TYPE_2') TEST_PROPERTY_TYPE_2_DTO.setCode('TEST_PROPERTY_TYPE_2')
TEST_PROPERTY_TYPE_2_DTO.setPermId(
new openbis.PropertyTypePermId(TEST_PROPERTY_TYPE_2_DTO.getCode())
)
TEST_PROPERTY_TYPE_2_DTO.setDataType(openbis.DataType.VARCHAR) TEST_PROPERTY_TYPE_2_DTO.setDataType(openbis.DataType.VARCHAR)
const TEST_PROPERTY_TYPE_3_DTO = new openbis.PropertyType() const TEST_PROPERTY_TYPE_3_DTO = new openbis.PropertyType()
TEST_PROPERTY_TYPE_3_DTO.setCode('TEST_PROPERTY_TYPE_3') TEST_PROPERTY_TYPE_3_DTO.setCode('TEST_PROPERTY_TYPE_3')
TEST_PROPERTY_TYPE_3_DTO.setPermId(
new openbis.PropertyTypePermId(TEST_PROPERTY_TYPE_3_DTO.getCode())
)
TEST_PROPERTY_TYPE_3_DTO.setDataType(openbis.DataType.VARCHAR) TEST_PROPERTY_TYPE_3_DTO.setDataType(openbis.DataType.VARCHAR)
const TEST_PROPERTY_ASSIGNMENT_1 = new openbis.PropertyAssignment() const TEST_PROPERTY_ASSIGNMENT_1 = new openbis.PropertyAssignment()
......
...@@ -105,6 +105,7 @@ describe('browser', () => { ...@@ -105,6 +105,7 @@ describe('browser', () => {
}) })
test('remove node', async () => { test('remove node', async () => {
openbis.mockSearchPropertyTypes([fixture.TEST_PROPERTY_TYPE_1_DTO])
openbis.deleteSampleTypes.mockReturnValue(Promise.resolve()) openbis.deleteSampleTypes.mockReturnValue(Promise.resolve())
await controller.load() await controller.load()
...@@ -121,10 +122,32 @@ describe('browser', () => { ...@@ -121,10 +122,32 @@ describe('browser', () => {
await controller.nodeRemoveConfirm() await controller.nodeRemoveConfirm()
expect(controller.isRemoveNodeDialogOpen()).toBe(false) expect(controller.isRemoveNodeDialogOpen()).toBe(false)
const id = new openbis.EntityTypePermId(fixture.TEST_SAMPLE_TYPE_DTO.code)
const options = new openbis.SampleTypeDeletionOptions() const createDeleteTypeOperation = typeCode => {
options.setReason('deleted via ng_ui') const id = new openbis.EntityTypePermId(typeCode)
expect(openbis.deleteSampleTypes).toHaveBeenCalledWith([id], options) const options = new openbis.SampleTypeDeletionOptions()
options.setReason('deleted via ng_ui')
return new openbis.DeleteSampleTypesOperation([id], options)
}
const createDeletePropertyTypeOperation = propertyTypeCode => {
const id = new openbis.PropertyTypePermId(propertyTypeCode)
const options = new openbis.PropertyTypeDeletionOptions()
options.setReason('deleted via ng_ui')
return new openbis.DeletePropertyTypesOperation([id], options)
}
const options = new openbis.SynchronousOperationExecutionOptions()
options.setExecuteInOrder(true)
expect(openbis.executeOperations).toHaveBeenCalledWith(
[
createDeleteTypeOperation(fixture.TEST_SAMPLE_TYPE_DTO.code),
createDeletePropertyTypeOperation(fixture.TEST_PROPERTY_TYPE_1_DTO.code)
],
options
)
expectDeleteTypeAction( expectDeleteTypeAction(
objectType.OBJECT_TYPE, objectType.OBJECT_TYPE,
fixture.TEST_SAMPLE_TYPE_DTO.code fixture.TEST_SAMPLE_TYPE_DTO.code
......
...@@ -69,6 +69,12 @@ const mockSearchMaterialTypes = materialTypes => { ...@@ -69,6 +69,12 @@ const mockSearchMaterialTypes = materialTypes => {
searchMaterialTypes.mockReturnValue(Promise.resolve(searchResult)) searchMaterialTypes.mockReturnValue(Promise.resolve(searchResult))
} }
const mockSearchPropertyTypes = propertyTypes => {
const searchResult = new dto.SearchResult()
searchResult.setObjects(propertyTypes)
searchPropertyTypes.mockReturnValue(Promise.resolve(searchResult))
}
export default { export default {
login, login,
logout, logout,
...@@ -105,5 +111,6 @@ export default { ...@@ -105,5 +111,6 @@ export default {
mockSearchGroups, mockSearchGroups,
mockSearchMaterialTypes, mockSearchMaterialTypes,
mockSearchPersons, mockSearchPersons,
mockSearchSampleTypes mockSearchSampleTypes,
mockSearchPropertyTypes
} }
...@@ -17,7 +17,11 @@ import DataSetTypeFetchOptions from 'as/dto/dataset/fetchoptions/DataSetTypeFetc ...@@ -17,7 +17,11 @@ import DataSetTypeFetchOptions from 'as/dto/dataset/fetchoptions/DataSetTypeFetc
import DataSetTypeSearchCriteria from 'as/dto/dataset/search/DataSetTypeSearchCriteria' import DataSetTypeSearchCriteria from 'as/dto/dataset/search/DataSetTypeSearchCriteria'
import DataSetTypeUpdate from 'as/dto/dataset/update/DataSetTypeUpdate' import DataSetTypeUpdate from 'as/dto/dataset/update/DataSetTypeUpdate'
import DataType from 'as/dto/property/DataType' import DataType from 'as/dto/property/DataType'
import DeleteDataSetTypesOperation from 'as/dto/dataset/delete/DeleteDataSetTypesOperation'
import DeleteExperimentTypesOperation from 'as/dto/experiment/delete/DeleteExperimentTypesOperation'
import DeleteMaterialTypesOperation from 'as/dto/material/delete/DeleteMaterialTypesOperation'
import DeletePropertyTypesOperation from 'as/dto/property/delete/DeletePropertyTypesOperation' import DeletePropertyTypesOperation from 'as/dto/property/delete/DeletePropertyTypesOperation'
import DeleteSampleTypesOperation from 'as/dto/sample/delete/DeleteSampleTypesOperation'
import EntityKind from 'as/dto/entitytype/EntityKind' import EntityKind from 'as/dto/entitytype/EntityKind'
import EntityTypePermId from 'as/dto/entitytype/id/EntityTypePermId' import EntityTypePermId from 'as/dto/entitytype/id/EntityTypePermId'
import ExperimentFetchOptions from 'as/dto/experiment/fetchoptions/ExperimentFetchOptions' import ExperimentFetchOptions from 'as/dto/experiment/fetchoptions/ExperimentFetchOptions'
...@@ -105,7 +109,11 @@ const dto = { ...@@ -105,7 +109,11 @@ const dto = {
DataSetTypeSearchCriteria, DataSetTypeSearchCriteria,
DataSetTypeUpdate, DataSetTypeUpdate,
DataType, DataType,
DeleteDataSetTypesOperation,
DeleteExperimentTypesOperation,
DeleteMaterialTypesOperation,
DeletePropertyTypesOperation, DeletePropertyTypesOperation,
DeleteSampleTypesOperation,
EntityKind, EntityKind,
EntityTypePermId, EntityTypePermId,
ExperimentFetchOptions, ExperimentFetchOptions,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment