public function testUnsuccessfulAsyncRequestWithWait()
{
$promiseMock = Mockery::mock('Http\\Promise\\Promise');
$exceptionMock = Mockery::mock('Http\\Client\\Exception\\HttpException');
$responseBody = ['results' => 'failed'];
$this->clientMock->shouldReceive('sendAsyncRequest')->once()->with(Mockery::type('GuzzleHttp\\Psr7\\Request'))->andReturn($promiseMock);
$promiseMock->shouldReceive('wait')->andThrow($exceptionMock);
$exceptionMock->shouldReceive('getResponse->getStatusCode')->andReturn(500);
$exceptionMock->shouldReceive('getResponse->getBody->__toString')->andReturn(json_encode($responseBody));
$promise = $this->resource->asyncRequest('POST', 'transmissions', $this->postTransmissionPayload);
try {
$response = $promise->wait();
} catch (\Exception $e) {
$this->assertEquals($responseBody, $e->getBody());
$this->assertEquals(500, $e->getCode());
}
}