function SolrBaseQueryTests::testAddParams in Apache Solr Search 7
Same name and namespace in other branches
- 8 tests/solr_base_query.test \SolrBaseQueryTests::testAddParams()
- 6.3 tests/solr_base_query.test \SolrBaseQueryTests::testAddParams()
File
- tests/
solr_base_query.test, line 102
Class
- SolrBaseQueryTests
- Unit tests for query object methods.
Code
function testAddParams() {
$examples = array();
$examples['{!cache=false}inStock:true'] = array(
'#local' => 'cache=false',
'#exclude' => FALSE,
'#name' => 'inStock',
'#value' => 'true',
);
$examples['{!frange l=1 u=4 cache=false}sqrt(popularity)'] = array(
'#local' => 'frange l=1 u=4 cache=false',
'#exclude' => FALSE,
'#name' => NULL,
'#value' => 'sqrt(popularity)',
);
$examples['{!cache=false cost=5}inStock:true'] = array(
'#local' => 'cache=false cost=5',
'#exclude' => FALSE,
'#name' => 'inStock',
'#value' => 'true',
);
$examples['{!tag=impala}model:Impala'] = array(
'#local' => 'tag=impala',
'#exclude' => FALSE,
'#name' => 'model',
'#value' => 'Impala',
);
$examples['{!anything that appears to be local}'] = array(
'#local' => 'anything that appears to be local',
'#exclude' => FALSE,
'#name' => NULL,
'#value' => NULL,
);
$examples['bundle:(article OR page)'] = array(
'#local' => NULL,
'#exclude' => FALSE,
'#name' => 'bundle',
'#value' => '(article OR page)',
);
$examples['-bundle:(article OR page)'] = array(
'#local' => NULL,
'#exclude' => TRUE,
'#name' => 'bundle',
'#value' => '(article OR page)',
);
$examples['-{!anything that appears to be local}'] = array(
'#local' => 'anything that appears to be local',
'#exclude' => TRUE,
'#name' => NULL,
'#value' => NULL,
);
$examples['title:"double words"'] = array(
'#local' => NULL,
'#exclude' => FALSE,
'#name' => 'title',
'#value' => '"double words"',
);
$examples['field_date:[1970-12-31T23:59:59Z TO NOW]'] = array(
'#local' => NULL,
'#exclude' => FALSE,
'#name' => 'field_date',
'#value' => '[1970-12-31T23:59:59Z TO NOW]',
);
$query = $this
->_apachesolr_drupal_query("apachesolr_tests");
foreach ($examples as $fq => $example) {
$name = !empty($example['#name']) ? $example['#name'] : '_QUERY_';
$value = !empty($example['#value']) ? $example['#value'] : '_VALUE_';
$filter = $name . ':' . $value;
// Check if filter is seen as a valid one
$message = t('Filter (@fq) is Valid', array(
'@fq' => $filter,
));
$this
->assertTrue($query
->validFilterValue($filter), $message);
$query
->addParam('fq', $fq);
// Check if filter was added
$message = t('hasFilter(@name, @value) is True', array(
'@name' => $example['#name'],
'@value' => $example['#value'],
));
$this
->assertTrue($query
->hasFilter($example['#name'], $example['#value'], $example['#exclude']), $message);
$filters = $query
->getFilters();
$filter = reset($filters);
$message = t('The filter "@fq" was added with all the given properties', array(
'@fq' => $fq,
));
$this
->assertTrue(!array_diff($example, $filter), $message);
$query
->removeFilter($example['#name']);
$message = t('The filter "@fq" was correctly removed', array(
'@fq' => $fq,
));
$this
->assertFalse($query
->hasFilter($example['#name'], $example['#value'], $example['#exclude']), $message);
// Since we cannot remove filters without names yet we have to clear the whole fq array
$query
->removeParam('fq');
// Check the ones without the name also
}
// Check for invalid combinations
$bad_examples['wrong name:"double words"'] = array(
'#local' => NULL,
'#exclude' => FALSE,
'#name' => 'wrong name',
'#value' => '"double words"',
);
$bad_examples['field_date:[1970-12-31 TO NOW]'] = array(
'#local' => NULL,
'#exclude' => FALSE,
'#name' => 'field_date',
'#value' => '[1970-12-31 TO NOW]',
);
$bad_examples['bundle:((article OR page)]'] = array(
'#local' => NULL,
'#exclude' => FALSE,
'#name' => 'bundle',
'#value' => '((article OR page)]',
);
foreach ($bad_examples as $fq => $example) {
$name = !empty($example['#name']) ? $example['#name'] : '_QUERY_';
$value = !empty($example['#value']) ? $example['#value'] : '_VALUE_';
$filter = $name . ':' . $value;
// Check if filter is seen as a valid one
$message = t('Filter (@fq) is not Valid', array(
'@fq' => $filter,
));
$this
->assertFalse($query
->validFilterValue($filter), $message);
}
// Check parameter normalization.
$query
->addParam('spellcheck', TRUE);
$this
->assertTrue($query
->getParam('spellcheck') === 'true', "TRUE normalized to string 'true'");
$query
->replaceParam('spellcheck', FALSE);
$this
->assertTrue($query
->getParam('spellcheck') === 'false', "FALSE normalized to string 'false'");
$query
->addParam('fl', array(
' x ',
TRUE,
));
$this
->assertTrue($query
->getParam('fl') === array(
'x',
'true',
), "Array of params all normalized");
}