Skip to content

Commit

Permalink
[TASK] Make tests run on v13
Browse files Browse the repository at this point in the history
  • Loading branch information
NamelessCoder committed Jan 28, 2025
1 parent 388420f commit f88f02b
Show file tree
Hide file tree
Showing 13 changed files with 196 additions and 49 deletions.
15 changes: 6 additions & 9 deletions Classes/ViewHelpers/Condition/Page/IsLanguageViewHelper.php
Original file line number Diff line number Diff line change
Expand Up @@ -42,15 +42,11 @@ public static function verdict(array $arguments, RenderingContextInterface $rend
/** @var string $defaultTitle */
$defaultTitle = $arguments['defaultTitle'];

if (class_exists(LanguageAspect::class)) {
/** @var Context $context */
$context = GeneralUtility::makeInstance(Context::class);
/** @var LanguageAspect $languageAspect */
$languageAspect = $context->getAspect('language');
$currentLanguageUid = $languageAspect->getId();
} else {
$currentLanguageUid = $GLOBALS['TSFE']->sys_language_uid;
}
/** @var Context $context */
$context = GeneralUtility::makeInstance(Context::class);
/** @var LanguageAspect $languageAspect */
$languageAspect = $context->getAspect('language');
$currentLanguageUid = $languageAspect->getId();

if (is_numeric($language)) {
$languageUid = intval($language);
Expand Down Expand Up @@ -81,6 +77,7 @@ public static function verdict(array $arguments, RenderingContextInterface $rend
}
}
}

return $languageUid === $currentLanguageUid;
}
}
14 changes: 13 additions & 1 deletion Classes/ViewHelpers/Resource/LanguageViewHelper.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,10 @@
use FluidTYPO3\Vhs\Traits\TemplateVariableViewHelperTrait;
use FluidTYPO3\Vhs\Utility\ContextUtility;
use FluidTYPO3\Vhs\Utility\RequestResolver;
use Psr\Http\Message\ServerRequestInterface;
use TYPO3\CMS\Core\Localization\Locale;
use TYPO3\CMS\Core\Localization\LocalizationFactory;
use TYPO3\CMS\Core\Site\Entity\SiteLanguage;
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Lang\LanguageService;
Expand Down Expand Up @@ -161,7 +164,16 @@ protected function getInitializedLanguage(): string
$language = 'default';

if (ContextUtility::isFrontend()) {
$language = $GLOBALS['TSFE']->lang;
/** @var ServerRequestInterface $request */
$request = $GLOBALS['TYPO3_REQUEST'];
/** @var SiteLanguage $language */
$language = $request->getAttribute('language');
/** @var Locale|string $locale */
$locale = $language->getLocale();
if (is_string($locale)) {
return $locale;
}
return $locale->getLanguageCode();
} elseif ($GLOBALS['LANG'] instanceof LanguageService) {
$language = $GLOBALS['LANG']->lang;
}
Expand Down
1 change: 0 additions & 1 deletion Classes/ViewHelpers/Resource/Record/FalViewHelper.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
use TYPO3\CMS\Core\Database\Query\QueryBuilder;
use TYPO3\CMS\Core\Resource\Exception\ResourceDoesNotExistException;
use TYPO3\CMS\Core\Resource\FileReference;
use TYPO3\CMS\Core\Resource\FileRepository;
use TYPO3\CMS\Core\Utility\ArrayUtility;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Core\Versioning\VersionState;
Expand Down
2 changes: 1 addition & 1 deletion Tests/Unit/Service/PageServiceTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public function testGetMenu(): void
$pageRepository = $this->createPageRepositoryMock(['getPage', 'getMenu', 'getPageOverlay']);
$pageRepository->method('getPage')->willReturn(['uid' => 2]);
$pageRepository->method('getMenu')->willReturn([['uid' => 2]]);
$pageRepository->method('getPageOverlay')->willReturn(null);
$pageRepository->method('getPageOverlay')->willReturn([]);

