]> git.immae.eu Git - github/wallabag/wallabag.git/commitdiff
Return null instead of false
authorJeremy Benoist <jeremy.benoist@gmail.com>
Wed, 28 Jun 2017 06:15:06 +0000 (08:15 +0200)
committerJeremy Benoist <jeremy.benoist@gmail.com>
Wed, 28 Jun 2017 06:15:06 +0000 (08:15 +0200)
src/Wallabag/ApiBundle/Controller/EntryRestController.php
tests/Wallabag/ApiBundle/Controller/EntryRestControllerTest.php

index 793b91ba399e42f2c60516d912d493912add020e..9786c4d37ee37a6eecd6387fb2b2b59ae4ad3ba6 100644 (file)
@@ -4,6 +4,7 @@ namespace Wallabag\ApiBundle\Controller;
 
 use Hateoas\Configuration\Route;
 use Hateoas\Representation\Factory\PagerfantaFactory;
+use JMS\Serializer\SerializationContext;
 use Nelmio\ApiDocBundle\Annotation\ApiDoc;
 use Symfony\Component\HttpKernel\Exception\HttpException;
 use Symfony\Component\HttpFoundation\Request;
@@ -21,6 +22,8 @@ class EntryRestController extends WallabagRestController
      * Return ID if entry(ies) exist (and if you give the return_id parameter).
      * Otherwise it returns false.
      *
+     * @todo Remove that `return_id` in the next major release
+     *
      * @ApiDoc(
      *       parameters={
      *          {"name"="return_id", "dataType"="string", "required"=false, "format"="1 or 0", "description"="Set 1 if you want to retrieve ID in case entry(ies) exists, 0 by default"},
@@ -46,7 +49,7 @@ class EntryRestController extends WallabagRestController
                     ->getRepository('WallabagCoreBundle:Entry')
                     ->findByUrlAndUserId($url, $this->getUser()->getId());
 
-                $results[$url] = $res instanceof Entry ? ($returnId ? $res->getId() : true) : false;
+                $results[$url] = $this->returnExistInformation($res, $returnId);
             }
 
             return $this->sendResponse($results);
@@ -63,7 +66,7 @@ class EntryRestController extends WallabagRestController
             ->getRepository('WallabagCoreBundle:Entry')
             ->findByUrlAndUserId($url, $this->getUser()->getId());
 
-        $exists = $res instanceof Entry ? ($returnId ? $res->getId() : true) : false;
+        $exists = $this->returnExistInformation($res, $returnId);
 
         return $this->sendResponse(['exists' => $exists]);
     }
@@ -621,7 +624,11 @@ class EntryRestController extends WallabagRestController
      */
     private function sendResponse($data)
     {
-        $json = $this->get('serializer')->serialize($data, 'json');
+        // https://github.com/schmittjoh/JMSSerializerBundle/issues/293
+        $context = new SerializationContext();
+        $context->setSerializeNull(true);
+
+        $json = $this->get('serializer')->serialize($data, 'json', $context);
 
         return (new JsonResponse())->setJson($json);
     }
@@ -698,4 +705,21 @@ class EntryRestController extends WallabagRestController
         // entry saved, dispatch event about it!
         $this->get('event_dispatcher')->dispatch(EntrySavedEvent::NAME, new EntrySavedEvent($entry));
     }
+
+    /**
+     * Return information about the entry if it exist and depending on the id or not.
+     *
+     * @param Entry|null $entry
+     * @param bool       $returnId
+     *
+     * @return bool|int
+     */
+    private function returnExistInformation($entry, $returnId)
+    {
+        if ($returnId) {
+            return $entry instanceof Entry ? $entry->getId() : null;
+        }
+
+        return $entry instanceof Entry ? true : false;
+    }
 }
index dc21bd32cd77b8c430f4b470d734bac493dfd3d5..c0391d8728fad0a7d69e7d0b93a4bb04a2e90dd6 100644 (file)
@@ -800,7 +800,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
         $this->assertArrayHasKey($url1, $content);
         $this->assertArrayHasKey($url2, $content);
         $this->assertSame(2, $content[$url1]);
-        $this->assertSame(false, $content[$url2]);
+        $this->assertNull($content[$url2]);
     }
 
     public function testGetEntriesExistsWithManyUrlsReturnBool()
@@ -815,8 +815,8 @@ class EntryRestControllerTest extends WallabagApiTestCase
 
         $this->assertArrayHasKey($url1, $content);
         $this->assertArrayHasKey($url2, $content);
-        $this->assertEquals(true, $content[$url1]);
-        $this->assertEquals(false, $content[$url2]);
+        $this->assertTrue($content[$url1]);
+        $this->assertFalse($content[$url2]);
     }
 
     public function testGetEntriesExistsWhichDoesNotExists()