Commit 5fabd8bb authored by Bart Feenstra's avatar Bart Feenstra Committed by Bas de Nooijer

Allow the event dispatcher to be injected.

parent df971be8
......@@ -59,6 +59,7 @@ use Solarium\Core\Event\PreExecute as PreExecuteEvent;
use Solarium\Core\Event\PostExecute as PostExecuteEvent;
use Solarium\Core\Event\PreExecuteRequest as PreExecuteRequestEvent;
use Solarium\Core\Event\PostExecuteRequest as PostExecuteRequestEvent;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
/**
* Main interface for interaction with Solr
......@@ -219,7 +220,6 @@ class Client extends Configurable
*/
protected function init()
{
$this->eventDispatcher = new EventDispatcher();
foreach ($this->options as $name => $value) {
switch ($name) {
case 'endpoint':
......@@ -562,15 +562,33 @@ class Client extends Configurable
}
/**
* Get the EventDispatcherInstance
* Gets the event dispatcher.
*
* @return EventDispatcher
* @return EventDispatcherInterface
*/
public function getEventDispatcher()
{
if (!$this->eventDispatcher) {
$this->eventDispatcher = new EventDispatcher();
}
return $this->eventDispatcher;
}
/**
* Sets the event dispatcher.
*
* @param EventDispatcherInterface $eventDispatcher
*
* @return $this
*/
public function setEventDispatcher(EventDispatcherInterface $eventDispatcher)
{
$this->eventDispatcher = $eventDispatcher;
return $this;
}
/**
* Register a plugin
*
......
......@@ -57,6 +57,9 @@ use Solarium\Core\Event\PostExecute as PostExecuteEvent;
use Solarium\Core\Event\PreExecuteRequest as PreExecuteRequestEvent;
use Solarium\Core\Event\PostExecuteRequest as PostExecuteRequestEvent;
/**
* @coversDefaultClass \Solarium\Core\Client\Client
*/
class ClientTest extends \PHPUnit_Framework_TestCase
{
/**
......@@ -112,6 +115,17 @@ class ClientTest extends \PHPUnit_Framework_TestCase
}
/**
* @covers ::getEventDispatcher
* @covers ::setEventDispatcher
*/
public function testGetEventDispatcher() {
$this->assertInstanceOf('\Symfony\Component\EventDispatcher\EventDispatcherInterface', $this->client->getEventDispatcher());
$event_dispatcher = $this->getMock('\Symfony\Component\EventDispatcher\EventDispatcherInterface');
$this->client->setEventDispatcher($event_dispatcher);
$this->assertSame($event_dispatcher, $this->client->getEventDispatcher());
}
public function testConfigModeWithoutKeys()
{
$options = array(
......
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