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