public function testReturnsNullWhenCannotSelectRenderer()
 {
     $model = new ViewModel();
     $request = new HttpRequest();
     $this->event->setModel($model);
     $this->event->setRequest($request);
     $this->assertNull($this->strategy->selectRenderer($this->event));
 }
 public function testSelectRendererReturnsJsonRendererWhenSwaggerViewModelIsPresentInEvent()
 {
     $event = new ViewEvent();
     $event->setName(ViewEvent::EVENT_RENDERER);
     $event->setModel(new ViewModel([]));
     $renderer = $this->strategy->selectRenderer($event);
     $this->assertSame($this->renderer, $renderer);
     return $event;
 }
 public function testSelectRendererWhenTemplateFound()
 {
     $model = $this->getMock('Zend\\View\\Model\\ModelInterface');
     $model->expects($this->at(0))->method('getTemplate')->will($this->returnValue('key1'));
     $event = new ViewEvent();
     $event->setModel($model);
     $result = $this->strategy->selectRenderer($event);
     $this->assertSame($this->renderer, $result);
 }
 public function testSelectRendererWithExtension()
 {
     $model = $this->getMock('Zend\\View\\Model\\ModelInterface');
     $model->expects($this->at(0))->method('getTemplate')->will($this->returnValue('test.md'));
     $event = new ViewEvent();
     $event->setModel($model);
     $result = $this->strategy->selectRenderer($event);
     $this->assertInstanceOf('Netorare\\View\\Renderer\\MarkdownRenderer', $result);
 }
 public function testSelectRendererReturnsApiBlueprintRendererWhenApiBlueprintViewModelIsPresentInEvent()
 {
     $event = new ViewEvent();
     $event->setName(ViewEvent::EVENT_RENDERER);
     $event->setModel(new ApiBlueprintModel(array()));
     $event->setRequest(new HttpRequest());
     $renderer = $this->strategy->selectRenderer($event);
     $this->assertSame($this->renderer, $renderer);
     return $event;
 }
 /**
  * 
  * @param ModelInterface $model
  * @return string
  */
 public function render(ModelInterface $model)
 {
     $event = new ViewEvent();
     $event->setName(ViewEvent::EVENT_RENDERER);
     $event->setModel($model);
     $renderers = $this->view->getEventManager()->triggerEventUntil(function ($result) {
         return $result instanceof RendererInterface;
     }, $event);
     return $renderers->last()->render($model);
 }
 /**
  *
  */
 public function testInjectResponseSetsContentTypeHeaderToApiProblemForApiProblemModel()
 {
     $problem = new ApiProblem(500, "Error message");
     $model = new ApiProblemModel($problem);
     $this->event->setModel($model);
     $this->event->setRenderer($this->renderer);
     $this->event->setResult('{"foo":"bar"}');
     $this->strategy->injectResponse($this->event);
     $headers = $this->response->getHeaders();
     $this->assertTrue($headers->has('Content-Type'));
     $header = $headers->get('Content-Type');
     $this->assertEquals('application/problem+json', $header->getFieldValue());
 }
 public function testProperlyFillViewModelHelperIfRendererIsSelected()
 {
     $model = new ResourceViewModel();
     $viewEvent = new ViewEvent();
     $viewEvent->setModel($model);
     $viewModelHelper = $this->getMock(ViewModel::class, [], [], '', false);
     $viewModelHelper->expects($this->once())->method('setRoot')->with($model);
     $viewModelHelper->expects($this->once())->method('setCurrent')->with($model);
     $helperManager = $this->getMock(HelperPluginManager::class, [], [], '', false);
     $helperManager->expects($this->once())->method('setRenderer')->with($this->resourceRenderer);
     $helperManager->expects($this->once())->method('get')->with('viewModel')->willReturn($viewModelHelper);
     $this->resourceRenderer->expects($this->once())->method('getHelperPluginManager')->willReturn($helperManager);
     $this->assertSame($this->resourceRenderer, $this->resourceStrategy->selectRenderer($viewEvent));
 }
