Updated SerializerTest with "normalizeTraversable" & "testNormalizeGivesPriorityToInterfaceOverTraversable"
This commit is contained in:
parent
d789f9424e
commit
e851efc8d6
@ -0,0 +1,25 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Symfony\Tests\Component\Serializer\Fixtures;
|
||||||
|
|
||||||
|
use Symfony\Component\Serializer\Normalizer\NormalizableInterface;
|
||||||
|
use Symfony\Component\Serializer\SerializerInterface;
|
||||||
|
|
||||||
|
class NormalizableTraversableDummy extends TraversableDummy implements NormalizableInterface
|
||||||
|
{
|
||||||
|
public function normalize(SerializerInterface $serializer, $format = null)
|
||||||
|
{
|
||||||
|
return array(
|
||||||
|
'foo' => 'normalizedFoo',
|
||||||
|
'bar' => 'normalizedBar',
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function denormalize(SerializerInterface $serializer, $data, $format = null)
|
||||||
|
{
|
||||||
|
return array(
|
||||||
|
'foo' => 'denormalizedFoo',
|
||||||
|
'bar' => 'denormalizedBar',
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Symfony\Tests\Component\Serializer\Fixtures;
|
||||||
|
|
||||||
|
class TraversableDummy implements \IteratorAggregate
|
||||||
|
{
|
||||||
|
public $foo = 'foo';
|
||||||
|
public $bar = 'bar';
|
||||||
|
|
||||||
|
public function getIterator()
|
||||||
|
{
|
||||||
|
return new \ArrayIterator(get_object_vars($this));
|
||||||
|
}
|
||||||
|
}
|
@ -4,6 +4,9 @@ namespace Symfony\Tests\Component\Serializer;
|
|||||||
|
|
||||||
use Symfony\Component\Serializer\Serializer;
|
use Symfony\Component\Serializer\Serializer;
|
||||||
use Symfony\Component\Serializer\Encoder\JsonEncoder;
|
use Symfony\Component\Serializer\Encoder\JsonEncoder;
|
||||||
|
use Symfony\Component\Serializer\Normalizer\CustomNormalizer;
|
||||||
|
use Symfony\Tests\Component\Serializer\Fixtures\TraversableDummy;
|
||||||
|
use Symfony\Tests\Component\Serializer\Fixtures\NormalizableTraversableDummy;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This file is part of the Symfony framework.
|
* This file is part of the Symfony framework.
|
||||||
@ -25,6 +28,20 @@ class SerializerTest extends \PHPUnit_Framework_TestCase
|
|||||||
$this->serializer->normalize(new \stdClass, 'xml');
|
$this->serializer->normalize(new \stdClass, 'xml');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testNormalizeTraversable()
|
||||||
|
{
|
||||||
|
$this->serializer = new Serializer(array(), array('json' => new JsonEncoder()));
|
||||||
|
$result = $this->serializer->serialize(new TraversableDummy, 'json');
|
||||||
|
$this->assertEquals('{"foo":"foo","bar":"bar"}', $result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testNormalizeGivesPriorityToInterfaceOverTraversable()
|
||||||
|
{
|
||||||
|
$this->serializer = new Serializer(array(new CustomNormalizer), array('json' => new JsonEncoder()));
|
||||||
|
$result = $this->serializer->serialize(new NormalizableTraversableDummy, 'json');
|
||||||
|
$this->assertEquals('{"foo":"normalizedFoo","bar":"normalizedBar"}', $result);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @expectedException \UnexpectedValueException
|
* @expectedException \UnexpectedValueException
|
||||||
*/
|
*/
|
||||||
|
Reference in New Issue
Block a user