public function execute() { $text = $this->getParameter("text"); $title = $this->getParameter("title"); $arguments = $this->getFrameArguments(); if ($arguments === null) { $this->getResult()->setWarning("Arguments json format incorect or empty"); } $parser = new Parser(); $parser->startExternalParse(Title::newFromText($title), new ParserOptions(), 'text', true); $frame = $parser->getPreprocessor()->newCustomFrame($arguments); try { $output = PortableInfoboxParserTagController::getInstance()->render($text, $parser, $frame); $this->getResult()->addValue(null, $this->getModuleName(), ['text' => ['*' => $output]]); } catch (\Wikia\PortableInfobox\Parser\Nodes\UnimplementedNodeException $e) { $this->dieUsage(wfMessage('unimplemented-infobox-tag', [$e->getMessage()])->escaped(), "notimplemented"); } catch (\Wikia\PortableInfobox\Parser\XmlMarkupParseErrorException $e) { $this->dieUsage(wfMessage('xml-parse-error')->text(), "badxml"); } }
/** * @dataProvider testGetLayoutDataProvider */ public function testGetLayout($layout, $expectedOutput, $text, $message) { $marker = $this->controller->renderInfobox($text, $layout, $this->parser, $this->parser->getPreprocessor()->newFrame())[0]; $output = $this->controller->replaceMarkers($marker); $this->assertTrue($this->checkClassName($output, $expectedOutput, $message)); }