public function testRollbackOnException()
 {
     $eventDispatcher = $this->getMock('Symfony\\Component\\EventDispatcher\\EventDispatcherInterface');
     $eventDispatcher->expects($this->once())->method('dispatch')->will($this->throwException(new \RuntimeException()));
     $entityManager = $this->getEntityManager();
     $entityManager->getConnection()->expects($this->once())->method('rollBack');
     $transaction = new TransactionEvents();
     $transaction->addFirstPass('event', new ForumEvent());
     $this->setExpectedException('RuntimeException');
     $dispatcher = new TransactionDispatcher($entityManager, $eventDispatcher);
     $dispatcher->dispatch($transaction);
 }
Esempio n. 2
0
 public function testDifferentEventInstancesRemainIntact()
 {
     $transaction = new TransactionEvents();
     $beforeEvents = array('on.a.before' => $this->getMock('Courtyard\\Forum\\Event\\ForumEvent'), 'on.b.before' => $this->getMock('Courtyard\\Forum\\Event\\ForumEvent'));
     $afterEvents = array('on.a.after' => $this->getMock('Courtyard\\Forum\\Event\\ForumEvent'), 'on.b.after' => $this->getMock('Courtyard\\Forum\\Event\\ForumEvent'));
     foreach ($beforeEvents as $eventName => $event) {
         $transaction->addFirstPass($eventName, $event);
     }
     foreach ($afterEvents as $eventName => $event) {
         $transaction->addSecondPass($eventName, $event);
     }
     foreach ($transaction->getFirstPass() as $eventName => $event) {
         $this->assertSame($beforeEvents[$eventName], $event);
     }
     foreach ($transaction->getSecondPass() as $eventName => $event) {
         $this->assertSame($afterEvents[$eventName], $event);
     }
 }