[ Index ]

PHP Cross Reference of Limb3

title

Body

[close]

/active_record/tests/cases/ -> lmbARDirtyTest.class.php (source)

   1  <?php
   2  /*

   3   * Limb PHP Framework

   4   *

   5   * @link http://limb-project.com

   6   * @copyright  Copyright &copy; 2004-2007 BIT(http://bit-creative.com)

   7   * @license    LGPL http://www.gnu.org/copyleft/lesser.html

   8   */
   9  lmb_require('limb/active_record/src/lmbActiveRecord.class.php');
  10  lmb_require('limb/dbal/src/lmbSimpleDb.class.php');
  11  lmb_require('limb/dbal/src/lmbTableGateway.class.php');
  12  require_once(dirname(__FILE__) . '/lmbActiveRecordTest.class.php');
  13  require_once(dirname(__FILE__) . '/lmbAROneToManyRelationsTest.class.php');
  14  require_once(dirname(__FILE__) . '/lmbARValueObjectTest.class.php');
  15  require_once(dirname(__FILE__) . '/lmbAROneToOneRelationsTest.class.php');
  16  
  17  class lmbARDirtyTest extends UnitTestCase
  18  {
  19    var $conn = null;
  20    var $db = null;
  21  
  22    function setUp()
  23    {
  24      $toolkit = lmbToolkit :: save();
  25      $this->conn = $toolkit->getDefaultDbConnection();
  26      $this->db = new lmbSimpleDb($this->conn);
  27  
  28      $this->_cleanUp();
  29    }
  30  
  31    function tearDown()
  32    {
  33      $this->_cleanUp();
  34      lmbToolkit :: restore();
  35    }
  36  
  37    function _cleanUp()
  38    {
  39      lmbActiveRecord :: delete('TestOneTableObject');
  40      lmbActiveRecord :: delete('LessonForTest');
  41      lmbActiveRecord :: delete('CourseForTest');
  42      lmbActiveRecord :: delete('LectureForTest');
  43    }
  44  
  45    function testJustFoundObjectIsNotDirty()
  46    {
  47      $object = new TestOneTableObject();
  48      $object->setContent('test');
  49      $object->save();
  50  
  51      $object2 = lmbActiveRecord :: find('TestOneTableObject', $object->getId());
  52      $this->assertFalse($object2->isDirty());
  53    }
  54  
  55    function testJustLoadedByIdObjectIsNotDirty()
  56    {
  57      $object = new TestOneTableObject();
  58      $object->setContent('test');
  59      $object->save();
  60  
  61      $object2 = new TestOneTableObject($object->getId());
  62      $this->assertFalse($object2->isDirty());
  63    }
  64  
  65    function testMarkDirty()
  66    {
  67      $object = new TestOneTableObject();
  68      $this->assertFalse($object->isDirty());
  69      $object->markDirty();
  70      $this->assertTrue($object->isDirty());
  71    }
  72  
  73    function testObjectBecomesDirtyIfAttributeIsSetWithSetter()
  74    {
  75      $object = new TestOneTableObject();
  76      $this->assertFalse($object->isDirty());
  77      $object->setContent('hey');
  78      $this->assertTrue($object->isDirty());
  79    }
  80  
  81    function testDirtyObjectBecomesCleanOnceSaved()
  82    {
  83      $object = new TestOneTableObject();
  84      $object->setContent('whatever');
  85      $this->assertTrue($object->isDirty());
  86      $object->save();
  87      $this->assertFalse($object->isDirty());
  88    }
  89  
  90    function testNonDirtyObjectIsNotUpdated()
  91    {
  92      $object = new TestOneTableObjectWithHooks();
  93      $object->setContent('whatever');
  94  
  95      ob_start();
  96      $object->save();
  97      $str = ob_get_contents();
  98      ob_end_clean();
  99      $this->assertEqual($str, '|on_before_save||on_before_create||on_validate||on_save||on_create||on_after_create||on_after_save|');
 100  
 101      ob_start();
 102      $object->save();
 103      $str = ob_get_contents();
 104      ob_end_clean();
 105      $this->assertEqual($str, '|on_before_save||on_after_save|');
 106    }
 107  
 108    function testSettingNewParentObjectDoesntMakeNewObjectDirty()
 109    {
 110      $course = new CourseForTest();
 111  
 112      $lecture = new LectureForTest();
 113      $lecture->setCourse($course);
 114  
 115      $this->assertTrue($lecture->isNew());
 116      $this->assertFalse($lecture->isDirty());
 117    }
 118  
 119    function testParentIsSavedEvenForCleanObject()
 120    {
 121      $course = new CourseForTest();
 122      $course->setTitle('course');
 123      $course->save();
 124  
 125      $lecture = new LectureForTest();
 126      $lecture->setCourse($course);
 127      $lecture->save();
 128  
 129      $lecture2 = new LectureForTest($lecture->getId());
 130      $this->assertEqual($lecture2->getCourse()->getTitle(), 'course');
 131    }
 132  
 133    function testChangingSavedParentObjectDoesntMakeObjectDirty()
 134    {
 135      $course = new CourseForTest();
 136      $course->setTitle('course');
 137      $course->save();
 138  
 139      $lecture = new LectureForTest();
 140      $lecture->setCourse($course);
 141      $lecture->save();
 142  
 143      $lecture2 = new LectureForTest($lecture->getId());
 144      $this->assertFalse($lecture2->isDirty());
 145  
 146      $course2 = $lecture2->getCourse();
 147  
 148      $course2->setTitle('changed_course');
 149      $this->assertFalse($lecture2->isDirty());
 150    }
 151  
 152    function testSettingExistingParentMakesNewObjectDirty()
 153    {
 154      $course = new CourseForTest();
 155      $course->setTitle('course');
 156      $course->save();
 157  
 158      $lecture = new LectureForTest();
 159      $lecture->setCourse($course);
 160      $this->assertTrue($lecture->isDirty());
 161      $lecture->save();
 162  
 163      $lecture2 = new LectureForTest($lecture->getId());
 164      $this->assertEqual($lecture2->getCourse()->getTitle(), $course->getTitle());
 165    }
 166  
 167    function testSettingExistingParentMakesExistingObjectDirty()
 168    {
 169      $course = new CourseForTest();
 170      $course->setTitle('course');
 171      $course->save();
 172  
 173      $lecture = new LectureForTest();
 174      $lecture->setTitle('test');
 175      $lecture->save();
 176  
 177      $lecture->setCourse($course);
 178      $this->assertTrue($lecture->isDirty());
 179      $lecture->save();
 180  
 181      $lecture2 = new LectureForTest($lecture->getId());
 182      $this->assertEqual($lecture2->getCourse()->getTitle(), $course->getTitle());
 183    }
 184  
 185    function testAddingToCollectionDoesntMakeNewObjectDirty()
 186    {
 187      $course = new CourseForTest();
 188  
 189      $lecture = new LectureForTest();
 190  
 191      $course->addToLectures($lecture);
 192      $this->assertFalse($course->isDirty());
 193    }
 194  
 195    function testAddingToCollectionDoesntMakeExistingObjectDirty()
 196    {
 197      $course = new CourseForTest();
 198      $course->setTitle('course');
 199      $course->save();
 200  
 201      $lecture = new LectureForTest();
 202  
 203      $course->addToLectures($lecture);
 204      $this->assertFalse($course->isDirty());
 205    }
 206  
 207    function testGettingCollectionDoesntMakeObjectDirty()
 208    {
 209      $course = new CourseForTest();
 210      $lectures = $course->getLectures();
 211      $this->assertFalse($course->isDirty());
 212    }
 213  
 214    function testSettingValueObjectMakesObjectDirty()
 215    {
 216      $lesson = new LessonForTest();
 217  
 218      $lesson->setDateStart(new TestingValueObject(time()));
 219      $this->assertTrue($lesson->isDirty());
 220    }
 221  
 222    function testSettingValueObjectMakesExistingObjectDirty()
 223    {
 224      $lesson = new LessonForTest();
 225      $lesson->setDateStart(new TestingValueObject(time()));
 226      $lesson->setDateStart(new TestingValueObject(time() + 30));
 227      $lesson->save();
 228  
 229      $lesson2 = new LessonForTest($lesson->getId());
 230      $this->assertFalse($lesson->isDirty());
 231      $lesson->setDateStart(new TestingValueObject(time() + 10));
 232      $this->assertTrue($lesson->isDirty());
 233    }
 234  
 235    function testUnsettingOneToOneChildObjectMakesPropertyDirty()
 236    {
 237      $person = new PersonForTest();
 238      $person->setName('Jim');
 239      $number = new SocialSecurityForTest();
 240      $number->setCode('099123');
 241  
 242      $person->setSocialSecurity($number);
 243      $person->save();
 244  
 245      $person->setSocialSecurity(null);
 246      $this->assertTrue($person->isDirtyProperty('social_security'));
 247    }
 248  }
 249  ?>


Generated: Sat Nov 22 03:48:54 2008 Cross-referenced by PHPXref 0.7