[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