/** * Checks if the optionally given node context path, affected node context path and typoscript path are set * and overrides the rendering to use those. Will also add a "X-Neos-AffectedNodePath" header in case the * actually affected node is different from the one routing resolved. * This is used in out of band rendering for the backend. * * @return void * @throws NodeNotFoundException */ protected function overrideViewVariablesFromInternalArguments() { if (($nodeContextPath = $this->request->getInternalArgument('__nodeContextPath')) !== null) { $node = $this->propertyMapper->convert($nodeContextPath, NodeInterface::class); if (!$node instanceof NodeInterface) { throw new NodeNotFoundException(sprintf('The node with context path "%s" could not be resolved', $nodeContextPath), 1437051934); } $this->view->assign('value', $node); } if (($affectedNodeContextPath = $this->request->getInternalArgument('__affectedNodeContextPath')) !== null) { $this->response->setHeader('X-Neos-AffectedNodePath', $affectedNodeContextPath); } if (($typoScriptPath = $this->request->getInternalArgument('__typoScriptPath')) !== null) { $this->view->setTypoScriptPath($typoScriptPath); } }
/** * @test */ public function renderPutsSiteNodeInTypoScriptContext() { $this->setUpMockView(); $this->mockRuntime->expects($this->once())->method('pushContextArray')->with($this->arrayHasKey('site')); $this->mockView->render(); }