public function testApiSolve_HandlesException_UsingFirstValidHandler()
{
$ex = new RejectionException();
$params = ['param' => 'value'];
$result = 'result';
$super = $this->createSupervisor();
$expected = $this->createSolver(['solve']);
$expected->expects($this->once())->method('solve')->with($ex, $params)->will($this->returnValue($result));
$unexpected = $this->createSolver(['solve']);
$unexpected->expects($this->never())->method('solve');
$super->setSolver(WriteException::class, $unexpected);
$super->setSolver(RuntimeException::class, $expected);
$super->setSolver(Exception::class, $unexpected);
$callable = $this->createCallableMock();
$callable->expects($this->once())->method('__invoke')->with($result);
$super->solve($ex, $params)->then($callable);
}