DDC-767 - Add testcase that shows described behavior works and not produces notices.
This commit is contained in:
parent
97e572e2d8
commit
810a129a32
74
tests/Doctrine/Tests/ORM/Functional/Ticket/DDC767Test.php
Normal file
74
tests/Doctrine/Tests/ORM/Functional/Ticket/DDC767Test.php
Normal file
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
@ -264,7 +264,7 @@ abstract class OrmFunctionalTestCase extends OrmTestCase
|
||||
|
||||
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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user