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 -~----------~----~----~----~------~----~------~--~---
