* * 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\Formatter\LineFormatter; class RedisHandlerTest extends TestCase { /** * @expectedException InvalidArgumentException */ public function testConstructorShouldThrowExceptionForInvalidRedis() { new RedisHandler(new \stdClass(), 'key'); } public function testConstructorShouldWorkWithPredis() { $redis = $this->getMock('Predis\Client'); $this->assertInstanceof('Monolog\Handler\RedisHandler', new RedisHandler($redis, 'key')); } public function testConstructorShouldWorkWithRedis() { $redis = $this->getMock('Redis'); $this->assertInstanceof('Monolog\Handler\RedisHandler', new RedisHandler($redis, 'key')); } public function testPredisHandle() { $redis = $this->getMock('Predis\Client', array('rpush')); // Predis\Client uses rpush $redis->expects($this->once()) ->method('rpush') ->with('key', 'test'); $record = $this->getRecord(Logger::WARNING, 'test', array('data' => new \stdClass, 'foo' => 34)); $handler = new RedisHandler($redis, 'key'); $handler->setFormatter(new LineFormatter("%message%")); $handler->handle($record); } public function testRedisHandle() { $redis = $this->getMock('Redis', array('rpush')); // Redis uses rPush $redis->expects($this->once()) ->method('rPush') ->with('key', 'test'); $record = $this->getRecord(Logger::WARNING, 'test', array('data' => new \stdClass, 'foo' => 34)); $handler = new RedisHandler($redis, 'key'); $handler->setFormatter(new LineFormatter("%message%")); $handler->handle($record); } public function testRedisHandleCapped() { $redis = $this->getMock('Redis', array('multi', 'rpush', 'ltrim', 'exec')); // Redis uses multi $redis->expects($this->once()) ->method('multi') ->will($this->returnSelf()); $redis->expects($this->once()) ->method('rpush') ->will($this->returnSelf()); $redis->expects($this->once()) ->method('ltrim') ->will($this->returnSelf()); $redis->expects($this->once()) ->method('exec') ->will($this->returnSelf()); $record = $this->getRecord(Logger::WARNING, 'test', array('data' => new \stdClass, 'foo' => 34)); $handler = new RedisHandler($redis, 'key', Logger::DEBUG, true, 10); $handler->setFormatter(new LineFormatter("%message%")); $handler->handle($record); } public function testPredisHandleCapped() { $redis = $this->getMock('Predis\Client', array('transaction')); $redisTransaction = $this->getMock('Predis\Client', array('rpush', 'ltrim')); $redisTransaction->expects($this->once()) ->method('rpush') ->will($this->returnSelf()); $redisTransaction->expects($this->once()) ->method('ltrim') ->will($this->returnSelf()); // Redis uses multi $redis->expects($this->once()) ->method('transaction') ->will($this->returnCallback(function ($cb) use ($redisTransaction) { $cb($redisTransaction); })); $record = $this->getRecord(Logger::WARNING, 'test', array('data' => new \stdClass, 'foo' => 34)); $handler = new RedisHandler($redis, 'key', Logger::DEBUG, true, 10); $handler->setFormatter(new LineFormatter("%message%")); $handler->handle($record); } }