|
|
@ -28,7 +28,45 @@ class MongoDriverTest extends PHPUnit_Framework_TestCase |
|
|
|
'password' => '1234', |
|
|
|
'port' => 27017 |
|
|
|
); |
|
|
|
|
|
|
|
$data = array( |
|
|
|
array( |
|
|
|
'name' => 'bread', |
|
|
|
'price' => 3.2, |
|
|
|
'quantity' => 10 |
|
|
|
), |
|
|
|
array( |
|
|
|
'name' => 'eggs', |
|
|
|
'price' => 2.1, |
|
|
|
'quantity' => 20 |
|
|
|
), |
|
|
|
array( |
|
|
|
'name' => 'fish', |
|
|
|
'price' => 13.2, |
|
|
|
'quantity' => 2 |
|
|
|
), |
|
|
|
array( |
|
|
|
'name' => 'milk', |
|
|
|
'price' => 3.8, |
|
|
|
'quantity' => 1 |
|
|
|
), |
|
|
|
array( |
|
|
|
'name' => 'eggs', |
|
|
|
'price' => 2.3, |
|
|
|
'quantity' => 5 |
|
|
|
) |
|
|
|
); |
|
|
|
$connection = new Mongo('mongodb://' . $this->conf['hostname'] . ':' . $this->conf['port']); |
|
|
|
$db = $connection->selectDB($this->conf['database']); |
|
|
|
$db->authenticate($this->conf['username'], $this->conf['password']); |
|
|
|
$collection = 'items'; |
|
|
|
$db->dropCollection($collection); |
|
|
|
$collection = $db->selectCollection($collection); |
|
|
|
foreach($data as $document) { |
|
|
|
$collection->insert($document); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @expectedException Exception |
|
|
|
* @expectedExceptionMessage Configuration must have a "hostname". |
|
|
@ -48,7 +86,7 @@ class MongoDriverTest extends PHPUnit_Framework_TestCase |
|
|
|
{ |
|
|
|
$this->conf['password'] = 'nopass'; |
|
|
|
$mongo = new MongoDriver($this->conf); |
|
|
|
$this->assertInstanceOf('Mongo', $mongo->getConnection()); |
|
|
|
$this->assertInstanceOf('MongoDB', $mongo->getConnection()); |
|
|
|
} |
|
|
|
|
|
|
|
public function testGetConnection() |
|
|
@ -58,8 +96,71 @@ class MongoDriverTest extends PHPUnit_Framework_TestCase |
|
|
|
$this->assertFalse($mongo->isConnected()); |
|
|
|
$this->assertInstanceOf('Mongo', $mongo->getConnection()); |
|
|
|
$this->assertTrue($mongo->isConnected()); |
|
|
|
$mongo->getConnection(); |
|
|
|
$mongo->disconnect(); |
|
|
|
$this->assertFalse($mongo->isConnected()); |
|
|
|
} |
|
|
|
|
|
|
|
public function testFind() |
|
|
|
{ |
|
|
|
$mongo = new MongoDriver($this->conf); |
|
|
|
$mongo->getConnection(); |
|
|
|
$this->assertEquals(1, $mongo->find('items', array('name' => 'bread'))->count()); |
|
|
|
$this->assertEquals(2, $mongo->find('items', array('name' => 'eggs'))->count()); |
|
|
|
$this->assertEquals(3, $mongo->find('items', array('price' => array('$lt' => 3.5)))->count()); |
|
|
|
$this->assertEquals(5, $mongo->find('items', array())->count()); |
|
|
|
} |
|
|
|
|
|
|
|
public function testGet() |
|
|
|
{ |
|
|
|
$mongo = new MongoDriver($this->conf); |
|
|
|
$mongo->getConnection(); |
|
|
|
$bread = $mongo->get('items', array('name' => 'bread')); |
|
|
|
$this->assertEquals(3.2, $bread['price']); |
|
|
|
} |
|
|
|
|
|
|
|
public function testRemove() |
|
|
|
{ |
|
|
|
$mongo = new MongoDriver($this->conf); |
|
|
|
$mongo->getConnection(); |
|
|
|
$this->assertEquals(1, $mongo->find('items', array('name' => 'bread'))->count()); |
|
|
|
$this->assertEquals(0, $mongo->delete('items', array('name' => 'esggs'))); |
|
|
|
$this->assertEquals(2, $mongo->delete('items', array('name' => 'eggs'))); |
|
|
|
$this->assertEquals(1, $mongo->delete('items', array('name' => 'bread'))); |
|
|
|
$this->assertEquals(0, $mongo->find('items', array('name' => 'bread'))->count()); |
|
|
|
} |
|
|
|
|
|
|
|
public function testInsert() |
|
|
|
{ |
|
|
|
$mongo = new MongoDriver($this->conf); |
|
|
|
$mongo->getConnection(); |
|
|
|
$this->assertEquals(1, $mongo->find('items', array('name' => 'bread'))->count()); |
|
|
|
$this->assertTrue($mongo->insert('items', array('name' => 'bread'))); |
|
|
|
$this->assertNotEmpty($mongo->getInsertId()); |
|
|
|
$this->assertEquals(2, $mongo->find('items', array('name' => 'bread'))->count()); |
|
|
|
} |
|
|
|
|
|
|
|
public function testUpdate() |
|
|
|
{ |
|
|
|
$mongo = new MongoDriver($this->conf); |
|
|
|
$mongo->getConnection(); |
|
|
|
$this->assertEquals(1, $mongo->find('items', array('name' => 'bread'))->count()); |
|
|
|
$mongo->update('items', array('$set' => array('price' => 200, 'date' => 'today')), array('name' => 'fish')); |
|
|
|
$fish = $mongo->get('items', array('name' => 'fish')); |
|
|
|
$this->assertEquals(200, $fish['price']); |
|
|
|
$this->assertEquals('today', $fish['date']); |
|
|
|
$this->assertEquals(0, $mongo->update('items', array('$set' => array('price' => 200, 'date' => 'today')), array('name' => 'ball'))); |
|
|
|
} |
|
|
|
|
|
|
|
public function testUpsert() |
|
|
|
{ |
|
|
|
$mongo = new MongoDriver($this->conf); |
|
|
|
$mongo->getConnection(); |
|
|
|
|
|
|
|
$this->assertTrue($mongo->insert('items', array('name' => 'bread'))); |
|
|
|
$id = $mongo->getInsertId(); |
|
|
|
$this->assertNotEmpty($id); |
|
|
|
$this->assertEquals(1, $mongo->update('items', array('$set' => array('price' => 200, 'date' => 'today')), array('name' => 'ball'), true)); |
|
|
|
$this->assertNotEquals($id, $mongo->getInsertId()); |
|
|
|
} |
|
|
|
} |