TestHelper::context()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 7
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 3
c 0
b 0
f 0
nc 2
nop 1
dl 0
loc 7
rs 10
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
}