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); }
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); } }