private EntityTreeNode mockOperationComponent(
      final Long id,
      final String nodeNumber,
      final Collection<Entity> inputProducts,
      final Collection<Entity> outputProducts,
      final List<EntityTreeNode> subOperations) {
    EntityTreeNode operationComponent = mock(EntityTreeNode.class);

    given(operationComponent.getId()).willReturn(id);

    EntityList inputProductsList = mockProductComponentsList(inputProducts);
    given(operationComponent.getHasManyField(OPERATION_PRODUCT_IN_COMPONENTS))
        .willReturn(inputProductsList);
    given(operationComponent.getField(OPERATION_PRODUCT_IN_COMPONENTS))
        .willReturn(inputProductsList);

    EntityList outputProductsList = mockProductComponentsList(outputProducts);
    given(operationComponent.getHasManyField(OPERATION_PRODUCT_OUT_COMPONENTS))
        .willReturn(outputProductsList);
    given(operationComponent.getField(OPERATION_PRODUCT_OUT_COMPONENTS))
        .willReturn(outputProductsList);

    given(operationComponent.getField(NODE_NUMBER)).willReturn(nodeNumber);
    given(operationComponent.getStringField(NODE_NUMBER)).willReturn(nodeNumber);

    given(operationComponent.getChildren()).willReturn(subOperations);

    return operationComponent;
  }