Merge branch 'mongo'

This commit is contained in:
Anton Grebnev
2012-01-19 19:21:54 +04:00
6 changed files with 127 additions and 18 deletions

View File

@ -132,6 +132,45 @@ class MongoDbCommandTest extends PHPUnit_Framework_TestCase
/**
* @group Mongo
*/
public function testInsertCommandMultipleObjects()
{
$cmd = MongoCommandBuilder::factory(MongoCommandBuilder::INSERT, $this->collection);
$data = array(
array('name' => 'first object'),
array('name' => 'second object'),
array('name' => 'equal object'),
array('name' => 'equal object')
);
$cmd
->bindParam('data', $data)
->bindParam('multiple', true)
->bindParam('safe', true);
$this->assertFalse($cmd->getInsertId());
$this->assertArrayHasKey('n', $cmd->execute());
$cmd->bindParam('data', array());
$cmd->execute();
$cmd = MongoCommandBuilder::factory(MongoCommandBuilder::FIND, $this->collection);
$cmd->bindParam('condition', array('name' => 'first object'))->bindParam('fields', array());
$result = $cmd->execute();
$this->assertEquals(1, $result->count());
$cmd->bindParam('condition', array('name' => 'second object'))->bindParam('fields', array());
$result = $cmd->execute();
$this->assertEquals(1, $result->count());
$cmd->bindParam('condition', array('name' => 'equal object'))->bindParam('fields', array());
$result = $cmd->execute();
$this->assertEquals(2, $result->count());
}
/**
* @group Mongo
*/
public function testInsertCommandNotAllParamsBinded()
{
$cmd = MongoCommandBuilder::factory(MongoCommandBuilder::INSERT, $this->collection);
@ -277,6 +316,15 @@ class MongoDbCommandTest extends PHPUnit_Framework_TestCase
->bindParam('data', array('name' => 'insert'))
->bindParam('safe', true);
$this->assertStringStartsWith('Collection: ', $cmd->__toString());
$this->assertContains('Bulk insert: FALSE', $cmd->__toString());
$cmd = MongoCommandBuilder::factory(MongoCommandBuilder::INSERT, $this->collection);
$this->assertSame('Command properties not set', $cmd->__toString());
$cmd
->bindParam('data', array('name' => 'insert'))
->bindParam('multiple', true)
->bindParam('safe', true);
$this->assertContains('Bulk insert: TRUE', $cmd->__toString());
$cmd = MongoCommandBuilder::factory(MongoCommandBuilder::FIND, $this->collection);
$this->assertSame('Command properties not set', $cmd->__toString());

View File

@ -67,8 +67,8 @@ class MongoDriverTest extends PHPUnit_Framework_TestCase
$collection = 'items';
$db->dropCollection($collection);
$collection = $db->selectCollection($collection);
foreach($data as $document) {
$collection->insert($document);
foreach ($data as $document) {
$collection->insert($document);
}
}
@ -117,7 +117,7 @@ class MongoDriverTest extends PHPUnit_Framework_TestCase
if (!defined('DEBUG')) {
define('DEBUG', false);
}
$mongo = new MongoDriver($this->conf);
$this->assertEquals(1, $mongo->find('items', array('name' => 'bread'))->numRows());
$this->assertEquals(2, $mongo->find('items', array('name' => 'eggs'))->numRows());
@ -131,7 +131,7 @@ class MongoDriverTest extends PHPUnit_Framework_TestCase
$this->assertEquals(3, $mongo->find('items', array('price' => array('$lt' => 3.5)))->numRows());
$data = $mongo->find('items', array('price' => array('$lt' => 3.5)));
$count = 0;
while($row = $data->fetch(Db::FETCH_ASSOC)) {
while ($row = $data->fetch(Db::FETCH_ASSOC)) {
$count++;
$this->assertLessThan(3.5, $row['price']);
}
@ -173,7 +173,7 @@ class MongoDriverTest extends PHPUnit_Framework_TestCase
$data->order(array('name' => -1));
$data->skip(3);
$data->limit(1);
while($row = $data->fetch()) {
while ($row = $data->fetch()) {
$this->assertEquals('fdsbssc', $row->name);
}
}
@ -252,12 +252,35 @@ class MongoDriverTest extends PHPUnit_Framework_TestCase
* @runInSeparateProcess
* @group Mongo
*/
public function testBatchInsert()
{
if (!defined('DEBUG')) {
define('DEBUG', false);
}
$data = array(
array('name' => 'first object'),
array('name' => 'second object'),
array('name' => 'equal object'),
array('name' => 'equal object')
);
$mongo = new MongoDriver($this->conf);
$mongo->insert('items', $data, true);
$this->assertEquals(1, $mongo->find('items', array('name' => 'first object'))->numRows());
$this->assertEquals(1, $mongo->find('items', array('name' => 'second object'))->numRows());
$this->assertEquals(2, $mongo->find('items', array('name' => 'equal object'))->numRows());
}
/**
* @runInSeparateProcess
* @group Mongo
*/
public function testGetInsertId()
{
if (!defined('DEBUG')) {
define('DEBUG', false);
}
$mongo = new MongoDriver($this->conf);
$this->assertEquals(0, $mongo->getInsertId());
$this->assertEquals(1, $mongo->find('items', array('name' => 'bread'))->numRows());
@ -337,7 +360,7 @@ class MongoDriverTest extends PHPUnit_Framework_TestCase
define('DEBUG', false);
}
$mongo = new MongoDriver($this->conf);
$result = $mongo->command('items', array('distinct' =>'items', 'key' => 'name'));
$result = $mongo->command('items', array('distinct' => 'items', 'key' => 'name'));
$this->assertEquals(4, count($result->fetch(DB::FETCH_ASSOC)));
}
}

View File

@ -112,6 +112,27 @@ class MongoModelTest extends PHPUnit_Framework_TestCase
* @runInSeparateProcess
* @group Mongo
*/
public function testBatchInsert()
{
if (!defined('DEBUG')) {
define('DEBUG', false);
}
$data = array(
array('name' => 'first object'),
array('name' => 'second object'),
array('name' => 'equal object'),
array('name' => 'equal object')
);
$this->model->batchInsert($data);
$this->assertEquals(1, $this->model->count(array('name' => 'first object')));
$this->assertEquals(2, $this->model->count(array('name' => 'equal object')));
$this->model->batchInsert(array());
}
/**
* @runInSeparateProcess
* @group Mongo
*/
public function testDeleteAll()
{
if (!defined('DEBUG')) {
@ -206,7 +227,7 @@ class MongoModelTest extends PHPUnit_Framework_TestCase
$this->model->insert(array('_id' => 1, 'name' => 'testbread', 'price' => 3.2, 'quantity' => 10));
$this->model->insert(array('_id' => 2, 'name' => 'testbread', 'price' => 12, 'quantity' => 2));
$this->assertSame(2, $this->model->count(array('name' => 'testbread')));
$prop->setValue($this->model, false);
$this->model->delete(1);
$this->assertSame(1, $this->model->count(array('name' => 'testbread')));