source: sandbox/expresso-solr/expressoMail1_2/solrclient/tests/Solarium/Client/RequestBuilder/SelectTest.php @ 7588

Revision 7588, 5.3 KB checked in by adir, 11 years ago (diff)

Ticket #000 - Adicionando a integracao de buscas com Solr na base a ser isnerida na comunidade

Line 
1<?php
2/**
3 * Copyright 2011 Bas de Nooijer. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 *
8 * 1. Redistributions of source code must retain the above copyright notice,
9 *    this list of conditions and the following disclaimer.
10 *
11 * 2. Redistributions in binary form must reproduce the above copyright notice,
12 *    this listof conditions and the following disclaimer in the documentation
13 *    and/or other materials provided with the distribution.
14 *
15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS IS"
16 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
19 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25 * POSSIBILITY OF SUCH DAMAGE.
26 *
27 * The views and conclusions contained in the software and documentation are
28 * those of the authors and should not be interpreted as representing official
29 * policies, either expressed or implied, of the copyright holder.
30 */
31
32class Solarium_Client_RequestBuilder_SelectTest extends PHPUnit_Framework_TestCase
33{
34
35    /**
36     * @var Solarium_Query_Select
37     */
38    protected $_query;
39
40    /**
41     * @var Solarium_Client_RequestBuilder_Select
42     */
43    protected $_builder;
44
45    public function setUp()
46    {
47        $this->_query = new Solarium_Query_Select;
48        $this->_builder = new Solarium_Client_RequestBuilder_Select;
49    }
50
51    public function testGetMethod()
52    {
53        $request = $this->_builder->build($this->_query);
54        $this->assertEquals(
55            Solarium_Client_Request::METHOD_GET,
56            $request->getMethod()
57        );
58    }
59
60    public function testSelectUrlWithDefaultValues()
61    {
62        $request = $this->_builder->build($this->_query);
63
64        $this->assertEquals(
65            null,
66            $request->getRawData()
67        );
68
69        $this->assertEquals(
70            'select?wt=json&q=*:*&start=0&rows=10&fl=*,score',
71            urldecode($request->getUri())
72        );
73    }
74
75    public function testSelectUrlWithSort()
76    {
77        $this->_query->addSort('id', Solarium_Query_Select::SORT_ASC);
78        $this->_query->addSort('name', Solarium_Query_Select::SORT_DESC);
79        $request = $this->_builder->build($this->_query);
80
81        $this->assertEquals(
82            null,
83            $request->getRawData()
84        );
85
86        $this->assertEquals(
87            'select?wt=json&q=*:*&start=0&rows=10&fl=*,score&sort=id asc,name desc',
88            urldecode($request->getUri())
89        );
90    }
91
92    public function testSelectUrlWithQueryDefaultFieldAndOperator()
93    {
94        $this->_query->setQueryDefaultField('mydefault');
95        $this->_query->setQueryDefaultOperator(Solarium_Query_Select::QUERY_OPERATOR_AND);
96        $request = $this->_builder->build($this->_query);
97
98        $this->assertEquals(
99            null,
100            $request->getRawData()
101        );
102
103        $this->assertEquals(
104            'select?wt=json&q=*:*&start=0&rows=10&fl=*,score&q.op=AND&df=mydefault',
105            urldecode($request->getUri())
106        );
107    }
108
109    public function testSelectUrlWithSortAndFilters()
110    {
111        $this->_query->addSort('id', Solarium_Query_Select::SORT_ASC);
112        $this->_query->addSort('name', Solarium_Query_Select::SORT_DESC);
113        $this->_query->addFilterQuery(new Solarium_Query_Select_FilterQuery(array('key' => 'f1', 'query' => 'published:true')));
114        $this->_query->addFilterQuery(new Solarium_Query_Select_FilterQuery(array('key' => 'f2', 'tag' => array('t1','t2'), 'query' => 'category:23')));
115        $request = $this->_builder->build($this->_query);
116
117        $this->assertEquals(
118            null,
119            $request->getRawData()
120        );
121
122        $this->assertEquals(
123            'select?wt=json&q=*:*&start=0&rows=10&fl=*,score&sort=id asc,name desc&fq=published:true&fq={!tag=t1,t2}category:23',
124            urldecode($request->getUri())
125        );
126    }
127
128    public function testWithComponentNoBuilder()
129    {
130        $request = $this->_builder->build($this->_query);
131
132        $this->_query->registerComponentType('testcomponent','TestDummyComponent');
133        $this->_query->getComponent('testcomponent', true);
134
135        $requestWithNoBuilderComponent = $this->_builder->build($this->_query);
136
137        $this->assertEquals(
138            $request,
139            $requestWithNoBuilderComponent
140        );
141    }
142
143    public function testWithComponent()
144    {
145        $this->_query->getDisMax();
146        $request = $this->_builder->build($this->_query);
147
148        $this->assertEquals(
149            'dismax',
150            $request->getParam('defType')
151        );
152    }
153
154}
155
156class TestDummyComponent extends Solarium_Query_Select_Component{
157
158    public function getType()
159    {
160        return 'testcomponent';
161    }
162}
Note: See TracBrowser for help on using the repository browser.