public function testCollectionsEvents() { if (!class_exists('Mongo')) { $this->markTestSkipped("Mongo class does not exist, test skipped"); return; } Phalcon\DI::reset(); $di = new Phalcon\DI(); $di->set('mongo', function () { $mongo = new MongoClient(); return $mongo->phalcon_test; }); $di->set('collectionManager', function () { return new Phalcon\Mvc\Collection\Manager(); }); $songs = Store\Songs::find(); $this->assertTrue(is_array($songs)); foreach ($songs as $song) { $this->assertTrue($song->delete()); } $trace = array(); $song = new Songs(); $song->artist = 'Radiohead'; $song->name = 'Lotus Flower'; $this->assertTrue($song->save()); $serialized = serialize($song); $song = unserialize($serialized); $this->assertEquals($song->artist, 'Radiohead'); $this->assertEquals($song->name, 'Lotus Flower'); $this->assertTrue($song->save()); $song = Songs::findFirst(); $serialized = serialize($song); $song = unserialize($serialized); $this->assertEquals($song->artist, 'Radiohead'); $this->assertEquals($song->name, 'Lotus Flower'); $this->assertTrue($song->save()); $song = new Songs(); $song->artist = 'Massive Attack'; $song->name = 'Paradise Circus'; $this->assertTrue($song->save()); $songs = Songs::find(); $this->assertEquals(count($songs), 2); $serialized = serialize($songs); $songs = unserialize($serialized); $this->assertEquals(count($songs), 2); }
public function testCollections() { if (!class_exists('Mongo')) { $this->markTestSkipped("Mongo class does not exist, test skipped"); return; } Phalcon\DI::reset(); $di = new Phalcon\DI(); $di->set('mongo', function () { $mongo = new MongoClient(); return $mongo->phalcon_test; }); $di->set('collectionManager', function () { return new Phalcon\Mvc\Collection\Manager(); }); $songs = Songs::find(); $this->assertTrue(is_array($songs)); foreach ($songs as $song) { $this->assertTrue($song->delete()); } $song = new Songs(); $song->artist = 'Radiohead'; $song->name = 'Lotus Flower'; $success = $song->save(); $this->assertTrue($success); $this->assertInstanceOf('MongoId', $song->_id); $firstSongId = $song->_id; $songs = Songs::find(); $this->assertTrue(is_array($songs)); $this->assertEquals(count($songs), 1); $this->assertEquals($songs[0]->name, 'Lotus Flower'); $this->assertEquals($songs[0]->artist, 'Radiohead'); $song = new Songs(); $song->artist = 'Massive Attack'; $song->name = 'Teardrop'; $success = $song->save(); $this->assertTrue($success); $this->assertInstanceOf('MongoId', $song->_id); $this->assertNotEquals((string) $firstSongId->{'$id'}, (string) $song->_id->{'$id'}); $secondSongId = $song->_id; $songs = Songs::find(); $this->assertTrue(is_array($songs)); $this->assertEquals(count($songs), 2); $this->assertEquals($songs[0]->name, 'Lotus Flower'); $this->assertEquals($songs[0]->artist, 'Radiohead'); $this->assertEquals($songs[1]->name, 'Teardrop'); $this->assertEquals($songs[1]->artist, 'Massive Attack'); $song = new Songs(); $song->artist = 'Massive Attack'; $song->name = 'Paradise Circus'; $success = $song->save(); $this->assertTrue($success); $this->assertInstanceOf('MongoId', $song->_id); $this->assertNotEquals((string) $firstSongId->{'$id'}, (string) $song->_id->{'$id'}); $this->assertNotEquals((string) $secondSongId->{'$id'}, (string) $song->_id->{'$id'}); $songs = Songs::find(); $this->assertTrue(is_array($songs)); $this->assertEquals(count($songs), 3); $song = Songs::findFirst(); $this->assertInstanceOf('Songs', $song); $this->assertEquals($song->name, 'Lotus Flower'); $this->assertEquals($song->artist, 'Radiohead'); $song = Songs::findFirst(array(array('artist' => 'Massive Attack'))); $this->assertInstanceOf('Songs', $song); $this->assertEquals($song->artist, 'Massive Attack'); $song = Songs::findFirst(array('conditions' => array('artist' => 'Massive Attack'))); $this->assertInstanceOf('Songs', $song); $this->assertEquals($song->artist, 'Massive Attack'); $song = Songs::findFirst(array('conditions' => array('name' => 'Paradise Circus'))); $this->assertInstanceOf('Songs', $song); $this->assertEquals($song->name, 'Paradise Circus'); //No results $song = Songs::findFirst(array(array('artist' => 'Lana'))); $this->assertFalse($song); $song = Songs::findFirst(array('conditions' => array('artist' => 'Lana'))); $this->assertFalse($song); $song = Songs::findFirst(array(array('artist' => 'Lana'))); $this->assertFalse($song); //Passing parameters to find $songs = Songs::find(array(array('artist' => 'Massive Attack'))); $this->assertTrue(is_array($songs)); $this->assertEquals(count($songs), 2); $this->assertEquals($songs[0]->name, 'Teardrop'); $this->assertEquals($songs[1]->name, 'Paradise Circus'); $songs = Songs::find(array('conditions' => array('artist' => 'Massive Attack'))); $this->assertTrue(is_array($songs)); $this->assertEquals(count($songs), 2); $this->assertEquals($songs[0]->name, 'Teardrop'); $this->assertEquals($songs[1]->name, 'Paradise Circus'); $songs = Songs::find(array('conditions' => array('artist' => 'Massive Attack'), 'sort' => array('name' => 1))); $this->assertTrue(is_array($songs)); $this->assertEquals(count($songs), 2); $this->assertEquals($songs[0]->name, 'Paradise Circus'); $this->assertEquals($songs[1]->name, 'Teardrop'); $songs = Songs::find(array('conditions' => array('artist' => 'Massive Attack'), 'sort' => array('name' => 1), 'limit' => 1)); $this->assertTrue(is_array($songs)); $this->assertEquals(count($songs), 1); $this->assertEquals($songs[0]->name, 'Paradise Circus'); $songs = Songs::find(array('conditions' => array('artist' => 'Massive Attack'), 'limit' => 1)); $this->assertTrue(is_array($songs)); $this->assertEquals(count($songs), 1); $this->assertEquals($songs[0]->name, 'Teardrop'); //Find first $song = Songs::findFirst(array(array('artist' => 'Massive Attack'))); $this->assertInstanceOf('Songs', $song); $this->assertEquals($song->name, 'Teardrop'); $song = Songs::findFirst(array('conditions' => array('artist' => 'Massive Attack'))); $this->assertInstanceOf('Songs', $song); $this->assertEquals($song->name, 'Teardrop'); //Count $this->assertEquals(Songs::count(), 3); $this->assertEquals(Songs::count(array(array('artist' => 'Massive Attack'))), 2); }