Fix tests for StrategiesFileManager

This commit is contained in:
Art4 2025-05-16 07:12:08 +00:00
commit 3f1082400a

View file

@ -8,6 +8,7 @@
namespace Friendica\Test\src\Core\Hooks\Util; namespace Friendica\Test\src\Core\Hooks\Util;
use Friendica\Core\Addon\Capability\ICanLoadAddons; use Friendica\Core\Addon\Capability\ICanLoadAddons;
use Friendica\Core\Config\Capability\IManageConfigValues;
use Friendica\Core\Hooks\Capability\ICanRegisterStrategies; use Friendica\Core\Hooks\Capability\ICanRegisterStrategies;
use Friendica\Core\Hooks\Exceptions\HookConfigException; use Friendica\Core\Hooks\Exceptions\HookConfigException;
use Friendica\Core\Hooks\Util\StrategiesFileManager; use Friendica\Core\Hooks\Util\StrategiesFileManager;
@ -33,49 +34,61 @@ class StrategiesFileManagerTest extends MockedTestCase
return [ return [
'normal' => [ 'normal' => [
'content' => <<<EOF 'content' => <<<EOF
<?php <?php
return [ return [
\Psr\Log\LoggerInterface::class => [ \Psr\Log\LoggerInterface::class => [
\Psr\Log\NullLogger::class => [''], \Psr\Log\NullLogger::class => [''],
], ],
]; ];
EOF, EOF,
'addonsArray' => [], 'addonContent' => <<<EOF
<?php
return [];
EOF,
'assertStrategies' => [ 'assertStrategies' => [
[LoggerInterface::class, NullLogger::class, ''], [LoggerInterface::class, NullLogger::class, ''],
], ],
], ],
'normalWithString' => [ 'normalWithString' => [
'content' => <<<EOF 'content' => <<<EOF
<?php <?php
return [ return [
\Psr\Log\LoggerInterface::class => [ \Psr\Log\LoggerInterface::class => [
\Psr\Log\NullLogger::class => '', \Psr\Log\NullLogger::class => '',
], ],
]; ];
EOF, EOF,
'addonsArray' => [], 'addonContent' => <<<EOF
<?php
return [];
EOF,
'assertStrategies' => [ 'assertStrategies' => [
[LoggerInterface::class, NullLogger::class, ''], [LoggerInterface::class, NullLogger::class, ''],
], ],
], ],
'withAddons' => [ 'withAddons' => [
'content' => <<<EOF 'content' => <<<EOF
<?php <?php
return [ return [
\Psr\Log\LoggerInterface::class => [ \Psr\Log\LoggerInterface::class => [
\Psr\Log\NullLogger::class => [''], \Psr\Log\NullLogger::class => [''],
], ],
]; ];
EOF, EOF,
'addonsArray' => [ 'addonContent' => <<<EOF
\Psr\Log\LoggerInterface::class => [ <?php
\Psr\Log\NullLogger::class => ['null'],
], return [
], \Psr\Log\LoggerInterface::class => [
\Psr\Log\NullLogger::class => ['null'],
],
];
EOF,
'assertStrategies' => [ 'assertStrategies' => [
[LoggerInterface::class, NullLogger::class, ''], [LoggerInterface::class, NullLogger::class, ''],
[LoggerInterface::class, NullLogger::class, 'null'], [LoggerInterface::class, NullLogger::class, 'null'],
@ -83,19 +96,23 @@ EOF,
], ],
'withAddonsWithString' => [ 'withAddonsWithString' => [
'content' => <<<EOF 'content' => <<<EOF
<?php <?php
return [ return [
\Psr\Log\LoggerInterface::class => [ \Psr\Log\LoggerInterface::class => [
\Psr\Log\NullLogger::class => [''], \Psr\Log\NullLogger::class => [''],
], ],
]; ];
EOF, EOF,
'addonsArray' => [ 'addonContent' => <<<EOF
\Psr\Log\LoggerInterface::class => [ <?php
\Psr\Log\NullLogger::class => 'null',
], return [
], \Psr\Log\LoggerInterface::class => [
\Psr\Log\NullLogger::class => ['null'],
],
];
EOF,
'assertStrategies' => [ 'assertStrategies' => [
[LoggerInterface::class, NullLogger::class, ''], [LoggerInterface::class, NullLogger::class, ''],
[LoggerInterface::class, NullLogger::class, 'null'], [LoggerInterface::class, NullLogger::class, 'null'],
@ -104,19 +121,23 @@ EOF,
// This should work because unique name convention is part of the instance manager logic, not of the file-infrastructure layer // This should work because unique name convention is part of the instance manager logic, not of the file-infrastructure layer
'withAddonsDoubleNamed' => [ 'withAddonsDoubleNamed' => [
'content' => <<<EOF 'content' => <<<EOF
<?php <?php
return [ return [
\Psr\Log\LoggerInterface::class => [ \Psr\Log\LoggerInterface::class => [
\Psr\Log\NullLogger::class => [''], \Psr\Log\NullLogger::class => [''],
], ],
]; ];
EOF, EOF,
'addonsArray' => [ 'addonContent' => <<<EOF
\Psr\Log\LoggerInterface::class => [ <?php
\Psr\Log\NullLogger::class => [''],
], return [
], \Psr\Log\LoggerInterface::class => [
\Psr\Log\NullLogger::class => [''],
],
];
EOF,
'assertStrategies' => [ 'assertStrategies' => [
[LoggerInterface::class, NullLogger::class, ''], [LoggerInterface::class, NullLogger::class, ''],
[LoggerInterface::class, NullLogger::class, ''], [LoggerInterface::class, NullLogger::class, ''],
@ -128,16 +149,20 @@ EOF,
/** /**
* @dataProvider dataHooks * @dataProvider dataHooks
*/ */
public function testSetupHooks(string $content, array $addonsArray, array $assertStrategies) public function testSetupHooks(string $content, string $addonContent, array $assertStrategies)
{ {
vfsStream::newFile(StrategiesFileManager::STATIC_DIR . '/' . StrategiesFileManager::CONFIG_NAME . '.config.php') vfsStream::newFile(StrategiesFileManager::STATIC_DIR . '/' . StrategiesFileManager::CONFIG_NAME . '.config.php')
->withContent($content) ->withContent($content)
->at($this->root); ->at($this->root);
$addonLoader = \Mockery::mock(ICanLoadAddons::class); vfsStream::newFile('addon/testaddon/' . StrategiesFileManager::STATIC_DIR . '/' . StrategiesFileManager::CONFIG_NAME . '.config.php')
$addonLoader->shouldReceive('getActiveAddonConfig')->andReturn($addonsArray)->once(); ->withContent($addonContent)
->at($this->root);
$hookFileManager = new StrategiesFileManager($this->root->url(), $addonLoader); $config = \Mockery::mock(IManageConfigValues::class);
$config->shouldReceive('get')->andReturn(['testaddon' => ['admin' => false]])->once();
$hookFileManager = new StrategiesFileManager($this->root->url(), $config);
$instanceManager = \Mockery::mock(ICanRegisterStrategies::class); $instanceManager = \Mockery::mock(ICanRegisterStrategies::class);
foreach ($assertStrategies as $assertStrategy) { foreach ($assertStrategies as $assertStrategy) {
@ -155,9 +180,9 @@ EOF,
*/ */
public function testMissingStrategiesFile() public function testMissingStrategiesFile()
{ {
$addonLoader = \Mockery::mock(ICanLoadAddons::class); $config = \Mockery::mock(IManageConfigValues::class);
$instanceManager = \Mockery::mock(ICanRegisterStrategies::class); $instanceManager = \Mockery::mock(ICanRegisterStrategies::class);
$hookFileManager = new StrategiesFileManager($this->root->url(), $addonLoader); $hookFileManager = new StrategiesFileManager($this->root->url(), $config);
self::expectException(HookConfigException::class); self::expectException(HookConfigException::class);
self::expectExceptionMessage(sprintf('config file %s does not exist.', self::expectExceptionMessage(sprintf('config file %s does not exist.',
@ -171,9 +196,9 @@ EOF,
*/ */
public function testWrongStrategiesFile() public function testWrongStrategiesFile()
{ {
$addonLoader = \Mockery::mock(ICanLoadAddons::class); $config = \Mockery::mock(IManageConfigValues::class);
$instanceManager = \Mockery::mock(ICanRegisterStrategies::class); $instanceManager = \Mockery::mock(ICanRegisterStrategies::class);
$hookFileManager = new StrategiesFileManager($this->root->url(), $addonLoader); $hookFileManager = new StrategiesFileManager($this->root->url(), $config);
vfsStream::newFile(StrategiesFileManager::STATIC_DIR . '/' . StrategiesFileManager::CONFIG_NAME . '.config.php') vfsStream::newFile(StrategiesFileManager::STATIC_DIR . '/' . StrategiesFileManager::CONFIG_NAME . '.config.php')
->withContent("<?php return 'WRONG_CONTENT';") ->withContent("<?php return 'WRONG_CONTENT';")