diff --git a/typo3/sysext/core/Tests/Unit/ExpressionLanguage/ResolverTest.php b/typo3/sysext/core/Tests/Unit/ExpressionLanguage/ResolverTest.php index 9f581f21cfedebfde2e5c7e5d1368cb8a20c31c0..203e6c516100552052d16d060b8d9024a1cad9f1 100644 --- a/typo3/sysext/core/Tests/Unit/ExpressionLanguage/ResolverTest.php +++ b/typo3/sysext/core/Tests/Unit/ExpressionLanguage/ResolverTest.php @@ -17,22 +17,17 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\ExpressionLanguage; -use Prophecy\Argument; use Prophecy\PhpUnit\ProphecyTrait; use Symfony\Component\ExpressionLanguage\ExpressionFunction; -use TYPO3\CMS\Core\Cache\Frontend\PhpFrontend; +use TYPO3\CMS\Core\Cache\Frontend\NullFrontend; use TYPO3\CMS\Core\ExpressionLanguage\DefaultProvider; use TYPO3\CMS\Core\ExpressionLanguage\FunctionsProvider\DefaultFunctionsProvider; use TYPO3\CMS\Core\ExpressionLanguage\ProviderConfigurationLoader; use TYPO3\CMS\Core\ExpressionLanguage\Resolver; -use TYPO3\CMS\Core\Package\PackageInterface; -use TYPO3\CMS\Core\Package\PackageManager; +use TYPO3\CMS\Core\Tests\Unit\Utility\AccessibleProxies\ExtensionManagementUtilityAccessibleProxy; use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; -/** - * Class ResolverTest - */ class ResolverTest extends UnitTestCase { use ProphecyTrait; @@ -40,28 +35,19 @@ class ResolverTest extends UnitTestCase public function setUp(): void { parent::setUp(); - - $cacheFrontendProphecy = $this->prophesize(PhpFrontend::class); - $cacheFrontendProphecy->require(Argument::any())->willReturn(false); - $cacheFrontendProphecy->set(Argument::any(), Argument::any())->willReturn(null); - - $packageManagerProphecy = $this->prophesize(PackageManager::class); - $corePackageProphecy = $this->prophesize(PackageInterface::class); - $corePackageProphecy->getPackagePath()->willReturn(__DIR__ . '/../../../../../../../sysext/core/'); - $packageManagerProphecy->getActivePackages()->willReturn([ - $corePackageProphecy->reveal(), - ]); - GeneralUtility::addInstance(ProviderConfigurationLoader::class, new ProviderConfigurationLoader( - $packageManagerProphecy->reveal(), - $cacheFrontendProphecy->reveal(), + ExtensionManagementUtilityAccessibleProxy::getPackageManager(), + new NullFrontend('test'), 'ExpressionLanguageProviders' )); } - /** - * @return array - */ + public function tearDown(): void + { + GeneralUtility::purgeInstances(); + parent::tearDown(); + } + public function basicExpressionsDataHandler(): array { return [ @@ -78,18 +64,13 @@ class ResolverTest extends UnitTestCase /** * @test * @dataProvider basicExpressionsDataHandler - * @param string $expression - * @param mixed $expectedResult */ - public function basicExpressionHandlingResultsWorksAsExpected(string $expression, $expectedResult): void + public function basicExpressionHandlingResultsWorksAsExpected(string $expression, bool $expectedResult): void { $expressionLanguageResolver = new Resolver('default', []); self::assertSame($expectedResult, $expressionLanguageResolver->evaluate($expression)); } - /** - * @return array - */ public function basicExpressionsWithVariablesDataHandler(): array { return [ @@ -106,20 +87,18 @@ class ResolverTest extends UnitTestCase /** * @test * @dataProvider basicExpressionsWithVariablesDataHandler - * @param string $expression - * @param mixed $expectedResult */ - public function basicExpressionHandlingWithCustomVariablesWorksAsExpected(string $expression, $expectedResult): void + public function basicExpressionHandlingWithCustomVariablesWorksAsExpected(string $expression, bool $expectedResult): void { - $contextProphecy = $this->prophesize(DefaultProvider::class); - $contextProphecy->getExpressionLanguageProviders()->willReturn([]); - $contextProphecy->getExpressionLanguageVariables()->willReturn([ + $contextMock = $this->createMock(DefaultProvider::class); + $contextMock->method('getExpressionLanguageProviders')->willReturn([]); + $contextMock->method('getExpressionLanguageVariables')->willReturn([ 'var1' => '1', 'var2' => '2', 'varTrue' => true, 'varFalse' => false, ]); - GeneralUtility::addInstance(DefaultProvider::class, $contextProphecy->reveal()); + GeneralUtility::addInstance(DefaultProvider::class, $contextMock); $expressionLanguageResolver = new Resolver('default', []); self::assertSame($expectedResult, $expressionLanguageResolver->evaluate($expression)); } @@ -145,22 +124,22 @@ class ResolverTest extends UnitTestCase */ public function basicExpressionHandlingWithCustomVariablesAndExpressionLanguageProviderWorksAsExpected(string $expression, $expectedResult): void { - $expressionProvider = $this->prophesize(DefaultFunctionsProvider::class); - $expressionProvider->getFunctions()->willReturn([ + $expressionProviderMock = $this->createMock(DefaultFunctionsProvider::class); + $expressionProviderMock->method('getFunctions')->willReturn([ new ExpressionFunction('testMeLowercase', static function ($str) { return sprintf('(is_string(%1$s) ? strtolower(%1$s) : %1$s)', $str); }, static function ($arguments, $str) { return is_string($str) ? strtolower($str) : $str; }), ]); - $contextProphecy = $this->prophesize(DefaultProvider::class); - $contextProphecy->getExpressionLanguageProviders()->willReturn([DefaultFunctionsProvider::class]); - $contextProphecy->getExpressionLanguageVariables()->willReturn([ + $contextMock = $this->createMock(DefaultProvider::class); + $contextMock->method('getExpressionLanguageProviders')->willReturn([DefaultFunctionsProvider::class]); + $contextMock->method('getExpressionLanguageVariables')->willReturn([ 'var1' => 'FOO', 'var2' => 'foo', ]); - GeneralUtility::addInstance(DefaultProvider::class, $contextProphecy->reveal()); - GeneralUtility::addInstance(DefaultFunctionsProvider::class, $expressionProvider->reveal()); + GeneralUtility::addInstance(DefaultProvider::class, $contextMock); + GeneralUtility::addInstance(DefaultFunctionsProvider::class, $expressionProviderMock); $expressionLanguageResolver = new Resolver('default', []); self::assertSame($expectedResult, $expressionLanguageResolver->evaluate($expression)); }