[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