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

Implement MongoCursorInterface in MongoCursor

Andreas Braun 6 лет назад
Родитель
Сommit
00ee9472c4
2 измененных файлов с 16 добавлено и 1 удалено
  1. 1 1
      lib/Mongo/MongoCursor.php
  2. 15 0
      tests/Alcaeus/MongoDbAdapter/Mongo/MongoCursorTest.php

+ 1 - 1
lib/Mongo/MongoCursor.php

@@ -28,7 +28,7 @@ use MongoDB\Operation\Find;
  * Result object for database query.
  * @link http://www.php.net/manual/en/class.mongocursor.php
  */
-class MongoCursor extends AbstractCursor implements Iterator, Countable
+class MongoCursor extends AbstractCursor implements Iterator, Countable, MongoCursorInterface
 {
     /**
      * @var bool

+ 15 - 0
tests/Alcaeus/MongoDbAdapter/Mongo/MongoCursorTest.php

@@ -4,6 +4,8 @@ namespace Alcaeus\MongoDbAdapter\Tests\Mongo;
 
 use Alcaeus\MongoDbAdapter\Tests\TestCase;
 use Alcaeus\MongoDbAdapter\TypeConverter;
+use Countable;
+use MongoCursorInterface;
 use MongoDB\Driver\ReadPreference;
 use MongoDB\Model\BSONDocument;
 use MongoDB\Operation\Find;
@@ -516,6 +518,19 @@ class MongoCursorTest extends TestCase
         $this->assertArraySubset($expected, $cursor->explain());
     }
 
+    public function testInterfaces()
+    {
+        $collection = $this->getCollection();
+        $cursor = $collection->find();
+
+        $this->assertInstanceOf(MongoCursorInterface::class, $cursor);
+
+        // The countable interface is necessary for compatibility with PHP 7.3+, but not implemented by MongoCursor
+        if (! extension_loaded('mongo')) {
+            $this->assertInstanceOf(Countable::class, $cursor);
+        }
+    }
+
 
     /**
      * @return \PHPUnit_Framework_MockObject_MockObject