+ @Test
+ public void addNodeFilterPropertiesTest() throws BusinessLogicException {
+ componentInstance.setNodeFilter(ciNodeFilterDataDefinition);
+
+ when(toscaOperationFacade.getToscaElement(componentId)).thenReturn(Either.left(resource));
+ when(nodeFilterValidator
+ .validateFilter(resource, componentInstanceId,
+ requirementNodeFilterPropertyDataDefinition.getConstraints(),
+ NodeFilterConstraintAction.ADD)).thenReturn(Either.left(true));
+ when(nodeFilterValidator.validateComponentInstanceExist(resource, componentInstanceId))
+ .thenReturn(Either.left(true));
+ when(graphLockOperation.lockComponent(componentId, NodeTypeEnum.Resource))
+ .thenReturn(StorageOperationStatus.OK);
+ when(nodeFilterOperation.addNewProperty(anyString(), anyString(), any(CINodeFilterDataDefinition.class),
+ any(RequirementNodeFilterPropertyDataDefinition.class))).thenReturn(Either.left(ciNodeFilterDataDefinition));
+ when(graphLockOperation.unlockComponent(componentId, NodeTypeEnum.Resource))
+ .thenReturn(StorageOperationStatus.OK);
+
+ final Optional<CINodeFilterDataDefinition> result = componentNodeFilterBusinessLogic
+ .addNodeFilter(componentId, componentInstanceId, NodeFilterConstraintAction.ADD,
+ "MyPropertyName", constraint, true, ComponentTypeEnum.RESOURCE,
+ NodeFilterConstraintType.PROPERTIES);
+
+ assertThat(result).isPresent();
+ assertThat(result.get().getProperties().getListToscaDataDefinition()).hasSize(1);
+ verify(toscaOperationFacade, times(1)).getToscaElement(componentId);
+ verify(nodeFilterValidator, times(1)).validateFilter(resource, componentInstanceId,
+ Collections.singletonList(constraint), NodeFilterConstraintAction.ADD);
+ verify(graphLockOperation, times(1)).lockComponent(componentId, NodeTypeEnum.Resource);
+ verify(nodeFilterOperation, times(1))
+ .addNewProperty(anyString(), anyString(), any(CINodeFilterDataDefinition.class),
+ any(RequirementNodeFilterPropertyDataDefinition.class));
+ verify(graphLockOperation, times(1)).unlockComponent(componentId, NodeTypeEnum.Resource);
+ }
+
+ @Test
+ public void addNodeFilterCapabilitiesTest() throws BusinessLogicException {
+ componentInstance.setNodeFilter(ciNodeFilterDataDefinition);
+
+ when(toscaOperationFacade.getToscaElement(componentId)).thenReturn(Either.left(resource));
+ when(nodeFilterValidator
+ .validateFilter(resource, componentInstanceId,
+ requirementNodeFilterPropertyDataDefinition.getConstraints(),
+ NodeFilterConstraintAction.ADD)).thenReturn(Either.left(true));
+ when(nodeFilterValidator.validateComponentInstanceExist(resource, componentInstanceId))
+ .thenReturn(Either.left(true));
+ when(graphLockOperation.lockComponent(componentId, NodeTypeEnum.Resource))
+ .thenReturn(StorageOperationStatus.OK);
+ when(nodeFilterOperation.addNewCapabilities(anyString(), anyString(), any(CINodeFilterDataDefinition.class),
+ any(RequirementNodeFilterCapabilityDataDefinition.class))).thenReturn(Either.left(ciNodeFilterDataDefinition));
+ when(graphLockOperation.unlockComponent(componentId, NodeTypeEnum.Resource))
+ .thenReturn(StorageOperationStatus.OK);
+
+ final Optional<CINodeFilterDataDefinition> result = componentNodeFilterBusinessLogic
+ .addNodeFilter(componentId, componentInstanceId, NodeFilterConstraintAction.ADD,
+ "MyPropertyName", constraint, true, ComponentTypeEnum.RESOURCE,
+ NodeFilterConstraintType.CAPABILITIES);
+
+ assertThat(result).isPresent();
+ assertThat(result.get().getProperties().getListToscaDataDefinition()).hasSize(1);
+ verify(toscaOperationFacade, times(1)).getToscaElement(componentId);
+ verify(nodeFilterValidator, times(1)).validateFilter(resource, componentInstanceId,
+ Collections.singletonList(constraint), NodeFilterConstraintAction.ADD);
+ verify(graphLockOperation, times(1)).lockComponent(componentId, NodeTypeEnum.Resource);
+ verify(nodeFilterOperation, times(1))
+ .addNewCapabilities(anyString(), anyString(), any(CINodeFilterDataDefinition.class),
+ any(RequirementNodeFilterCapabilityDataDefinition.class));
+ verify(graphLockOperation, times(1)).unlockComponent(componentId, NodeTypeEnum.Resource);
+ }
+