//save the search
$savedSearch = new CRM_Contact_BAO_SavedSearch();
$savedSearch->id = $this->_id;
+ $queryParams = $this->get('queryParams');
+ // CRM-18585 include selected operator in $savedSearch->form_values
+ if (!empty($formValues['operator'])) {
+ $queryParams[] = array('operator', '=', $formValues['operator'], 0, 0);
+ }
// Use the query parameters rather than the form values - these have already been assessed / converted
// with the extra knowledge that the form has.
// Note that we want to move towards a standardised way of saving the query that is not
// Ideally per CRM-17075 we will use entity reference fields heavily in the form layer & convert to the
// sql operator syntax at the query layer.
if (!$isSearchBuilder) {
- $savedSearch->form_values = serialize($this->get('queryParams'));
+ $savedSearch->form_values = serialize($queryParams);
}
else {
// We want search builder to be able to convert back & forth at the form layer
$this->assertTrue($this->isElementPresent("xpath=//table/tbody//tr/td[3]/a[text()='{$lastName}, {$firstName}']"));
}
+ /**
+ * CRM-18585 - test to check OR operator on Smart Groups
+ */
+ public function testAddSmartGroup() {
+ $this->webtestLogin();
+ $this->openCiviPage('contact/search/advanced', 'reset=1');
+ $this->click("xpath=//input[@value='OR']");
+ $this->select('group', 'Advisory Board');
+ $this->select('contact_tags', 'Major Donor');
+ $this->clickLink("_qf_Advanced_refresh");
+ $this->waitForElementPresent("task");
+ $count = trim($this->getText("//div[@id='search-status']/table/tbody/tr/td"));
+
+ //create smart group for contacts resulted from OR operator search.
+ $this->click('radio_ts', 'ts_all');
+ $this->click('task');
+ $this->select('task', 'label=Group - create smart group');
+ $this->waitForPageToLoad($this->getTimeoutMsec());
+ $smartGroupTitle = "SmartGroup" . substr(sha1(rand()), 0, 4);
+ $this->type("title", $smartGroupTitle);
+ $this->clickLink("_qf_SaveSearch_next-bottom");
+ $this->waitForText('crm-notification-container', "Your smart group has been saved as '$smartGroupTitle'");
+ $this->clickLink("_qf_Result_done");
+ $expectedCount = explode('-', $this->getText("//div[@id='search-status']/table/tbody/tr/td"));
+ $this->assertEquals($count, trim($expectedCount[1]));
+
+ //Assert the count from Contacts link in Manage Group Page.
+ $this->openCiviPage('group', 'reset=1');
+ $this->waitForElementPresent("xpath=//table/tbody//tr//td/div[contains(text(), \"{$smartGroupTitle} (Smart Group)\")]");
+ $this->clickLink("xpath=//table/tbody//tr//td/div[contains(text(), \"{$smartGroupTitle} (Smart Group)\")]/../../td[@class='crm-group-group_links']/span/a[contains(text(), 'Contacts')]");
+ $this->waitForElementPresent("xpath=//span[contains(text(), \"Edit Smart Group Search Criteria for {$smartGroupTitle}\")]");
+ $this->clickLink("xpath=//a/span[contains(text(), \"Edit Smart Group Search Criteria for {$smartGroupTitle}\")]/");
+ $this->waitForElementPresent('search-status');
+ $expectedCount = explode('-', $this->getText("//div[@id='search-status']/table/tbody/tr/td"));
+ $this->assertEquals($count, trim($expectedCount[1]));
+ }
+
}