class DrupalSolrFilterSubQueryTests in Apache Solr Search 7
Same name and namespace in other branches
- 8 tests/solr_base_subquery.test \DrupalSolrFilterSubQueryTests
- 6.3 tests/solr_base_subquery.test \DrupalSolrFilterSubQueryTests
@file Unit tests for subquery object methods.
Hierarchy
- class \DrupalTestCase
- class \DrupalUnitTestCase
Expanded class hierarchy of DrupalSolrFilterSubQueryTests
File
- tests/
solr_base_subquery.test, line 7 - Unit tests for subquery object methods.
View source
class DrupalSolrFilterSubQueryTests extends DrupalUnitTestCase {
public static function getInfo() {
return array(
'name' => 'SolrFilterSubQuery Unit tests',
'description' => 'Unit Tests for subqueries.',
'group' => 'ApacheSolr',
);
}
function setUp() {
parent::setUp();
require_once dirname(dirname(realpath(__FILE__))) . '/apachesolr.module';
require_once dirname(dirname(realpath(__FILE__))) . '/apachesolr.interface.inc';
require_once dirname(dirname(realpath(__FILE__))) . '/Solr_Base_Query.php';
require_once dirname(dirname(realpath(__FILE__))) . '/Drupal_Apache_Solr_Service.php';
require_once dirname(dirname(realpath(__FILE__))) . '/tests/Dummy_Solr.php';
}
/**
* Helper function to simulate the auto loading and other non-needed functions
* that otherwise require a database
* @see apachesolr_drupal_query().
* @return SolrBaseQuery
*/
private function _apachesolr_drupal_query($name, $params = array(), $solrsort = '', $base_path = '', $solr = NULL) {
if (empty($solr)) {
$solr = new DummySolr(NULL);
}
return new SolrBaseQuery($name, $solr, $params, $solrsort, $base_path);
}
private function _apachesolr_drupal_subquery($operator = 'OR', $exclude = FALSE) {
return new SolrFilterSubQuery($operator, $exclude);
}
function testSubQueriesQuery() {
$query1 = $this
->_apachesolr_drupal_query('DrupalTest');
$query1
->addFilter('label', 'foo');
$query2 = $this
->_apachesolr_drupal_subquery();
$query2
->addFilter('label', 'bar');
$query3 = $this
->_apachesolr_drupal_subquery();
$query3
->addFilter('label', 'baz');
$query1
->addFilterSubQuery($query2);
$params = $query1
->getParam('fq');
$this
->assertEqual($params[0], 'label:foo', t('First field should be label:foo'));
$this
->assertEqual($params[1], '(label:bar)', t('Second field should be label:bar'));
$query1
->removeFilterSubQuery($query2);
$params = $query1
->getParam('fq');
$this
->assertFalse(isset($params[1]), t('Second field should be empty'));
$query1
->addFilterSubQuery($query2);
$query1
->addFilterSubQuery($query2);
$query1
->addFilterSubQuery($query2);
$params = $query1
->getParam('fq');
$this
->assertEqual($params[0], 'label:foo', t('First field should be label:foo'));
$this
->assertEqual($params[1], '(label:bar)', t('Second field should be label:bar'));
$this
->assertEqual(count($params), 2, t('Add bar several times; should only appear once.'));
// Empty out query1
$query1 = $this
->_apachesolr_drupal_query('DrupalTest');
$query2 = $this
->_apachesolr_drupal_subquery('DrupalTest');
$query2->operator = 'OR';
$query2
->addFilter('label', 'bar');
$query2
->addFilter('label', 'baz');
$query1
->addFilterSubQuery($query2);
$params = $query1
->getParam('fq');
$this
->assertEqual($params[0], '(label:bar OR label:baz)', '(label:bar OR label:baz)');
// Empty out query1
$query1 = $this
->_apachesolr_drupal_query('DrupalTest');
$query2 = $this
->_apachesolr_drupal_subquery('DrupalTest');
$query2->operator = 'AND';
$query2
->addFilter('label', 'bar');
$query2
->addFilter('label', 'baz');
$query1
->addFilterSubQuery($query2);
$params = $query1
->getParam('fq');
$this
->assertEqual($params[0], '(label:bar AND label:baz)', '(label:bar AND label:baz)');
// Test with multiple filters in first query
$query1 = $this
->_apachesolr_drupal_query('DrupalTest');
$query1
->addFilter('is_uid', '10');
$query2 = $this
->_apachesolr_drupal_subquery();
$query2
->addFilter('is_uid', '1');
$query2
->addFilter('tid', '5');
$query1
->addFilterSubQuery($query2);
$params = $query1
->getParam('fq');
$this
->assertEqual($params[0], 'is_uid:10', 'First field value is is_uid:10');
$this
->assertEqual($params[1], '(is_uid:1 OR tid:5)', 'Second field value is (is_uid:1 OR tid:5)');
$query2->operator = 'AND';
$query1
->addFilterSubQuery($query2);
$params = $query1
->getParam('fq');
$this
->assertEqual($params[0], 'is_uid:10', 'First field value is is_uid:10');
$this
->assertEqual($params[1], '(is_uid:1 AND tid:5)', 'Second field value is (is_uid:1 AND tid:5)');
// Test excluding a subquery.
$query1 = $this
->_apachesolr_drupal_query('DrupalTest');
$query2 = $this
->_apachesolr_drupal_subquery('AND', TRUE);
$query2
->addFilter('label', 'bar');
$query2
->addFilter('label', 'baz');
$query1
->addFilterSubQuery($query2);
$params = $query1
->getParam('fq');
$this
->assertEqual($params[0], '-(label:bar AND label:baz)', t('The bar and baz label are excluded.'));
// Test if a field is either empty or has a certain value.
$query1 = $this
->_apachesolr_drupal_query('DrupalTest');
$query2 = $this
->_apachesolr_drupal_subquery('AND', TRUE);
$query2
->addFilter('label', '*');
$query2
->addFilter('label', 'bar', TRUE);
$query1
->addFilterSubQuery($query2);
$params = $query1
->getParam('fq');
// This subquery is useful when you want to retrieve empty
// fields for the label property OR should be bar.
$this
->assertEqual($params[0], '-(label:* AND -label:bar)', t('The label should either be bar or empty.'));
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
DrupalSolrFilterSubQueryTests:: |
public static | function | ||
DrupalSolrFilterSubQueryTests:: |
function |
Sets up unit test environment. Overrides DrupalUnitTestCase:: |
||
DrupalSolrFilterSubQueryTests:: |
function | |||
DrupalSolrFilterSubQueryTests:: |
private | function | Helper function to simulate the auto loading and other non-needed functions that otherwise require a database | |
DrupalSolrFilterSubQueryTests:: |
private | function | ||
DrupalTestCase:: |
protected | property | Assertions thrown in that test case. | |
DrupalTestCase:: |
protected | property | The database prefix of this test run. | |
DrupalTestCase:: |
protected | property | The original file directory, before it was changed for testing purposes. | |
DrupalTestCase:: |
public | property | Current results of this test case. | |
DrupalTestCase:: |
protected | property | Flag to indicate whether the test has been set up. | |
DrupalTestCase:: |
protected | property | ||
DrupalTestCase:: |
protected | property | ||
DrupalTestCase:: |
protected | property | This class is skipped when looking for the source of an assertion. | |
DrupalTestCase:: |
protected | property | The test run ID. | |
DrupalTestCase:: |
protected | property | Time limit for the test. | |
DrupalTestCase:: |
public | property | Whether to cache the installation part of the setUp() method. | |
DrupalTestCase:: |
public | property | Whether to cache the modules installation part of the setUp() method. | |
DrupalTestCase:: |
protected | property | URL to the verbose output file directory. | |
DrupalTestCase:: |
protected | function | Internal helper: stores the assert. | |
DrupalTestCase:: |
protected | function | Check to see if two values are equal. | |
DrupalTestCase:: |
protected | function | Check to see if a value is false (an empty string, 0, NULL, or FALSE). | |
DrupalTestCase:: |
protected | function | Check to see if two values are identical. | |
DrupalTestCase:: |
protected | function | Check to see if two values are not equal. | |
DrupalTestCase:: |
protected | function | Check to see if two values are not identical. | |
DrupalTestCase:: |
protected | function | Check to see if a value is not NULL. | |
DrupalTestCase:: |
protected | function | Check to see if a value is NULL. | |
DrupalTestCase:: |
protected | function | Check to see if a value is not false (not an empty string, 0, NULL, or FALSE). | |
DrupalTestCase:: |
public static | function | Delete an assertion record by message ID. | |
DrupalTestCase:: |
protected | function | Fire an error assertion. | 1 |
DrupalTestCase:: |
public | function | Handle errors during test runs. | 1 |
DrupalTestCase:: |
protected | function | Handle exceptions. | |
DrupalTestCase:: |
protected | function | Fire an assertion that is always negative. | |
DrupalTestCase:: |
public static | function | Converts a list of possible parameters into a stack of permutations. | |
DrupalTestCase:: |
protected | function | Cycles through backtrace until the first non-assertion method is found. | |
DrupalTestCase:: |
public static | function | Returns the database connection to the site running Simpletest. | |
DrupalTestCase:: |
public static | function | Store an assertion from outside the testing context. | |
DrupalTestCase:: |
protected | function | Fire an assertion that is always positive. | |
DrupalTestCase:: |
public static | function | Generates a random string containing letters and numbers. | |
DrupalTestCase:: |
public static | function | Generates a random string of ASCII characters of codes 32 to 126. | |
DrupalTestCase:: |
public | function | Run all tests in this class. | |
DrupalTestCase:: |
protected | function | Logs a verbose message in a text file. | |
DrupalUnitTestCase:: |
protected | function | 1 | |
DrupalUnitTestCase:: |
function |
Constructor for DrupalUnitTestCase. Overrides DrupalTestCase:: |