$subject = $this->getMockBuilder(PageService::class)
->setMethods(['getPageRepository'])
Expand Down
25 changes: 20 additions & 5 deletions Tests/Unit/ViewHelpers/AbstractViewHelperTestCase.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
use FluidTYPO3\Vhs\Tests\Fixtures\Classes\DummyViewHelperNode;
use FluidTYPO3\Vhs\Tests\Unit\AbstractTestCase;
use PHPUnit\Framework\MockObject\MockObject;
use Psr\Http\Message\ServerRequestInterface;
use TYPO3\CMS\Backend\Controller\DummyController;
use TYPO3\CMS\Core\Core\SystemEnvironmentBuilder;
use TYPO3\CMS\Core\Http\ServerRequest;
Expand All @@ -25,6 +26,7 @@
use TYPO3\CMS\Fluid\Core\ViewHelper\ViewHelperResolver;
use TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer;
use TYPO3Fluid\Fluid\Core\ErrorHandler\ErrorHandlerInterface;
use TYPO3Fluid\Fluid\Core\ErrorHandler\StandardErrorHandler;
use TYPO3Fluid\Fluid\Core\Parser\SyntaxTree\NodeInterface;
use TYPO3Fluid\Fluid\Core\Parser\SyntaxTree\ObjectAccessorNode;
use TYPO3Fluid\Fluid\Core\Parser\SyntaxTree\ViewHelperNode;
Expand Down Expand Up @@ -111,10 +113,9 @@ protected function setUp(): void
$this->renderingContext = $this->getMockBuilder(RenderingContext::class)
->disableOriginalConstructor()
->getMock();
$this->errorHandler = $this->getMockBuilder(ErrorHandlerInterface::class)->getMockForAbstractClass();
$this->errorHandler = new StandardErrorHandler();
$this->templateParser = new TemplateParser();
$this->templateParser->setRenderingContext($this->renderingContext);
$this->errorHandler->method('handleViewHelperError')->willThrowException(new Exception('dummy'));
$this->renderingContext->method('getViewHelperResolver')->willReturn($this->viewHelperResolver);

