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

svn at limb-project.com svn at limb-project.com
Thu May 10 18:46:38 MSD 2007


Author: pachanga
Date: 2007-05-10 18:46:38 +0400 (Thu, 10 May 2007)
New Revision: 5858
URL: http://fisheye.limb-project.com/changelog/limb/?cs=5858

Modified:
   3.x/trunk/limb/active_record/src/lmbActiveRecord.class.php
   3.x/trunk/limb/active_record/tests/cases/lmbActiveRecordTest.class.php
Log:
-- lmbActiveRecord :: deleteRaw($class_name, $criteria=null) - it deletes records directly in database
-- lmbActiveRecord :: update(..) => updateRaw()

Modified: 3.x/trunk/limb/active_record/src/lmbActiveRecord.class.php
===================================================================
--- 3.x/trunk/limb/active_record/src/lmbActiveRecord.class.php	2007-05-10 13:23:42 UTC (rev 5857)
+++ 3.x/trunk/limb/active_record/src/lmbActiveRecord.class.php	2007-05-10 14:46:38 UTC (rev 5858)
@@ -1362,10 +1362,17 @@
       $object->destroy();
   }
 
-  static function update($class_name, $set, $criteria = null)
+  function deleteRaw($class_name, $criteria = null)
   {
     $object = new $class_name();
     $db_table = $object->getDbTable();
+    $db_table->delete($criteria);
+  }
+
+  static function updateRaw($class_name, $set, $criteria = null)
+  {
+    $object = new $class_name();
+    $db_table = $object->getDbTable();
     $db_table->update($set, $criteria);
   }
 

Modified: 3.x/trunk/limb/active_record/tests/cases/lmbActiveRecordTest.class.php
===================================================================
--- 3.x/trunk/limb/active_record/tests/cases/lmbActiveRecordTest.class.php	2007-05-10 13:23:42 UTC (rev 5857)
+++ 3.x/trunk/limb/active_record/tests/cases/lmbActiveRecordTest.class.php	2007-05-10 14:46:38 UTC (rev 5858)
@@ -19,6 +19,17 @@
   protected $dummy;
 }
 
+class TestOneTableObjectWithCustomDestroy extends lmbActiveRecord
+{
+  protected $_db_table_name = 'test_one_table_object';
+
+  function destroy()
+  {
+    parent :: destroy();
+    echo "destroyed!";
+  }
+}
+
 class TestOneTableObjectWithHooks extends TestOneTableObject
 {
   protected function _onBeforeUpdate()
@@ -574,6 +585,20 @@
     $this->assertEqual($this->db->count('test_one_table_object'), 0);
   }
 
+  function testDeleteCallsDestroy()
+  {
+    $object1 = $this->_initActiveRecordWithDataAndSave(new TestOneTableObjectWithCustomDestroy());
+    $object2 = $this->_initActiveRecordWithDataAndSave(new TestOneTableObjectWithCustomDestroy());
+
+    ob_start();
+    lmbActiveRecord :: delete('TestOneTableObjectWithCustomDestroy');
+    $contents = ob_get_contents();
+    ob_end_clean();
+
+    $this->assertEqual($contents, 'destroyed!destroyed!');
+    $this->assertEqual($this->db->count('test_one_table_object'), 0);
+  }
+
   function testDeleteByCriteria()
   {
     $object1 = $this->_initActiveRecordWithDataAndSave(new TestOneTableObject());
@@ -588,13 +613,51 @@
     $this->assertEqual($object3->getContent(), $object1->getContent());
   }
 
-  function testUpdateAllWithArraySet()
+  function testDeleteRaw()
   {
     $object1 = $this->_initActiveRecordWithDataAndSave(new TestOneTableObject());
     $object2 = $this->_initActiveRecordWithDataAndSave(new TestOneTableObject());
 
-    lmbActiveRecord :: update($this->class_name, array('content' => 'blah'));
+    lmbActiveRecord :: deleteRaw($this->class_name);
 
+    $this->assertEqual($this->db->count('test_one_table_object'), 0);
+  }
+
+  function testDeleteRawDoesntCallDestroy()
+  {
+    $object1 = $this->_initActiveRecordWithDataAndSave(new TestOneTableObjectWithCustomDestroy());
+    $object2 = $this->_initActiveRecordWithDataAndSave(new TestOneTableObjectWithCustomDestroy());
+
+    ob_start();
+    lmbActiveRecord :: deleteRaw('TestOneTableObjectWithCustomDestroy');
+    $contents = ob_get_contents();
+    ob_end_clean();
+
+    $this->assertEqual($contents, '');
+    $this->assertEqual($this->db->count('test_one_table_object'), 0);
+  }
+
+  function testDeleteRawByCriteria()
+  {
+    $object1 = $this->_initActiveRecordWithDataAndSave(new TestOneTableObject());
+    $object2 = $this->_initActiveRecordWithDataAndSave(new TestOneTableObject());
+
+    $criteria = new lmbSQLFieldCriteria('id', $object2->getId());
+    lmbActiveRecord :: deleteRaw($this->class_name, $criteria);
+
+    $this->assertEqual($this->db->count('test_one_table_object'), 1);
+
+    $object3 = lmbActiveRecord :: findById($this->class_name, $object1->getId());
+    $this->assertEqual($object3->getContent(), $object1->getContent());
+  }
+
+  function testUpdateRawAllWithArraySet()
+  {
+    $object1 = $this->_initActiveRecordWithDataAndSave(new TestOneTableObject());
+    $object2 = $this->_initActiveRecordWithDataAndSave(new TestOneTableObject());
+
+    lmbActiveRecord :: updateRaw($this->class_name, array('content' => 'blah'));
+
     $rs = lmbActiveRecord :: find($this->class_name);
     $rs->rewind();
     $this->assertEqual($rs->current()->getContent(), 'blah');
@@ -604,12 +667,12 @@
     $this->assertFalse($rs->valid());
   }
 
-  function testUpdateAllWithRawValues()
+  function testUpdateRawAllWithRawValues()
   {
     $object1 = $this->_initActiveRecordWithDataAndSave(new TestOneTableObject());
     $object2 = $this->_initActiveRecordWithDataAndSave(new TestOneTableObject());
 
-    lmbActiveRecord :: update($this->class_name, 'ordr=1');
+    lmbActiveRecord :: updateRaw($this->class_name, 'ordr=1');
 
     $rs = lmbActiveRecord :: find($this->class_name);
     $rs->rewind();
@@ -620,12 +683,12 @@
     $this->assertFalse($rs->valid());
   }
 
-  function testUpdateWithCriteria()
+  function testUpdateRawWithCriteria()
   {
     $object1 = $this->_initActiveRecordWithDataAndSave(new TestOneTableObject());
     $object2 = $this->_initActiveRecordWithDataAndSave(new TestOneTableObject());
 
-    lmbActiveRecord :: update($this->class_name, array('content' => 'blah'), 'id=' . $object2->getId());
+    lmbActiveRecord :: updateRaw($this->class_name, array('content' => 'blah'), 'id=' . $object2->getId());
 
     $rs = lmbActiveRecord :: find($this->class_name);
     $rs->rewind();



More information about the limb-svn mailing list