TestHelper::view()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 55
Code Lines 35

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
cc 2
eloc 35
c 2
b 0
f 0
nc 2
nop 2
dl 0
loc 55
rs 9.36

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
3
4
/**
5
 * @license LGPLv3, https://opensource.org/licenses/LGPL-3.0
6
 * @copyright Aimeos (aimeos.org), 2021-2025
7
 */
8
class TestHelper
9
{
10
	private static $aimeos;
11
	private static $context = [];
12
13
14
	public static function bootstrap()
15
	{
16
		$aimeos = self::getAimeos();
17
18
		$includepaths = $aimeos->getIncludePaths();
19
		$includepaths[] = get_include_path();
20
		set_include_path( implode( PATH_SEPARATOR, $includepaths ) );
21
	}
22
23
24
	public static function getAimeos()
25
	{
26
		if( !isset( self::$aimeos ) )
27
		{
28
			require_once 'Bootstrap.php';
29
			spl_autoload_register( 'Aimeos\\Bootstrap::autoload' );
30
31
			self::$aimeos = new \Aimeos\Bootstrap();
32
		}
33
34
		return self::$aimeos;
35
	}
36
37
38
	public static function context( $site = 'unittest' )
39
	{
40
		if( !isset( self::$context[$site] ) ) {
41
			self::$context[$site] = self::createContext( $site );
42
		}
43
44
		return clone self::$context[$site];
45
	}
46
47
48
	private static function createContext( $site )
49
	{
50
		$ctx = new \Aimeos\MShop\Context();
51
		$aimeos = self::getAimeos();
52
53
54
		$paths = $aimeos->getConfigPaths();
55
		$paths[] = __DIR__ . DIRECTORY_SEPARATOR . 'config';
56
57
		$conf = new \Aimeos\Base\Config\PHPArray( array(), $paths );
58
		$ctx->setConfig( $conf );
59
60
61
		$dbm = new \Aimeos\Base\DB\Manager\Standard( $conf->get( 'resource', [] ), 'DBAL' );
62
		$ctx->setDatabaseManager( $dbm );
63
64
65
		$logger = new \Aimeos\Base\Logger\File( $site . '.log', \Aimeos\Base\Logger\Iface::DEBUG );
66
		$ctx->setLogger( $logger );
67
68
69
		$cache = new \Aimeos\Base\Cache\None();
70
		$ctx->setCache( $cache );
71
72
73
		$passwd = new \Aimeos\Base\Password\Standard();
74
		$ctx->setPassword( $passwd );
75
76
77
		$mail = new \Aimeos\Base\Mail\Manager\None();
78
		$ctx->setMail( $mail );
79
80
81
		$i18n = new \Aimeos\Base\Translation\None( 'en' );
82
		$ctx->setI18n( array( 'en' => $i18n ) );
83
84
85
		$session = new \Aimeos\Base\Session\None();
86
		$ctx->setSession( $session );
87
88
89
		$localeManager = \Aimeos\MShop::create( $ctx, 'locale' );
90
		$locale = $localeManager->bootstrap( $site, '', '', false );
0 ignored issues
show
Bug introduced by
The method bootstrap() does not exist on Aimeos\MShop\Common\Manager\Iface. It seems like you code against a sub-type of said class. However, the method does not exist in Aimeos\MShop\Common\Manager\Decorator\Iface or Aimeos\MShop\Order\Manag...rvice\Transaction\Iface or Aimeos\MShop\Price\Manager\Iface or Aimeos\MShop\Type\Manager\Iface or Aimeos\MShop\Order\Manager\Service\Iface or Aimeos\MShop\Review\Manager\Iface or Aimeos\MShop\Coupon\Manager\Code\Iface or Aimeos\MShop\Product\Manager\Iface or Aimeos\MShop\Supplier\Manager\Iface or Aimeos\MShop\Common\Manager\Property\Iface or Aimeos\MShop\Customer\Manager\Property\Iface or Aimeos\MShop\Locale\Manager\Currency\Iface or Aimeos\MShop\Tag\Manager\Iface or Aimeos\MShop\Coupon\Manager\Iface or Aimeos\MShop\Attribute\Manager\Iface or Aimeos\MShop\Common\Manager\Lists\Iface or Aimeos\MShop\Order\Manager\Address\Iface or Aimeos\MShop\Order\Manager\Product\Attribute\Iface or Aimeos\MShop\Order\Manager\Iface or Aimeos\MShop\Customer\Manager\Iface or Aimeos\MShop\Media\Manager\Iface or Aimeos\MShop\Order\Manager\Coupon\Iface or Aimeos\MShop\Plugin\Manager\Iface or Aimeos\MShop\Group\Manager\Iface or Aimeos\MShop\Catalog\Manager\Iface or Aimeos\MShop\Locale\Manager\Site\Iface or Aimeos\MShop\Order\Manager\Service\Attribute\Iface or Aimeos\MShop\Text\Manager\Iface or Aimeos\MAdmin\Job\Manager\Iface or Aimeos\MShop\Cms\Manager\Iface or Aimeos\MShop\Order\Manager\Status\Iface or Aimeos\MShop\Rule\Manager\Iface or Aimeos\MShop\Common\Manager\Address\Iface or Aimeos\MShop\Basket\Manager\Iface or Aimeos\MShop\Stock\Manager\Iface or Aimeos\MShop\Attribute\Manager\Property\Iface or Aimeos\MShop\Subscription\Manager\Iface or Aimeos\MShop\Product\Manager\Property\Iface or Aimeos\MShop\Locale\Manager\Language\Iface or Aimeos\MShop\Media\Manager\Property\Iface or Aimeos\MShop\Service\Manager\Iface or Aimeos\MAdmin\Log\Manager\Iface or Aimeos\MShop\Cms\Manager\Lists\Iface or Aimeos\MAdmin\Cache\Manager\Iface or Aimeos\MShop\Order\Manager\Product\Iface or Aimeos\MShop\Price\Manager\Property\Iface or Aimeos\MShop\Service\Manager\Lists\Type\Iface or Aimeos\MShop\Attribute\Manager\Type\Iface or Aimeos\MShop\Price\Manager\Lists\Type\Iface or Aimeos\MShop\Media\Manager\Type\Iface or Aimeos\MShop\Price\Manager\Property\Type\Iface or Aimeos\MShop\Cms\Manager\Lists\Type\Iface or Aimeos\MShop\Supplier\Manager\Lists\Type\Iface or Aimeos\MShop\Tag\Manager\Type\Iface or Aimeos\MShop\Price\Manager\Type\Iface or Aimeos\MShop\Media\Manager\Lists\Type\Iface or Aimeos\MShop\Attribute\Manager\Property\Type\Iface or Aimeos\MShop\Service\Manager\Type\Iface or Aimeos\MShop\Customer\Manager\Property\Type\Iface or Aimeos\MShop\Rule\Manager\Type\Iface or Aimeos\MShop\Customer\Manager\Lists\Type\Iface or Aimeos\MShop\Product\Manager\Property\Type\Iface or Aimeos\MShop\Product\Manager\Type\Iface or Aimeos\MShop\Stock\Manager\Type\Iface or Aimeos\MShop\Product\Manager\Lists\Type\Iface or Aimeos\MShop\Text\Manager\Lists\Type\Iface or Aimeos\MShop\Text\Manager\Type\Iface or Aimeos\MShop\Plugin\Manager\Type\Iface or Aimeos\MShop\Media\Manager\Property\Type\Iface or Aimeos\MShop\Attribute\Manager\Lists\Type\Iface or Aimeos\MShop\Catalog\Manager\Lists\Type\Iface or Aimeos\MShop\Price\Manager\Lists\Iface or Aimeos\MShop\Service\Manager\Lists\Iface or Aimeos\MShop\Text\Manager\Lists\Iface or Aimeos\MShop\Catalog\Manager\Lists\Iface or Aimeos\MShop\Product\Manager\Lists\Iface or Aimeos\MShop\Attribute\Manager\Lists\Iface or Aimeos\MShop\Media\Manager\Lists\Iface or Aimeos\MShop\Supplier\Manager\Lists\Iface or Aimeos\MShop\Customer\Manager\Lists\Iface or Aimeos\MShop\Supplier\Manager\Address\Iface or Aimeos\MShop\Customer\Manager\Address\Iface. Are you sure you never get one of those? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

90
		/** @scrutinizer ignore-call */ 
91
  $locale = $localeManager->bootstrap( $site, '', '', false );
Loading history...
91
		$ctx->setLocale( $locale );
92
93
		$view = self::view( $site, $conf );
94
		$ctx->setView( $view );
95
96
97
		return $ctx->setEditor( 'ai-cms-grapesjs' );
98
	}
99
100
101
	public static function view( $site = 'unittest', ?\Aimeos\Base\Config\Iface $config = null )
102
	{
103
		$aimeos = self::getAimeos();
104
105
		if( $config === null ) {
106
			$config = self::context( $site )->config();
107
		}
108
109
		$templates = array_merge_recursive(
110
			$aimeos->getTemplatePaths( 'admin/jqadm/templates' ),
111
			$aimeos->getTemplatePaths( 'client/html/templates' ),
112
			$aimeos->getTemplatePaths( 'client/jsonapi/templates' )
113
		);
114
115
		$view = new \Aimeos\Base\View\Standard( $templates );
116
117
		$helper = new \Aimeos\Base\View\Helper\Param\Standard( $view, ['site' => 'unittest'] );
118
		$view->addHelper( 'param', $helper );
119
120
		$helper = new \Aimeos\Base\View\Helper\Access\All( $view );
121
		$view->addHelper( 'access', $helper );
122
123
		$trans = new \Aimeos\Base\Translation\None( 'de_DE' );
124
		$helper = new \Aimeos\Base\View\Helper\Translate\Standard( $view, $trans );
125
		$view->addHelper( 'translate', $helper );
126
127
		$helper = new \Aimeos\Base\View\Helper\Url\Standard( $view, 'http://baseurl' );
128
		$view->addHelper( 'url', $helper );
129
130
		$helper = new \Aimeos\Base\View\Helper\Number\Standard( $view, '.', '' );
131
		$view->addHelper( 'number', $helper );
132
133
		$helper = new \Aimeos\Base\View\Helper\Date\Standard( $view, 'Y-m-d' );
134
		$view->addHelper( 'date', $helper );
135
136
		$config = new \Aimeos\Base\Config\Decorator\Protect( $config, ['version', 'admin', 'client', 'resource/fs/baseurl', 'resource/fs-media/baseurl', 'resource/fs-theme/baseurl'] );
137
		$helper = new \Aimeos\Base\View\Helper\Config\Standard( $view, $config );
138
		$view->addHelper( 'config', $helper );
139
140
		$helper = new \Aimeos\Base\View\Helper\Session\Standard( $view, new \Aimeos\Base\Session\None() );
141
		$view->addHelper( 'session', $helper );
142
143
		$psr17Factory = new \Nyholm\Psr7\Factory\Psr17Factory();
144
		$helper = new \Aimeos\Base\View\Helper\Request\Standard( $view, $psr17Factory->createServerRequest( 'GET', 'https://aimeos.org' ) );
145
		$view->addHelper( 'request', $helper );
146
147
		$helper = new \Aimeos\Base\View\Helper\Response\Standard( $view, $psr17Factory->createResponse() );
148
		$view->addHelper( 'response', $helper );
149
150
		$helper = new \Aimeos\Base\View\Helper\Csrf\Standard( $view, '_csrf_token', '_csrf_value' );
151
		$view->addHelper( 'csrf', $helper );
152
153
		$view->pageSitePath = [];
154
155
		return $view;
156
	}
157
}