diff --git a/tests/RelationTestCase.php b/tests/RelationTestCase.php index 7de17e59b..c8837d694 100644 --- a/tests/RelationTestCase.php +++ b/tests/RelationTestCase.php @@ -37,6 +37,73 @@ class Doctrine_Relation_TestCase extends Doctrine_UnitTestCase { public function prepareTables() { $this->tables = array('RelationTest', 'RelationTestChild', 'Group', 'Groupuser', 'User', 'Email', 'Account', 'Phonenumber'); + + parent::prepareTables(); + } + + public function testInitData() + { + $user = new User(); + + $user->name = 'zYne'; + $user->Group[0]->name = 'Some Group'; + $user->Group[1]->name = 'Other Group'; + $user->Group[2]->name = 'Third Group'; + + $user->Phonenumber[0]->phonenumber = '123 123'; + $user->Phonenumber[1]->phonenumber = '234 234'; + $user->Phonenumber[2]->phonenumber = '456 456'; + + $user->Email->address = 'someone@some.where'; + + $user->save(); + } + + public function testUnlinkSupportsManyToManyRelations() + { + $users = Doctrine_Query::create()->from('User u')->where('u.name = ?', array('zYne'))->execute(); + + $user = $users[0]; + + $this->assertEqual($user->Group->count(), 3); + + $user->unlink('Group', array(2, 3, 4)); + + $this->assertEqual($user->Group->count(), 0); + + $this->conn->clear(); + + $groups = Doctrine_Query::create()->from('Group g')->execute(); + + $this->assertEqual($groups->count(), 3); + + $links = Doctrine_Query::create()->from('GroupUser gu')->execute(); + + $this->assertEqual($links->count(), 0); + } + + public function testUnlinkSupportsOneToManyRelations() + { + $this->conn->clear(); + + $users = Doctrine_Query::create()->from('User u')->where('u.name = ?', array('zYne'))->execute(); + + $user = $users[0]; + + $this->assertEqual($user->Phonenumber->count(), 3); + + $user->unlink('Phonenumber', array(1, 2, 3)); + + $this->assertEqual($user->Phonenumber->count(), 0); + + $this->conn->clear(); + + $phonenumber = Doctrine_Query::create()->from('Phonenumber p')->execute(); + + $this->assertEqual($phonenumber->count(), 3); + $this->assertEqual($phonenumber[0]->entity_id, null); + $this->assertEqual($phonenumber[1]->entity_id, null); + $this->assertEqual($phonenumber[2]->entity_id, null); } public function testOneToManyTreeRelationWithConcreteInheritance() {