Author: jwage
Date: 2008-09-09 19:39:07 +0100 (Tue, 09 Sep 2008)
New Revision: 4903

Added:
   branches/1.0/tests/Ticket/1436TestCase.php
Modified:
   branches/1.0/tests/run.php
Log:
Adding coverage for #1436


Added: branches/1.0/tests/Ticket/1436TestCase.php
===================================================================
--- branches/1.0/tests/Ticket/1436TestCase.php                          (rev 0)
+++ branches/1.0/tests/Ticket/1436TestCase.php  2008-09-09 18:39:07 UTC (rev 
4903)
@@ -0,0 +1,141 @@
+<?php
+/*
+ *  $Id$
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This software consists of voluntary contributions made by many individuals
+ * and is licensed under the LGPL. For more information, see
+ * <http://www.phpdoctrine.org>.
+ */
+
+/**
+ * Doctrine_Ticket_1436_TestCase
+ *
+ * @package     Doctrine
+ * @author      Konsta Vesterinen <[EMAIL PROTECTED]>
+ * @license     http://www.opensource.org/licenses/lgpl-license.php LGPL
+ * @category    Object Relational Mapping
+ * @link        www.phpdoctrine.org
+ * @since       1.0
+ * @version     $Revision$
+ */
+class Doctrine_Ticket_1436_TestCase extends Doctrine_UnitTestCase
+{
+    public function prepareTables()
+    {
+        parent::prepareTables();
+    }
+    
+    public function prepareData()
+    {
+        $user = new User();
+        $user->name = 'John';
+        $user->save();
+        
+        # Create existing groups
+        $group = new Group();
+        $group->name = 'Group One';
+        $group->save();
+        $this->group_one = $group['id'];
+        
+        $group = new Group();
+        $group->name = 'Group Two';
+        $group->save();
+        $this->group_two = $group['id'];
+        
+        $group = new Group();
+        $group->name = 'Group Three';
+        $group->save();
+        $this->group_three = $group['id'];
+    }
+    
+    public function testSynchronizeAddMNLinks()
+    {
+        $user = Doctrine_Query::create()->from('User u, u.Group 
g')->fetchOne();
+        $userArray = array(
+            'Group' => array(
+                '_identifiers' => array(
+                    $this->group_one,
+                    $this->group_two,
+                    $this->group_three
+                    )
+            ));
+
+        $user->synchronizeWithArray($userArray);
+        $this->assertEqual($user->Group->count(), 3);
+        $user->save();
+        $user->free();
+
+        $user = Doctrine_Query::create()->from('User u, u.Group 
g')->fetchOne();
+        $this->assertEqual($user->Group->count(), 3);
+        $this->assertEqual($user->Group[0]->name, 'Group One');
+        $this->assertEqual($user->Group[1]->name, 'Group Two');
+        $this->assertEqual($user->Group[2]->name, 'Group Three');
+    }
+
+    public function testSynchronizeRemoveMNLinks()
+    {
+        $user = Doctrine_Query::create()->from('User u, u.Group 
g')->fetchOne();
+        $userArray = array(
+            'Group' => array(
+                '_identifiers' => array(
+                    $this->group_three
+                    )
+            ));
+
+        $user->synchronizeWithArray($userArray);
+        $this->assertEqual($user->Group->count(), 1);
+        $user->save();
+        $user->free();
+
+        $user = Doctrine_Query::create()->from('User u, u.Group 
g')->fetchOne();
+        $this->assertEqual($user->Group->count(), 1);
+        $this->assertEqual($user->Group[0]->name, 'Group Three');
+    }
+
+    public function testSynchronizeRemoveAllLinks()
+    {
+        $user = Doctrine_Query::create()->from('User u, u.Group 
g')->fetchOne();
+        $userArray = array(
+            'Group' => array(
+                '_identifiers' => array()
+            ));
+
+        $user->synchronizeWithArray($userArray);
+        $this->assertEqual($user->Group->count(), 0);
+        $user->save();
+        $user->free();
+
+        $user = Doctrine_Query::create()->from('User u, u.Group 
g')->fetchOne();
+        $this->assertEqual($user->Group->count(), 0);
+    }
+
+    public function testSynchronizeDoesNotPersistUntilSave()
+    {
+        $user = Doctrine_Query::create()->from('User u, u.Group 
g')->fetchOne();
+        $userArray = array(
+            'Group' => array(
+                '_identifiers' => array(
+                    $this->group_three
+                    )
+            ));
+
+        $user->synchronizeWithArray($userArray);
+        $this->assertEqual($user->Group->count(), 1);
+        $user->free();
+
+        $user = Doctrine_Query::create()->from('User u, u.Group 
g')->fetchOne();
+        $this->assertEqual($user->Group->count(), 0);
+    }
+}
\ No newline at end of file

Modified: branches/1.0/tests/run.php
===================================================================
--- branches/1.0/tests/run.php  2008-09-09 18:18:42 UTC (rev 4902)
+++ branches/1.0/tests/run.php  2008-09-09 18:39:07 UTC (rev 4903)
@@ -133,6 +133,7 @@
 $tickets->addTestCase(new Doctrine_Ticket_1390_TestCase());
 $tickets->addTestCase(new Doctrine_Ticket_1400_TestCase());
 $tickets->addTestCase(new Doctrine_Ticket_1419_TestCase());
+$tickets->addTestCase(new Doctrine_Ticket_1436_TestCase());
 $test->addTestCase($tickets);
 
 // Connection Tests (not yet fully tested)


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"doctrine-svn" group.
 To post to this group, send email to [email protected]
 To unsubscribe from this group, send email to [EMAIL PROTECTED]
 For more options, visit this group at 
http://groups.google.co.uk/group/doctrine-svn?hl=en-GB
-~----------~----~----~----~------~----~------~--~---

Reply via email to