Beispiel #9
0
 /**
  * @param ViewEvent $viewEvent
  *
  * @return PartialRenderer
  */
 public function onRenderer(ViewEvent $viewEvent)
 {
     $model = $viewEvent->getModel();
     $config = $this->getOptions()->getConfig();
     if ($model instanceof ViewModel && in_array($model->getTemplate(), $config)) {
         $success = false;
         $cacheContent = $this->getCacheManager()->getItem($model->getTemplate(), $success);
         if (true === $success) {
             $partialModel = new PartialViewModel();
             $partialModel->setIsCached(true);
             $partialModel->setCacheContent($cacheContent);
             $partialModel->setTemplate($model->getTemplate());
             $viewEvent->setModel($model);
         }
         return $this->getRenderer();
     }
 }
 public function testResponseHeadersWithFileName()
 {
     $model = new PdfModel();
     $model->setTemplate('basic.phtml');
     $model->setOption('filename', 'testPdfFileName');
     $this->event->setModel($model);
     $this->event->setResponse($this->response);
     $this->event->setRenderer($this->renderer);
     $this->event->setResult($this->renderer->render($model));
     $this->strategy->injectResponse($this->event);
     $headers = $this->event->getResponse()->getHeaders();
     $contentDisposition = $headers->get('Content-Disposition');
     $this->assertInstanceOf('Zend\\Http\\Header\\ContentDisposition', $contentDisposition);
     $this->assertEquals($contentDisposition->getFieldValue(), 'attachment; filename=testPdfFileName.pdf');
     ob_end_flush();
     // Clear out any buffers held by renderers.
 }
 public function testSelectRendererAndInjectResponse()
 {
     $renderer = new BlockRenderer();
     $strategy = new BlockRendererStrategy($renderer);
     $viewEvent = new ViewEvent();
     $viewEvent->setModel(new ViewModel());
     $this->assertNull($strategy->selectRenderer($viewEvent));
     $dummyBlock = new Dummy();
     $viewEvent->setModel($dummyBlock);
     $this->assertSame($renderer, $strategy->selectRenderer($viewEvent));
     $this->assertNull($strategy->injectResponse($viewEvent));
     $response = new Response();
     $viewEvent->setRenderer($renderer);
     $viewEvent->setResult('test');
     $viewEvent->setResponse($response);
     $strategy->injectResponse($viewEvent);
     $this->assertEquals('test', $response->getContent());
 }
 public function testResponseHeadersWithFileName()
 {
     $model = $this->serviceManager->get('PdfModel');
     $model->setTemplate('basic.phtml');
     $model->getPdfOptions()->setFilename('testPdfFileName');
     $model->getPdfOptions()->setFooterLines([['text' => 'top line', 'position' => 'center', 'font' => ['family' => 'Helvetica', 'weight' => 'normal', 'size' => 8]], ['text' => 'second line', 'position' => 'left', 'font' => ['family' => 'Helvetica', 'weight' => 'normal', 'size' => 8]], ['text' => 'third line', 'position' => 'right', 'font' => ['family' => 'Helvetica', 'weight' => 'normal', 'size' => 8]]]);
     $model->getPdfOptions()->setHeaderLines([['text' => 'first line', 'position' => 'center', 'font' => ['family' => 'Helvetica', 'weight' => 'normal', 'size' => 8]]]);
     $this->event->setModel($model);
     $this->event->setResponse($this->response);
     $this->event->setRenderer($this->renderer);
     $this->event->setResult($this->renderer->render($model));
     $this->strategy->injectResponse($this->event);
     $headers = $this->event->getResponse()->getHeaders();
     $contentDispositionHeader = $headers->get('Content-Disposition');
     $this->assertInstanceof('Zend\\Http\\Header\\ContentDisposition', $contentDispositionHeader);
     $this->assertEquals($contentDispositionHeader->getFieldValue(), 'attachment; filename=testPdfFileName.pdf');
     ob_end_flush();
 }
Beispiel #13
0
 /**
  * remove unwanted or layout related data
  *
  * basically you rake through the viewmodel for the data you want to use for your template,
  * this may not be optimal because you have to rely on the correct naming of the viewmodels
  *
  * if you get the data you want, you switch to the specific template by adding the conforming resolver
  *
  * @param \Zend\View\ViewEvent $e
  */
 public function cleanLayout(ViewEvent $e)
 {
     $result = $e->getResult();
     $response = $e->getResponse();
     $model = $e->getModel();
     if ($model->hasChildren()) {
         $children = $model->getChildren();
         $content = null;
         foreach ($children as $child) {
             if ($child->captureTo() == 'content') {
                 $content = $child;
                 $this->attachViewResolver();
             }
         }
         if (!empty($content)) {
             $e->setModel($content);
         }
     } else {
         // attach the own resolver here too ?
         // ...
     }
 }
Beispiel #14
0
 public function testSelectRendererApplicable()
 {
     $e = new ViewEvent();
     $e->setModel(new YamlModel());
     $this->assertSame($this->renderer, $this->strategy->selectRenderer($e));
 }
 public function testAnotherModel()
 {
     $viewEvent = new ViewEvent();
     $viewEvent->setModel(new ViewModel());
     $this->strategy->selectRenderer($viewEvent);
 }