[ Index ]

PHP Cross Reference of Limb3

title

Body

[close]

/active_record/tests/cases/ -> lmbAREventHandlersTest.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  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  ?>


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