/** * @dataProvider statusCodeProvider */ public function testStatusCode($annotationCode, $viewCode, $expectedCode) { $this->createViewResponseListener(['json' => true]); $viewAnnotation = new ViewAnnotation([]); $viewAnnotation->setStatusCode($annotationCode); $request = new Request(); $request->setRequestFormat('json'); $request->attributes->set('_view', $viewAnnotation); $this->templating->expects($this->any())->method('render')->will($this->returnValue('foo')); $view = new View(); $view->setStatusCode($viewCode); $view->setData('foo'); $event = $this->getResponseEvent($request, $view); $response = new Response(); $event->expects($this->any())->method('setResponse')->will($this->returnCallback(function ($r) use(&$response) { $response = $r; })); $this->listener->onKernelView($event); $this->assertInstanceOf('Symfony\\Component\\HttpFoundation\\Response', $response); $this->assertSame($expectedCode, $response->getStatusCode()); }
/** * @dataProvider statusCodeProvider */ public function testStatusCode($annotationCode, $viewCode, $expectedCode) { $viewAnnotation = new ViewAnnotation([]); $viewAnnotation->setStatusCode($annotationCode); $request = new Request(); $request->setRequestFormat('json'); $request->attributes->set('_view', $viewAnnotation); $this->viewHandler = new ViewHandler(['json' => true]); $this->viewHandler->setContainer($this->container); // This is why we avoid container dependencies! $that = $this; $this->container->expects($this->exactly(2))->method('get')->with($this->logicalOr('fos_rest.view_handler', 'fos_rest.templating'))->will($this->returnCallback(function ($service) use($that) { return $service === 'fos_rest.view_handler' ? $that->viewHandler : $that->templating; })); $this->templating->expects($this->any())->method('render')->will($this->returnValue('foo')); $view = new View(); $view->setStatusCode($viewCode); $view->setData('foo'); $event = $this->getResponseEvent($request, $view); $response = new Response(); $event->expects($this->any())->method('setResponse')->will($this->returnCallback(function ($r) use(&$response) { $response = $r; })); $this->listener->onKernelView($event); $this->assertInstanceOf('Symfony\\Component\\HttpFoundation\\Response', $response); $this->assertSame($expectedCode, $response->getStatusCode()); }