public function testDeferEventsFireOnRollback()
{
$connection = \Mockery::mock('\\Pheasant\\Database\\Mysqli\\Connection');
$connection->shouldReceive('execute')->with('BEGIN')->once();
$connection->shouldReceive('execute')->with('ROLLBACK')->once();
$events = \Mockery::mock();
$events->shouldReceive('cork')->once()->andReturn($events);
$events->shouldReceive('discard')->once()->andReturn($events);
$events->shouldReceive('uncork')->once()->andReturn($events);
$transaction = new Transaction($connection);
$transaction->deferEvents($events);
$transaction->callback(function () {
throw new \Exception("Llamas :( :)");
});
$this->setExpectedException('\\Exception');
$transaction->execute();
}