@@ -66,4 +66,37 @@ public function testReturnsHalResponseFactoryInstanceWithoutConfiguredDependenci
66
66
self ::assertAttributeInstanceOf (ResponseInterface::class, 'responsePrototype ' , $ instance );
67
67
self ::assertAttributeInstanceOf (Closure::class, 'streamFactory ' , $ instance );
68
68
}
69
+
70
+ public function testReturnsHalResponseFactoryInstanceWhenResponseInterfaceReturnsFactory ()
71
+ {
72
+ $ jsonRenderer = $ this ->prophesize (Renderer \JsonRenderer::class)->reveal ();
73
+ $ xmlRenderer = $ this ->prophesize (Renderer \XmlRenderer::class)->reveal ();
74
+ $ response = $ this ->prophesize (ResponseInterface::class)->reveal ();
75
+ $ responseFactory = function () use ($ response ) {
76
+ return $ response ;
77
+ };
78
+ $ stream = new class ()
79
+ {
80
+ public function __invoke ()
81
+ {
82
+ }
83
+ };
84
+
85
+ $ container = $ this ->prophesize (ContainerInterface::class);
86
+ $ container ->has (Renderer \JsonRenderer::class)->willReturn (true );
87
+ $ container ->get (Renderer \JsonRenderer::class)->willReturn ($ jsonRenderer );
88
+ $ container ->has (Renderer \XmlRenderer::class)->willReturn (true );
89
+ $ container ->get (Renderer \XmlRenderer::class)->willReturn ($ xmlRenderer );
90
+ $ container ->has (ResponseInterface::class)->willReturn (true );
91
+ $ container ->get (ResponseInterface::class)->willReturn ($ responseFactory );
92
+ $ container ->has (StreamInterface::class)->willReturn (true );
93
+ $ container ->get (StreamInterface::class)->willReturn ($ stream );
94
+
95
+ $ instance = (new HalResponseFactoryFactory ())($ container ->reveal ());
96
+ self ::assertInstanceOf (HalResponseFactory::class, $ instance );
97
+ self ::assertAttributeSame ($ jsonRenderer , 'jsonRenderer ' , $ instance );
98
+ self ::assertAttributeSame ($ xmlRenderer , 'xmlRenderer ' , $ instance );
99
+ self ::assertAttributeSame ($ response , 'responsePrototype ' , $ instance );
100
+ self ::assertAttributeSame ($ stream , 'streamFactory ' , $ instance );
101
+ }
69
102
}
0 commit comments