From 9545e5dd34e245e11d6503b9da6aa80d9720e2e1 Mon Sep 17 00:00:00 2001 From: Enrico Stahn Date: Fri, 13 Aug 2010 14:10:28 +0200 Subject: [PATCH 1/3] TestCase for issue #DC-825 --- tests/DC825TestCase.php | 88 +++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 88 insertions(+), 0 deletions(-) create mode 100644 tests/DC825TestCase.php diff --git a/tests/DC825TestCase.php b/tests/DC825TestCase.php new file mode 100644 index 0000000..3cb04c7 --- /dev/null +++ b/tests/DC825TestCase.php @@ -0,0 +1,88 @@ +. + */ + +/** + * Doctrine_Ticket_DC825_TestCase + * + * @package Doctrine + * @author Enrico Stahn + * @license http://www.opensource.org/licenses/lgpl-license.php LGPL + * @category Object Relational Mapping + * @link www.doctrine-project.org + * @since 1.0 + * @version $Revision$ + */ +class Doctrine_Ticket_DC825_TestCase extends Doctrine_UnitTestCase +{ + public function prepareTables() + { + $this->tables[] = 'Ticket_DC825_Model'; + parent::prepareTables(); + } + + public function testTest() + { + Doctrine_Manager::getInstance()->setAttribute(Doctrine_Core::ATTR_USE_DQL_CALLBACKS, true); + + $user = new Ticket_DC825_Model(); + $user->username = 'jwage'; + $user->password = 'changeme'; + $user->save(); + $user->delete(); + + $version = $user->getAuditLog()->getVersion($user, 2, Doctrine_Core::HYDRATE_RECORD); + $versionTable = $version[0]->getTable(); + $versionTableColumns = $versionTable->getColumnNames(); + $recordTableColumns = $user->getTable()->getColumnNames(); + + $this->assertFalse(in_array('id', $versionTableColumns)); + $this->assertTrue(in_array('model_id', $versionTableColumns)); + $this->assertTrue(count($versionTableColumns) == count($recordTableColumns)); + $this->assertTrue(count(array_diff($versionTableColumns, $recordTableColumns)) == 0); + + Doctrine_Manager::getInstance()->setAttribute(Doctrine_Core::ATTR_USE_DQL_CALLBACKS, false); + } +} + +class Ticket_DC825_Model extends Doctrine_Record +{ + public function setTableDefinition() + { + $this->hasColumn('model_id as id', 'integer', null, array( + 'type' => 'integer', + 'unsigned' => false, + 'primary' => true, + 'autoincrement' => true, + )); + $this->hasColumn('username', 'string', 255); + $this->hasColumn('password', 'string', 255); + } + + public function setUp() + { + $this->actAs('Timestampable'); + $this->actAs('SoftDelete'); + $this->actAs('Versionable', array( + 'auditLog' => true, + 'generateRelations' => false, + 'deleteVersions' => false)); + } +} -- 1.7.2.1