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)); }
/** * @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(); }
/** * 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 ? // ... } }
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); }