forked from solariumphp/solarium
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added analysis requestbuilder classes and new unittests for these cla…
…sses
- Loading branch information
1 parent
4d2e48f
commit 6e63f64
Showing
6 changed files
with
457 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
<?php | ||
/** | ||
* Copyright 2011 Bas de Nooijer. All rights reserved. | ||
* | ||
* Redistribution and use in source and binary forms, with or without | ||
* modification, are permitted provided that the following conditions are met: | ||
* | ||
* 1. Redistributions of source code must retain the above copyright notice, | ||
* this list of conditions and the following disclaimer. | ||
* | ||
* 2. Redistributions in binary form must reproduce the above copyright notice, | ||
* this listof conditions and the following disclaimer in the documentation | ||
* and/or other materials provided with the distribution. | ||
* | ||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS IS" | ||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE | ||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | ||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | ||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | ||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | ||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | ||
* POSSIBILITY OF SUCH DAMAGE. | ||
* | ||
* The views and conclusions contained in the software and documentation are | ||
* those of the authors and should not be interpreted as representing official | ||
* policies, either expressed or implied, of the copyright holder. | ||
* | ||
* @copyright Copyright 2011 Bas de Nooijer <[email protected]> | ||
* @license http://github.com/basdenooijer/solarium/raw/master/COPYING | ||
* @link http://www.solarium-project.org/ | ||
* | ||
* @package Solarium | ||
* @subpackage Client | ||
*/ | ||
|
||
/** | ||
* Build an analysis request | ||
* | ||
* @package Solarium | ||
* @subpackage Client | ||
*/ | ||
class Solarium_Client_RequestBuilder_Analysis extends Solarium_Client_RequestBuilder | ||
{ | ||
|
||
/** | ||
* Build request for an analysis query | ||
* | ||
* @param Solarium_Query_Analysis $query | ||
* @return Solarium_Client_Request | ||
*/ | ||
public function build($query) | ||
{ | ||
$request = new Solarium_Client_Request; | ||
$request->setHandler($query->getHandler()); | ||
|
||
$request->addParam('wt', 'json'); | ||
$request->addParam('analysis.query', $query->getQuery()); | ||
$request->addParam('analysis.showmatch', $query->getShowMatch()); | ||
|
||
return $request; | ||
} | ||
|
||
} |
106 changes: 106 additions & 0 deletions
106
library/Solarium/Client/RequestBuilder/Analysis/Document.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,106 @@ | ||
<?php | ||
/** | ||
* Copyright 2011 Bas de Nooijer. All rights reserved. | ||
* | ||
* Redistribution and use in source and binary forms, with or without | ||
* modification, are permitted provided that the following conditions are met: | ||
* | ||
* 1. Redistributions of source code must retain the above copyright notice, | ||
* this list of conditions and the following disclaimer. | ||
* | ||
* 2. Redistributions in binary form must reproduce the above copyright notice, | ||
* this listof conditions and the following disclaimer in the documentation | ||
* and/or other materials provided with the distribution. | ||
* | ||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS IS" | ||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE | ||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | ||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | ||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | ||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | ||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | ||
* POSSIBILITY OF SUCH DAMAGE. | ||
* | ||
* The views and conclusions contained in the software and documentation are | ||
* those of the authors and should not be interpreted as representing official | ||
* policies, either expressed or implied, of the copyright holder. | ||
* | ||
* @copyright Copyright 2011 Bas de Nooijer <[email protected]> | ||
* @license http://github.com/basdenooijer/solarium/raw/master/COPYING | ||
* @link http://www.solarium-project.org/ | ||
* | ||
* @package Solarium | ||
* @subpackage Client | ||
*/ | ||
|
||
/** | ||
* Build a document analysis request | ||
* | ||
* @package Solarium | ||
* @subpackage Client | ||
*/ | ||
class Solarium_Client_RequestBuilder_Analysis_Document extends Solarium_Client_RequestBuilder_Analysis | ||
{ | ||
|
||
/** | ||
* Build request for an analysis document query | ||
* | ||
* @param Solarium_Query_Analysis_Document $query | ||
* @return Solarium_Client_Request | ||
*/ | ||
public function build($query) | ||
{ | ||
$request = parent::build($query); | ||
$request->setRawData($this->getRawData($query)); | ||
$request->setMethod(Solarium_Client_Request::METHOD_POST); | ||
|
||
return $request; | ||
} | ||
|
||
/** | ||
* Create the raw post data (xml) | ||
* | ||
* @param Solarium_Query_Analysis_Document $query | ||
* @return string | ||
*/ | ||
public function getRawData($query) | ||
{ | ||
$xml = '<docs>'; | ||
|
||
foreach ($query->getDocuments() AS $doc) { | ||
$xml .= '<doc>'; | ||
|
||
foreach ($doc->getFields() AS $name => $value) { | ||
if (is_array($value)) { | ||
foreach ($value AS $multival) { | ||
$xml .= $this->_buildFieldXml($name, $multival); | ||
} | ||
} else { | ||
$xml .= $this->_buildFieldXml($name, $value); | ||
} | ||
} | ||
|
||
$xml .= '</doc>'; | ||
} | ||
|
||
$xml .= '</docs>'; | ||
|
||
return $xml; | ||
} | ||
|
||
/** | ||
* Build XML for a field | ||
* | ||
* @param string $name | ||
* @param mixed $value | ||
* @return string | ||
*/ | ||
protected function _buildFieldXml($name, $value) | ||
{ | ||
return '<field name="' . $name . '">' . htmlspecialchars($value, ENT_NOQUOTES, 'UTF-8') . '</field>'; | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
<?php | ||
/** | ||
* Copyright 2011 Bas de Nooijer. All rights reserved. | ||
* | ||
* Redistribution and use in source and binary forms, with or without | ||
* modification, are permitted provided that the following conditions are met: | ||
* | ||
* 1. Redistributions of source code must retain the above copyright notice, | ||
* this list of conditions and the following disclaimer. | ||
* | ||
* 2. Redistributions in binary form must reproduce the above copyright notice, | ||
* this listof conditions and the following disclaimer in the documentation | ||
* and/or other materials provided with the distribution. | ||
* | ||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS IS" | ||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE | ||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | ||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | ||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | ||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | ||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | ||
* POSSIBILITY OF SUCH DAMAGE. | ||
* | ||
* The views and conclusions contained in the software and documentation are | ||
* those of the authors and should not be interpreted as representing official | ||
* policies, either expressed or implied, of the copyright holder. | ||
* | ||
* @copyright Copyright 2011 Bas de Nooijer <[email protected]> | ||
* @license http://github.com/basdenooijer/solarium/raw/master/COPYING | ||
* @link http://www.solarium-project.org/ | ||
* | ||
* @package Solarium | ||
* @subpackage Client | ||
*/ | ||
|
||
/** | ||
* Build a field analysis request | ||
* | ||
* @package Solarium | ||
* @subpackage Client | ||
*/ | ||
class Solarium_Client_RequestBuilder_Analysis_Field extends Solarium_Client_RequestBuilder_Analysis | ||
{ | ||
|
||
/** | ||
* Build request for an analysis field query | ||
* | ||
* @param Solarium_Query_Analysis_Field $query | ||
* @return Solarium_Client_Request | ||
*/ | ||
public function build($query) | ||
{ | ||
$request = parent::build($query); | ||
|
||
$request->addParam('analysis.fieldvalue', $query->getFieldValue()); | ||
$request->addParam('analysis.fieldname', $query->getFieldName()); | ||
$request->addParam('analysis.fieldtype', $query->getFieldType()); | ||
|
||
return $request; | ||
} | ||
|
||
} |
76 changes: 76 additions & 0 deletions
76
tests/Solarium/Client/RequestBuilder/Analysis/DocumentTest.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
<?php | ||
/** | ||
* Copyright 2011 Bas de Nooijer. All rights reserved. | ||
* | ||
* Redistribution and use in source and binary forms, with or without | ||
* modification, are permitted provided that the following conditions are met: | ||
* | ||
* 1. Redistributions of source code must retain the above copyright notice, | ||
* this list of conditions and the following disclaimer. | ||
* | ||
* 2. Redistributions in binary form must reproduce the above copyright notice, | ||
* this listof conditions and the following disclaimer in the documentation | ||
* and/or other materials provided with the distribution. | ||
* | ||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS IS" | ||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE | ||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | ||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | ||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | ||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | ||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | ||
* POSSIBILITY OF SUCH DAMAGE. | ||
* | ||
* The views and conclusions contained in the software and documentation are | ||
* those of the authors and should not be interpreted as representing official | ||
* policies, either expressed or implied, of the copyright holder. | ||
*/ | ||
|
||
class Solarium_Client_RequestBuilder_Analysis_DocumentTest extends PHPUnit_Framework_TestCase | ||
{ | ||
|
||
/** | ||
* @var Solarium_Query_Analysis_Document | ||
*/ | ||
protected $_query; | ||
|
||
/** | ||
* @var Solarium_Client_RequestBuilder_Analysis_Document | ||
*/ | ||
protected $_builder; | ||
|
||
public function setUp() | ||
{ | ||
$this->_query = new Solarium_Query_Analysis_Document(); | ||
$this->_builder = new Solarium_Client_RequestBuilder_Analysis_Document; | ||
} | ||
|
||
public function testBuild() | ||
{ | ||
$request = $this->_builder->build($this->_query); | ||
|
||
$this->assertEquals(Solarium_Client_Request::METHOD_POST, $request->getMethod()); | ||
$this->assertEquals($this->_builder->getRawData($this->_query), $request->getRawData()); | ||
} | ||
|
||
public function testGetRawData() | ||
{ | ||
// this doc tests data escaping | ||
$doc1 = new Solarium_Document_ReadWrite(array('id' => 1, 'name' => 'doc1', 'cat' => 'my > cat')); | ||
|
||
// this doc tests a multivalue field | ||
$doc2 = new Solarium_Document_ReadWrite(array('id' => 2, 'name' => 'doc2', 'cat' => array(1,2,3))); | ||
|
||
$this->_query->addDocuments(array($doc1, $doc2)); | ||
|
||
$this->assertEquals( | ||
'<docs><doc><field name="id">1</field><field name="name">doc1</field><field name="cat">my > cat</field></doc><doc><field name="id">2</field><field name="name">doc2</field><field name="cat">1</field><field name="cat">2</field><field name="cat">3</field></doc></docs>', | ||
$this->_builder->getRawData($this->_query) | ||
); | ||
} | ||
|
||
|
||
} |
69 changes: 69 additions & 0 deletions
69
tests/Solarium/Client/RequestBuilder/Analysis/FieldTest.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
<?php | ||
/** | ||
* Copyright 2011 Bas de Nooijer. All rights reserved. | ||
* | ||
* Redistribution and use in source and binary forms, with or without | ||
* modification, are permitted provided that the following conditions are met: | ||
* | ||
* 1. Redistributions of source code must retain the above copyright notice, | ||
* this list of conditions and the following disclaimer. | ||
* | ||
* 2. Redistributions in binary form must reproduce the above copyright notice, | ||
* this listof conditions and the following disclaimer in the documentation | ||
* and/or other materials provided with the distribution. | ||
* | ||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS IS" | ||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE | ||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | ||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | ||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | ||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | ||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | ||
* POSSIBILITY OF SUCH DAMAGE. | ||
* | ||
* The views and conclusions contained in the software and documentation are | ||
* those of the authors and should not be interpreted as representing official | ||
* policies, either expressed or implied, of the copyright holder. | ||
*/ | ||
|
||
class Solarium_Client_RequestBuilder_Analysis_FieldTest extends PHPUnit_Framework_TestCase | ||
{ | ||
|
||
/** | ||
* @var Solarium_Query_Analysis_Field | ||
*/ | ||
protected $_query; | ||
|
||
/** | ||
* @var Solarium_Client_RequestBuilder_Analysis_Field | ||
*/ | ||
protected $_builder; | ||
|
||
public function setUp() | ||
{ | ||
$this->_query = new Solarium_Query_Analysis_Field(); | ||
$this->_builder = new Solarium_Client_RequestBuilder_Analysis_Field; | ||
} | ||
|
||
public function testBuild() | ||
{ | ||
$fieldValue = 'myvalue'; | ||
$fieldName = 'myfield'; | ||
$fieldType = 'text'; | ||
|
||
$this->_query->setFieldValue($fieldValue) | ||
->setFieldName($fieldName) | ||
->setFieldType($fieldType); | ||
|
||
$request = $this->_builder->build($this->_query); | ||
|
||
$this->assertEquals($fieldValue, $request->getParam('analysis.fieldvalue')); | ||
$this->assertEquals($fieldName, $request->getParam('analysis.fieldname')); | ||
$this->assertEquals($fieldType, $request->getParam('analysis.fieldtype')); | ||
} | ||
|
||
|
||
} |
Oops, something went wrong.