Skip to content

Commit

Permalink
Added unit tests to checks
Browse files Browse the repository at this point in the history
  • Loading branch information
sreichel committed May 28, 2024
1 parent 28bbb75 commit 5b00cd9
Show file tree
Hide file tree
Showing 15 changed files with 103 additions and 68 deletions.
1 change: 1 addition & 0 deletions .php-cs-fixer.dist.php
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@
PhpCsFixer\Finder::create()
->in([
'app/code/core/Mage/',
'dev/tests/unit/',
'lib/Mage/',
'lib/Magento/',
'lib/Varien/',
Expand Down
1 change: 1 addition & 0 deletions .phpcs.php.xml.dist
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
<file>install.php</file>
<file>app/Mage.php</file>
<file>app/code/core/Mage/</file>
<file>dev/tests/unit/</file>
<file>lib/Mage/</file>
<file>lib/Magento/</file>
<file>lib/Varien/</file>
Expand Down
1 change: 1 addition & 0 deletions .phpcs.xml.dist
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
<file>install.php</file>
<file>app/Mage.php</file>
<file>app/code/core/Mage/</file>
<file>dev/tests/unit/</file>
<file>lib/Mage/</file>
<file>lib/Magento/</file>
<file>lib/Varien/</file>
Expand Down
1 change: 1 addition & 0 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
"ext-pdo": "*",
"ext-simplexml": "*",
"ext-soap": "*",
"ext-xmlreader": "*",
"ext-zlib": "*",
"colinmollenhour/cache-backend-redis": "^1.14",
"colinmollenhour/magento-redis-session": "^3.2.0",
Expand Down
11 changes: 6 additions & 5 deletions composer.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion dev/tests/unit/Base/ClassLoadingTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public function testClassExists(bool $expectedResult, string $class): void
}

/**
* @return string[][]
* @return array<string, array<int, bool|string>>
*/
public function provideClassExistsData(): array
{
Expand Down
13 changes: 8 additions & 5 deletions dev/tests/unit/Base/XmlFileLoadingTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,10 @@
namespace OpenMage\Tests\Unit\Base;

use PHPUnit\Framework\TestCase;
use SimpleXMLElement;
use XMLReader;

class XmlFileLoadingTest extends TestCase
class XmlFileLoadingTest extends TestCase
{
/**
*
Expand All @@ -15,10 +17,10 @@ class XmlFileLoadingTest extends TestCase
*/
public function testFileLoading(string $filepath): void
{
//$simplexml = new \SimpleXMLElement(file_get_contents($filepath));
/** @var SimpleXMLElement $simplexml */
$simplexml = simplexml_load_file(
$filepath,
null,
SimpleXMLElement::class,
LIBXML_PEDANTIC //not needed by OpenMage, but good to test more strictly
);
self::assertNotEmpty($simplexml->asXML());
Expand All @@ -32,8 +34,9 @@ public function testFileLoading(string $filepath): void
*/
public function testXmlReaderIsValid(string $filepath): void
{
$xml = \XMLReader::open($filepath);
$xml->setParserProperty(\XMLReader::VALIDATE, true);
/** @var XMLReader $xml */
$xml = XMLReader::open($filepath);
$xml->setParserProperty(XMLReader::VALIDATE, true);
self::assertTrue($xml->isValid());
}

Expand Down
79 changes: 40 additions & 39 deletions dev/tests/unit/Mage/Core/Helper/EnvironmentConfigLoaderTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,64 +3,57 @@

namespace OpenMage\Tests\Unit\Core\Helper;

use Mage;
use Mage_Core_Exception;
use PHPUnit\Framework\TestCase;
use Mage_Core_Helper_EnvironmentConfigLoader;
use Mage_Core_Model_Config;

class TestEnvLoaderHelper extends Mage_Core_Helper_EnvironmentConfigLoader {
public function exposedBuildPath(string $section, string $group, string $field): string
{
return $this->buildPath($section, $group, $field);
}

public function exposedBuildNodePath(string $scope, string $path): string
{
return $this->buildNodePath($scope, $path);
}
}
use Varien_Simplexml_Config;

class EnvironmentConfigLoaderTest extends TestCase
{
/**
* @throws Mage_Core_Exception
*/
public function setup(): void
{
\Mage::setRoot('');
Mage::setRoot();
}

public function testBuildPath()
public function testBuildPath(): void
{
$environmentConfigLoaderHelper = new TestEnvLoaderHelper();
$environmentConfigLoaderHelper = new EnvironmentConfigLoaderTestHelper();
$path = $environmentConfigLoaderHelper->exposedBuildPath('GENERAL', 'STORE_INFORMATION', 'NAME');
$this->assertEquals('general/store_information/name', $path);
self::assertEquals('general/store_information/name', $path);
}

public function testBuildNodePath()
public function testBuildNodePath(): void
{
$environmentConfigLoaderHelper = new TestEnvLoaderHelper();
$environmentConfigLoaderHelper = new EnvironmentConfigLoaderTestHelper();
$nodePath = $environmentConfigLoaderHelper->exposedBuildNodePath('DEFAULT', 'general/store_information/name');
$this->assertEquals('default/general/store_information/name', $nodePath);
self::assertEquals('default/general/store_information/name', $nodePath);
}

public function test_xml_has_test_strings()
public function testXmlHasTestStrings(): void
{
$xmlStruct = $this->getTestXml();
$xml = new \Varien_Simplexml_Config();
$xml = new Varien_Simplexml_Config();
$xml->loadString($xmlStruct);
$this->assertEquals('test_default', (string)$xml->getNode('default/general/store_information/name'));
$this->assertEquals('test_website', (string)$xml->getNode('websites/base/general/store_information/name'));
$this->assertEquals('test_store', (string)$xml->getNode('stores/german/general/store_information/name'));
self::assertEquals('test_default', (string)$xml->getNode('default/general/store_information/name'));
self::assertEquals('test_website', (string)$xml->getNode('websites/base/general/store_information/name'));
self::assertEquals('test_store', (string)$xml->getNode('stores/german/general/store_information/name'));
}

/**
* @dataProvider env_overrides_correct_config_keys
* @test
* @dataProvider envOverridesCorrectConfigKeysDataProvider
* @param array<string, string> $config
*/
public function env_overrides_for_valid_config_keys(array $config)
public function testEnvOverridesForValidConfigKeys(array $config): void
{
$xmlStruct = $this->getTestXml();

$xmlDefault = new \Varien_Simplexml_Config();
$xmlDefault = new Varien_Simplexml_Config();
$xmlDefault->loadString($xmlStruct);
$xml = new \Varien_Simplexml_Config();
$xml = new Varien_Simplexml_Config();
$xml->loadString($xmlStruct);

// act
Expand All @@ -75,10 +68,13 @@ public function env_overrides_for_valid_config_keys(array $config)
$valueAfterOverride = $xml->getNode($configPath);

// assert
$this->assertNotEquals((string)$defaultValue, (string)$valueAfterOverride, 'Default value was not overridden.');
self::assertNotEquals((string)$defaultValue, (string)$valueAfterOverride, 'Default value was not overridden.');
}

public function env_overrides_correct_config_keys(): array
/**
* @return array<array<string, array<string, string>>>
*/
public function envOverridesCorrectConfigKeysDataProvider(): array
{
$defaultPath = 'OPENMAGE_CONFIG__DEFAULT__GENERAL__STORE_INFORMATION__NAME';
$defaultPathWithDash = 'OPENMAGE_CONFIG__DEFAULT__GENERAL__FOO-BAR__NAME';
Expand Down Expand Up @@ -169,16 +165,16 @@ public function env_overrides_correct_config_keys(): array
}

/**
* @dataProvider env_does_not_override_on_wrong_config_keys
* @test
* @dataProvider envDoesNotOverrideOnWrongConfigKeysDataProvider
* @param array<string, string> $config
*/
public function env_does_not_override_for_invalid_config_keys(array $config)
public function testEnvDoesNotOverrideForInvalidConfigKeys(array $config): void
{
$xmlStruct = $this->getTestXml();

$xmlDefault = new \Varien_Simplexml_Config();
$xmlDefault = new Varien_Simplexml_Config();
$xmlDefault->loadString($xmlStruct);
$xml = new \Varien_Simplexml_Config();
$xml = new Varien_Simplexml_Config();
$xml->loadString($xmlStruct);

$defaultValue = 'test_default';
Expand All @@ -195,6 +191,7 @@ public function env_does_not_override_for_invalid_config_keys(array $config)
]);
$loader->overrideEnvironment($xml);

$valueAfterCheck = '';
switch ($config['case']) {
case 'DEFAULT':
$valueAfterCheck = $xml->getNode('default/general/store_information/name');
Expand All @@ -208,14 +205,18 @@ public function env_does_not_override_for_invalid_config_keys(array $config)
}

// assert
$this->assertTrue(!str_contains('value_will_not_be_changed', (string)$valueAfterCheck), 'Default value was wrongfully overridden.');
self::assertTrue(!str_contains('value_will_not_be_changed', (string)$valueAfterCheck), 'Default value was wrongfully overridden.');
}

public function env_does_not_override_on_wrong_config_keys(): array
/**
* @return array<array<string, array<string, string>>>
*/
public function envDoesNotOverrideOnWrongConfigKeysDataProvider(): array
{
$defaultPath = 'OPENMAGE_CONFIG__DEFAULT__GENERAL__ST';
$websitePath = 'OPENMAGE_CONFIG__WEBSITES__BASE__GENERAL__ST';
$storePath = 'OPENMAGE_CONFIG__STORES__GERMAN__GENERAL__ST';

return [
[
'Case DEFAULT with ' . $defaultPath . ' will not override.' => [
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?php
declare(strict_types=1);

namespace OpenMage\Tests\Unit\Core\Helper;

use Mage_Core_Helper_EnvironmentConfigLoader;

class EnvironmentConfigLoaderTestHelper extends Mage_Core_Helper_EnvironmentConfigLoader
{
public function exposedBuildPath(string $section, string $group, string $field): string
{
return $this->buildPath($section, $group, $field);
}

public function exposedBuildNodePath(string $scope, string $path): string
{
return $this->buildNodePath($scope, $path);
}
}
16 changes: 11 additions & 5 deletions dev/tests/unit/Mage/Core/Helper/SecurityTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,9 @@ public function setUp(): void
$this->subject = Mage::helper('core/security');
}

/**
* @return array<int|string, array<int, array<empty, empty>|Mage_Page_Block_Html_Topmenu_Renderer|Mage_Core_Block_Template|string>>
*/
public function validateAgainstBlockMethodBlacklistDataProvider(): array
{
$topmenu = new Mage_Page_Block_Html_Topmenu_Renderer();
Expand All @@ -49,7 +52,7 @@ public function validateAgainstBlockMethodBlacklistDataProvider(): array
* @doesNotPerformAssertions if data is correct, then NO exception is thrown, so we don't need an assertion
* @param Mage_Core_Block_Abstract $block
* @param string $method
* @param array $args
* @param string[] $args
* @return void
* @throws Mage_Core_Exception
*/
Expand All @@ -61,6 +64,9 @@ public function testValidateAgainstBlockMethodBlacklist(
$this->subject->validateAgainstBlockMethodBlacklist($block, $method, $args);
}

/**
* @return array<int|string, array<int, array<empty, empty>|Mage_Page_Block_Html_Topmenu_Renderer|Mage_Core_Block_Template|string>>
*/
public function forbiddenBlockMethodsDataProvider(): array
{
$topmenu = new Mage_Page_Block_Html_Topmenu_Renderer();
Expand Down Expand Up @@ -109,7 +115,7 @@ public function forbiddenBlockMethodsDataProvider(): array
* @dataProvider forbiddenBlockMethodsDataProvider
* @param Mage_Core_Block_Abstract $block
* @param string $method
* @param array $args
* @param string[] $args
* @return void
* @throws Mage_Core_Exception
*/
Expand All @@ -118,7 +124,7 @@ public function testValidateAgainstBlockMethodBlacklistThrowsException(
string $method,
array $args
): void {
self::expectExceptionMessage(sprintf('Action with combination block %s and method %s is forbidden.', get_class($block), $method));
$this->subject->validateAgainstBlockMethodBlacklist($block, $method, $args);
self::expectExceptionMessage(sprintf('Action with combination block %s and method %s is forbidden.', get_class($block), $method));
$this->subject->validateAgainstBlockMethodBlacklist($block, $method, $args);
}
}
}
2 changes: 1 addition & 1 deletion dev/tests/unit/Mage/Core/Helper/StringTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

class StringTest extends TestCase
{
const TEST_STRING = '1234567890';
public const TEST_STRING = '1234567890';

/**
* @var Mage_Core_Helper_String
Expand Down
2 changes: 1 addition & 1 deletion dev/tests/unit/Mage/Downloadable/Helper/FileTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public function testGetFilePath(string $expectedResult, string $path, ?string $f
}

/**
* @return string[][]
* @return array<string, array<int, string|null>>
*/
public function provideGetFilePathData(): array
{
Expand Down
8 changes: 4 additions & 4 deletions dev/tests/unit/Mage/Uploader/Helper/FileTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ public function setUp(): void

/**
* @dataProvider provideGetMimeTypeFromExtensionListData
* @param array $expectedResult
* @param string|array $extensionsList
* @param array<int, string> $expectedResult
* @param string|array<int, string> $extensionsList
* @return void
*/
public function testGetMimeTypeFromExtensionList(array $expectedResult, $extensionsList): void
Expand All @@ -33,7 +33,7 @@ public function testGetMimeTypeFromExtensionList(array $expectedResult, $extensi
}

/**
* @return string[][]
* @return array<string, array<int, array<int, string>|string>>
*/
public function provideGetMimeTypeFromExtensionListData(): array
{
Expand Down Expand Up @@ -103,7 +103,7 @@ public function testGetDataMaxSizeInBytes(int $expectedResult, string $maxSize):
}

/**
* @return string[][]
* @return array<string, array<int, int|string>>
*/
public function provideGetDataMaxSizeInBytesData(): array
{
Expand Down
Loading

0 comments on commit 5b00cd9

Please sign in to comment.