From 53cd5ed30b50c9c232bd27ff8d40d972fd7e527d Mon Sep 17 00:00:00 2001 From: "joel.alexandre" Date: Mon, 23 Jul 2007 15:46:50 +0000 Subject: [PATCH] Added Unit Test for ticket #337 --- tests/Ticket337TestCase.php | 146 ++++++++++++++++++++++++++++++++++++ tests/run.php | 2 + 2 files changed, 148 insertions(+) create mode 100644 tests/Ticket337TestCase.php diff --git a/tests/Ticket337TestCase.php b/tests/Ticket337TestCase.php new file mode 100644 index 000000000..0457c96a8 --- /dev/null +++ b/tests/Ticket337TestCase.php @@ -0,0 +1,146 @@ +. + */ + +/** + * Doctrine_Template_TestCase + * + * @package Doctrine + * @author Konsta Vesterinen + * @license http://www.opensource.org/licenses/lgpl-license.php LGPL + * @category Object Relational Inheritance + * @link www.phpdoctrine.com + * @since 1.0 + * @version $Revision$ + */ + + +class ReportBase extends Doctrine_Record +{ + public function setTableDefinition() + { + $this->setTableName('Report'); + $this->hasColumn('id', 'integer',20, 'autoincrement|primary'); + $this->hasColumn('description', 'string',50); + $this->hasColumn('type', 'integer', 11); + } +} + +class Report extends ReportBase +{ + public function setTableDefinition() + { + parent::setTableDefinition(); + $this->option('subclasses', array('ReportA','ReportB')); + } +} + +class ReportA extends ReportBase +{ + public function setUp() + { + parent::setUp(); + $this->option('inheritanceMap', array('type' => 1)); + } + + public function setTableDefinition() + { + parent::setTableDefinition(); + $this->hasColumn('columnreporta', 'string',50); + } +} + +class ReportB extends ReportBase +{ + public function setUp() + { + parent::setUp(); + $this->option('inheritanceMap', array('type' => 2)); + } + + public function setTableDefinition() + { + parent::setTableDefinition(); + $this->hasColumn('columnreportb', 'string',50); + } +} + + +class Doctrine_Ticket337_TestCase extends Doctrine_UnitTestCase +{ + + public function testInit() + { + /*create table*/ + $this->dbh->exec("CREATE Table Report (". + "id INTEGER PRIMARY KEY AUTOINCREMENT,". + "type INTEGER,". + "description varchar(50),". + "columnreporta varchar(50),". + "columnreportb varchar(50))"); + + } + public function testTicket337() + { + $reportA = new ReportA(); + $reportA->set('description',"teste Report A"); + $reportA->set('columnreporta',"somevalueA"); + $reportA->save(); + + $reportB = new ReportB(); + $reportB->set('description',"teste Report B"); + $reportB->set('columnreportb',"somevalueB"); + $reportB->save(); + + + $this->assertTrue($reportA->get('columnreporta') == "somevalueA"); + $this->assertTrue($reportB->get('columnreportb') == "somevalueB"); + + $q = new Doctrine_Query(); + $reportAFromDB = $q->from('Report')->where('id=?')->execute(array($reportA->id))->getFirst(); + + $q = new Doctrine_Query(); + $reportBFromDB = $q->from('Report')->where('id=?')->execute(array($reportB->id))->getFirst(); + + + //same tests as Doctrine_ColumnAggregationInheritance_TestCase::testSubclassReturnedIfInheritanceMatches() + $this->assertTrue(($reportAFromDB instanceof ReportA)); + $this->assertTrue(($reportBFromDB instanceof ReportB)); + + + + $this->assertEqual($reportAFromDB->get('description'),'teste Report A'); + $this->assertEqual($reportBFromDB->get('description'),'teste Report B'); + + try{ + $this->assertEqual($reportAFromDB->get('columnreporta'),'somevalueA'); + }catch(Doctrine_Record_Exception $ex) + { + $this->fail($ex->__toString()); + } + + try{ + $this->assertEqual($reportBFromDB->get('columnreportb'),'somevalueB'); + }catch(Doctrine_Record_Exception $ex) + { + $this->fail($ex->__toString()); + } + } +} diff --git a/tests/run.php b/tests/run.php index fb65fe6dc..ea62d369e 100644 --- a/tests/run.php +++ b/tests/run.php @@ -282,6 +282,8 @@ $test->addTestCase(new Doctrine_Query_AggregateValue_TestCase()); $test->addTestCase(new Doctrine_NewCore_TestCase()); +$test->addTestCase(new Doctrine_Ticket337_TestCase()); + // Record $test->addTestCase(new Doctrine_Record_State_TestCase());