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