forena-8.x-1.x-dev/tests/src/Unit/Mock/TestingAppService.php
tests/src/Unit/Mock/TestingAppService.php
<?php
/**
* Created by PhpStorm.
* User: metzlerd
* Date: 1/31/16
* Time: 8:48 PM
*/
namespace Drupal\Tests\forena\Unit\Mock;
use Drupal\forena\AppService;
use Drupal\forena\Form\ParameterForm;
use Drupal\forena\FrxPlugin\Renderer\FrxMenu;
class TestingAppService extends AppService {
public $language = 'en';
public $default_language = 'en';
public $data_directory = '/tmp';
public $has_access = TRUE;
// Data Pathways.
public $reportDirectory;
public $reportIncludes;
public $siteContext;
public $modulePath;
public $currentPath = 'reports/test';
/** @var ParameterForm */
public $parameterForm;
public $form_state;
/**
* Return Current site context.
* @return array
*/
public function __construct() {
$this->modulePath = dirname(dirname(dirname(dirname(dirname(__FILE__)))));
$path = $this->modulePath;
$site = [];
$site['base_path'] = '/';
$site['dir'] = '';
$site['base_url'] = 'http://example.com';
$site['user_name'] = 'testuser';
$site['uid'] = 1;
$site['language'] = $this->language;
$this->siteContext = $site;
$this->default_skin = 'default';
// Determine module installation path based on current code
$this->reportDirectory = "$path/tests/reports_overriden";
$this->reportIncludes = ["$path/tests/reports"];
}
/*
* Mock alter function.
*/
public function alter($hook, &$var1, $var2 = NULL) {
}
/**
* @return bool
* Fake out access check.
*/
public function access($right) {
return $this->has_access;
}
public function getRendererPlugins() {
return [
'FrxAjax' => '\Drupalforena\FrxPlugin\Renderer\FrxAjax',
'FrxCrosstab' => '\Drupal\forena\FrxPlugin\Renderer\FrxCrosstab',
'FrxInclude' => '\Drupal\forena\FrxPlugin\Renderer\FrxInclude',
'FrxMyReports' => '\Drupal\forena\FrxPlugin\Renderer\FrxMyReports',
'FrxMenu' => FrxMenu::class,
'FrxParameterForm' => '\Drupal\forena\FrxPlugin\Renderer\FrxParameterForm',
'FrxSource' => '\Drupal\forena\FrxPlugin\Renderer\FrxSource',
'FrxSVGGraph' => '\Drupal\forena\FrxPlugin\Renderer\FrxSVGGraph',
'FrxTemplate' => '\Drupal\forena\FrxPlugin\Renderer\FrxTemplate',
'FrxTitle' => '\Drupal\forena\FrxPlugin\Renderer\FrxTitle',
'FrxXML' => '\Drupal\forena\FrxPlugin\Renderer\FrxXML',
'RendererBase' => '\Drupal\forena\FrxPlugin\Renderer\RendererBase',
];
}
public function getAjaxPlugins() {
return [
'invoke' => '\Drupal\forena\FrxPlugin\AjaxCommand\Invoke',
];
}
public function getContextPlugins() {
return [
'custom_security' => 'Drupal\Tests\forena\Unit\FrxPlugin\Context\CustomSecurity',
'FrxReport' => 'Drupal\forena\FrxPlugin\Context\FrxReport',
];
}
public function getDocumentPlugins() {
return [
'csv' => '\Drupal\forena\FrxPlugin\Document\CSV',
'drupal' => '\Drupal\forena\FrxPlugin\Document\Drupal',
'doc' => '\Drupal\forena\FrxPlugin\Document\Word',
'email' => '\Drupal\forena\FrxPlugin\Document\EmailMerge',
'html' => '\Drupal\forena\FrxPlugin\Document\HTML',
'svg' => '\Drupal\forena\FrxPlugin\Document\SVG',
'xls' => '\Drupal\forena\FrxPlugin\Document\Excel',
'xml' => '\Drupal\forena\FrxPlugin\Document\XML',
];
}
public function getDriverPlugins() {
return [
'FrxDrupal' => '\Drupal\forena\FrxPlugin\Driver\FrxDrupal',
'FrxFiles' => '\Drupal\forena\FrxPlugin\Driver\FrxFiles',
'FrxMSSQL' => '\Drupal\forena\FrxPlugin\Driver\FrxMSSQl',
'FrxOracle' => '\Drupal\forena\FrxPlugin\Driver\FrxOracle',
'FrxPDO' => '\Drupal\forena\FrxPlugin\Driver\FrxPDO',
'FrxPostgres' => '\Drupal\forena\FrxPlugin\Driver\FrxPostgres',
];
}
/**
* Return the forena provided formatter plugin.
* @return array
*/
public function getFormatterPlugins() {
return ['\Drupal\forena\FrxPlugin\FieldFormatter\Formatter'];
}
public function buildParametersForm($parameters) {
$controller = $this->parameterForm;
$form = [];
$form = $controller->buildForm($form, $this->form_state, $parameters);
return $form;
}
public function currentPath() {
return $this->currentPath;
}
public function error($short_message='', $log='') {
echo "$short_message\n";
echo "$log\n";
}
public function debug($short_message='', $log='') {
echo "$short_message\n";
echo "$log\n";
}
public function dataDirectory() {
return $this->data_directory;
}
public function drupalRender(&$elements) {
return $elements;
}
// Override ReportLink because of URL services.
public function reportLink($text, $field) {
$field['href'] = $field['link'];
unset($field['link']);
$field = array_filter($field);
$attributes = '';
foreach ($field as $key => $attr) {
$attributes .= "$key='$attr' ";
}
$attributes = trim($attributes);
return "<a $attributes>$text</a>";
}
public function url($path, $options) {
if (strpos($path,'/')!== 0 && strpos($path, 'http' == FALSE)) {
$path = "/$path";
}
$url = $path;
if (isset($options['query'])) {
$query_string = '?';
foreach($options['query'] as $key => $value) {
$query_string .= "$key=$value&";
}
$query_string = rtrim($query_string, '&');
$url .= $query_string;
}
return $url;
}
/**
*
* @param $menu_id
* @param $max_depth
* @return mixed
*/
public function renderMenu($menu_id, $options=[]) {
return "<ul class='$menu_id'><li>Menu Item</li></ul>\n";
}
}