diff --git a/tests/Monolog/Handler/AmqpExchangeMock.php b/tests/Monolog/Handler/AmqpExchangeMock.php index 2ed311ea..3415c82c 100644 --- a/tests/Monolog/Handler/AmqpExchangeMock.php +++ b/tests/Monolog/Handler/AmqpExchangeMock.php @@ -11,19 +11,28 @@ namespace Monolog\Handler; -class MockAMQPExchange extends \AMQPExchange +class AmqpExchangeMock extends \AMQPExchange { + protected $messages = array(); + public function __construct() { } public function publish($message, $routing_key, $params = 0, $attributes = array()) { + $this->messages[] = array($message, $routing_key, $params, $attributes); + return true; } + public function getMessages() + { + return $this->messages; + } + public function setName($name) { return true; } -} \ No newline at end of file +} diff --git a/tests/Monolog/Handler/AmqpHandlerTest.php b/tests/Monolog/Handler/AmqpHandlerTest.php index 201da5cc..73690916 100644 --- a/tests/Monolog/Handler/AmqpHandlerTest.php +++ b/tests/Monolog/Handler/AmqpHandlerTest.php @@ -13,7 +13,6 @@ namespace Monolog\Handler; use Monolog\TestCase; use Monolog\Logger; -use Monolog\Handler\MockAMQPExchange; /** * @covers Monolog\Handler\RotatingFileHandler @@ -27,7 +26,7 @@ class AmqpHandlerTest extends TestCase } if (!class_exists('AMQPChannel')) { - $this->markTestSkipped("Please update AMQP to version >= 1"); + $this->markTestSkipped("Please update AMQP to version >= 1.0"); } } @@ -39,23 +38,37 @@ class AmqpHandlerTest extends TestCase $record = $this->getRecord(Logger::WARNING, 'test', array('data' => new \stdClass, 'foo' => 34)); + $expected = array( + array( + 'message' => 'test', + 'context' => array( + 'data' => array(), + 'foo' => 34, + ), + 'level' => 300, + 'level_name' => 'WARNING', + 'channel' => 'test', + 'extra' => array(), + ), + 'warn.test', + 0, + array( + 'delivery_mode' => 2, + 'Content-type' => 'application/json' + ) + ); + $handler->handle($record); + + $messages = $exchange->getMessages(); + $this->assertCount(1, $messages); + $messages[0][0] = json_decode($messages[0][0], true); + unset($messages[0][0]['datetime']); + $this->assertEquals($expected, $messages[0]); } protected function getExchange() { - /* sorry, but PHP bug in zend_object_store_get_object segfaults - php where using mocks on AMQP classes. should be fixed someday, - but now it's time for some shitcode (see below) - $exchange = $this->getMockBuilder('\AMQPExchange') - ->setConstructorArgs(array($this->getMock('\AMQPChannel'))) - ->setMethods(array('setName')) - ->getMock(); - - $exchange->expects($this->any()) - ->method('setName') - ->will($this->returnValue(true)); - */ - return new MockAMQPExchange(); + return new AmqpExchangeMock(); } -} \ No newline at end of file +} diff --git a/tests/bootstrap.php b/tests/bootstrap.php index b5a19634..189f4a68 100644 --- a/tests/bootstrap.php +++ b/tests/bootstrap.php @@ -9,5 +9,5 @@ * file that was distributed with this source code. */ -require_once __DIR__ . "/../vendor/autoload.php"; -require_once __DIR__.'/Monolog/TestCase.php'; +$loader = require_once __DIR__ . "/../vendor/autoload.php"; +$loader->add('Monolog\\', __DIR__);