Initial commit - Typo3 11.5.41
This commit is contained in:
273
typo3conf/ext/news/Tests/Unit/Utility/TypoScriptTest.php
Normal file
273
typo3conf/ext/news/Tests/Unit/Utility/TypoScriptTest.php
Normal file
@@ -0,0 +1,273 @@
|
||||
<?php
|
||||
|
||||
namespace GeorgRinger\News\Tests\Unit\Utility;
|
||||
|
||||
/**
|
||||
* This file is part of the "news" Extension for TYPO3 CMS.
|
||||
*
|
||||
* For the full copyright and license information, please read the
|
||||
* LICENSE.txt file that was distributed with this source code.
|
||||
*/
|
||||
use GeorgRinger\News\Utility\TypoScript;
|
||||
use TYPO3\TestingFramework\Core\BaseTestCase;
|
||||
|
||||
/**
|
||||
* Test class for TypoScript
|
||||
*
|
||||
*/
|
||||
class TypoScriptTest extends BaseTestCase
|
||||
{
|
||||
|
||||
/**
|
||||
* @test
|
||||
*
|
||||
* @dataProvider overrideWorksDataProvider
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function overrideWorks($base, $overload, $expected): void
|
||||
{
|
||||
$utility = new TypoScript();
|
||||
|
||||
$result = $utility->override($base, $overload);
|
||||
$this->assertEquals($expected, $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Data provider
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function overrideWorksDataProvider()
|
||||
{
|
||||
return [
|
||||
'basic' => [
|
||||
[
|
||||
'value_1' => 'fo',
|
||||
'value_2' => ''
|
||||
],
|
||||
[],
|
||||
[
|
||||
'value_1' => 'fo',
|
||||
'value_2' => ''
|
||||
]
|
||||
],
|
||||
'simple' => [
|
||||
[
|
||||
'value_1' => 'fo',
|
||||
'value_2' => ''
|
||||
],
|
||||
[
|
||||
'settings' => [
|
||||
'value_2' => 'bar',
|
||||
'overrideFlexformSettingsIfEmpty' => 'value_2'
|
||||
]
|
||||
],
|
||||
[
|
||||
'value_1' => 'fo',
|
||||
'value_2' => 'bar'
|
||||
]
|
||||
],
|
||||
'simple2' => [
|
||||
[
|
||||
'value_1' => 'fo',
|
||||
'sub' => [
|
||||
'sub_1' => 'xy'
|
||||
]
|
||||
],
|
||||
[
|
||||
'settings' => [
|
||||
'value_2' => 'bar',
|
||||
'overrideFlexformSettingsIfEmpty' => 'value_2'
|
||||
]
|
||||
],
|
||||
[
|
||||
'value_1' => 'fo',
|
||||
'value_2' => 'bar',
|
||||
'sub' => [
|
||||
'sub_1' => 'xy'
|
||||
]
|
||||
]
|
||||
],
|
||||
'deep' => [
|
||||
[
|
||||
'value_1' => 'fo',
|
||||
'sub_1' => [
|
||||
'sub_1a' => ''
|
||||
],
|
||||
'sub_2' => [
|
||||
'sub_2a' => 'xy',
|
||||
],
|
||||
],
|
||||
[
|
||||
'settings' => [
|
||||
'value_2' => 'bar',
|
||||
'sub_1' => [
|
||||
'sub_1a' => 'lorem'
|
||||
],
|
||||
'sub_2' => [
|
||||
'sub_2a' => 'xy',
|
||||
'sub_2b' => 'abc'
|
||||
],
|
||||
'overrideFlexformSettingsIfEmpty' => 'value_2, sub_1.sub_1a,sub_2.sub_2b'
|
||||
]
|
||||
],
|
||||
[
|
||||
'value_1' => 'fo',
|
||||
'value_2' => 'bar',
|
||||
'sub_1' => [
|
||||
'sub_1a' => 'lorem'
|
||||
],
|
||||
'sub_2' => [
|
||||
'sub_2a' => 'xy',
|
||||
],
|
||||
]
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*
|
||||
* @dataProvider correctValueIsReturnedDataProvider
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function correctValueIsReturned($path, $expected): void
|
||||
{
|
||||
$mockedUtility = $this->getAccessibleMock(TypoScript::class, ['dummy']);
|
||||
|
||||
$in = [
|
||||
'level_1' => [
|
||||
'in_1' => 'value in 1',
|
||||
'level_2' => [
|
||||
'level_3' => [
|
||||
'in_3' => 'value in 3'
|
||||
]
|
||||
]
|
||||
]
|
||||
];
|
||||
|
||||
$path = explode('.', $path);
|
||||
$result = $mockedUtility->_call('getValue', $in, $path);
|
||||
$this->assertEquals($expected, $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Data provider
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function correctValueIsReturnedDataProvider()
|
||||
{
|
||||
return [
|
||||
'valueFoundInDeepLevel' => [
|
||||
'level_1.level_2.level_3.in_3', 'value in 3'
|
||||
],
|
||||
'valueFoundInFirstLevel' => [
|
||||
'level_1.in_1', 'value in 1'
|
||||
],
|
||||
'firstLevelNotFound' => [
|
||||
'wrong.wronger.stillWrong', null
|
||||
],
|
||||
'lastLevelNotFound' => [
|
||||
'level_1.level_2.level_3.in_Nothing', null
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*
|
||||
* @dataProvider correctValueIsSetDataProvider
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function correctValueIsSet($path, $newValue, $expected): void
|
||||
{
|
||||
$mockedUtility = $this->getAccessibleMock(TypoScript::class, ['dummy'], [], '', true, false);
|
||||
|
||||
$in = [
|
||||
'level_1' => [
|
||||
'in_1' => 'value in 1',
|
||||
'level_2' => [
|
||||
'level_3' => [
|
||||
'in_3' => 'value in 3'
|
||||
]
|
||||
]
|
||||
]
|
||||
];
|
||||
|
||||
$path = explode('.', $path);
|
||||
$result = $mockedUtility->_call('setValue', $in, $path, $newValue);
|
||||
$this->assertEquals($expected, $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Data provider
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function correctValueIsSetDataProvider()
|
||||
{
|
||||
return [
|
||||
'overrideValueLow' => [
|
||||
'level_1.in_1',
|
||||
'new value in 1',
|
||||
[
|
||||
'level_1' => [
|
||||
'in_1' => 'new value in 1',
|
||||
'level_2' => [
|
||||
'level_3' => [
|
||||
'in_3' => 'value in 3'
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
],
|
||||
'overrideValueDeep' => [
|
||||
'level_1.level_2.level_3.in_3',
|
||||
'new value in 3',
|
||||
[
|
||||
'level_1' => [
|
||||
'in_1' => 'value in 1',
|
||||
'level_2' => [
|
||||
'level_3' => [
|
||||
'in_3' => 'new value in 3'
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
],
|
||||
'newValueDeep' => [
|
||||
'level_1.level_2.level_3.level_4.level_5.in_5',
|
||||
'new value in 5',
|
||||
[
|
||||
'level_1' => [
|
||||
'in_1' => 'value in 1',
|
||||
'level_2' => [
|
||||
'level_3' => [
|
||||
'in_3' => 'value in 3',
|
||||
'level_4' => [
|
||||
'level_5' => [
|
||||
'in_5' => 'new value in 5'
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
],
|
||||
'overrideArrayWithValue' => [
|
||||
'level_1.level_2',
|
||||
'new value as 2',
|
||||
[
|
||||
'level_1' => [
|
||||
'in_1' => 'value in 1',
|
||||
'level_2' => 'new value as 2'
|
||||
]
|
||||
]
|
||||
],
|
||||
];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user