Commit 1676d914 by Alexander Mohorev

Add unit tests

parent 61cacdfc
...@@ -187,6 +187,60 @@ class CollectionTest extends MongoDbTestCase ...@@ -187,6 +187,60 @@ class CollectionTest extends MongoDbTestCase
$this->assertNotEmpty($result[0]['items']); $this->assertNotEmpty($result[0]['items']);
} }
public function testFindAndModify()
{
$collection = $this->getConnection()->getCollection('customer');
$rows = [
[
'name' => 'customer 1',
'status' => 1,
'amount' => 100,
],
[
'name' => 'customer 2',
'status' => 1,
'amount' => 200,
],
];
$collection->batchInsert($rows);
// increment field
$result = $collection->findAndModify(['name' => 'customer 1'], ['$inc' => ['status' => 1]]);
$this->assertEquals('customer 1', $result['name']);
$this->assertEquals(1, $result['status']);
$newResult = $collection->findOne(['name' => 'customer 1']);
$this->assertEquals(2, $newResult['status']);
// $set and return modified document
$result = $collection->findAndModify(
['name' => 'customer 2'],
['$set' => ['status' => 2]],
[],
['new' => true]
);
$this->assertEquals('customer 2', $result['name']);
$this->assertEquals(2, $result['status']);
// Full update document
$data = [
'name' => 'customer 3',
'city' => 'Minsk'
];
$result = $collection->findAndModify(
['name' => 'customer 2'],
$data,
[],
['new' => true]
);
$this->assertEquals('customer 3', $result['name']);
$this->assertEquals('Minsk', $result['city']);
$this->assertTrue(!isset($result['status']));
// Test exceptions
$this->setExpectedException('\yii\mongodb\Exception');
$collection->findAndModify(['name' => 'customer 1'], ['$wrongOperator' => ['status' => 1]]);
}
/** /**
* @depends testBatchInsert * @depends testBatchInsert
*/ */
...@@ -240,54 +294,54 @@ class CollectionTest extends MongoDbTestCase ...@@ -240,54 +294,54 @@ class CollectionTest extends MongoDbTestCase
$this->assertEquals($expectedRows, $rows); $this->assertEquals($expectedRows, $rows);
} }
/** /**
* @depends testMapReduce * @depends testMapReduce
*/ */
public function testMapReduceInline() public function testMapReduceInline()
{ {
$collection = $this->getConnection()->getCollection('customer'); $collection = $this->getConnection()->getCollection('customer');
$rows = [ $rows = [
[ [
'name' => 'customer 1', 'name' => 'customer 1',
'status' => 1, 'status' => 1,
'amount' => 100, 'amount' => 100,
], ],
[ [
'name' => 'customer 2', 'name' => 'customer 2',
'status' => 1, 'status' => 1,
'amount' => 200, 'amount' => 200,
], ],
[ [
'name' => 'customer 2', 'name' => 'customer 2',
'status' => 2, 'status' => 2,
'amount' => 400, 'amount' => 400,
], ],
[ [
'name' => 'customer 2', 'name' => 'customer 2',
'status' => 3, 'status' => 3,
'amount' => 500, 'amount' => 500,
], ],
]; ];
$collection->batchInsert($rows); $collection->batchInsert($rows);
$result = $collection->mapReduce( $result = $collection->mapReduce(
'function () {emit(this.status, this.amount)}', 'function () {emit(this.status, this.amount)}',
'function (key, values) {return Array.sum(values)}', 'function (key, values) {return Array.sum(values)}',
['inline' => true], ['inline' => true],
['status' => ['$lt' => 3]] ['status' => ['$lt' => 3]]
); );
$expectedRows = [ $expectedRows = [
[ [
'_id' => 1, '_id' => 1,
'value' => 300, 'value' => 300,
], ],
[ [
'_id' => 2, '_id' => 2,
'value' => 400, 'value' => 400,
], ],
]; ];
$this->assertEquals($expectedRows, $result); $this->assertEquals($expectedRows, $result);
} }
public function testCreateIndex() public function testCreateIndex()
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment