public function testApiSolver_CallsHandlersOneAfterAnother()
{
$ex = new Exception('Exception');
$params = ['params1' => 'value1'];
$queue = '';
$solver1 = $this->getMock(SolverInterface::class, [], [], '', false);
$solver1->expects($this->once())->method('solve')->with($ex, $params)->will($this->returnCallback(function () use(&$queue) {
$queue .= 'A';
return Promise::doResolve()->then(function () use(&$queue) {
$queue .= 'C';
});
}));
$solver2 = $this->getMock(SolverInterface::class, [], [], '', false);
$solver2->expects($this->once())->method('solve')->with($ex, $params)->will($this->returnCallback(function () use(&$queue) {
$queue .= 'B';
return 'done';
}));
$solver = $this->createSolver([$solver1, $solver2]);
$callable = $this->createCallableMock();
$callable->expects($this->once())->method('__invoke')->with('done');
$result = $this->callProtectedMethod($solver, 'solver', [$ex, $params]);
$result->then($callable);
$this->assertSame('ACB', $queue);
}