Yaffs site version 1.1
[yaffs-website] / vendor / symfony / serializer / Tests / Normalizer / AbstractNormalizerTest.php
1 <?php
2
3 namespace Symfony\Component\Serializer\Tests\Normalizer;
4
5 use PHPUnit\Framework\TestCase;
6 use Symfony\Component\Serializer\Mapping\AttributeMetadata;
7 use Symfony\Component\Serializer\Mapping\ClassMetadata;
8 use Symfony\Component\Serializer\Mapping\Factory\ClassMetadataFactoryInterface;
9 use Symfony\Component\Serializer\Normalizer\AbstractNormalizer;
10 use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
11 use Symfony\Component\Serializer\Tests\Fixtures\AbstractNormalizerDummy;
12 use Symfony\Component\Serializer\Tests\Fixtures\ProxyDummy;
13
14 /**
15  * Provides a dummy Normalizer which extends the AbstractNormalizer.
16  *
17  * @author Konstantin S. M. Möllers <ksm.moellers@gmail.com>
18  */
19 class AbstractNormalizerTest extends TestCase
20 {
21     /**
22      * @var AbstractNormalizerDummy
23      */
24     private $normalizer;
25
26     /**
27      * @var ClassMetadataFactoryInterface|\PHPUnit_Framework_MockObject_MockObject
28      */
29     private $classMetadata;
30
31     protected function setUp()
32     {
33         $loader = $this->getMockBuilder('Symfony\Component\Serializer\Mapping\Loader\LoaderChain')->setConstructorArgs(array(array()))->getMock();
34         $this->classMetadata = $this->getMockBuilder('Symfony\Component\Serializer\Mapping\Factory\ClassMetadataFactory')->setConstructorArgs(array($loader))->getMock();
35         $this->normalizer = new AbstractNormalizerDummy($this->classMetadata);
36     }
37
38     public function testGetAllowedAttributesAsString()
39     {
40         $classMetadata = new ClassMetadata('c');
41
42         $a1 = new AttributeMetadata('a1');
43         $classMetadata->addAttributeMetadata($a1);
44
45         $a2 = new AttributeMetadata('a2');
46         $a2->addGroup('test');
47         $classMetadata->addAttributeMetadata($a2);
48
49         $a3 = new AttributeMetadata('a3');
50         $a3->addGroup('other');
51         $classMetadata->addAttributeMetadata($a3);
52
53         $a4 = new AttributeMetadata('a4');
54         $a4->addGroup('test');
55         $a4->addGroup('other');
56         $classMetadata->addAttributeMetadata($a4);
57
58         $this->classMetadata->method('getMetadataFor')->willReturn($classMetadata);
59
60         $result = $this->normalizer->getAllowedAttributes('c', array(AbstractNormalizer::GROUPS => array('test')), true);
61         $this->assertEquals(array('a2', 'a4'), $result);
62
63         $result = $this->normalizer->getAllowedAttributes('c', array(AbstractNormalizer::GROUPS => array('other')), true);
64         $this->assertEquals(array('a3', 'a4'), $result);
65     }
66
67     public function testGetAllowedAttributesAsObjects()
68     {
69         $classMetadata = new ClassMetadata('c');
70
71         $a1 = new AttributeMetadata('a1');
72         $classMetadata->addAttributeMetadata($a1);
73
74         $a2 = new AttributeMetadata('a2');
75         $a2->addGroup('test');
76         $classMetadata->addAttributeMetadata($a2);
77
78         $a3 = new AttributeMetadata('a3');
79         $a3->addGroup('other');
80         $classMetadata->addAttributeMetadata($a3);
81
82         $a4 = new AttributeMetadata('a4');
83         $a4->addGroup('test');
84         $a4->addGroup('other');
85         $classMetadata->addAttributeMetadata($a4);
86
87         $this->classMetadata->method('getMetadataFor')->willReturn($classMetadata);
88
89         $result = $this->normalizer->getAllowedAttributes('c', array(AbstractNormalizer::GROUPS => array('test')), false);
90         $this->assertEquals(array($a2, $a4), $result);
91
92         $result = $this->normalizer->getAllowedAttributes('c', array(AbstractNormalizer::GROUPS => array('other')), false);
93         $this->assertEquals(array($a3, $a4), $result);
94     }
95
96     public function testObjectToPopulateWithProxy()
97     {
98         $proxyDummy = new ProxyDummy();
99
100         $context = array(AbstractNormalizer::OBJECT_TO_POPULATE => $proxyDummy);
101
102         $normalizer = new ObjectNormalizer();
103         $normalizer->denormalize(array('foo' => 'bar'), 'Symfony\Component\Serializer\Tests\Fixtures\ToBeProxyfiedDummy', null, $context);
104
105         $this->assertSame('bar', $proxyDummy->getFoo());
106     }
107 }