/** * @param $app Application * @param $post_id integer * * @return Response */ public function viewEditPost(Application $app, $post_id) { $requestResponseCode = Response::HTTP_OK; // Filter and validation $id = filter_var($post_id, FILTER_VALIDATE_INT); if ($id === false) { $message = 'Queried id must be a number.'; $app['monolog']->addError('Integer filtering returned false. ' . $message); $requestResponseCode = Response::HTTP_BAD_REQUEST; } // Fetch post data $apiObject = new PostApi(new PostData($app)); try { $post = $apiObject->fetch($id); if (!$post) { $requestResponseCode = Response::HTTP_BAD_REQUEST; $message = 'Failed to find post data.'; } } catch (\InvalidArgumentException $e) { $app['monolog']->addError(sprintf(static::MESSAGE_CAUGHT_EXCEPTION, $e->getMessage(), $e->getCode())); $message = 'Invalid query.'; $requestResponseCode = Response::HTTP_BAD_REQUEST; } catch (\UnexpectedValueException $e) { $app['monolog']->addError(sprintf(static::MESSAGE_CAUGHT_EXCEPTION, $e->getMessage(), $e->getCode())); $message = 'Failed to retrieve data.'; $requestResponseCode = Response::HTTP_BAD_REQUEST; } // Render page sections $pageArgs = ['loggedIn' => $this->isLoggedIn($app), 'admin' => $this->isAdmin($app), 'message' => false, 'post' => false]; if (isset($message)) { $app['session']->getFlashBag()->add('message', $message); } if (isset($post) && is_array($post)) { $pageArgs['post'] = $post; } $content = $app['twig']->render('post.edit.twig', $pageArgs); return new Response($content, $requestResponseCode); }
/** * Test fetchA() method returns array if provided id */ public function testFetchReturnsDataIfProvidedId() { $mockId = 1; $mockPostData = ['title' => 'somevalue']; $mockContentData = ['body' => 'somevalue']; $mockData = ['title' => 'somevalue', 'body' => 'somevalue']; $mockApp = m::mock(\Silex\Application::class)->makePartial(); $mockDataObject = m::mock(PostData::class, [$mockApp]); $mockDataObject->shouldReceive('fetchPostDataById')->with($mockId)->andReturn($mockPostData); $mockDataObject->shouldReceive('fetchPostContentDataById')->with($mockId)->andReturn($mockContentData); $object = new PostApi($mockDataObject); $returned = $object->fetch($mockId); $this->assertSame($mockData, $returned); }