* html 으로 출력될 경우 사용 * Skin, Theme 를 출력할 수 있도록 지원
Deprecation: As of 3.0.0-beta6 replaced by HtmlPresenter
Author: XE Developers (developers@xpressengine.com)
Inheritance: implements Xpressengine\Presenter\Presentable
 /**
  * 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;
     });
 }