| [ 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 require_once(dirname(__FILE__) . '/lmbActiveRecordTest.class.php'); 10 11 class lmbActiveRecordEventHaldlerStubDelegate 12 { 13 var $calls_order = ''; 14 15 function onBeforeSave($active_record) 16 { 17 if($active_record instanceof lmbActiveRecord) 18 $this->calls_order .= '|onBeforeSave ' . get_class($active_record) . '|'; 19 } 20 21 function onAfterSave($active_record) 22 { 23 if($active_record instanceof lmbActiveRecord) 24 $this->calls_order .= '|onAfterSave ' . get_class($active_record) . '|'; 25 } 26 27 function onBeforeUpdate($active_record) 28 { 29 if($active_record instanceof lmbActiveRecord) 30 $this->calls_order .= '|onBeforeUpdate ' . get_class($active_record) . '|'; 31 } 32 33 function onUpdate($active_record) 34 { 35 if($active_record instanceof lmbActiveRecord) 36 $this->calls_order .= '|onUpdate ' . get_class($active_record) . '|'; 37 } 38 39 function onAfterUpdate($active_record) 40 { 41 if($active_record instanceof lmbActiveRecord) 42 $this->calls_order .= '|onAfterUpdate ' . get_class($active_record) . '|'; 43 } 44 45 function onBeforeCreate($active_record) 46 { 47 if($active_record instanceof lmbActiveRecord) 48 $this->calls_order .= '|onBeforeCreate ' . get_class($active_record) . '|'; 49 } 50 51 function onCreate($active_record) 52 { 53 if($active_record instanceof lmbActiveRecord) 54 $this->calls_order .= '|onCreate ' . get_class($active_record) . '|'; 55 } 56 57 function onAfterCreate($active_record) 58 { 59 if($active_record instanceof lmbActiveRecord) 60 $this->calls_order .= '|onAfterCreate ' . get_class($active_record) . '|'; 61 } 62 63 function onBeforeDestroy($active_record) 64 { 65 if($active_record instanceof lmbActiveRecord) 66 $this->calls_order .= '|onBeforeDestroy ' . get_class($active_record) . '|'; 67 } 68 69 function onAfterDestroy($active_record) 70 { 71 if($active_record instanceof lmbActiveRecord) 72 $this->calls_order .= '|onAfterDestroy ' . get_class($active_record) . '|'; 73 } 74 75 function getCallsOrder() 76 { 77 return $this->calls_order; 78 } 79 80 function subscribeForEvents($active_record) 81 { 82 $active_record->registerOnBeforeSaveCallback($this, 'onBeforeSave'); 83 $active_record->registerOnAfterSaveCallback($this, 'onAfterSave'); 84 $active_record->registerOnBeforeUpdateCallback($this, 'onBeforeUpdate'); 85 $active_record->registerOnUpdateCallback($this, 'onUpdate'); 86 $active_record->registerOnAfterUpdateCallback($this, 'onAfterUpdate'); 87 $active_record->registerOnBeforeCreateCallback($this, 'onBeforeCreate'); 88 $active_record->registerOnCreateCallback($this, 'onCreate'); 89 $active_record->registerOnAfterCreateCallback($this, 'onAfterCreate'); 90 $active_record->registerOnBeforeDestroyCallback($this, 'onBeforeDestroy'); 91 $active_record->registerOnAfterDestroyCallback($this, 'onAfterDestroy'); 92 } 93 94 function subscribeGloballyForEvents() 95 { 96 lmbActiveRecord :: registerGlobalOnBeforeSaveCallback($this, 'onBeforeSave'); 97 lmbActiveRecord :: registerGlobalOnAfterSaveCallback($this, 'onAfterSave'); 98 lmbActiveRecord :: registerGlobalOnBeforeUpdateCallback($this, 'onBeforeUpdate'); 99 lmbActiveRecord :: registerGlobalOnUpdateCallback($this, 'onUpdate'); 100 lmbActiveRecord :: registerGlobalOnAfterUpdateCallback($this, 'onAfterUpdate'); 101 lmbActiveRecord :: registerGlobalOnBeforeCreateCallback($this, 'onBeforeCreate'); 102 lmbActiveRecord :: registerGlobalOnCreateCallback($this, 'onCreate'); 103 lmbActiveRecord :: registerGlobalOnAfterCreateCallback($this, 'onAfterCreate'); 104 lmbActiveRecord :: registerGlobalOnBeforeDestroyCallback($this, 'onBeforeDestroy'); 105 lmbActiveRecord :: registerGlobalOnAfterDestroyCallback($this, 'onAfterDestroy'); 106 } 107 } 108 109 class lmbAREventHandlersTest extends UnitTestCase 110 { 111 var $conn = null; 112 var $db = null; 113 114 function setUp() 115 { 116 $toolkit = lmbToolkit :: save(); 117 $this->conn = $toolkit->getDefaultDbConnection(); 118 $this->db = new lmbSimpleDb($this->conn); 119 120 $this->_cleanUp(); 121 } 122 123 function tearDown() 124 { 125 $this->_cleanUp(); 126 127 lmbToolkit :: restore(); 128 } 129 130 function _cleanUp() 131 { 132 $this->db->delete('test_one_table_object'); 133 } 134 135 function testSaveNewRecord() 136 { 137 $object = new TestOneTableObject(); 138 $object->set('annotation', 'Super annotation'); 139 $object->set('content', 'Super content'); 140 $object->set('news_date', '2005-01-10'); 141 142 $delegate = new lmbActiveRecordEventHaldlerStubDelegate(); 143 $delegate->subscribeForEvents($object); 144 145 $object->save(); 146 147 $this->assertEqual($delegate->getCallsOrder(), 148 '|onBeforeSave TestOneTableObject||onBeforeCreate TestOneTableObject||onCreate TestOneTableObject||onAfterCreate TestOneTableObject||onAfterSave TestOneTableObject|'); 149 } 150 151 function testUpdateRecord() 152 { 153 $object = new TestOneTableObject(); 154 $object->set('annotation', 'Super annotation'); 155 $object->set('content', 'Super content'); 156 $object->set('news_date', '2005-01-10'); 157 $object->save(); 158 159 $delegate = new lmbActiveRecordEventHaldlerStubDelegate(); 160 $delegate->subscribeForEvents($object); 161 162 $object->set('content', 'New Super content'); 163 $object->save(); 164 165 $this->assertEqual($delegate->getCallsOrder(), 166 '|onBeforeSave TestOneTableObject||onBeforeUpdate TestOneTableObject||onUpdate TestOneTableObject||onAfterUpdate TestOneTableObject||onAfterSave TestOneTableObject|'); 167 } 168 169 function testDestroyRecord() 170 { 171 $object = new TestOneTableObject(); 172 $object->set('annotation', 'Super annotation'); 173 $object->set('content', 'Super content'); 174 $object->set('news_date', '2005-01-10'); 175 $object->save(); 176 177 $delegate = new lmbActiveRecordEventHaldlerStubDelegate(); 178 $delegate->subscribeForEvents($object); 179 180 $object->destroy(); 181 182 $this->assertEqual($delegate->getCallsOrder(), 183 '|onBeforeDestroy TestOneTableObject||onAfterDestroy TestOneTableObject|'); 184 } 185 186 function testSaveNewRecordForGlobalListener() 187 { 188 $object = new TestOneTableObject(); 189 $object->set('annotation', 'Super annotation'); 190 $object->set('content', 'Super content'); 191 $object->set('news_date', '2005-01-10'); 192 193 $delegate = new lmbActiveRecordEventHaldlerStubDelegate(); 194 $delegate->subscribeGloballyForEvents(); 195 196 $object->save(); 197 198 $this->assertEqual($delegate->getCallsOrder(), 199 '|onBeforeSave TestOneTableObject||onBeforeCreate TestOneTableObject||onCreate TestOneTableObject||onAfterCreate TestOneTableObject||onAfterSave TestOneTableObject|'); 200 } 201 202 function testUpdateRecordForGlobalListener() 203 { 204 $object = new TestOneTableObject(); 205 $object->set('annotation', 'Super annotation'); 206 $object->set('content', 'Super content'); 207 $object->set('news_date', '2005-01-10'); 208 $object->save(); 209 210 $delegate = new lmbActiveRecordEventHaldlerStubDelegate(); 211 $delegate->subscribeGloballyForEvents($object); 212 213 $object->set('content', 'New Super content'); 214 $object->save(); 215 216 $this->assertEqual($delegate->getCallsOrder(), 217 '|onBeforeSave TestOneTableObject||onBeforeUpdate TestOneTableObject||onUpdate TestOneTableObject||onAfterUpdate TestOneTableObject||onAfterSave TestOneTableObject|'); 218 } 219 220 function testDestroyRecordForGlobalListener() 221 { 222 $object = new TestOneTableObject(); 223 $object->set('annotation', 'Super annotation'); 224 $object->set('content', 'Super content'); 225 $object->set('news_date', '2005-01-10'); 226 $object->save(); 227 228 $delegate = new lmbActiveRecordEventHaldlerStubDelegate(); 229 $delegate->subscribeGloballyForEvents($object); 230 231 $object->destroy(); 232 233 $this->assertEqual($delegate->getCallsOrder(), 234 '|onBeforeDestroy TestOneTableObject||onAfterDestroy TestOneTableObject|'); 235 } 236 } 237 ?>
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 |