[Serializer] Handle true and false appropriately in CSV encoder
This commit is contained in:
parent
7a6ce5ff85
commit
89cba00c68
@ -189,7 +189,8 @@ class CsvEncoder implements EncoderInterface, DecoderInterface
|
|||||||
if (\is_array($value)) {
|
if (\is_array($value)) {
|
||||||
$this->flatten($value, $result, $keySeparator, $parentKey.$key.$keySeparator);
|
$this->flatten($value, $result, $keySeparator, $parentKey.$key.$keySeparator);
|
||||||
} else {
|
} else {
|
||||||
$result[$parentKey.$key] = $value;
|
// Ensures an actual value is used when dealing with true and false
|
||||||
|
$result[$parentKey.$key] = false === $value ? 0 : (true === $value ? 1 : $value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -29,6 +29,24 @@ class CsvEncoderTest extends TestCase
|
|||||||
$this->encoder = new CsvEncoder();
|
$this->encoder = new CsvEncoder();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testTrueFalseValues()
|
||||||
|
{
|
||||||
|
$data = [
|
||||||
|
'string' => 'foo',
|
||||||
|
'int' => 2,
|
||||||
|
'false' => false,
|
||||||
|
'true' => true,
|
||||||
|
];
|
||||||
|
|
||||||
|
// Check that true and false are appropriately handled
|
||||||
|
$this->assertEquals(<<<'CSV'
|
||||||
|
string,int,false,true
|
||||||
|
foo,2,0,1
|
||||||
|
|
||||||
|
CSV
|
||||||
|
, $this->encoder->encode($data, 'csv'));
|
||||||
|
}
|
||||||
|
|
||||||
public function testSupportEncoding()
|
public function testSupportEncoding()
|
||||||
{
|
{
|
||||||
$this->assertTrue($this->encoder->supportsEncoding('csv'));
|
$this->assertTrue($this->encoder->supportsEncoding('csv'));
|
||||||
|
Reference in New Issue
Block a user