diff --git a/generator/lib/behavior/TimestampableBehavior.php b/generator/lib/behavior/TimestampableBehavior.php index 63f24c0d5..43b3d631c 100644 --- a/generator/lib/behavior/TimestampableBehavior.php +++ b/generator/lib/behavior/TimestampableBehavior.php @@ -20,8 +20,9 @@ class TimestampableBehavior extends Behavior { // default parameters value protected $parameters = array( - 'create_column' => 'created_at', - 'update_column' => 'updated_at' + 'create_column' => 'created_at', + 'update_column' => 'updated_at', + 'disable_updated_at' => 'false', ); /** @@ -199,6 +200,6 @@ public function firstCreatedFirst() protected function withUpdatedAt() { - return !$this->getTable()->hasBehavior('versionable'); + return 'true' !== $this->getParameter('disable_updated_at'); } } diff --git a/test/testsuite/generator/behavior/TimestampableBehaviorTest.php b/test/testsuite/generator/behavior/TimestampableBehaviorTest.php index e373cee00..6cc5a6160 100644 --- a/test/testsuite/generator/behavior/TimestampableBehaviorTest.php +++ b/test/testsuite/generator/behavior/TimestampableBehaviorTest.php @@ -1,7 +1,6 @@ assertEquals('CreatedAt9', $t->getTitle(), 'firstCreatedFirst() returns the element with oldest create date first'); } + public function testDisableUpdatedAt() + { + $schema = << + + + + + + +
+ +EOF; + + $builder = new PropelQuickBuilder(); + $builder->setSchema($schema); + $builder->build(); + + $this->assertTrue(method_exists('TableWithoutUpdatedAt', 'getCreatedAt')); + $this->assertTrue(method_exists('TableWithoutUpdatedAt', 'setCreatedAt')); + $this->assertFalse(method_exists('TableWithoutUpdatedAt', 'getUpdatedAt')); + $this->assertFalse(method_exists('TableWithoutUpdatedAt', 'setUpdatedAt')); + + $obj = new TableWithoutUpdatedAt(); + $this->assertNull($obj->getCreatedAt()); + $this->assertEquals(1, $obj->save()); + $this->assertNotNull($obj->getCreatedAt()); + } } diff --git a/test/testsuite/generator/builder/om/PHP5TableMapBuilderTest.php b/test/testsuite/generator/builder/om/PHP5TableMapBuilderTest.php index 4ea007b71..3ac91ef99 100644 --- a/test/testsuite/generator/builder/om/PHP5TableMapBuilderTest.php +++ b/test/testsuite/generator/builder/om/PHP5TableMapBuilderTest.php @@ -133,7 +133,7 @@ public function testBehaviors() $bookTable = $this->databaseMap->getTableByPhpName('Book'); $this->assertEquals($bookTable->getBehaviors(), array(), 'getBehaviors() returns an empty array when no behaviors are registered'); $tmap = Propel::getDatabaseMap(Table1Peer::DATABASE_NAME)->getTable(Table1Peer::TABLE_NAME); - $expectedBehaviorParams = array('timestampable' => array('create_column' => 'created_on', 'update_column' => 'updated_on')); + $expectedBehaviorParams = array('timestampable' => array('create_column' => 'created_on', 'update_column' => 'updated_on', 'disable_updated_at' => 'false')); $this->assertEquals($tmap->getBehaviors(), $expectedBehaviorParams, 'The map builder creates a getBehaviors() method to retrieve behaviors parameters when behaviors are registered'); } diff --git a/test/testsuite/generator/model/BehaviorTest.php b/test/testsuite/generator/model/BehaviorTest.php index d3867de87..8d527dbaa 100644 --- a/test/testsuite/generator/model/BehaviorTest.php +++ b/test/testsuite/generator/model/BehaviorTest.php @@ -92,7 +92,7 @@ public function testXmlToAppData() $this->assertEquals(1, count($behaviors), 'XmlToAppData ads as many behaviors as there are behaviors tags'); $behavior = $table->getBehavior('timestampable'); $this->assertEquals('table1', $behavior->getTable()->getName(), 'XmlToAppData sets the behavior table correctly'); - $this->assertEquals(array('create_column' => 'created_on', 'update_column' => 'updated_on'), $behavior->getParameters(), 'XmlToAppData sets the behavior parameters correctly'); + $this->assertEquals(array('create_column' => 'created_on', 'update_column' => 'updated_on', 'disable_updated_at' => 'false'), $behavior->getParameters(), 'XmlToAppData sets the behavior parameters correctly'); } /**