Skip to content

Commit f0077bf

Browse files
committed
[TASK] Make tests run on v13
1 parent b01e666 commit f0077bf

10 files changed

+188
-39
lines changed

Tests/Unit/Service/PageServiceTest.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public function testGetMenu(): void
3434
$pageRepository = $this->createPageRepositoryMock(['getPage', 'getMenu', 'getPageOverlay']);
3535
$pageRepository->method('getPage')->willReturn(['uid' => 2]);
3636
$pageRepository->method('getMenu')->willReturn([['uid' => 2]]);
37-
$pageRepository->method('getPageOverlay')->willReturn(null);
37+
$pageRepository->method('getPageOverlay')->willReturn([]);
3838

3939
$subject = $this->getMockBuilder(PageService::class)
4040
->setMethods(['getPageRepository'])

Tests/Unit/ViewHelpers/AbstractViewHelperTestCase.php

+20-5
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
use FluidTYPO3\Vhs\Tests\Fixtures\Classes\DummyViewHelperNode;
1212
use FluidTYPO3\Vhs\Tests\Unit\AbstractTestCase;
1313
use PHPUnit\Framework\MockObject\MockObject;
14+
use Psr\Http\Message\ServerRequestInterface;
1415
use TYPO3\CMS\Backend\Controller\DummyController;
1516
use TYPO3\CMS\Core\Core\SystemEnvironmentBuilder;
1617
use TYPO3\CMS\Core\Http\ServerRequest;
@@ -25,6 +26,7 @@
2526
use TYPO3\CMS\Fluid\Core\ViewHelper\ViewHelperResolver;
2627
use TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer;
2728
use TYPO3Fluid\Fluid\Core\ErrorHandler\ErrorHandlerInterface;
29+
use TYPO3Fluid\Fluid\Core\ErrorHandler\StandardErrorHandler;
2830
use TYPO3Fluid\Fluid\Core\Parser\SyntaxTree\NodeInterface;
2931
use TYPO3Fluid\Fluid\Core\Parser\SyntaxTree\ObjectAccessorNode;
3032
use TYPO3Fluid\Fluid\Core\Parser\SyntaxTree\ViewHelperNode;
@@ -111,10 +113,9 @@ protected function setUp(): void
111113
$this->renderingContext = $this->getMockBuilder(RenderingContext::class)
112114
->disableOriginalConstructor()
113115
->getMock();
114-
$this->errorHandler = $this->getMockBuilder(ErrorHandlerInterface::class)->getMockForAbstractClass();
116+
$this->errorHandler = new StandardErrorHandler();
115117
$this->templateParser = new TemplateParser();
116118
$this->templateParser->setRenderingContext($this->renderingContext);
117-
$this->errorHandler->method('handleViewHelperError')->willThrowException(new Exception('dummy'));
118119
$this->renderingContext->method('getViewHelperResolver')->willReturn($this->viewHelperResolver);
119120

