Example #1
0
 /**
  * @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);
 }
Example #2
0
 /**
  * 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);
 }