From 634d2d98343f4a471fc1c405aab615da1755893f Mon Sep 17 00:00:00 2001 From: zYne Date: Mon, 21 May 2007 17:55:33 +0000 Subject: [PATCH] --- tests/Collection/SnapshotTestCase.php | 102 ++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 tests/Collection/SnapshotTestCase.php diff --git a/tests/Collection/SnapshotTestCase.php b/tests/Collection/SnapshotTestCase.php new file mode 100644 index 000000000..5330cc9bc --- /dev/null +++ b/tests/Collection/SnapshotTestCase.php @@ -0,0 +1,102 @@ +. + */ + +/** + * Doctrine_Collection_Snapshot_TestCase + * + * This test case is used for testing the snapshot functionality + * of the Doctrine_Collection + * + * Snapshots are used for counting the diff between original and changed + * state of the collection. + * + * @package Doctrine + * @author Konsta Vesterinen + * @license http://www.opensource.org/licenses/lgpl-license.php LGPL + * @category Object Relational Mapping + * @link www.phpdoctrine.com + * @since 1.0 + * @version $Revision$ + */ +class Doctrine_Collection_Snapshot_TestCase extends Doctrine_UnitTestCase +{ + public function testDiffForSimpleCollection() + { + $coll = Doctrine_Query::create()->from('User u')->orderby('u.id')->execute(); + $this->assertEqual($coll->count(), 8); + + unset($coll[0]); + unset($coll[1]); + + $coll[]->name = 'new user'; + + $this->assertEqual($coll->count(), 7); + + $coll->save(); + + $this->connection->clear(); + $coll = Doctrine_Query::create()->from('User u')->execute(); + $this->assertEqual($coll->count(), 7); + } + + public function testDiffForOneToManyRelatedCollection() + { + $q = Doctrine_Query::create()->from('User u LEFT JOIN u.Phonenumber p') + ->where('u.id = 8'); + + $coll = $q->execute(); + + $this->assertEqual($coll->count(), 1); + + $this->assertEqual($coll[0]->Phonenumber->count(), 3); + + unset($coll[0]->Phonenumber[0]); + $coll[0]->Phonenumber->remove(2); + + $coll[0]->save(); + + $this->assertEqual($coll[0]->Phonenumber->count(), 1); + + $this->connection->clear(); + + $q = Doctrine_Query::create()->from('User u LEFT JOIN u.Phonenumber p')->where('u.id = 8'); + + $coll = $q->execute(); + + $this->assertEqual($coll[0]->Phonenumber->count(), 1); + } + public function testDiffForManyToManyRelatedCollection() + { + $user = new User(); + $user->name = 'zYne'; + $user->Group[0]->name = 'PHP'; + $user->Group[1]->name = 'Web'; + $user->save(); + + $this->connection->clear(); + + $users = Doctrine_Query::create()->from('User u LEFT JOIN u.Group g') + ->where('u.id = ' . $user->id)->execute(); + + $this->assertEqual($users[0]->Group[0]->name, 'PHP'); + $this->assertEqual($users[0]->Group[1]->name, 'Web'); + } +}