/** * @test */ public function propertiesThatStartWithIsAreStillAccessedNormally() { $post = new Post(); $post->setPrivate(true); $this->view->assignMultiple(array('post' => $post)); $this->view->setTemplateSource('<f:if condition="{post.isprivate}">Private!</f:if>'); $actual = $this->view->render(); $this->assertSame('', $actual); }
/** * @test */ public function nonExistingIsMethodWillNotThrowError() { $post = new Post(); $post->setPrivate(true); $this->view->assignMultiple(array('post' => $post)); $this->view->setTemplateSource('<f:if condition="{post.isNonExisting}">Wrong!</f:if>'); $actual = $this->view->render(); $this->assertSame('', $actual); }
/** * @test */ public function layoutViewHelperCanContainIfCondition() { $request = Request::create(new Uri('http://localhost')); $actionRequest = $request->createActionRequest(); $standaloneView = new StandaloneView($actionRequest, uniqid()); vfsStreamWrapper::register(); mkdir('vfs://MyLayouts'); \file_put_contents('vfs://MyLayouts/foo', 'foo: <f:render section="content" />'); \file_put_contents('vfs://MyLayouts/bar', 'bar: <f:render section="content" />'); $standaloneView->setLayoutRootPath('vfs://MyLayouts'); $source = '<f:layout name="{f:if(condition: \'1 == 1\', then: \'foo\', else: \'bar\')}" /><f:section name="content">Content</f:section>'; $standaloneView->setTemplateSource($source); $uncompiledResult = $standaloneView->render(); $compiledResult = $standaloneView->render(); $this->assertSame($uncompiledResult, $compiledResult, 'The rendered compiled template did not match the rendered uncompiled template.'); $this->assertSame('foo: Content', $standaloneView->render()); }
/** * Tests the wrong interceptor behavior described in ticket FLOW-430 * Basically the rendering should be consistent regardless of cache flushes, * but due to the way the interceptor configuration was build the second second * rendering was bound to fail, this should never happen. * * @test */ public function interceptorsWorkInPartialRenderedInStandaloneSection() { $httpRequest = Request::create(new Uri('http://localhost')); $actionRequest = new ActionRequest($httpRequest); $actionRequest->setFormat('html'); $standaloneView = new StandaloneView($actionRequest, $this->standaloneViewNonce); $standaloneView->assign('hack', '<h1>HACK</h1>'); $standaloneView->setTemplatePathAndFilename(__DIR__ . '/Fixtures/NestedRenderingConfiguration/TemplateWithSection.txt'); $expected = 'Christian uses <h1>HACK</h1>'; $actual = trim($standaloneView->renderSection('test')); $this->assertSame($expected, $actual, 'First rendering was not escaped.'); // To avoid any side effects we create a separate accessible mock to find the cache identifier for the partial $dummyTemplateView = $this->getAccessibleMock(StandaloneView::class, null, array($actionRequest, $this->standaloneViewNonce)); $partialCacheIdentifier = $dummyTemplateView->_call('createIdentifierForFile', __DIR__ . '/Fixtures/NestedRenderingConfiguration/Partials/Test.html', 'partial_Test'); $templateCache = $this->objectManager->get(CacheManager::class)->getCache('Fluid_TemplateCache'); $templateCache->remove($partialCacheIdentifier); $expected = 'Christian uses <h1>HACK</h1>'; $actual = trim($standaloneView->renderSection('test')); $this->assertSame($expected, $actual, 'Second rendering was not escaped.'); }
/** * @test */ public function xmlNamespacesCanBeIgnored() { $httpRequest = Request::create(new Uri('http://localhost')); $actionRequest = new ActionRequest($httpRequest); $actionRequest->setFormat('txt'); $standaloneView = new Fixtures\View\StandaloneView($actionRequest, $this->standaloneViewNonce); $standaloneView->setTemplatePathAndFilename(__DIR__ . '/Fixtures/TestTemplateWithCustomNamespaces.txt'); $standaloneView->setLayoutRootPath(__DIR__ . '/Fixtures/SpecialLayouts'); $expected = '<foo:bar /><bar:foo></bar:foo><foo.bar:baz />foobar'; $actual = $standaloneView->render(); $this->assertSame($expected, $actual); }
/** * @test */ public function explicitLayoutPathIsUsed() { $httpRequest = Request::create(new Uri('http://localhost')); $actionRequest = new ActionRequest($httpRequest); $actionRequest->setFormat('txt'); $standaloneView = new StandaloneView($actionRequest, $this->standaloneViewNonce); $standaloneView->setTemplatePathAndFilename(__DIR__ . '/Fixtures/TestTemplateWithLayout.txt'); $standaloneView->setLayoutRootPath(__DIR__ . '/Fixtures/SpecialLayouts'); $expected = 'Hey -- overridden -- HEY HO'; $actual = $standaloneView->render(); $this->assertSame($expected, $actual); }