diff --git a/tests/Monolog/LoggerTest.php b/tests/Monolog/LoggerTest.php index 1f73e1c4..0964b1be 100644 --- a/tests/Monolog/LoggerTest.php +++ b/tests/Monolog/LoggerTest.php @@ -11,8 +11,27 @@ namespace Monolog; +use Monolog\Processor\WebProcessor; +use Monolog\Handler\TestHandler; + class LoggerTest extends \PHPUnit_Framework_TestCase { + /** + * @covers Monolog\Logger::__construct + */ + public function testChannel() + { + $logger = new Logger('foo'); + $handler = new TestHandler; + $logger->pushHandler($handler); + $logger->addWarning('test'); + list($record) = $handler->getRecords(); + $this->assertEquals('foo', $record['channel']); + } + + /** + * @covers Monolog\Logger::addRecord + */ public function testLog() { $logger = new Logger(__METHOD__); @@ -25,7 +44,10 @@ class LoggerTest extends \PHPUnit_Framework_TestCase $this->assertTrue($logger->addWarning('test')); } - public function testLogNoHandler() + /** + * @covers Monolog\Logger::addRecord + */ + public function testLogNotHandled() { $logger = new Logger(__METHOD__); @@ -37,24 +59,108 @@ class LoggerTest extends \PHPUnit_Framework_TestCase $this->assertFalse($logger->addWarning('test')); } - public function logValues() - { - return array(array(true), array(false)); - } - + /** + * @covers Monolog\Logger::pushHandler + * @covers Monolog\Logger::popHandler + * @expectedException LogicException + */ public function testPushPopHandler() { $logger = new Logger(__METHOD__); $handler1 = $this->getMock('Monolog\Handler\NullHandler', array('handle')); $handler2 = $this->getMock('Monolog\Handler\NullHandler', array('handle')); - $handler3 = $this->getMock('Monolog\Handler\NullHandler', array('handle')); $logger->pushHandler($handler1); $logger->pushHandler($handler2); - $logger->pushHandler($handler3); - $this->assertEquals($handler3, $logger->popHandler()); $this->assertEquals($handler2, $logger->popHandler()); $this->assertEquals($handler1, $logger->popHandler()); + $logger->popHandler(); + } + + /** + * @covers Monolog\Logger::pushProcessor + * @covers Monolog\Logger::popProcessor + * @expectedException LogicException + */ + public function testPushPopProcessor() + { + $logger = new Logger(__METHOD__); + $processor1 = new WebProcessor; + $processor2 = new WebProcessor; + + $logger->pushProcessor($processor1); + $logger->pushProcessor($processor2); + + $this->assertEquals($processor2, $logger->popProcessor()); + $this->assertEquals($processor1, $logger->popProcessor()); + $logger->popProcessor(); + } + + /** + * @covers Monolog\Logger::addRecord + */ + public function testProcessorsAreExecuted() + { + $logger = new Logger(__METHOD__); + $handler = new TestHandler; + $logger->pushHandler($handler); + $logger->pushProcessor(function($record) { + $record['extra']['win'] = true; + return $record; + }); + $logger->addError('test'); + list($record) = $handler->getRecords(); + $this->assertTrue($record['extra']['win']); + } + + /** + * @dataProvider logMethodProvider + * @covers Monolog\Logger::addDebug + * @covers Monolog\Logger::addInfo + * @covers Monolog\Logger::addWarning + * @covers Monolog\Logger::addError + * @covers Monolog\Logger::addCritical + * @covers Monolog\Logger::addAlert + * @covers Monolog\Logger::debug + * @covers Monolog\Logger::info + * @covers Monolog\Logger::notice + * @covers Monolog\Logger::warn + * @covers Monolog\Logger::err + * @covers Monolog\Logger::crit + * @covers Monolog\Logger::alert + * @covers Monolog\Logger::emerg + */ + public function testLogMethods($method, $expectedLevel) + { + $logger = new Logger('foo'); + $handler = new TestHandler; + $logger->pushHandler($handler); + $logger->{$method}('test'); + list($record) = $handler->getRecords(); + $this->assertEquals($expectedLevel, $record['level']); + } + + public function logMethodProvider() + { + return array( + // monolog methods + array('addDebug', Logger::DEBUG), + array('addInfo', Logger::INFO), + array('addWarning', Logger::WARNING), + array('addError', Logger::ERROR), + array('addCritical', Logger::CRITICAL), + array('addAlert', Logger::ALERT), + + // ZF/Sf2 compat methods + array('debug', Logger::DEBUG), + array('info', Logger::INFO), + array('notice', Logger::INFO), + array('warn', Logger::WARNING), + array('err', Logger::ERROR), + array('crit', Logger::CRITICAL), + array('alert', Logger::ALERT), + array('emerg', Logger::ALERT), + ); } }