$this->renderingContext->method('getViewHelperVariableContainer')->willReturn(
Expand Down Expand Up @@ -202,9 +203,23 @@ protected function createInstance(): ViewHelperInterface
if (method_exists($instance, 'injectConfigurationManager')) {
$cObject = $this->getMockBuilder(ContentObjectRenderer::class)->disableOriginalConstructor()->getMock();
$cObject->start(['uid' => 123], 'tt_content');
/** @var ConfigurationManagerInterface $configurationManager */
$configurationManager = $this->getMockBuilder(ConfigurationManagerInterface::class)->getMockForAbstractClass();
$configurationManager->method('getContentObject')->willReturn($cObject);

if (method_exists(ConfigurationManagerInterface::class, 'getContentObject')) {
/** @var ConfigurationManagerInterface $configurationManager */
$configurationManager = $this->getMockBuilder(ConfigurationManagerInterface::class)->getMock();
$configurationManager->method('getContentObject')->willReturn($cObject);
} else {
$request = $this->getMockBuilder(ServerRequestInterface::class)->getMock();
$request->method('getAttribute')->willReturn($cObject);

/** @var ConfigurationManagerInterface $configurationManager */
$configurationManager = $this->getMockBuilder(ConfigurationManagerInterface::class)
->onlyMethods(['getConfiguration', 'setConfiguration', 'setRequest'])
->addMethods(['getRequest'])
->getMock();
$configurationManager->method('getRequest')->willReturn($request);
}

$instance->injectConfigurationManager($configurationManager);
}
$instance->setRenderingContext($this->renderingContext);
Expand Down
70 changes: 55 additions & 15 deletions Tests/Unit/ViewHelpers/Condition/Page/IsLanguageViewHelperTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,30 +8,70 @@
* LICENSE.md file that was distributed with this source code.
*/

use FluidTYPO3\Vhs\Tests\Fixtures\Classes\DummyQueryBuilder;
use FluidTYPO3\Vhs\Tests\Unit\ViewHelpers\AbstractViewHelperTest;
use FluidTYPO3\Vhs\Tests\Unit\ViewHelpers\AbstractViewHelperTestCase;
use FluidTYPO3\Vhs\ViewHelpers\Condition\Page\IsLanguageViewHelper;
use TYPO3\CMS\Core\Context\Context;
use TYPO3\CMS\Core\Context\LanguageAspect;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Database\DatabaseConnection;
use TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Core\Utility\VersionNumberUtility;
use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;

/**
* Class IsLanguageViewHelperTest
*/
class IsLanguageViewHelperTest extends AbstractViewHelperTestCase
{
public function testRender()
protected function setUp(): void
{
$GLOBALS['TYPO3_DB'] = $this->getMockBuilder(DatabaseConnection::class)->setMethods(['exec_SELECTgetSingleRow'])->disableOriginalConstructor()->getMock();
$GLOBALS['TYPO3_DB']->expects($this->any())->method('exec_SELECTgetSingleRow')->will($this->returnValue(false));

$GLOBALS['TSFE'] = $this->getMockBuilder(TypoScriptFrontendController::class)->disableOriginalConstructor()->getMock();
$GLOBALS['TSFE']->expects($this->any())->method('__get')->with('sys_language_uid')->willReturn(0);

$arguments = [
'then' => 'then',
'else' => 'else',
'language' => 0
];
$result = $this->executeViewHelper($arguments);
$this->assertEquals('then', $result);
$language = $this->getMockBuilder(LanguageAspect::class)
->onlyMethods(['getId'])
->disableOriginalConstructor()
->getMock();
$language->method('getId')->willReturn(123);

$context = $this->getMockBuilder(Context::class)
->onlyMethods(['getAspect'])
->disableOriginalConstructor()
->getMock();
$context->method('getAspect')->with('language')->willReturn($language);

$this->singletonInstances[Context::class] = $context;

parent::setUp();
}

public function testWithLanguageAsStringLocale(): void
{
$queryBuilder = new DummyQueryBuilder($this);
if (version_compare(VersionNumberUtility::getCurrentTypo3Version(), '11.5', '>=')) {
$queryBuilder->result->method('fetchAssociative')->willReturn(['uid' => 123]);
} else {
$queryBuilder->result->method('fetch')->willReturn(['uid' => 123]);
}

$connectionPool = $this->getMockBuilder(ConnectionPool::class)
->onlyMethods(['getQueryBuilderForTable'])
->disableOriginalConstructor()
->getMock();
$connectionPool->method('getQueryBuilderForTable')->willReturn($queryBuilder);

GeneralUtility::addInstance(ConnectionPool::class, $connectionPool);

$renderingContext = $this->getMockBuilder(RenderingContextInterface::class)->getMock();
self::assertTrue(
IsLanguageViewHelper::verdict(['language' => 'en', 'defaultTitle' => 'en'], $renderingContext)
);
}

public function testWithLanguageAsUid(): void
{
$renderingContext = $this->getMockBuilder(RenderingContextInterface::class)->getMock();
self::assertTrue(
IsLanguageViewHelper::verdict(['language' => 123, 'defaultTitle' => 'en'], $renderingContext)
);
}
}
20 changes: 15 additions & 5 deletions Tests/Unit/ViewHelpers/Content/InfoViewHelperTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@

use FluidTYPO3\Vhs\Tests\Unit\ViewHelpers\AbstractViewHelperTest;
use FluidTYPO3\Vhs\Tests\Unit\ViewHelpers\AbstractViewHelperTestCase;
use Psr\Http\Message\ServerRequestInterface;
use TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface;
use TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer;

Expand All @@ -29,11 +30,20 @@ public function testRender()
$contentObject->data = $record;
$contentObject->method('getCurrentTable')->willReturn('tt_content');

$configurationManager = $this->getMockBuilder(ConfigurationManagerInterface::class)
->onlyMethods(['getContentObject'])
->disableOriginalConstructor()
->getMockForAbstractClass();
$configurationManager->method('getContentObject')->willReturn($contentObject);
if (method_exists(ConfigurationManagerInterface::class, 'getContentObject')) {
/** @var ConfigurationManagerInterface $configurationManager */
$configurationManager = $this->getMockBuilder(ConfigurationManagerInterface::class)->getMock();
$configurationManager->method('getContentObject')->willReturn($contentObject);
} else {
$request = $this->getMockBuilder(ServerRequestInterface::class)->getMock();
$request->method('getAttribute')->willReturn($contentObject);
/** @var ConfigurationManagerInterface $configurationManager */
$configurationManager = $this->getMockBuilder(ConfigurationManagerInterface::class)
->onlyMethods(['getConfiguration', 'setConfiguration', 'setRequest'])
->addMethods(['getRequest'])
->getMock();
$configurationManager->method('getRequest')->willReturn($request);
}

$instance = $this->createInstance();
$arguments = $this->buildViewHelperArguments($instance, []);
Expand Down
22 changes: 18 additions & 4 deletions Tests/Unit/ViewHelpers/Format/Placeholder/LipsumViewHelperTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
use FluidTYPO3\Vhs\Tests\Fixtures\Classes\AccessibleExtensionManagementUtility;
use FluidTYPO3\Vhs\Tests\Unit\ViewHelpers\AbstractViewHelperTest;
use FluidTYPO3\Vhs\Tests\Unit\ViewHelpers\AbstractViewHelperTestCase;
use Psr\Http\Message\ServerRequestInterface;
use TYPO3\CMS\Core\Package\PackageManager;
use TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface;
use TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer;
Expand Down Expand Up @@ -48,10 +49,23 @@ protected function setUp(): void
->disableOriginalConstructor()
->getMock();
$mockContentObject->method('parseFunc')->willReturn('foobar');
$this->singletonInstances[ConfigurationManagerInterface::class] = $this->getMockBuilder(ConfigurationManagerInterface::class)
->getMockForAbstractClass();
$this->singletonInstances[ConfigurationManagerInterface::class]->method('getContentObject')
->willReturn($mockContentObject);

if (method_exists(ConfigurationManagerInterface::class, 'getContentObject')) {
/** @var ConfigurationManagerInterface $configurationManager */
$configurationManager = $this->getMockBuilder(ConfigurationManagerInterface::class)->getMock();
$configurationManager->method('getContentObject')->willReturn($mockContentObject);
} else {
$request = $this->getMockBuilder(ServerRequestInterface::class)->getMock();
$request->method('getAttribute')->willReturn($mockContentObject);
/** @var ConfigurationManagerInterface $configurationManager */
$configurationManager = $this->getMockBuilder(ConfigurationManagerInterface::class)
->onlyMethods(['getConfiguration', 'setConfiguration', 'setRequest'])
->addMethods(['getRequest'])
->getMock();
$configurationManager->method('getRequest')->willReturn($request);
}

$this->singletonInstances[ConfigurationManagerInterface::class] = $configurationManager;

$GLOBALS['TYPO3_CONF_VARS']['FE']['ContentObjects'] = [];

Expand Down
33 changes: 31 additions & 2 deletions Tests/Unit/ViewHelpers/Once/InstanceViewHelperTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@

use FluidTYPO3\Vhs\Tests\Unit\ViewHelpers\AbstractViewHelperTest;
use FluidTYPO3\Vhs\Tests\Unit\ViewHelpers\AbstractViewHelperTestCase;
use TYPO3\CMS\Core\Utility\VersionNumberUtility;
use TYPO3\CMS\Extbase\Mvc\Request;
use TYPO3\CMS\Extbase\Mvc\RequestInterface;
use TYPO3\CMS\Fluid\Core\Rendering\RenderingContext;

/**
* Class InstanceViewHelperTest
Expand All @@ -23,9 +27,34 @@ class InstanceViewHelperTest extends AbstractViewHelperTestCase
*/
public function testGetIdentifier($identifierArgument, $expectedIdentifier)
{
if (version_compare(VersionNumberUtility::getCurrentTypo3Version(), '12.4', '>=')) {
$request = $this->getMockBuilder(RequestInterface::class)->getMock();
} else {
$request = $this->getMockBuilder(Request::class)
->disableOriginalConstructor()
->addMethods(['dummy'])
->getMock();
}

$request->method('getControllerActionName')->willReturn('action');
$request->method('getControllerName')->willReturn('Controller');
$request->method('getControllerExtensionName')->willReturn('Vhs');
if (method_exists(RenderingContext::class, 'getRequest')) {
$renderingContext = $this->getMockBuilder(RenderingContext::class)
->disableOriginalConstructor()
->onlyMethods(['getRequest'])
->getMock();
} else {
$renderingContext = $this->getMockBuilder(RenderingContext::class)
->disableOriginalConstructor()
->addMethods(['getRequest'])
->getMock();
}

$renderingContext->method('getRequest')->willReturn($request);

$instance = $this->createInstance();
$instance->setArguments(['identifier' => $identifierArgument]);
$instance::renderStatic(['identifier' => $identifierArgument], function() { return ''; }, $this->renderingContext);
$this->setInaccessiblePropertyValue($instance, 'currentRenderingContext', $renderingContext);
$result = $this->callInaccessibleMethod($instance, 'getIdentifier', ['identifier' => $identifierArgument]);
$this->assertEquals($expectedIdentifier, $result);
}
Expand Down
18 changes: 15 additions & 3 deletions Tests/Unit/ViewHelpers/Resource/AbstractImageViewHelperTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

use FluidTYPO3\Vhs\Tests\Unit\AbstractTestCase;
use FluidTYPO3\Vhs\ViewHelpers\Resource\AbstractImageViewHelper;
use Psr\Http\Message\ServerRequestInterface;
use TYPO3\CMS\Core\Core\SystemEnvironmentBuilder;
use TYPO3\CMS\Core\Http\ServerRequest;
use TYPO3\CMS\Core\Resource\File;
Expand Down Expand Up @@ -40,9 +41,20 @@ protected function setUp(): void
->disableOriginalConstructor()
->getMock();

$configurationManager = $this->getMockBuilder(ConfigurationManagerInterface::class)
->getMockForAbstractClass();
$configurationManager->method('getContentObject')->willReturn($this->contentObjectRenderer);
if (method_exists(ConfigurationManagerInterface::class, 'getContentObject')) {
/** @var ConfigurationManagerInterface $configurationManager */
$configurationManager = $this->getMockBuilder(ConfigurationManagerInterface::class)->getMock();
$configurationManager->method('getContentObject')->willReturn($this->contentObjectRenderer);
} else {
$request = $this->getMockBuilder(ServerRequestInterface::class)->getMock();
$request->method('getAttribute')->willReturn($this->contentObjectRenderer);
/** @var ConfigurationManagerInterface $configurationManager */
$configurationManager = $this->getMockBuilder(ConfigurationManagerInterface::class)
->onlyMethods(['getConfiguration', 'setConfiguration', 'setRequest'])
->addMethods(['getRequest'])
->getMock();
$configurationManager->method('getRequest')->willReturn($request);
}

$this->subject->injectConfigurationManager($configurationManager);

Expand Down
Loading

0 comments on commit f88f02b

Please sign in to comment.