/** * Test the query from the selector class is consistent with the dataset expectation. * * @param array $dataSet * The data set to be tested. Note that when adding new datasets often only form_values and expected where * clause will need changing. * * @dataProvider querySets */ public function testSelectorQuery($dataSet) { $params = CRM_Contact_BAO_Query::convertFormValues($dataSet['form_values'], 0, FALSE, NULL, array()); foreach ($dataSet['settings'] as $setting) { $this->callAPISuccess('Setting', 'create', array($setting['name'] => $setting['value'])); } $selector = new CRM_Contact_Selector($dataSet['class'], $dataSet['form_values'], $params, $dataSet['return_properties'], $dataSet['action'], $dataSet['includeContactIds'], $dataSet['searchDescendentGroups'], $dataSet['context']); $queryObject = $selector->getQueryObject(); $sql = $queryObject->query(); $this->wrangleDefaultClauses($dataSet['expected_query']); foreach ($dataSet['expected_query'] as $index => $queryString) { $this->assertEquals($this->strWrangle($queryString), $this->strWrangle($sql[$index])); } }