| [ Index ] |
PHP Cross Reference of Limb3 |
[Summary view] [Print] [Text view]
1 <?php 2 /* 3 * Limb PHP Framework 4 * 5 * @link http://limb-project.com 6 * @copyright Copyright © 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 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated: Sat Nov 22 03:48:54 2008 | Cross-referenced by PHPXref 0.7 |