mirror of
https://github.com/wallabag/wallabag.git
synced 2024-12-15 09:57:41 +01:00
Add tests for the StringToListTransformer class
This commit is contained in:
parent
f530f7f5e1
commit
003fa77438
@ -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))));
|
||||
}
|
||||
}
|
||||
|
@ -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') ),
|
||||
);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user