protected function setUpListener()
 {
     $that = $this;
     $overrider = new OMClassOverrider(PropelExtendingTest::$map);
     EventDispatcherProxy::setDispatcherGetter(function () use($that, $overrider) {
         $c = $that->getContainer();
         $d = new ContainerAwareEventDispatcher($c);
         $d->addListener('om.detect', array($overrider, 'onDetectionRequest'));
         return $d;
     });
     return $overrider;
 }
 public function boot()
 {
     // set callback in proxy dispatcher,
     // so it can later get real dispatcher from container
     EventDispatcherProxy::setDispatcherGetter(array($this->container, 'get'), array('glorpen.propel.event.dispatcher'));
 }
 public function testPreEventWithSoftDeleteBehavior()
 {
     $that = $this;
     $order = array();
     EventDispatcherProxy::setDispatcherGetter(function () use($that, &$order) {
         $c = $that->getContainer();
         $d = new ContainerAwareEventDispatcher($c);
         $d->addListener('model.delete.pre', function ($e) use($that, &$order) {
             $order[] = 'model.delete.pre';
         });
         $d->addListener('delete.pre', function ($e) use($that, &$order) {
             $order[] = 'delete.pre';
         });
         $d->addListener('query.delete.pre', function ($e) use($that, &$order) {
             $order[] = 'query.delete.pre';
         });
         return $d;
     });
     $m = new SoftdeleteTable();
     $m->save();
     $m->delete();
     $that->assertContains('model.delete.pre', $order, 'Delete model event');
     $that->assertContains('delete.pre', $order, 'Model global delete event');
     $order = array();
     BaseSoftdeleteTableQuery::create()->filterById(1)->delete();
     $that->assertContains('delete.pre', $order, 'Query global delete event');
     $that->assertContains('query.delete.pre', $order, 'Query delete event');
 }