]> git.immae.eu Git - github/wallabag/wallabag.git/commitdiff
Add tests for the StringToListTransformer class
authorKévin Gomez <contact@kevingomez.fr>
Mon, 12 Oct 2015 19:43:24 +0000 (21:43 +0200)
committerKévin Gomez <contact@kevingomez.fr>
Wed, 11 Nov 2015 15:23:49 +0000 (16:23 +0100)
src/Wallabag/CoreBundle/Form/DataTransformer/StringToListTransformer.php
src/Wallabag/CoreBundle/Tests/Form/DataTransformer/StringToListTransformerTest.php [new file with mode: 0644]

index 332a91b87ac717797d03f65cf458a2ee1b63706f..23488d3538fc6d09339e315b20b9dfc80adc2a13 100644 (file)
@@ -6,10 +6,20 @@ use Doctrine\Common\Persistence\ObjectManager;
 use Symfony\Component\Form\DataTransformerInterface;
 use Symfony\Component\Form\Exception\TransformationFailedException;
 
+/**
+ * Transforms a comma-separated list to a proper PHP array.
+ * Example: the string "foo, bar" will become the array ["foo", "bar"]
+ */
 class StringToListTransformer implements DataTransformerInterface
 {
+    /**
+     * @var string
+     */
     private $separator;
 
+    /**
+     * @param string $separator The separator used in the list.
+     */
     public function __construct($separator = ',')
     {
         $this->separator = $separator;
@@ -40,10 +50,10 @@ class StringToListTransformer implements DataTransformerInterface
      */
     public function reverseTransform($string)
     {
-        if (!$string) {
+        if ($string === null) {
             return null;
         }
 
-        return array_filter(array_map('trim', explode($this->separator, $string)));
+        return array_values(array_filter(array_map('trim', explode($this->separator, $string))));
     }
 }
diff --git a/src/Wallabag/CoreBundle/Tests/Form/DataTransformer/StringToListTransformerTest.php b/src/Wallabag/CoreBundle/Tests/Form/DataTransformer/StringToListTransformerTest.php
new file mode 100644 (file)
index 0000000..d114e5f
--- /dev/null
@@ -0,0 +1,50 @@
+<?php
+
+namespace Wallabag\CoreBundle\Tests\Form\DataTransformer;
+
+use Wallabag\CoreBundle\Form\DataTransformer\StringToListTransformer;
+
+class StringToListTransformerTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @dataProvider transformProvider
+     */
+    public function testTransformWithValidData($inputData, $expectedResult)
+    {
+        $transformer = new StringToListTransformer();
+
+        $this->assertSame($expectedResult, $transformer->transform($inputData));
+    }
+
+    public function transformProvider()
+    {
+        return array(
+            array( null,                                 '' ),
+            array( array(),                              '' ),
+            array( array('single value'),                'single value' ),
+            array( array('first value', 'second value'), 'first value,second value' ),
+        );
+    }
+
+    /**
+     * @dataProvider reverseTransformProvider
+     */
+    public function testReverseTransformWithValidData($inputData, $expectedResult)
+    {
+        $transformer = new StringToListTransformer();
+
+        $this->assertSame($expectedResult, $transformer->reverseTransform($inputData));
+    }
+
+    public function reverseTransformProvider()
+    {
+        return array(
+            array( null,                            null ),
+            array( '',                              array() ),
+            array( 'single value',                  array('single value') ),
+            array( 'first value,second value',      array('first value', 'second value') ),
+            array( 'first value,     second value', array('first value', 'second value') ),
+            array( 'first value,  ,  second value', array('first value', 'second value') ),
+        );
+    }
+}