getSearchTree() {
    let condition = SearchCriteriaUtils.buildCondition();

    let savedSearchTypeRule = SearchCriteriaUtils.getDefaultObjectTypeRule([SAVED_SEARCH_URI]);
    condition.rules.push(savedSearchTypeRule);

    return condition;
  }
function getSearchQuery() {
  // construct the default template for the tree
  let tree = SearchCriteriaUtils.getDefaultAdvancedSearchCriteria();
  tree.rules[0].rules.push(SearchCriteriaUtils.getDefaultObjectTypeRule([1, 2, 3]));
  tree.rules[0].rules.push(SearchCriteriaUtils.buildCondition());
  // attach fts & relation rules to the constructed tree
  tree.rules[0].rules[1].rules.push(SearchCriteriaUtils.buildRule(CRITERIA_FTS_RULE_FIELD, 'fts', 'contains', 'free text search'));
  tree.rules[0].rules[1].rules.push(SearchCriteriaUtils.buildRule(ANY_RELATION, 'object', 'set_to', ['emf:123456']));
  return new QueryBuilder(tree);
}
 it('should extract the restrictions and parse them to JSON', () => {
   let restrictions = SearchCriteriaUtils.getDefaultAdvancedSearchCriteria();
   let controlParams = {
     restrictions: JSON.stringify(restrictions)
   };
   let extractedRestrictions = ObjectControl.getPickerRestrictions(controlParams);
   expect(extractedRestrictions).to.deep.equal(restrictions);
 });
 it('should delegate to assign restrictions', () => {
   let restrictions = SearchCriteriaUtils.getDefaultRule();
   let pickerConfig = {
     extensions: {}
   };
   pickerConfig.extensions[SEARCH_EXTENSION] = {criteria: {}, restrictions};
   pickerService.configureAndOpen(pickerConfig);
   expect(pickerService.pickerRestrictionsService.assignRestrictionCriteria.calledWith({}, restrictions)).to.be.true;
 });
  it('should build picker configuration based on action configuration', () => {
    let configLabel = 'Header of action';
    let predefinedTypes = ['emf:User'];
    let restrictions = SearchCriteriaUtils.getDefaultRule();
    let action = {
      label: configLabel,
      configuration: {
        predefinedTypes,
        relation: [HAS_ATTACHMENT_PROPERTY_URI],
        restrictions
      }
    };

    let pickerConfiguration = addRelationAction.buildPickerConfig(action, instanceObject);

    expect(pickerConfiguration.header).to.be.equal(configLabel);
    let searchExtensionConfiguration = pickerConfiguration.extensions[SEARCH_EXTENSION];
    expect(searchExtensionConfiguration.predefinedTypes).to.be.equal(predefinedTypes);
    expect(searchExtensionConfiguration.results.config.selection).to.be.equal(SINGLE_SELECTION);
    expect(searchExtensionConfiguration.results.config.exclusions).to.deep.equal([CURRENT_OBJECT_ID]);
    expect(searchExtensionConfiguration.restrictions).to.deep.equal(restrictions);
  });
 it('should use provided picker restrictions', () => {
   let restrictions = SearchCriteriaUtils.getDefaultRule();
   let config = objectControl.getInstanceSelectorConfig([], restrictions);
   expect(config.pickerRestrictions).to.deep.equal(restrictions);
 });
 getFreeTextRule(terms) {
   return SearchCriteriaUtils.buildRule(DCTERMS_TITLE, 'string', AdvancedSearchCriteriaOperators.CONTAINS.id, terms);
 }