120121
$this->renderingContext->method('getViewHelperVariableContainer')->willReturn(
@@ -202,9 +203,23 @@ protected function createInstance(): ViewHelperInterface
202203
if (method_exists($instance, 'injectConfigurationManager')) {
203204
$cObject = $this->getMockBuilder(ContentObjectRenderer::class)->disableOriginalConstructor()->getMock();
204205
$cObject->start(['uid' => 123], 'tt_content');
205-
/** @var ConfigurationManagerInterface $configurationManager */
206-
$configurationManager = $this->getMockBuilder(ConfigurationManagerInterface::class)->getMockForAbstractClass();
207-
$configurationManager->method('getContentObject')->willReturn($cObject);
206+
207+
if (method_exists(ConfigurationManagerInterface::class, 'getContentObject')) {
208+
/** @var ConfigurationManagerInterface $configurationManager */
209+
$configurationManager = $this->getMockBuilder(ConfigurationManagerInterface::class)->getMock();
210+
$configurationManager->method('getContentObject')->willReturn($cObject);
211+
} else {
212+
$request = $this->getMockBuilder(ServerRequestInterface::class)->getMock();
213+
$request->method('getAttribute')->willReturn($cObject);
214+
215+
/** @var ConfigurationManagerInterface $configurationManager */
216+
$configurationManager = $this->getMockBuilder(ConfigurationManagerInterface::class)
217+
->onlyMethods(['getConfiguration', 'setConfiguration', 'setRequest'])
218+
->addMethods(['getRequest'])
219+
->getMock();
220+
$configurationManager->method('getRequest')->willReturn($request);
221+
}
222+
208223
$instance->injectConfigurationManager($configurationManager);
209224
}
210225
$instance->setRenderingContext($this->renderingContext);

Tests/Unit/ViewHelpers/Condition/Page/IsLanguageViewHelperTest.php

+55-15
Original file line numberDiff line numberDiff line change
@@ -8,30 +8,70 @@
88
* LICENSE.md file that was distributed with this source code.
99
*/
1010

11+
use FluidTYPO3\Vhs\Tests\Fixtures\Classes\DummyQueryBuilder;
1112
use FluidTYPO3\Vhs\Tests\Unit\ViewHelpers\AbstractViewHelperTest;
1213
use FluidTYPO3\Vhs\Tests\Unit\ViewHelpers\AbstractViewHelperTestCase;
14+
use FluidTYPO3\Vhs\ViewHelpers\Condition\Page\IsLanguageViewHelper;
15+
use TYPO3\CMS\Core\Context\Context;
16+
use TYPO3\CMS\Core\Context\LanguageAspect;
17+
use TYPO3\CMS\Core\Database\ConnectionPool;
1318
use TYPO3\CMS\Core\Database\DatabaseConnection;
14-
use TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController;
19+
use TYPO3\CMS\Core\Utility\GeneralUtility;
20+
use TYPO3\CMS\Core\Utility\VersionNumberUtility;
21+
use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
1522

1623
/**
1724
* Class IsLanguageViewHelperTest
1825
*/
1926
class IsLanguageViewHelperTest extends AbstractViewHelperTestCase
2027
{
21-
public function testRender()
28+
protected function setUp(): void
2229
{
23-
$GLOBALS['TYPO3_DB'] = $this->getMockBuilder(DatabaseConnection::class)->setMethods(['exec_SELECTgetSingleRow'])->disableOriginalConstructor()->getMock();
24-
$GLOBALS['TYPO3_DB']->expects($this->any())->method('exec_SELECTgetSingleRow')->will($this->returnValue(false));
25-
26-
$GLOBALS['TSFE'] = $this->getMockBuilder(TypoScriptFrontendController::class)->disableOriginalConstructor()->getMock();
27-
$GLOBALS['TSFE']->expects($this->any())->method('__get')->with('sys_language_uid')->willReturn(0);
28-
29-
$arguments = [
30-
'then' => 'then',
31-
'else' => 'else',
32-
'language' => 0
33-
];
34-
$result = $this->executeViewHelper($arguments);
35-
$this->assertEquals('then', $result);
30+
$language = $this->getMockBuilder(LanguageAspect::class)
31+
->onlyMethods(['getId'])
32+
->disableOriginalConstructor()
33+
->getMock();
34+
$language->method('getId')->willReturn(123);
35+
36+
$context = $this->getMockBuilder(Context::class)
37+
->onlyMethods(['getAspect'])
38+
->disableOriginalConstructor()
39+
->getMock();
40+
$context->method('getAspect')->with('language')->willReturn($language);
41+
42+
$this->singletonInstances[Context::class] = $context;
43+
44+
parent::setUp();
45+
}
46+
47+
public function testWithLanguageAsStringLocale(): void
48+
{
49+
$queryBuilder = new DummyQueryBuilder($this);
50+
if (version_compare(VersionNumberUtility::getCurrentTypo3Version(), '10.4', '>=')) {
51+
$queryBuilder->result->method('fetchAssociative')->willReturn(['uid' => 123]);
52+
} else {
53+
$queryBuilder->result->method('fetch')->willReturn(['uid' => 123]);
54+
}
55+
56+
$connectionPool = $this->getMockBuilder(ConnectionPool::class)
57+
->onlyMethods(['getQueryBuilderForTable'])
58+
->disableOriginalConstructor()
59+
->getMock();
60+
$connectionPool->method('getQueryBuilderForTable')->willReturn($queryBuilder);
61+
62+
GeneralUtility::addInstance(ConnectionPool::class, $connectionPool);
63+
64+
$renderingContext = $this->getMockBuilder(RenderingContextInterface::class)->getMock();
65+
self::assertTrue(
66+
IsLanguageViewHelper::verdict(['language' => 'en', 'defaultTitle' => 'en'], $renderingContext)
67+
);
68+
}
69+
70+
public function testWithLanguageAsUid(): void
71+
{
72+
$renderingContext = $this->getMockBuilder(RenderingContextInterface::class)->getMock();
73+
self::assertTrue(
74+
IsLanguageViewHelper::verdict(['language' => 123, 'defaultTitle' => 'en'], $renderingContext)
75+
);
3676
}
3777
}

Tests/Unit/ViewHelpers/Content/InfoViewHelperTest.php

+15-5
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
use FluidTYPO3\Vhs\Tests\Unit\ViewHelpers\AbstractViewHelperTest;
1212
use FluidTYPO3\Vhs\Tests\Unit\ViewHelpers\AbstractViewHelperTestCase;
13+
use Psr\Http\Message\ServerRequestInterface;
1314
use TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface;
1415
use TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer;
1516

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

32-
$configurationManager = $this->getMockBuilder(ConfigurationManagerInterface::class)
33-
->onlyMethods(['getContentObject'])
34-
->disableOriginalConstructor()
35-
->getMockForAbstractClass();
36-
$configurationManager->method('getContentObject')->willReturn($contentObject);
33+
if (method_exists(ConfigurationManagerInterface::class, 'getContentObject')) {
34+
/** @var ConfigurationManagerInterface $configurationManager */
35+
$configurationManager = $this->getMockBuilder(ConfigurationManagerInterface::class)->getMock();
36+
$configurationManager->method('getContentObject')->willReturn($contentObject);
37+
} else {
38+
$request = $this->getMockBuilder(ServerRequestInterface::class)->getMock();
39+
$request->method('getAttribute')->willReturn($contentObject);
40+
/** @var ConfigurationManagerInterface $configurationManager */
41+
$configurationManager = $this->getMockBuilder(ConfigurationManagerInterface::class)
42+
->onlyMethods(['getConfiguration', 'setConfiguration', 'setRequest'])
43+
->addMethods(['getRequest'])
44+
->getMock();
45+
$configurationManager->method('getRequest')->willReturn($request);
46+
}
3747

3848
$instance = $this->createInstance();
3949
$arguments = $this->buildViewHelperArguments($instance, []);

Tests/Unit/ViewHelpers/Format/Placeholder/LipsumViewHelperTest.php

+18-4
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
use FluidTYPO3\Vhs\Tests\Fixtures\Classes\AccessibleExtensionManagementUtility;
1212
use FluidTYPO3\Vhs\Tests\Unit\ViewHelpers\AbstractViewHelperTest;
1313
use FluidTYPO3\Vhs\Tests\Unit\ViewHelpers\AbstractViewHelperTestCase;
14+
use Psr\Http\Message\ServerRequestInterface;
1415
use TYPO3\CMS\Core\Package\PackageManager;
1516
use TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface;
1617
use TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer;
@@ -48,10 +49,23 @@ protected function setUp(): void
4849
->disableOriginalConstructor()
4950
->getMock();
5051
$mockContentObject->method('parseFunc')->willReturn('foobar');
51-
$this->singletonInstances[ConfigurationManagerInterface::class] = $this->getMockBuilder(ConfigurationManagerInterface::class)
52-
->getMockForAbstractClass();
53-
$this->singletonInstances[ConfigurationManagerInterface::class]->method('getContentObject')
54-
->willReturn($mockContentObject);
52+
53+
if (method_exists(ConfigurationManagerInterface::class, 'getContentObject')) {
54+
/** @var ConfigurationManagerInterface $configurationManager */
55+
$configurationManager = $this->getMockBuilder(ConfigurationManagerInterface::class)->getMock();
56+
$configurationManager->method('getContentObject')->willReturn($mockContentObject);
57+
} else {
58+
$request = $this->getMockBuilder(ServerRequestInterface::class)->getMock();
59+
$request->method('getAttribute')->willReturn($mockContentObject);
60+
/** @var ConfigurationManagerInterface $configurationManager */
61+
$configurationManager = $this->getMockBuilder(ConfigurationManagerInterface::class)
62+
->onlyMethods(['getConfiguration', 'setConfiguration', 'setRequest'])
63+
->addMethods(['getRequest'])
64+
->getMock();
65+
$configurationManager->method('getRequest')->willReturn($request);
66+
}
67+
68+
$this->singletonInstances[ConfigurationManagerInterface::class] = $configurationManager;
5569

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

Tests/Unit/ViewHelpers/Once/InstanceViewHelperTest.php

+42-3
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@
1010

1111
use FluidTYPO3\Vhs\Tests\Unit\ViewHelpers\AbstractViewHelperTest;
1212
use FluidTYPO3\Vhs\Tests\Unit\ViewHelpers\AbstractViewHelperTestCase;
13+
use TYPO3\CMS\Core\Utility\VersionNumberUtility;
14+
use TYPO3\CMS\Extbase\Mvc\Request;
15+
use TYPO3\CMS\Extbase\Mvc\RequestInterface;
16+
use TYPO3\CMS\Fluid\Core\Rendering\RenderingContext;
1317

1418
/**
1519
* Class InstanceViewHelperTest
@@ -23,9 +27,44 @@ class InstanceViewHelperTest extends AbstractViewHelperTestCase
2327
*/
2428
public function testGetIdentifier($identifierArgument, $expectedIdentifier)
2529
{
30+
if (version_compare(VersionNumberUtility::getCurrentTypo3Version(), '12.4', '>=')) {
31+
$request = $this->getMockBuilder(RequestInterface::class)->getMock();
32+
} else {
33+
$request = $this->getMockBuilder(Request::class)
34+
->disableOriginalConstructor()
35+
->onlyMethods(
36+
[
37+
'getControllerActionName',
38+
'getControllerName',
39+
'getControllerObjectName',
40+
'getControllerExtensionName',
41+
'getPluginName',
42+
]
43+
)
44+
->getMock();
45+
}
46+
47+
$request->method('getControllerActionName')->willReturn('action');
48+
$request->method('getControllerName')->willReturn('Controller');
49+
$request->method('getControllerObjectName')->willReturn('Controller');
50+
$request->method('getControllerExtensionName')->willReturn('Vhs');
51+
$request->method('getPluginName')->willReturn('Plugin');
52+
if (method_exists(RenderingContext::class, 'getRequest')) {
53+
$renderingContext = $this->getMockBuilder(RenderingContext::class)
54+
->disableOriginalConstructor()
55+
->onlyMethods(['getRequest'])
56+
->getMock();
57+
} else {
58+
$renderingContext = $this->getMockBuilder(RenderingContext::class)
59+
->disableOriginalConstructor()
60+
->addMethods(['getRequest'])
61+
->getMock();
62+
}
63+
64+
$renderingContext->method('getRequest')->willReturn($request);
65+
2666
$instance = $this->createInstance();
27-
$instance->setArguments(['identifier' => $identifierArgument]);
28-
$instance::renderStatic(['identifier' => $identifierArgument], function() { return ''; }, $this->renderingContext);
67+
$this->setInaccessiblePropertyValue($instance, 'currentRenderingContext', $renderingContext);
2968
$result = $this->callInaccessibleMethod($instance, 'getIdentifier', ['identifier' => $identifierArgument]);
3069
$this->assertEquals($expectedIdentifier, $result);
3170
}
@@ -36,7 +75,7 @@ public function testGetIdentifier($identifierArgument, $expectedIdentifier)
3675
public function getIdentifierTestValues()
3776
{
3877
return [
39-
[null, 'action_Controller__Vhs'],
78+
[null, 'action_Controller_Plugin_Vhs'],
4079
['test', 'test'],
4180
['test2', 'test2'],
4281
];

Tests/Unit/ViewHelpers/Resource/AbstractImageViewHelperTest.php

+15-3
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
use FluidTYPO3\Vhs\Tests\Unit\AbstractTestCase;
1313
use FluidTYPO3\Vhs\ViewHelpers\Resource\AbstractImageViewHelper;
14+
use Psr\Http\Message\ServerRequestInterface;
1415
use TYPO3\CMS\Core\Core\SystemEnvironmentBuilder;
1516
use TYPO3\CMS\Core\Http\ServerRequest;
1617
use TYPO3\CMS\Core\Resource\File;
@@ -40,9 +41,20 @@ protected function setUp(): void
4041
->disableOriginalConstructor()
4142
->getMock();
4243

43-
$configurationManager = $this->getMockBuilder(ConfigurationManagerInterface::class)
44-
->getMockForAbstractClass();
45-
$configurationManager->method('getContentObject')->willReturn($this->contentObjectRenderer);
44+
if (method_exists(ConfigurationManagerInterface::class, 'getContentObject')) {
45+
/** @var ConfigurationManagerInterface $configurationManager */
46+
$configurationManager = $this->getMockBuilder(ConfigurationManagerInterface::class)->getMock();
47+
$configurationManager->method('getContentObject')->willReturn($this->contentObjectRenderer);
48+
} else {
49+
$request = $this->getMockBuilder(ServerRequestInterface::class)->getMock();
50+
$request->method('getAttribute')->willReturn($this->contentObjectRenderer);
51+
/** @var ConfigurationManagerInterface $configurationManager */
52+
$configurationManager = $this->getMockBuilder(ConfigurationManagerInterface::class)
53+
->onlyMethods(['getConfiguration', 'setConfiguration', 'setRequest'])
54+
->addMethods(['getRequest'])
55+
->getMock();
56+
$configurationManager->method('getRequest')->willReturn($request);
57+
}
4658

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

Tests/Unit/ViewHelpers/Resource/LanguageViewHelperTest.php

+20-2
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,14 @@
1111
use FluidTYPO3\Vhs\Tests\Fixtures\Classes\AccessibleExtensionManagementUtility;
1212
use FluidTYPO3\Vhs\Tests\Unit\ViewHelpers\AbstractViewHelperTest;
1313
use FluidTYPO3\Vhs\Tests\Unit\ViewHelpers\AbstractViewHelperTestCase;
14+
use TYPO3\CMS\Core\Core\SystemEnvironmentBuilder;
15+
use TYPO3\CMS\Core\Http\ServerRequest;
16+
use TYPO3\CMS\Core\Localization\Locale;
1417
use TYPO3\CMS\Core\Localization\LocalizationFactory;
1518
use TYPO3\CMS\Core\Package\Package;
1619
use TYPO3\CMS\Core\Package\PackageManager;
17-
use TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController;
20+
use TYPO3\CMS\Core\Site\Entity\SiteLanguage;
21+
use TYPO3\CMS\Core\Utility\VersionNumberUtility;
1822

1923
/**
2024
* Class LanguageViewHelperTest
@@ -47,9 +51,23 @@ protected function setUp(): void
4751
*/
4852
public function testRenderFailsWhenUnableToResolveExtensionName()
4953
{
50-
$GLOBALS['TSFE'] = $this->getMockBuilder(TypoScriptFrontendController::class)
54+
$language = $this->getMockBuilder(SiteLanguage::class)
55+
->onlyMethods(['getLocale'])
5156
->disableOriginalConstructor()
5257
->getMock();
58+
if (version_compare(VersionNumberUtility::getCurrentTypo3Version(), '12.4', '>=')) {
59+
$language->method('getLocale')->willReturn(new Locale());
60+
} else {
61+
$language->method('getLocale')->willReturn('en');
62+
}
63+
64+
$GLOBALS['TYPO3_REQUEST'] = $this->getMockBuilder(ServerRequest::class)
65+
->addMethods(['dummy'])
66+
->disableOriginalConstructor()
67+
->getMock();
68+
$GLOBALS['TYPO3_REQUEST'] = $GLOBALS['TYPO3_REQUEST']
69+
->withAttribute('applicationType', SystemEnvironmentBuilder::REQUESTTYPE_FE)
70+
->withAttribute('language', $language);
5371

5472
$output = $this->executeViewHelper();
5573
self::assertSame([], $output);

Tests/Unit/ViewHelpers/Resource/Record/AbstractRecordResourceViewHelperTest.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ public function testThrowsExceptionWithoutField(): void
9696
public function testRenderThrowsExceptionWithoutRecord(): void
9797
{
9898
$queryBuilder = new DummyQueryBuilder($this);
99-
$queryBuilder->result->method('fetchAssociative')->willReturn(null);
99+
$queryBuilder->result->method('fetchAssociative')->willReturn(false);
100100

101101
self::expectExceptionCode(1384611413);
102102
$this->subject->setArguments(['uid' => 123, 'table' => 'table', 'field' => 'field']);

phpstan.neon

+1
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ parameters:
3636
- "#(unknown class|invalid( return)? type) TYPO3\\\\CMS\\\\Extbase\\\\Domain\\\\Model\\\\BackendUser(Group)?#"
3737
- "#(unknown class|invalid( return)? type) TYPO3\\\\CMS\\\\Extbase\\\\Mvc\\\\View\\\\ViewInterface#"
3838
- "#(unknown class|invalid( return)? type) Doctrine\\\\DBAL\\\\FetchMode#"
39+
- "#unknown class TYPO3\\\\CMS\\\\Core\\\\Localization\\\\Locale#"
3940
- "#unknown class TYPO3\\\\CMS\\\\Core\\\\Context\\\\Context#"
4041
- "#unknown class TYPO3\\\\CMS\\\\Core\\\\Context\\\\LanguageAspect#"
4142
- "#unknown class TYPO3\\\\CMS\\\\Core\\\\Site\\\\Entity\\\\Site#"

0 commit comments

Comments
 (0)