Skip to content

Commit

Permalink
DDC-767 - Add testcase that shows described behavior works and not pr…
Browse files Browse the repository at this point in the history
…oduces notices.
  • Loading branch information
beberlei committed Sep 15, 2010
1 parent 97e572e commit 810a129
Show file tree
Hide file tree
Showing 2 changed files with 75 additions and 1 deletion.
74 changes: 74 additions & 0 deletions tests/Doctrine/Tests/ORM/Functional/Ticket/DDC767Test.php
@@ -0,0 +1,74 @@
<?php

namespace Doctrine\Tests\ORM\Functional\Ticket;

use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Tests\Models\CMS\CmsUser;
use Doctrine\Tests\Models\CMS\CmsGroup;

require_once __DIR__ . '/../../../TestInit.php';

class DDC767Test extends \Doctrine\Tests\OrmFunctionalTestCase
{
protected function setUp()
{
$this->useModelSet('cms');
parent::setUp();
}

/**
* @group DDC-767
*/
public function testCollectionChangesInsideTransaction()
{
$user = new CmsUser();
$user->name = "beberlei";
$user->status = "active";
$user->username = "beberlei";

$group1 = new CmsGroup();
$group1->name = "foo";

$group2 = new CmsGroup();
$group2->name = "bar";

$group3 = new CmsGroup();
$group3->name = "baz";

$user->addGroup($group1);
$user->addGroup($group2);

$this->_em->persist($user);
$this->_em->persist($group1);
$this->_em->persist($group2);
$this->_em->persist($group3);

$this->_em->flush();
$this->_em->clear();

/* @var $pUser CmsUser */
$pUser = $this->_em->find(get_class($user), $user->id);

$this->assertNotNull($pUser, "User not retrieved from database.");

$groups = array(2, 3);

try {
$this->_em->beginTransaction();

$pUser->groups->clear();

$this->_em->flush();

// Add new
foreach ($groups as $groupId) {
$pUser->addGroup($this->_em->find(get_class($group1), $groupId));
}

$this->_em->flush();
$this->_em->commit();
} catch(\Exception $e) {
$this->_em->rollback();
}
}
}
2 changes: 1 addition & 1 deletion tests/Doctrine/Tests/OrmFunctionalTestCase.php
Expand Up @@ -264,7 +264,7 @@ protected function onNotSuccessfulTest(\Exception $e)

if(isset($this->_sqlLoggerStack->queries) && count($this->_sqlLoggerStack->queries)) {
$queries = "";
for($i = count($this->_sqlLoggerStack->queries)-1; $i > max(count($this->_sqlLoggerStack->queries)-25, 0); $i--) {
for($i = count($this->_sqlLoggerStack->queries)-1; $i > max(count($this->_sqlLoggerStack->queries)-25, 0) && isset($this->_sqlLoggerStack->queries[$i]); $i--) {
$query = $this->_sqlLoggerStack->queries[$i];
$params = array_map(function($p) { if (is_object($p)) return get_class($p); else return "'".$p."'"; }, $query['params'] ?: array());
$queries .= ($i+1).". SQL: '".$query['sql']."' Params: ".implode(", ", $params).PHP_EOL;
Expand Down

0 comments on commit 810a129

Please sign in to comment.