* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Monolog\Handler; use Monolog\TestCase; use Monolog\Logger; use Monolog\Handler\RavenHandler; class RavenHandlerTest extends TestCase { public function setUp() { if (!class_exists("Raven_Client")) { $this->markTestSkipped("raven/raven not installed"); } require_once __DIR__ . '/MockRavenClient.php'; } /** * @covers Monolog\Handler\RavenHandler::__construct */ public function testConstruct() { $handler = new RavenHandler($this->getRavenClient()); $this->assertInstanceOf('Monolog\Handler\RavenHandler', $handler); } protected function getHandler($ravenClient) { $handler = new RavenHandler($ravenClient); return $handler; } protected function getRavenClient() { $dsn = 'http://43f6017361224d098402974103bfc53d:a6a0538fc2934ba2bed32e08741b2cd3@marca.python.live.cheggnet.com:9000/1'; return new MockRavenClient($dsn); } public function testDebug() { $ravenClient = $this->getRavenClient(); $handler = $this->getHandler($ravenClient); $record = $this->getRecord(Logger::DEBUG, "A test debug message"); $handler->handle($record); $this->assertEquals($ravenClient::DEBUG, $ravenClient->lastData['level']); $this->assertContains($record['message'], $ravenClient->lastData['message']); } public function testWarning() { $ravenClient = $this->getRavenClient(); $handler = $this->getHandler($ravenClient); $record = $this->getRecord(Logger::WARNING, "A test warning message"); $handler->handle($record); $this->assertEquals($ravenClient::WARNING, $ravenClient->lastData['level']); $this->assertContains($record['message'], $ravenClient->lastData['message']); } public function testException() { $ravenClient = $this->getRavenClient(); $handler = $this->getHandler($ravenClient); try { $this->methodThatThrowsAnException(); } catch (\Exception $e) { $record = $this->getRecord(Logger::ERROR, $e->getMessage(), array('exception' => $e)); $handler->handle($record); } $this->assertEquals($record['message'], $ravenClient->lastData['message']); } private function methodThatThrowsAnException() { throw new \Exception('This is an exception'); } }