public function __construct(Transaction $transaction, Exception $previous = null)
 {
     $this->transaction = $transaction;
     $message = $previous ? $previous->getMessage() : 'Unknown error';
     $status = $previous ? $previous->getCode() : 0;
     if ($error = $transaction->getError()) {
         $message = $error;
     }
     if ($transaction->getResponse() && ($statusCode = $transaction->getResponse()->getStatusCode())) {
         $status = $statusCode;
     }
     parent::__construct($message, $status, $previous);
 }
 public function testGetJson()
 {
     $r = new Transaction(null, "content-type: application/json\n\n{\"foo\":\"bar\"}", 200);
     $this->assertEquals('{"foo":"bar"}', (string) $r->getResponse()->getBody());
     $this->assertEquals('bar', $r->getJson()->foo);
     $asArray = $r->getJson(false);
     $this->assertEquals('bar', $asArray['foo']);
 }