27
27
use Symfony \Component \DependencyInjection \Compiler \ResolveParameterPlaceHoldersPass ;
28
28
use Symfony \Component \DependencyInjection \ContainerBuilder ;
29
29
use Symfony \Component \DependencyInjection \Definition ;
30
+ use Symfony \Component \DependencyInjection \Reference ;
30
31
31
32
class CustomHandlerPassTest extends TestCase
32
33
{
@@ -79,12 +80,35 @@ public function testHandler()
79
80
80
81
$ args = $ container ->getDefinition ('jms_serializer.handler_registry ' )->getArguments ();
81
82
82
- $ this ->assertEquals ([
83
+ $ this ->assertSame ([
83
84
2 => ['DateTime ' => ['json ' => ['my_service ' , 'deserializeDateTimeFromjson ' ]]],
84
85
1 => ['DateTime ' => ['json ' => ['my_service ' , 'serializeDateTimeTojson ' ]]]
85
86
], $ args [1 ]);
86
87
}
87
88
89
+ public function testHandlerCanBePrivate ()
90
+ {
91
+ $ container = $ this ->getContainer ();
92
+
93
+ $ def = new Definition ('Foo ' );
94
+ $ def ->setPublic (false );
95
+ $ def ->addTag ('jms_serializer.handler ' , [
96
+ 'type ' => 'DateTime ' ,
97
+ 'format ' => 'json ' ,
98
+ ]);
99
+ $ container ->setDefinition ('my_service ' , $ def );
100
+
101
+ $ pass = new CustomHandlersPass ();
102
+ $ pass ->process ($ container );
103
+
104
+ $ args = $ container ->getDefinition ('jms_serializer.handler_registry ' )->getArguments ();
105
+
106
+ $ this ->assertEquals ([
107
+ 2 => ['DateTime ' => ['json ' => [new Reference ('my_service ' ), 'deserializeDateTimeFromjson ' ]]],
108
+ 1 => ['DateTime ' => ['json ' => [new Reference ('my_service ' ), 'serializeDateTimeTojson ' ]]]
109
+ ], $ args [1 ]);
110
+ }
111
+
88
112
public function testHandlerDirection ()
89
113
{
90
114
$ container = $ this ->getContainer ();
@@ -102,7 +126,7 @@ public function testHandlerDirection()
102
126
103
127
$ args = $ container ->getDefinition ('jms_serializer.handler_registry ' )->getArguments ();
104
128
105
- $ this ->assertEquals ([
129
+ $ this ->assertSame ([
106
130
1 => ['DateTime ' => ['json ' => ['my_service ' , 'serializeDateTimeTojson ' ]]]
107
131
], $ args [1 ]);
108
132
}
@@ -156,11 +180,30 @@ public function testSubscribingHandler()
156
180
157
181
$ args = $ container ->getDefinition ('jms_serializer.handler_registry ' )->getArguments ();
158
182
159
- $ this ->assertEquals ([
183
+ $ this ->assertSame ([
160
184
1 => ['DateTime ' => ['json ' => ['my_service ' , 'onDateTime ' ]]]
161
185
], $ args [1 ]);
162
186
}
163
187
188
+ public function testSubscribingHandlerCanBePrivate ()
189
+ {
190
+ $ container = $ this ->getContainer ();
191
+
192
+ $ def = new Definition ('JMS\SerializerBundle\Tests\DependencyInjection\Fixture\SubscribingHandler ' );
193
+ $ def ->addTag ('jms_serializer.subscribing_handler ' );
194
+ $ def ->setPublic (false );
195
+ $ container ->setDefinition ('my_service ' , $ def );
196
+
197
+ $ pass = new CustomHandlersPass ();
198
+ $ pass ->process ($ container );
199
+
200
+ $ args = $ container ->getDefinition ('jms_serializer.handler_registry ' )->getArguments ();
201
+
202
+ $ this ->assertEquals ([
203
+ 1 => ['DateTime ' => ['json ' => [new Reference ('my_service ' ), 'onDateTime ' ]]]
204
+ ], $ args [1 ]);
205
+ }
206
+
164
207
/**
165
208
* @expectedException RuntimeException
166
209
* @expectedExceptionMessage The service "my_service" must implement the SubscribingHandlerInterface
0 commit comments