Skip to content
Snippets Groups Projects
Commit c8c8b1f4 authored by Nikita Hovratov's avatar Nikita Hovratov Committed by Christian Kuhn
Browse files

[TASK] Replace prophecy in EXT:core ResolverTest

Resolves: #98760
Releases: main
Change-Id: Ib497b35c6201d2859cfb4865f641fa4b60d1fcc7
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/76696


Tested-by: default avatarcore-ci <typo3@b13.com>
Tested-by: default avatarOliver Klee <typo3-coding@oliverklee.de>
Reviewed-by: default avatarOliver Klee <typo3-coding@oliverklee.de>
Tested-by: default avatarChristian Kuhn <lolli@schwarzbu.ch>
Reviewed-by: default avatarChristian Kuhn <lolli@schwarzbu.ch>
parent 4a4a2af2
Branches
Tags
No related merge requests found
...@@ -17,22 +17,17 @@ declare(strict_types=1); ...@@ -17,22 +17,17 @@ declare(strict_types=1);
namespace TYPO3\CMS\Core\Tests\Unit\ExpressionLanguage; namespace TYPO3\CMS\Core\Tests\Unit\ExpressionLanguage;
use Prophecy\Argument;
use Prophecy\PhpUnit\ProphecyTrait; use Prophecy\PhpUnit\ProphecyTrait;
use Symfony\Component\ExpressionLanguage\ExpressionFunction; 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\DefaultProvider;
use TYPO3\CMS\Core\ExpressionLanguage\FunctionsProvider\DefaultFunctionsProvider; use TYPO3\CMS\Core\ExpressionLanguage\FunctionsProvider\DefaultFunctionsProvider;
use TYPO3\CMS\Core\ExpressionLanguage\ProviderConfigurationLoader; use TYPO3\CMS\Core\ExpressionLanguage\ProviderConfigurationLoader;
use TYPO3\CMS\Core\ExpressionLanguage\Resolver; use TYPO3\CMS\Core\ExpressionLanguage\Resolver;
use TYPO3\CMS\Core\Package\PackageInterface; use TYPO3\CMS\Core\Tests\Unit\Utility\AccessibleProxies\ExtensionManagementUtilityAccessibleProxy;
use TYPO3\CMS\Core\Package\PackageManager;
use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\TestingFramework\Core\Unit\UnitTestCase; use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
/**
* Class ResolverTest
*/
class ResolverTest extends UnitTestCase class ResolverTest extends UnitTestCase
{ {
use ProphecyTrait; use ProphecyTrait;
...@@ -40,28 +35,19 @@ class ResolverTest extends UnitTestCase ...@@ -40,28 +35,19 @@ class ResolverTest extends UnitTestCase
public function setUp(): void public function setUp(): void
{ {
parent::setUp(); 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( GeneralUtility::addInstance(ProviderConfigurationLoader::class, new ProviderConfigurationLoader(
$packageManagerProphecy->reveal(), ExtensionManagementUtilityAccessibleProxy::getPackageManager(),
$cacheFrontendProphecy->reveal(), new NullFrontend('test'),
'ExpressionLanguageProviders' 'ExpressionLanguageProviders'
)); ));
} }
/** public function tearDown(): void
* @return array {
*/ GeneralUtility::purgeInstances();
parent::tearDown();
}
public function basicExpressionsDataHandler(): array public function basicExpressionsDataHandler(): array
{ {
return [ return [
...@@ -78,18 +64,13 @@ class ResolverTest extends UnitTestCase ...@@ -78,18 +64,13 @@ class ResolverTest extends UnitTestCase
/** /**
* @test * @test
* @dataProvider basicExpressionsDataHandler * @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', []); $expressionLanguageResolver = new Resolver('default', []);
self::assertSame($expectedResult, $expressionLanguageResolver->evaluate($expression)); self::assertSame($expectedResult, $expressionLanguageResolver->evaluate($expression));
} }
/**
* @return array
*/
public function basicExpressionsWithVariablesDataHandler(): array public function basicExpressionsWithVariablesDataHandler(): array
{ {
return [ return [
...@@ -106,20 +87,18 @@ class ResolverTest extends UnitTestCase ...@@ -106,20 +87,18 @@ class ResolverTest extends UnitTestCase
/** /**
* @test * @test
* @dataProvider basicExpressionsWithVariablesDataHandler * @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); $contextMock = $this->createMock(DefaultProvider::class);
$contextProphecy->getExpressionLanguageProviders()->willReturn([]); $contextMock->method('getExpressionLanguageProviders')->willReturn([]);
$contextProphecy->getExpressionLanguageVariables()->willReturn([ $contextMock->method('getExpressionLanguageVariables')->willReturn([
'var1' => '1', 'var1' => '1',
'var2' => '2', 'var2' => '2',
'varTrue' => true, 'varTrue' => true,
'varFalse' => false, 'varFalse' => false,
]); ]);
GeneralUtility::addInstance(DefaultProvider::class, $contextProphecy->reveal()); GeneralUtility::addInstance(DefaultProvider::class, $contextMock);
$expressionLanguageResolver = new Resolver('default', []); $expressionLanguageResolver = new Resolver('default', []);
self::assertSame($expectedResult, $expressionLanguageResolver->evaluate($expression)); self::assertSame($expectedResult, $expressionLanguageResolver->evaluate($expression));
} }
...@@ -145,22 +124,22 @@ class ResolverTest extends UnitTestCase ...@@ -145,22 +124,22 @@ class ResolverTest extends UnitTestCase
*/ */
public function basicExpressionHandlingWithCustomVariablesAndExpressionLanguageProviderWorksAsExpected(string $expression, $expectedResult): void public function basicExpressionHandlingWithCustomVariablesAndExpressionLanguageProviderWorksAsExpected(string $expression, $expectedResult): void
{ {
$expressionProvider = $this->prophesize(DefaultFunctionsProvider::class); $expressionProviderMock = $this->createMock(DefaultFunctionsProvider::class);
$expressionProvider->getFunctions()->willReturn([ $expressionProviderMock->method('getFunctions')->willReturn([
new ExpressionFunction('testMeLowercase', static function ($str) { new ExpressionFunction('testMeLowercase', static function ($str) {
return sprintf('(is_string(%1$s) ? strtolower(%1$s) : %1$s)', $str); return sprintf('(is_string(%1$s) ? strtolower(%1$s) : %1$s)', $str);
}, static function ($arguments, $str) { }, static function ($arguments, $str) {
return is_string($str) ? strtolower($str) : $str; return is_string($str) ? strtolower($str) : $str;
}), }),
]); ]);
$contextProphecy = $this->prophesize(DefaultProvider::class); $contextMock = $this->createMock(DefaultProvider::class);
$contextProphecy->getExpressionLanguageProviders()->willReturn([DefaultFunctionsProvider::class]); $contextMock->method('getExpressionLanguageProviders')->willReturn([DefaultFunctionsProvider::class]);
$contextProphecy->getExpressionLanguageVariables()->willReturn([ $contextMock->method('getExpressionLanguageVariables')->willReturn([
'var1' => 'FOO', 'var1' => 'FOO',
'var2' => 'foo', 'var2' => 'foo',
]); ]);
GeneralUtility::addInstance(DefaultProvider::class, $contextProphecy->reveal()); GeneralUtility::addInstance(DefaultProvider::class, $contextMock);
GeneralUtility::addInstance(DefaultFunctionsProvider::class, $expressionProvider->reveal()); GeneralUtility::addInstance(DefaultFunctionsProvider::class, $expressionProviderMock);
$expressionLanguageResolver = new Resolver('default', []); $expressionLanguageResolver = new Resolver('default', []);
self::assertSame($expectedResult, $expressionLanguageResolver->evaluate($expression)); self::assertSame($expectedResult, $expressionLanguageResolver->evaluate($expression));
} }
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment