/** * test renderer * * @return void */ public function testRenderer() { $presenter = $this->presenter; $seo = $this->seo; $widgetParser = $this->widgetParser; $renderer = new HtmlRenderer($presenter, $seo, $widgetParser); $presenter->shouldReceive('getSkinTargetId')->andReturn('skinTargetId'); $presenter->shouldReceive('getId')->andReturn('id'); $presenter->shouldReceive('getIsSettings')->andReturn(true); $presenter->shouldReceive('getRenderType')->andReturn(\Xpressengine\Presenter\Presenter::RENDER_ALL); $presenter->shouldReceive('getData')->andReturn(['key1' => 'value1', 'key2' => ['key2-1' => 'value2-1', 'key2-2' => 'value2-2']]); $renderer->setCommonHtmlWrapper('name'); $renderer->setPopupHtmlWrapper('name'); $this->assertEquals('html', $renderer->format()); $this->assertInstanceOf('Xpressengine\\Presenter\\Presenter', $renderer->getPresenter()); $seo->shouldReceive('import'); $request = m::mock('Illuminate\\Http\\Request'); $view = m::mock('Illuminate\\View\\Factory'); $theme = m::mock('Xpressengine\\Theme\\ThemeHandler'); $skin = m::mock('Xpressengine\\Skin\\SkinHandler'); $settings = m::mock('Xpressengine\\Settings\\SettingsHandler'); $instanceConfig = m::mock('Xpressengine\\Routing\\InstanceConfig'); $instanceConfig->shouldReceive('getInstanceId')->andReturn('a'); $themeInstance = m::mock('ThemeInstance'); $themeInstance->shouldReceive('render'); $request->shouldReceive('isMobile')->andReturn(false); $themeViewInstance = m::mock('View', '\\Illuminate\\View\\View'); $themeViewInstance->shouldReceive('render')->andReturn('themeContent'); $themeViewInstance->shouldReceive('with')->andReturn(''); $themeInstance = m::mock('Theme', '\\Xpressengine\\Theme\\ThemeEntity'); $themeInstance->shouldReceive('render')->andReturn($themeViewInstance); $themeInstance->shouldReceive('with')->andReturn(''); $theme->shouldReceive('getSelectedTheme')->once()->andReturn(null); $theme->shouldReceive('selectSiteTheme'); $theme->shouldReceive('getSelectedTheme')->once()->andReturn($themeInstance); $skinInstance = m::mock('SkinInstance'); $skinInstance->shouldReceive('setView')->andReturn($skinInstance); $skinInstance->shouldReceive('setData')->andReturn($skinInstance); $skinInstance->shouldReceive('render')->andReturn('content'); $skin->shouldReceive('getAssignedSettings')->andReturn($skinInstance); $viewInstance = m::mock('View', '\\Illuminate\\View\\View'); $viewInstance->shouldReceive('render')->andReturn(''); $viewInstance->shouldReceive('with')->andReturn(''); $view->shouldReceive('make')->andReturn($viewInstance); $presenter->shouldReceive('getViewFactory')->andReturn($view); $presenter->shouldReceive('getRequest')->andReturn($request); $presenter->shouldReceive('getInstanceConfig')->andReturn($instanceConfig); $presenter->shouldReceive('getSkinHandler')->andReturn($skin); $presenter->shouldReceive('getThemeHandler')->andReturn($theme); $presenter->shouldReceive('getViewFactory')->andReturn($view); $widgetParser->shouldReceive('parseXml'); $renderer->render(); }
/** * register presenter * * @return void */ private function registerPresenter() { $this->app->singleton('xe.presenter', function ($app) { $proxyClass = $app['xe.interception']->proxy(Presenter::class, 'Presenter'); /** @var \Xpressengine\Presenter\Presenter $presenter */ $presenter = new $proxyClass($app['view'], $app['request'], $app['xe.theme'], $app['xe.skin'], $app['xe.settings'], InstanceConfig::instance()); HtmlRenderer::setCommonHtmlWrapper(app('config')['xe.HtmlWrapper.common']); HtmlRenderer::setPopupHtmlWrapper(app('config')['xe.HtmlWrapper.popup']); /** @var \Xpressengine\Presenter\RendererInterface $proxyHtmlRenderer */ $proxyHtmlRenderer = $app['xe.interception']->proxy(HtmlRenderer::class, 'HtmlRenderer'); /** @var \Xpressengine\Presenter\RendererInterface $proxyJsonRenderer */ $proxyJsonRenderer = $app['xe.interception']->proxy(JsonRenderer::class, 'JsonRenderer'); $presenter->register($proxyHtmlRenderer::format(), function (Presenter $presenter) use($proxyHtmlRenderer) { return new $proxyHtmlRenderer($presenter, app('xe.seo'), app('xe.widget.parser')); }); $presenter->register($proxyJsonRenderer::format(), function (Presenter $presenter) use($proxyJsonRenderer) { return new $proxyJsonRenderer($presenter); }); return $presenter; }); }