Просмотр исходного кода

Support MongoClient in MongoDBHandler

Jeremy Mikola 13 лет назад
Родитель
Сommit
6d3bca8543

+ 5 - 1
src/Monolog/Handler/MongoDBHandler.php

@@ -29,8 +29,12 @@ class MongoDBHandler extends AbstractProcessingHandler
 {
     private $mongoCollection;
 
-    public function __construct(\Mongo $mongo, $database, $collection, $level = Logger::DEBUG, $bubble = true)
+    public function __construct($mongo, $database, $collection, $level = Logger::DEBUG, $bubble = true)
     {
+        if (!($mongo instanceof \MongoClient || $mongo instanceof \Mongo)) {
+            throw new \InvalidArgumentException('MongoClient or Mongo instance required');
+        }
+
         $this->mongoCollection = $mongo->selectCollection($database, $collection);
 
         parent::__construct($level, $bubble);

+ 8 - 0
tests/Monolog/Handler/MongoDBHandlerTest.php

@@ -16,6 +16,14 @@ use Monolog\Logger;
 
 class MongoDBHandlerTest extends TestCase
 {
+    /**
+     * @expectedException InvalidArgumentException
+     */
+    public function testConstructorShouldThrowExceptionForInvalidMongo()
+    {
+        new MongoDBHandler(new \stdClass(), 'DB', 'Collection');
+    }
+
     public function testHandle()
     {
         $mongo = $this->getMock('Mongo', array('selectCollection'));