public function testDeleteStopPropagation()
 {
     //Test stop propagation (pre-stage)
     $preEventCalled = false;
     $postEventCalled = false;
     $listener = $this->model->getEventManager()->attach('delete.pre', function ($e) use(&$preEventCalled) {
         /** @var $e ModelEvent */
         $preEventCalled = true;
         return 1;
     });
     $mockCriteria = $this->getMock('\\Matryoshka\\Model\\Criteria\\DeletableCriteriaInterface', ['applyDelete']);
     $this->assertEquals(1, $this->model->delete($mockCriteria));
     $this->assertTrue($preEventCalled);
     $this->assertFalse($postEventCalled);
     //Test stop propagation (pre-stage)
     $preEventCalled = false;
     $postEventCalled = false;
     $this->model->getEventManager()->clearListeners('delete.pre');
     $listener = $this->model->getEventManager()->attach('delete.post', function ($e) use(&$postEventCalled) {
         /** @var $e ModelEvent */
         $postEventCalled = true;
         return 2;
     });
     $this->assertEquals(2, $this->model->delete($mockCriteria));
     $this->assertFalse($preEventCalled);
     $this->assertTrue($postEventCalled);
 }
 /**
  * @param ServiceLocatorInterface $serviceLocator
  * @param array $listeners
  * @param ObservableModel $model
  * @throws Exception\ServiceNotCreatedException
  */
 protected function injectListeners(ServiceLocatorInterface $serviceLocator, array $listeners, ObservableModel $model)
 {
     $eventManager = $model->getEventManager();
     if ($serviceLocator->has('Matryoshka\\Model\\Listener\\ListenerManager')) {
         $serviceLocator = $serviceLocator->get('Matryoshka\\Model\\Listener\\ListenerManager');
     }
     foreach ($listeners as $listener) {
         $listenerAggregate = $serviceLocator->get($listener);
         if ($listenerAggregate instanceof ListenerAggregateInterface) {
             $eventManager->attach($listenerAggregate);
         } else {
             throw new Exception\ServiceNotCreatedException(sprintf('Invalid service "%s" specified in "listeners" model configuration; must be an instance of "%s"', $listener, ListenerAggregateInterface::class));
         }
     }
 }