Mercurial > hg > MPIWG-drupal-modules
comparison sites/all/modules/custom/solrconnect/tests/solr_base_subquery.test @ 0:015d06b10d37 default tip
initial
author | dwinter |
---|---|
date | Wed, 31 Jul 2013 13:49:13 +0200 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:015d06b10d37 |
---|---|
1 <?php | |
2 | |
3 /** | |
4 * @file | |
5 * Unit tests for subquery object methods. | |
6 */ | |
7 class DrupalSolrFilterSubQueryTests extends DrupalUnitTestCase { | |
8 | |
9 public static function getInfo() { | |
10 return array( | |
11 'name' => 'SolrFilterSubQuery Unit tests', | |
12 'description' => 'Unit Tests for subqueries.', | |
13 'group' => 'ApacheSolr', | |
14 ); | |
15 } | |
16 | |
17 function setUp() { | |
18 parent::setUp(); | |
19 require_once dirname(dirname(realpath(__FILE__))) . '/apachesolr.module'; | |
20 require_once dirname(dirname(realpath(__FILE__))) . '/apachesolr.interface.inc'; | |
21 require_once dirname(dirname(realpath(__FILE__))) . '/Solr_Base_Query.php'; | |
22 require_once dirname(dirname(realpath(__FILE__))) . '/Drupal_Apache_Solr_Service.php'; | |
23 require_once dirname(dirname(realpath(__FILE__))) . '/tests/Dummy_Solr.php'; | |
24 } | |
25 | |
26 /** | |
27 * Helper function to simulate the auto loading and other non-needed functions | |
28 * that otherwise require a database | |
29 * @see apachesolr_drupal_query(). | |
30 * @return SolrBaseQuery | |
31 */ | |
32 private function _apachesolr_drupal_query($name, $params = array(), $solrsort = '', $base_path = '', $solr = NULL) { | |
33 if (empty($solr)) { | |
34 $solr = new DummySolr(NULL); | |
35 } | |
36 return new SolrBaseQuery($name, $solr, $params, $solrsort, $base_path); | |
37 } | |
38 | |
39 private function _apachesolr_drupal_subquery($operator = 'OR') { | |
40 return new SolrFilterSubQuery($operator); | |
41 } | |
42 | |
43 function testSubQueriesQuery() { | |
44 $query1 = $this->_apachesolr_drupal_query('DrupalTest'); | |
45 $query1->addFilter('label', 'foo'); | |
46 | |
47 $query2 = $this->_apachesolr_drupal_subquery(); | |
48 $query2->addFilter('label', 'bar'); | |
49 | |
50 $query3 = $this->_apachesolr_drupal_subquery(); | |
51 $query3->addFilter('label', 'baz'); | |
52 | |
53 $query1->addFilterSubQuery($query2); | |
54 $params = $query1->getParam('fq'); | |
55 $this->assertEqual($params[0], 'label:foo', t('First field should be label:foo')); | |
56 $this->assertEqual($params[1], '(label:bar)', t('Second field should be label:bar')); | |
57 | |
58 $query1->removeFilterSubQuery($query2); | |
59 $params = $query1->getParam('fq'); | |
60 $this->assertFalse(isset($params[1]), t('Second field should be empty')); | |
61 | |
62 $query1->addFilterSubQuery($query2); | |
63 $query1->addFilterSubQuery($query2); | |
64 $query1->addFilterSubQuery($query2); | |
65 $params = $query1->getParam('fq'); | |
66 $this->assertEqual($params[0], 'label:foo', t('First field should be label:foo')); | |
67 $this->assertEqual($params[1], '(label:bar)', t('Second field should be label:bar')); | |
68 $this->assertEqual(count($params), 2, t('Add bar several times; should only appear once.')); | |
69 | |
70 // Empty out query1 | |
71 $query1 = $this->_apachesolr_drupal_query('DrupalTest'); | |
72 $query2 = $this->_apachesolr_drupal_subquery('DrupalTest'); | |
73 $query2->operator = 'OR'; | |
74 $query2->addFilter('label', 'bar'); | |
75 $query2->addFilter('label', 'baz'); | |
76 $query1->addFilterSubQuery($query2); | |
77 $params = $query1->getParam('fq'); | |
78 $this->assertEqual($params[0], '(label:bar OR label:baz)', '(label:bar OR label:baz)'); | |
79 | |
80 // Empty out query1 | |
81 $query1 = $this->_apachesolr_drupal_query('DrupalTest'); | |
82 $query2 = $this->_apachesolr_drupal_subquery('DrupalTest'); | |
83 $query2->operator = 'AND'; | |
84 $query2->addFilter('label', 'bar'); | |
85 $query2->addFilter('label', 'baz'); | |
86 $query1->addFilterSubQuery($query2); | |
87 $params = $query1->getParam('fq'); | |
88 $this->assertEqual($params[0], '(label:bar AND label:baz)', '(label:bar AND label:baz)'); | |
89 | |
90 // Test with multiple filters in first query | |
91 $query1 = $this->_apachesolr_drupal_query('DrupalTest'); | |
92 $query1->addFilter('is_uid', '10'); | |
93 | |
94 $query2 = $this->_apachesolr_drupal_subquery(); | |
95 $query2->addFilter('is_uid', '1'); | |
96 $query2->addFilter('tid', '5'); | |
97 $query1->addFilterSubQuery($query2); | |
98 | |
99 $params = $query1->getParam('fq'); | |
100 $this->assertEqual($params[0], 'is_uid:10', 'First field value is is_uid:10'); | |
101 $this->assertEqual($params[1], '(is_uid:1 OR tid:5)', 'Second field value is (is_uid:1 OR tid:5)'); | |
102 | |
103 $query2->operator = 'AND'; | |
104 $query1->addFilterSubQuery($query2); | |
105 $params = $query1->getParam('fq'); | |
106 $this->assertEqual($params[0], 'is_uid:10', 'First field value is is_uid:10'); | |
107 $this->assertEqual($params[1], '(is_uid:1 AND tid:5)', 'Second field value is (is_uid:1 AND tid:5)'); | |
108 } | |
109 } |