[limb-svn] r6431 - in 3.x/trunk/limb/active_record: src tests/cases
svn at limb-project.com
svn at limb-project.com
Wed Oct 17 10:45:49 MSD 2007
Author: korchasa
Date: 2007-10-17 10:45:49 +0400 (Wed, 17 Oct 2007)
New Revision: 6431
URL: http://fisheye.limb-project.com/changelog/limb/?cs=6431
Modified:
3.x/trunk/limb/active_record/src/lmbActiveRecord.class.php
3.x/trunk/limb/active_record/tests/cases/lmbARValueObjectTest.class.php
Log:
is_required
Modified: 3.x/trunk/limb/active_record/src/lmbActiveRecord.class.php
===================================================================
--- 3.x/trunk/limb/active_record/src/lmbActiveRecord.class.php 2007-10-16 13:09:37 UTC (rev 6430)
+++ 3.x/trunk/limb/active_record/src/lmbActiveRecord.class.php 2007-10-17 06:45:49 UTC (rev 6431)
@@ -845,7 +845,10 @@
return;
$value = $this->_getRaw($property);
-
+
+ if((!$value) && !$this->_isRequiedValueObject($property))
+ return $value;
+
if(!is_object($value))
{
$object = $this->_loadValueObject($property, $value);
@@ -855,6 +858,15 @@
return $value;
}
+ protected function _isRequiedValueObject($property)
+ {
+ if(isset($this->_composed_of[$property]['not_required']) && $this->_composed_of[$property]['not_required'])
+ return false;
+ else
+ return true;
+ }
+
+
protected function _doSave($need_validation)
{
if($this->_is_being_saved)
Modified: 3.x/trunk/limb/active_record/tests/cases/lmbARValueObjectTest.class.php
===================================================================
--- 3.x/trunk/limb/active_record/tests/cases/lmbARValueObjectTest.class.php 2007-10-16 13:09:37 UTC (rev 6430)
+++ 3.x/trunk/limb/active_record/tests/cases/lmbARValueObjectTest.class.php 2007-10-17 06:45:49 UTC (rev 6431)
@@ -31,7 +31,11 @@
'getter' => 'getValue'),
'date_end' => array('field' => 'date_end',
'class' => 'TestingValueObject',
- 'getter' => 'getValue'));
+ 'getter' => 'getValue'),
+ 'not_required_date' => array('field' => 'date_end',
+ 'class' => 'TestingValueObject',
+ 'getter' => 'getValue',
+ 'not_required' => true));
}
class LazyLessonForTest extends lmbActiveRecord
@@ -66,7 +70,7 @@
function testNewObjectReturnsNullValueObjects()
{
- $lesson = new LessonForTest();
+ $lesson = new LessonForTest();
$this->assertNull($lesson->getDateStart());
$this->assertNull($lesson->getDateEnd());
}
@@ -121,7 +125,31 @@
$this->assertEqual($lesson2->getDateStart()->getValue(), $v1);
$this->assertEqual($lesson2->getDateEnd()->getValue(), $v2);
- }
+ }
+
+ function testAllowNullValuesForValuesObjects()
+ {
+ $lesson = new LessonForTest();
+ $lesson->not_required_date = null;
+ $this->assertNull($lesson->getNotRequiredDate());
+ }
+
+ function testEmptyValueForValuesObjects()
+ {
+ $lesson = new LessonForTest();
+ $lesson->not_required_date = '';
+ $this->assertIdentical($lesson->getNotRequiredDate(), '');
+
+ $lesson->not_required_date = 0;
+ $this->assertIdentical($lesson->getNotRequiredDate(), 0);
+ }
+
+ function testProperWrapForScalrValueWhithNotRequiredFlagForValueObject()
+ {
+ $lesson = new LessonForTest();
+ $lesson->not_required_date = 'test';
+ $this->assertIsA($lesson->getNotRequiredDate(), 'TestingValueObject');
+ }
}
More information about the limb-svn
mailing list