X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=tests%2FUtil%2FAppMockTrait.php;h=59e1b3f556fd55b534344050317b40a06e2a4f19;hb=aa0b485f3dca72c5448076e913fa54d948cd7731;hp=4fd340fbed59099ae7ec9939053b9cb2d26a795c;hpb=0ccdc2ec0e8682efad5a5aed86e424f2b495a64c;p=friendica.git diff --git a/tests/Util/AppMockTrait.php b/tests/Util/AppMockTrait.php index 4fd340fbed..59e1b3f556 100644 --- a/tests/Util/AppMockTrait.php +++ b/tests/Util/AppMockTrait.php @@ -1,10 +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; @@ -13,62 +35,116 @@ use org\bovigo\vfs\vfsStreamDirectory; */ trait AppMockTrait { - use ConfigMockTrait; - /** * @var MockInterface|App The mocked Friendica\App */ protected $app; + /** + * @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 $dice; + /** * Mock the App * * @param vfsStreamDirectory $root The root directory + * @param bool $raw If true, no config mocking will be done */ - public function mockApp($root) + public function mockApp(vfsStreamDirectory $root, $raw = false) { - // simply returning the input when using L10n::t() - $l10nMock = \Mockery::mock('alias:Friendica\Core\L10n'); - $l10nMock->shouldReceive('t') - ->andReturnUsing(function ($arg) { return $arg; }); + $this->dice = \Mockery::mock(Dice::class)->makePartial(); + $this->dice = $this->dice->addRules(include __DIR__ . '/../../static/dependencies.config.php'); - $this->mockConfigGet('system', 'theme', 'testtheme'); + $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()); + $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('getConfigValue') + ->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')); - $this->app - ->shouldReceive('getConfigValue') + $this->configMock + ->shouldReceive('get') ->with('database', 'username') ->andReturn(getenv('MYSQL_USERNAME')); - $this->app - ->shouldReceive('getConfigValue') + $this->configMock + ->shouldReceive('get') ->with('database', 'password') ->andReturn(getenv('MYSQL_PASSWORD')); - $this->app - ->shouldReceive('getConfigValue') + $this->configMock + ->shouldReceive('get') ->with('database', 'database') ->andReturn(getenv('MYSQL_DATABASE')); - $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'); - - BaseObject::setApp($this->app); + $this->configMock + ->shouldReceive('get') + ->with('config', 'hostname') + ->andReturn('localhost'); + $this->configMock + ->shouldReceive('get') + ->with('system', 'theme') + ->andReturn('system_theme'); } }