/** * @param \Dafiti\Silex\Response $controllerResponse * * @return HttpFoundation\Response */ protected function transform(\Dafiti\Silex\Response $controllerResponse) { $response = new HttpFoundation\JsonResponse(); $response->headers->add(['Content-Type' => self::CONTENT_TYPE]); $response->setStatusCode($controllerResponse->getStatusCode()); if ($this->hasError()) { $content = ['message' => $controllerResponse->getErrorMessage()]; $response->setData($content); return $response; } $response->setStatusCode($controllerResponse->getStatusCode()); $content = $this->getContent($controllerResponse); $response->setData($content); return $response; }
/** * @param \Dafiti\Silex\Response $controllerResponse * * @return \Dafiti\Silex\Response */ private function decorateErrorMessage(\Dafiti\Silex\Response $controllerResponse) { $message = HttpFoundation\Response::$statusTexts[$controllerResponse->getStatusCode()]; if (!is_null($controllerResponse->getErrorMessage())) { $message = $controllerResponse->getErrorMessage(); } $controllerResponse->setErrorMessage($message); return $controllerResponse; }
/** * @dataProvider errorResponseProvider * @covers \Dafiti\Silex\Response\Factory\Json::transform */ public function testCreateShouldReturnJsonResponseWithErrorContentAndDefaultMessage(\Dafiti\Silex\Response $controllerResponse, $errorMessage) { $expectedStatusCode = $controllerResponse->getStatusCode(); $expectedContent = json_encode(['message' => $errorMessage]); $jsonFactory = new Factory\Json(Factory\Json::CONTENT_TYPE); $result = $jsonFactory->create($controllerResponse); $this->assertInstanceOf('Symfony\\Component\\HttpFoundation\\JsonResponse', $result); $this->assertEquals($expectedStatusCode, $result->getStatusCode()); $this->assertEquals($expectedContent, $result->getContent()); }