public function test_set_complex_content() { $response = new JsonResponse(null, [new ArrayableItem('foo'), new ArrayableItem('bar')]); $this->assertEquals([['id' => 'foo'], ['id' => 'bar']], $response->getData()->toArray()); $response = new JsonResponse(); $response->setContent([new ArrayableItem('foo'), new ArrayableItem('bar')]); $this->assertEquals([['id' => 'foo'], ['id' => 'bar']], $response->getData()->toArray()); }
function it_handles_error(IHttpApp $httpApp, IError $error) { $error->getMessage()->willReturn('message'); $error->getCode()->willReturn('code'); $error->getFile()->willReturn('file'); $error->getLine()->willReturn('line'); $response = new JsonResponse(HttpStatusCode::INTERNAL_SERVER_ERROR); $response->getData()->set('error.message', 'message'); $response->getData()->set('error.code', 'code'); $response->getData()->set('error.file', 'file'); $response->getData()->set('error.line', 'line'); $httpApp->shutdownWithResponse($response)->shouldBeCalled(); $this->handleError($error); }
/** * @param array $data */ protected function sendJsonResponse(array $data) { $response = new JsonResponse(); $response->setContent(json_encode($data, JSON_PRETTY_PRINT)); $response->send(); }
/** * @param Exception $ex */ public function handleException(Exception $ex) { $trace = $ex->getTrace(); foreach ($trace as &$item) { foreach (array_keys($item) as $key) { if (!array_contains(['file', 'line', 'function', 'class'], $key)) { array_remove($item, $key); } } } $response = new JsonResponse(HttpStatusCode::INTERNAL_SERVER_ERROR); $response->getData()->set('error.message', $ex->getMessage()); $response->getData()->set('error.code', $ex->getCode()); $response->getData()->set('error.file', $ex->getFile()); $response->getData()->set('error.line', $ex->getLine()); $response->getData()->set('error.trace', $trace); $this->httpApp->shutdownWithResponse($response); }
/** * @param IHttpRequest $httpRequest * * @return JsonResponse */ public function send(IHttpRequest $httpRequest) { return JsonResponse::create(parent::send($httpRequest)); }