/**
* @dataProvider driverSet
*/
public function testMongo(Mongo $mongo)
{
$collection = 'TestCollection';
$mongo->dropCollection($collection);
// Test create collection
$mongo->createCollection($collection);
$collections = $mongo->listCollections();
/* @var $c CollectionInfo */
$collectionNames = [];
foreach ($collections as $c) {
$collectionNames[] = $c->getName();
}
$this->assertContains('Mongo_' . $collection, $collectionNames);
// Test insert data
$data = ['name' => 'Webiny'];
$result = $mongo->insertOne($collection, $data);
$this->assertEquals(1, $result->getInsertedCount());
$this->assertEquals(1, $mongo->count($collection));
// Get new record ID
$id = $result->getInsertedId();
// Test update
$res = $mongo->update($collection, ['_id' => $id], ['$set' => ['name' => 'Updated Webiny']]);
$this->assertEquals(1, $res->getModifiedCount());
// Test findOne
$data = $mongo->findOne($collection, ['_id' => $id]);
$this->assertEquals('Updated Webiny', $data['name']);
// Test find
$data = $mongo->find($collection, ['name' => 'Updated Webiny']);
$this->assertCount(1, $data);
// Test insertMany
$mongo->insertMany($collection, [['name' => 'Webiny', 'tag' => 1], ['name' => 'Webiny', 'tag' => 2], ['name' => 'Webiny', 'tag' => 3], ['name' => 'Webiny', 'tag' => 4], ['name' => 'Webiny', 'tag' => 5]]);
$this->assertEquals(6, $mongo->count($collection));
// Test find with offset
$results = $mongo->find($collection, ['name' => 'Webiny'], [], 1, 2);
$this->assertEquals(3, $results[0]['tag']);
$results = $mongo->find($collection, ['name' => 'Webiny'], ['tag' => -1], 2, 3);
$this->assertCount(2, $results);
$this->assertEquals(2, $results[0]['tag']);
$this->assertEquals(1, $results[1]['tag']);
// Test remove data
$mongo->delete($collection, ['_id' => $id]);
$this->assertEquals(5, $mongo->count($collection));
// Test drop collection
$mongo->dropCollection($collection);
$collections = $mongo->listCollections();
/* @var $c CollectionInfo */
$collectionNames = [];
foreach ($collections as $c) {
$collectionNames[] = $c->getName();
}
$this->assertFalse(in_array($collection, $collectionNames));
// Test isId()
$id = '12345678absdfgrtuierwe12';
$this->assertFalse($mongo->isId($id));
$id = 'aaaabbbbcccc 11122223333';
$this->assertFalse($mongo->isId($id));
$id = '543c1d846803fa76058b458b';
$this->assertTrue($mongo->isId($id));
}