X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=tests%2FUtil%2FAppMockTrait.php;h=59e1b3f556fd55b534344050317b40a06e2a4f19;hb=aa0b485f3dca72c5448076e913fa54d948cd7731;hp=66b95b04e84605023a02c6a316b9fd4eebbc310b;hpb=eafcf3592db02392770cdc88bed9ddb000cb44f2;p=friendica.git diff --git a/tests/Util/AppMockTrait.php b/tests/Util/AppMockTrait.php index 66b95b04e8..59e1b3f556 100644 --- a/tests/Util/AppMockTrait.php +++ b/tests/Util/AppMockTrait.php @@ -1,11 +1,32 @@ . + * + */ namespace Friendica\Test\Util; +use Dice\Dice; use Friendica\App; -use Friendica\BaseObject; use Friendica\Core\Config; +use Friendica\DI; use Friendica\Render\FriendicaSmartyEngine; +use Friendica\Util\Profiler; use Mockery\MockInterface; use org\bovigo\vfs\vfsStreamDirectory; @@ -20,73 +41,110 @@ trait AppMockTrait protected $app; /** - * @var MockInterface|Config\Configuration The mocked Config Cache + * @var MockInterface|Config\IConfig The mocked Config Cache + */ + protected $configMock; + + /** + * @var MockInterface|Profiler The mocked profiler + */ + protected $profilerMock; + + /** + * @var MockInterface|App\Mode The mocked App mode + */ + protected $mode; + + /** + * @var MockInterface|Dice The dependency injection library */ - protected $configCache; + protected $dice; /** * Mock the App * * @param vfsStreamDirectory $root The root directory - * @param MockInterface|Config\Configuration $config The config cache + * @param bool $raw If true, no config mocking will be done */ - public function mockApp($root, Config\Configuration $config) + public function mockApp(vfsStreamDirectory $root, $raw = false) { - $this->configCache = $config; + $this->dice = \Mockery::mock(Dice::class)->makePartial(); + $this->dice = $this->dice->addRules(include __DIR__ . '/../../static/dependencies.config.php'); + + $this->configMock = \Mockery::mock(Config\Cache::class); + $this->dice->shouldReceive('create') + ->with(Config\Cache::class) + ->andReturn($this->configMock); + $this->mode = \Mockery::mock(App\Mode::class); + $this->dice->shouldReceive('create') + ->with(App\Mode::class) + ->andReturn($this->mode); + $configModel= \Mockery::mock(\Friendica\Model\Config\Config::class); + // Disable the adapter + $configModel->shouldReceive('isConnected')->andReturn(false); + + $config = new Config\JitConfig($this->configMock, $configModel); + $this->dice->shouldReceive('create') + ->with(Config\IConfig::class) + ->andReturn($config); + // Mocking App and most used functions $this->app = \Mockery::mock(App::class); + $this->dice->shouldReceive('create') + ->with(App::class) + ->andReturn($this->app); $this->app ->shouldReceive('getBasePath') ->andReturn($root->url()); - $config + $this->profilerMock = \Mockery::mock(Profiler::class); + $this->profilerMock->shouldReceive('saveTimestamp'); + $this->dice->shouldReceive('create') + ->with(Profiler::class) + ->andReturn($this->profilerMock); + + $this->app + ->shouldReceive('getConfigCache') + ->andReturn($this->configMock); + $this->app + ->shouldReceive('getTemplateEngine') + ->andReturn(new FriendicaSmartyEngine('frio', [])); + $this->app + ->shouldReceive('getCurrentTheme') + ->andReturn('Smarty3'); + + DI::init($this->dice); + + if ($raw) { + return; + } + + $this->configMock + ->shouldReceive('has') + ->andReturn(true); + $this->configMock ->shouldReceive('get') ->with('database', 'hostname') ->andReturn(getenv('MYSQL_HOST')); - $config + $this->configMock ->shouldReceive('get') ->with('database', 'username') ->andReturn(getenv('MYSQL_USERNAME')); - $config + $this->configMock ->shouldReceive('get') ->with('database', 'password') ->andReturn(getenv('MYSQL_PASSWORD')); - $config + $this->configMock ->shouldReceive('get') ->with('database', 'database') ->andReturn(getenv('MYSQL_DATABASE')); - $config + $this->configMock ->shouldReceive('get') ->with('config', 'hostname') ->andReturn('localhost'); - $config + $this->configMock ->shouldReceive('get') - ->with('system', 'theme', NULL, false) + ->with('system', 'theme') ->andReturn('system_theme'); - $config - ->shouldReceive('getConfig') - ->andReturn($config); - - $this->app - ->shouldReceive('getConfigCache') - ->andReturn($config); - - $this->app - ->shouldReceive('getTemplateEngine') - ->andReturn(new FriendicaSmartyEngine()); - $this->app - ->shouldReceive('getCurrentTheme') - ->andReturn('Smarty3'); - $this->app - ->shouldReceive('saveTimestamp') - ->andReturn(true); - $this->app - ->shouldReceive('getBaseUrl') - ->andReturn('http://friendica.local'); - - // Initialize empty Config - Config::init($config); - - BaseObject::setApp($this->app); } }