Commit ad59cf26 authored by Bas de Nooijer's avatar Bas de Nooijer

Merge branch 'feature/remove-by-object' into develop

parents 3ea5b8b8 7cfb5d74
......@@ -359,13 +359,25 @@ class Solarium_Client extends Solarium_Configurable
/**
* Remove a plugin instance
*
* @param string $key
* You can remove a plugin by passing the plugin key, or the plugin instance
*
* @param string|Solarium_Plugin_Abstract $plugin
* @return Solarium_Client Provides fluent interface
*/
public function removePlugin($key)
public function removePlugin($plugin)
{
if (isset($this->_plugins[$key])) {
if (is_object($plugin)) {
foreach ($this->_plugins as $key => $instance)
{
if ($instance === $plugin) {
unset($this->_plugins[$key]);
break;
}
}
} else {
if (isset($this->_plugins[$plugin])) {
unset($this->_plugins[$plugin]);
}
}
return $this;
}
......
......@@ -581,15 +581,21 @@ class Solarium_Query_Select extends Solarium_Query
}
/**
* Remove a single filterquery by key
* Remove a single filterquery
*
* @param string $key
* You can remove a filterquery by passing it's key, or by passing the filterquery instance
*
* @param string|Solarium_Query_Select_FilterQuery $filterQuery
* @return Solarium_Query_Select Provides fluent interface
*/
public function removeFilterQuery($key)
public function removeFilterQuery($filterQuery)
{
if (isset($this->_filterQueries[$key])) {
unset($this->_filterQueries[$key]);
if (is_object($filterQuery)) {
$filterQuery = $filterQuery->getKey();
}
if (isset($this->_filterQueries[$filterQuery])) {
unset($this->_filterQueries[$filterQuery]);
}
return $this;
......@@ -708,13 +714,25 @@ class Solarium_Query_Select extends Solarium_Query
/**
* Remove a component instance
*
* @param string $key
* You can remove a component by passing it's key or the component instance
*
* @param string|Solarium_Query_Select_Component $component
* @return Solarium_Query_Select Provides fluent interface
*/
public function removeComponent($key)
public function removeComponent($component)
{
if (isset($this->_components[$key])) {
if (is_object($component)) {
foreach ($this->_components as $key => $instance)
{
if ($instance === $component) {
unset($this->_components[$key]);
break;
}
}
} else {
if (isset($this->_components[$component])) {
unset($this->_components[$component]);
}
}
return $this;
}
......
......@@ -191,15 +191,21 @@ class Solarium_Query_Select_Component_Facet_MultiQuery extends Solarium_Query_Se
}
/**
* Remove a single facetquery by key
* Remove a single facetquery
*
* @param string $key
* You can remove a facetquery by passing it's key or the facetquery instance
*
* @param string|Solarium_Query_Select_Component_Facet_Query $query
* @return Solarium_Query_Select_Component_Facet_MultiQuery Provides fluent interface
*/
public function removeQuery($key)
public function removeQuery($query)
{
if (isset($this->_facetQueries[$key])) {
unset($this->_facetQueries[$key]);
if (is_object($query)) {
$query = $query->getKey();
}
if (isset($this->_facetQueries[$query])) {
unset($this->_facetQueries[$query]);
}
return $this;
......
......@@ -322,15 +322,21 @@ class Solarium_Query_Select_Component_FacetSet extends Solarium_Query_Select_Com
}
/**
* Remove a single facet by key
* Remove a single facet
*
* @param string $key
* You can remove a facet by passing it's key or the facet instance
*
* @param string|Solarium_Query_Select_Component_Facet $facet
* @return Solarium_Query Provides fluent interface
*/
public function removeFacet($key)
public function removeFacet($facet)
{
if (isset($this->_facets[$key])) {
unset($this->_facets[$key]);
if (is_object($facet)) {
$facet = $facet->getKey();
}
if (isset($this->_facets[$facet])) {
unset($this->_facets[$facet]);
}
return $this;
......
......@@ -197,16 +197,29 @@ class Solarium_Query_Update extends Solarium_Query
}
/**
* Remove a command by key
* Remove a command
*
* @param string $key
* You can remove a command by passing it's key or by passing the command instance
*
* @param string|Solarium_Query_Update_Command $command
* @return Solarium_Query_Update Provides fluent interface
*/
public function remove($key)
public function remove($command)
{
if (isset($this->_commands[$key])) {
if (is_object($command)) {
foreach ($this->_commands as $key => $instance)
{
if ($instance === $command) {
unset($this->_commands[$key]);
break;
}
}
} else {
if (isset($this->_commands[$command])) {
unset($this->_commands[$command]);
}
}
return $this;
}
......
......@@ -231,6 +231,28 @@ class Solarium_ClientTest extends PHPUnit_Framework_TestCase
);
}
public function testRemovePluginAndGetPluginsWithObjectInput()
{
$options = array('option1' => 1);
$this->_client->registerPlugin('testplugin','MyClientPlugin',$options);
$plugin = $this->_client->getPlugin('testplugin');
$plugins = $this->_client->getPlugins();
$this->assertEquals(
array('testplugin' => $plugin),
$plugins
);
$this->_client->removePlugin($plugin);
$plugins = $this->_client->getPlugins();
$this->assertEquals(
array(),
$plugins
);
}
public function testCreateRequest()
{
$queryStub = $this->getMock('Solarium_Query_Select');
......
......@@ -260,6 +260,25 @@ class Solarium_Query_Select_Component_Facet_MultiQueryTest extends PHPUnit_Frame
);
}
public function testRemoveQueryWithObjectInput()
{
$facetQuery = new Solarium_Query_Select_Component_Facet_Query;
$facetQuery->setKey('k1');
$facetQuery->setQuery('category:1');
$this->_facet->addQuery($facetQuery);
$this->assertEquals(
array('k1' => $facetQuery),
$this->_facet->getQueries()
);
$this->_facet->removeQuery($facetQuery);
$this->assertEquals(
array(),
$this->_facet->getQueries()
);
}
public function testRemoveInvalidQuery()
{
$facetQuery = new Solarium_Query_Select_Component_Facet_Query;
......
......@@ -192,6 +192,24 @@ class Solarium_Query_Select_Component_FacetSetTest extends PHPUnit_Framework_Tes
);
}
public function testRemoveFacetWithObjectInput()
{
$fq1 = new Solarium_Query_Select_Component_Facet_Query;
$fq1->setKey('f1')->setQuery('category:1');
$fq2 = new Solarium_Query_Select_Component_Facet_Query;
$fq2->setKey('f2')->setQuery('category:2');
$facets = array('f1' => $fq1, 'f2' => $fq2);
$this->_facetSet->addFacets($facets);
$this->_facetSet->removeFacet($fq1);
$this->assertEquals(
array('f2' => $fq2),
$this->_facetSet->getFacets()
);
}
public function testRemoveInvalidFacet()
{
$fq1 = new Solarium_Query_Select_Component_Facet_Query;
......
......@@ -287,6 +287,24 @@ class Solarium_Query_SelectTest extends PHPUnit_Framework_TestCase
);
}
public function testRemoveFilterQueryWithObjectInput()
{
$fq1 = new Solarium_Query_Select_FilterQuery;
$fq1->setKey('fq1')->setQuery('category:1');
$fq2 = new Solarium_Query_Select_FilterQuery;
$fq2->setKey('fq2')->setQuery('category:2');
$filterQueries = array($fq1, $fq2);
$this->_query->addFilterQueries($filterQueries);
$this->_query->removeFilterQuery($fq1);
$this->assertEquals(
array('fq2' => $fq2),
$this->_query->getFilterQueries()
);
}
public function testRemoveInvalidFilterQuery()
{
$fq1 = new Solarium_Query_Select_FilterQuery;
......@@ -455,6 +473,24 @@ class Solarium_Query_SelectTest extends PHPUnit_Framework_TestCase
);
}
public function testRemoveComponentWithObjectInput()
{
$mlt = new Solarium_Query_Select_Component_MoreLikeThis;
$this->_query->setComponent('mlt',$mlt);
$this->assertEquals(
array('mlt' => $mlt),
$this->_query->getComponents()
);
$this->_query->removeComponent($mlt);
$this->assertEquals(
array(),
$this->_query->getComponents()
);
}
public function testGetMoreLikeThis()
{
$mlt = $this->_query->getMoreLikeThis();
......
......@@ -185,6 +185,22 @@ class Solarium_Query_UpdateTest extends PHPUnit_Framework_TestCase
);
}
public function testRemoveWithObjectInput()
{
$rollback = new Solarium_Query_Update_Command_Rollback;
$this->_query->add('rb', $rollback);
$commit = new Solarium_Query_Update_Command_Commit;
$this->_query->add('cm', $commit);
$this->_query->remove($rollback);
$this->assertEquals(
array('cm' => $commit),
$this->_query->getCommands()
);
}
public function testRemoveInvalidKey()
{
$rollback = new Solarium_Query_Update_Command_Rollback;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment