/** * @param \RuntimeException $error * @dataProvider getWarmSingleFileExceptionTestValues * @test */ public function testWarmuSingleFileHandlesException(\RuntimeException $error) { $subject = new StandardCacheWarmer(); $context = new RenderingContextFixture(); $parser = $this->getMock(TemplateParser::class, ['getOrParseAndStoreTemplate']); $parser->expects($this->once())->method('getOrParseAndStoreTemplate')->willThrowException($error); $variableProvider = new StandardVariableProvider(['foo' => 'bar']); $context->setVariableProvider($variableProvider); $context->setTemplateParser($parser); $method = new \ReflectionMethod($subject, 'warmSingleFile'); $method->setAccessible(true); $result = $method->invokeArgs($subject, ['/some/file', 'some_file', $context]); $this->assertInstanceOf(ParsedTemplateInterface::class, $result); $this->assertAttributeNotEmpty('failureReason', $result); $this->assertAttributeNotEmpty('mitigations', $result); }
/** * @test */ public function testCompileThrowsStopCompilingChildrenException() { $subject = new WarmupViewHelper(); $subject->initializeArguments(); $subject->setRenderChildrenClosure(function () { return 'test'; }); $subject->setArguments(['variables' => ['foo' => 'bar']]); $renderingContext = new RenderingContextFixture(); $renderingContext->setVariableProvider(new StandardVariableProvider()); $subject->setRenderingContext($renderingContext); $viewHelperNode = $this->getMock(ViewHelperNode::class, ['dummy'], [], '', false); $initializationCode = ''; $this->setExpectedException(StopCompilingChildrenException::class); $subject->compile('argumentName', 'closureName', $initializationCode, $viewHelperNode, new TemplateCompiler()); }
/** * @test */ public function buildObjectTreeDelegatesHandlingOfTemplateElements() { $templateParser = $this->getAccessibleMock(TemplateParser::class, array('textHandler', 'openingViewHelperTagHandler', 'closingViewHelperTagHandler', 'textAndShorthandSyntaxHandler')); $context = new RenderingContextFixture(); $context->setVariableProvider(new StandardVariableProvider()); $templateParser->setRenderingContext($context); $splitTemplate = $templateParser->_call('splitTemplateAtDynamicTags', 'The first part is simple<![CDATA[<f:for each="{a: {a: 0, b: 2, c: 4}}" as="array"><f:for each="{array}" as="value">{value} </f:for>]]><f:format.printf arguments="{number : 362525200}">%.3e</f:format.printf>and here goes some {text} that could have {shorthand}'); $result = $templateParser->_call('buildObjectTree', $splitTemplate, TemplateParser::CONTEXT_OUTSIDE_VIEWHELPER_ARGUMENTS); $this->assertInstanceOf(ParsingState::class, $result); }