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

Add missing test cases for collection methods

Andreas Braun 10 лет назад
Родитель
Сommit
1945e262c9
2 измененных файлов с 48 добавлено и 10 удалено
  1. 3 4
      lib/Mongo/MongoCollection.php
  2. 45 6
      tests/Alcaeus/MongoDbAdapter/MongoCollectionTest.php

+ 3 - 4
lib/Mongo/MongoCollection.php

@@ -100,10 +100,9 @@ class MongoCollection
      * @link http://www.php.net/manual/en/mongocollection.aggregate.php
      * @param array $pipeline
      * @param array $op
-     * @param array $pipelineOperators
      * @return array
      */
-    public function aggregate(array $pipeline, array $op = [] /* , array $pipelineOperators, ... */)
+    public function aggregate(array $pipeline, array $op = [])
     {
         if (! TypeConverter::isNumericArray($pipeline)) {
             $pipeline = [];
@@ -362,7 +361,7 @@ class MongoCollection
      * @param array $query An optional query parameters
      * @return array|bool Returns an array of distinct values, or <b>FALSE</b> on failure
      */
-    public function distinct($key, array $query = NULL)
+    public function distinct($key, array $query = [])
     {
         return array_map([TypeConverter::class, 'convertToLegacyType'], $this->collection->distinct($key, $query));
     }
@@ -390,7 +389,7 @@ class MongoCollection
      */
     public function findOne(array $query = array(), array $fields = array())
     {
-        $document = $this->collection->findOne(TypeConverter::convertLegacyArrayToObject($query));
+        $document = $this->collection->findOne(TypeConverter::convertLegacyArrayToObject($query), ['projection' => $fields]);
         if ($document !== null) {
             $document = TypeConverter::convertObjectToLegacyArray($document);
         }

+ 45 - 6
tests/Alcaeus/MongoDbAdapter/MongoCollectionTest.php

@@ -33,22 +33,48 @@ class MongoCollectionTest extends TestCase
 
     public function testFindReturnsCursor()
     {
+        $this->prepareData();
         $collection = $this->getCollection();
 
-        $collection->insert(['sorter' => 1]);
-
         $this->assertInstanceOf('MongoCursor', $collection->find());
     }
 
     public function testCount()
     {
+        $this->prepareData();
+
         $collection = $this->getCollection();
 
-        $collection->insert(['foo' => 'bar']);
-        $collection->insert(['foo' => 'foo']);
+        $this->assertSame(3, $collection->count());
+        $this->assertSame(2, $collection->count(['foo' => 'bar']));
+    }
+
+    public function testFindOne()
+    {
+        $this->prepareData();
 
-        $this->assertSame(2, $collection->count());
-        $this->assertSame(1, $collection->count(['foo' => 'bar']));
+        $document = $this->getCollection()->findOne(['foo' => 'foo'], ['_id' => false]);
+        $this->assertEquals(['foo' => 'foo'], $document);
+    }
+
+    public function testDistinct()
+    {
+        $this->prepareData();
+
+        $values = $this->getCollection()->distinct('foo');
+        $this->assertInternalType('array', $values);
+
+        sort($values);
+        $this->assertEquals(['bar', 'foo'], $values);
+    }
+
+    public function testDistinctWithQuery()
+    {
+        $this->prepareData();
+
+        $values = $this->getCollection()->distinct('foo', ['foo' => 'bar']);
+        $this->assertInternalType('array', $values);
+        $this->assertEquals(['bar'], $values);
     }
 
     public function testAggregate()
@@ -119,4 +145,17 @@ class MongoCollectionTest extends TestCase
 
         return $client->selectCollection('mongo-php-adapter', $name);
     }
+
+    /**
+     * @return \MongoCollection
+     */
+    protected function prepareData()
+    {
+        $collection = $this->getCollection();
+
+        $collection->insert(['foo' => 'bar']);
+        $collection->insert(['foo' => 'bar']);
+        $collection->insert(['foo' => 'foo']);
+        return $collection;
+    }
 }