[limb-svn] r6908 - in 3.x/trunk/limb/active_record: src tests/cases

svn at limb-project.com svn at limb-project.com
Thu Apr 10 11:33:05 MSD 2008


Author: serega
Date: 2008-04-10 11:33:05 +0400 (Thu, 10 Apr 2008)
New Revision: 6908
URL: http://fisheye.limb-project.com/changelog/limb/?cs=6908

Modified:
   3.x/trunk/limb/active_record/src/lmbARRecordSetAttachDecorator.class.php
   3.x/trunk/limb/active_record/src/lmbARRelationCollection.class.php
   3.x/trunk/limb/active_record/tests/cases/lmbAROneToManyRelationsTest.class.php
   3.x/trunk/limb/active_record/tests/cases/lmbARQueryTest.class.php
Log:
-- fixed a bug in lmbARRecordSetAttachDecorator that does not set a proper owner to created relation collections
-- lmbAROneToManyRelationsTest :: setOwner($owner) method added

Modified: 3.x/trunk/limb/active_record/src/lmbARRecordSetAttachDecorator.class.php
===================================================================
--- 3.x/trunk/limb/active_record/src/lmbARRecordSetAttachDecorator.class.php	2008-04-09 19:55:13 UTC (rev 6907)
+++ 3.x/trunk/limb/active_record/src/lmbARRecordSetAttachDecorator.class.php	2008-04-10 07:33:05 UTC (rev 6908)
@@ -151,6 +151,7 @@
         case lmbActiveRecord :: HAS_MANY:
         case lmbActiveRecord :: HAS_MANY_TO_MANY:
           $collection = $this->base_object->createRelationCollection($relation_name);
+          $collection->setOwner($object);
           if(isset($this->loaded_attaches[$relation_name][$object->get($this->prefix . $this->base_object->getPrimaryKeyName())]))
             $collection->setDataset(new lmbCollection($this->loaded_attaches[$relation_name][$object->get($this->prefix . $this->base_object->getPrimaryKeyName())]));
           $fields->set($this->prefix . $relation_name, $collection);

Modified: 3.x/trunk/limb/active_record/src/lmbARRelationCollection.class.php
===================================================================
--- 3.x/trunk/limb/active_record/src/lmbARRelationCollection.class.php	2008-04-09 19:55:13 UTC (rev 6907)
+++ 3.x/trunk/limb/active_record/src/lmbARRelationCollection.class.php	2008-04-10 07:33:05 UTC (rev 6908)
@@ -44,6 +44,12 @@
 
     $this->reset();
   }
+  
+  function setOwner($new_owner)
+  {
+    $this->owner = $new_owner;
+    $this->reset();
+  }
 
   function setCriteria($criteria)
   {

Modified: 3.x/trunk/limb/active_record/tests/cases/lmbAROneToManyRelationsTest.class.php
===================================================================
--- 3.x/trunk/limb/active_record/tests/cases/lmbAROneToManyRelationsTest.class.php	2008-04-09 19:55:13 UTC (rev 6907)
+++ 3.x/trunk/limb/active_record/tests/cases/lmbAROneToManyRelationsTest.class.php	2008-04-10 07:33:05 UTC (rev 6908)
@@ -416,6 +416,26 @@
     $this->assertIsA($arr[2]->getAltCourse(), 'CourseForTest');
     $this->assertEqual($arr[2]->getAltCourse()->getTitle(), $alt_course1->getTitle());
   }
+  
+  function testFetchFirstWithRelationObjectsUsingAttach_AndThenSave()
+  {
+    $course1 = $this->creator->createCourse();
+    $course2 = $this->creator->createCourse();
+    
+    $lecture1 = $this->creator->createLecture($course1);
+    $lecture2 = $this->creator->createLecture($course2);
+    $lecture3 = $this->creator->createLecture($course2);
+    
+    $course2_loaded = lmbActiveRecord :: findFirst('CourseForTest', array('criteria' => 'course_for_test.id = '. $course2->getId(), 'attach' => 'lectures'));
+    
+    $course2_loaded->setTitle('Some other title');
+    
+    $course2_loaded->save();
+    
+    $course2_loaded2 = lmbActiveRecord :: findFirst('CourseForTest', array('criteria' => 'course_for_test.id = '. $course2->getId(), 'attach' => 'lectures'));
+    $lectures = $course2_loaded2->getLectures();
+    $this->assertEqual(count($lectures), 2);
+  }
 
   function _initCourse()
   {

Modified: 3.x/trunk/limb/active_record/tests/cases/lmbARQueryTest.class.php
===================================================================
--- 3.x/trunk/limb/active_record/tests/cases/lmbARQueryTest.class.php	2008-04-09 19:55:13 UTC (rev 6907)
+++ 3.x/trunk/limb/active_record/tests/cases/lmbARQueryTest.class.php	2008-04-10 07:33:05 UTC (rev 6908)
@@ -701,7 +701,7 @@
     $this->assertEqual($arr[0]->getCourses()->count(), 0);
     $this->assertEqual($arr[1]->getCourses()->count(), 0);
 
-    $this->assertEqual($this->conn->countQueries(), 0);
+    $this->assertEqual($this->conn->countQueries(), 2); // always do fetchi operations for not new owners of collections
   }  
 
   function testFetch_JoinWithWrongRelationType()



More information about the limb-svn mailing list