diff --git a/.gitattributes b/.gitattributes index dfddb2c3183..a636a7583ff 100644 --- a/.gitattributes +++ b/.gitattributes @@ -23,6 +23,8 @@ /README.md export-ignore +/Makefile export-ignore + # Enforce checkout with linux lf consistent over all platforms *.html text eol=lf *.css text eol=lf diff --git a/.github/workflows/phpunit.yml b/.github/workflows/phpunit.yml index 82d09b95319..2708ae8f9f2 100644 --- a/.github/workflows/phpunit.yml +++ b/.github/workflows/phpunit.yml @@ -99,7 +99,7 @@ jobs: phpunit-result-cache- - name: Run phpUnit - run: php vendor/bin/phpunit --configuration .phpunit.dist.xml + run: php vendor/bin/phpunit --configuration .phpunit.dist.xml --testsuite Base,Error,Mage,Varien - name: Save result cache uses: actions/cache/save@v4 diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php index 401e228cf22..a0c2c46c8cc 100644 --- a/.php-cs-fixer.dist.php +++ b/.php-cs-fixer.dist.php @@ -15,7 +15,7 @@ // PHP84: Adds or removes ? before single type declarations or |null at the end of union types when parameters have a default null value. 'nullable_type_declaration_for_default_null_value' => true, // Calls to PHPUnit\Framework\TestCase static methods must all be of the same type, either $this->, self:: or static:: - 'php_unit_test_case_static_method_calls' => ['call_type' => 'this'], + 'php_unit_test_case_static_method_calls' => ['call_type' => 'static'], // Convert double quotes to single quotes for simple strings. 'single_quote' => true, // Arguments lists, array destructuring lists, arrays that are multi-line, match-lines and parameters lists must have a trailing comma. diff --git a/.phpunit.dist.xml b/.phpunit.dist.xml index 11215357912..dd00746b5ca 100644 --- a/.phpunit.dist.xml +++ b/.phpunit.dist.xml @@ -31,6 +31,81 @@ tests/unit/Mage + + tests/unit/Mage/Admin + + + tests/unit/Mage/Adminhtml + + + tests/unit/Mage/AdminNotification + + + tests/unit/Mage/Api + + + tests/unit/Mage/Catalog + + + tests/unit/Mage/Cms + + + tests/unit/Mage/Contacts + + + tests/unit/Mage/Core + + + tests/unit/Mage/Customer + + + tests/unit/Mage/Directory + + + tests/unit/Mage/Downloadable + + + tests/unit/Mage/Eav + + + tests/unit/Mage/GiftMessage + + + tests/unit/Mage/Index + + + tests/unit/Mage/Log + + + tests/unit/Mage/Newsletter + + + tests/unit/Mage/Page + + + tests/unit/Mage/Reports + + + tests/unit/Mage/Review + + + tests/unit/Mage/Rule + + + tests/unit/Mage/Sales + + + tests/unit/Mage/Sitemap + + + tests/unit/Mage/Tax + + + tests/unit/Mage/Uploader + + + tests/unit/Mage/Wishlist + tests/unit/Varien diff --git a/.rector.php b/.rector.php index cdc96820d8a..d22287c7c76 100644 --- a/.rector.php +++ b/.rector.php @@ -17,6 +17,7 @@ use Rector\Php82\Rector as Php82; use Rector\Php83\Rector as Php83; use Rector\Php84\Rector as Php84; +use Rector\PHPUnit\CodeQuality\Rector\Class_\PreferPHPUnitThisCallRector; use Rector\TypeDeclaration\Rector as TypeDeclaration; try { @@ -49,6 +50,8 @@ Php80\Class_\ClassPropertyAssignToConstructorPromotionRector::class, # todo: wait for php80 Php80\Class_\StringableForToStringRector::class, # todo: wait for php80 TypeDeclaration\ClassMethod\ReturnNeverTypeRector::class, + # use static methods + PreferPHPUnitThisCallRector::class, __DIR__ . '/shell/translations.php', __DIR__ . '/shell/update-copyright.php', __DIR__ . '/tests/unit/Mage/Reports/Model/Resource/Report/CollectionTest.php', diff --git a/Makefile b/Makefile new file mode 100644 index 00000000000..43639b1ca3d --- /dev/null +++ b/Makefile @@ -0,0 +1,13 @@ +mkdocs-serve: + @if command -v mkdocs >/dev/null ; then \ + mkdocs serve; \ + else \ + echo "mkdocs is not installed, see https://docs.openmage.org/developers/mkdocs/" && exit 2; \ + fi; \ + +phpunit-serve: + @if test -f build/coverage/index.html ; then \ + xdg-open build/coverage/index.html; \ + else \ + echo "phpunit coverage not found, run \"composer run phpunit:coverage-local\"" && exit 2; \ + fi; \ diff --git a/app/code/core/Mage/Adminhtml/Block/Cache/Grid.php b/app/code/core/Mage/Adminhtml/Block/Cache/Grid.php index 0052b72901d..6b18284bd58 100644 --- a/app/code/core/Mage/Adminhtml/Block/Cache/Grid.php +++ b/app/code/core/Mage/Adminhtml/Block/Cache/Grid.php @@ -107,15 +107,14 @@ public function decorateStatus($value, $row, $column, $isExport) { $class = ''; if (isset($this->_invalidatedTypes[$row->getId()])) { - $cell = '' . $this->__('Invalidated') . ''; + $class = self::CSS_SEVERITY_MINOR; + $value = $this->__('Invalidated'); + } elseif ($row->getStatus()) { + $class = self::CSS_SEVERITY_NOTICE; } else { - if ($row->getStatus()) { - $cell = '' . $value . ''; - } else { - $cell = '' . $value . ''; - } + $class = self::CSS_SEVERITY_CRITICAL; } - return $cell; + return sprintf(self::PATTERN_SEVERITY, $class, $value); } /** diff --git a/app/code/core/Mage/Adminhtml/Block/Permissions/OrphanedResource/Grid.php b/app/code/core/Mage/Adminhtml/Block/Permissions/OrphanedResource/Grid.php index 143a2dd87e2..8ae15a176ea 100644 --- a/app/code/core/Mage/Adminhtml/Block/Permissions/OrphanedResource/Grid.php +++ b/app/code/core/Mage/Adminhtml/Block/Permissions/OrphanedResource/Grid.php @@ -15,6 +15,8 @@ * @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) */ +use Mage_Adminhtml_Block_Widget_Grid_Massaction_Abstract as MassAction; + /** * Adminhtml permissions orphanedResource grid * @@ -75,7 +77,7 @@ protected function _prepareMassaction() $this->setMassactionIdField('resource_id'); $this->getMassactionBlock()->setFormFieldName('resource_id'); - $this->getMassactionBlock()->addItem('delete', [ + $this->getMassactionBlock()->addItem(MassAction::DELETE, [ 'label' => Mage::helper('adminhtml')->__('Delete'), 'url' => $this->getUrl('*/*/massDelete'), 'confirm' => Mage::helper('adminhtml')->__('Are you sure you want to do this?'), diff --git a/app/code/core/Mage/Adminhtml/Block/Widget/Grid.php b/app/code/core/Mage/Adminhtml/Block/Widget/Grid.php index 5179c843b65..a6343110903 100644 --- a/app/code/core/Mage/Adminhtml/Block/Widget/Grid.php +++ b/app/code/core/Mage/Adminhtml/Block/Widget/Grid.php @@ -25,6 +25,12 @@ */ class Mage_Adminhtml_Block_Widget_Grid extends Mage_Adminhtml_Block_Widget { + public const PATTERN_SEVERITY = '%s'; + public const CSS_SEVERITY_CRITICAL = 'grid-severity-critical'; + public const CSS_SEVERITY_MAJOR = 'grid-severity-major'; + public const CSS_SEVERITY_MINOR = 'grid-severity-minor'; + public const CSS_SEVERITY_NOTICE = 'grid-severity-notice'; + /** * Columns array * diff --git a/app/code/core/Mage/Cms/Block/Widget/Page/Link.php b/app/code/core/Mage/Cms/Block/Widget/Page/Link.php index 773c6d85809..371bbddc90b 100644 --- a/app/code/core/Mage/Cms/Block/Widget/Page/Link.php +++ b/app/code/core/Mage/Cms/Block/Widget/Page/Link.php @@ -68,6 +68,7 @@ public function getHref() * as parameter or retrieve page title from DB using passed identifier or page id. * * @return string + * @throws Mage_Core_Model_Store_Exception */ public function getTitle() { @@ -77,10 +78,9 @@ public function getTitle() // compare to null used here bc user can specify blank title $this->_title = $this->getData('title'); } elseif ($this->getData('page_id')) { - $this->_title = Mage::getResourceSingleton('cms/page')->getCmsPageTitleById($this->getData('page_id')); + $this->_title = $this->getCmsPageTitleById($this->getData('page_id')); } elseif ($this->getData('href')) { - $this->_title = Mage::getResourceSingleton('cms/page')->setStore(Mage::app()->getStore()) - ->getCmsPageTitleByIdentifier($this->getData('href')); + $this->_title = $this->getCmsPageTitleByIdentifier($this->getData('href')); } } @@ -93,6 +93,7 @@ public function getTitle() * if title will be blank string, page identifier will be used. * * @return string + * @throws Mage_Core_Model_Store_Exception */ public function getAnchorText() { @@ -101,14 +102,27 @@ public function getAnchorText() } elseif ($this->getTitle()) { $this->_anchorText = $this->getTitle(); } elseif ($this->getData('href')) { - $this->_anchorText = Mage::getResourceSingleton('cms/page')->setStore(Mage::app()->getStore()) - ->getCmsPageTitleByIdentifier($this->getData('href')); + $this->_anchorText = $this->getCmsPageTitleByIdentifier($this->getData('href')); } elseif ($this->getData('page_id')) { - $this->_anchorText = Mage::getResourceSingleton('cms/page')->getCmsPageTitleById($this->getData('page_id')); + $this->_anchorText = $this->getCmsPageTitleById($this->getData('page_id')); } else { $this->_anchorText = $this->getData('href'); } return $this->_anchorText; } + + protected function getCmsPageTitleById(int|string $pageId): string + { + return Mage::getResourceSingleton('cms/page')->getCmsPageTitleById($pageId); + } + + /** + * @throws Mage_Core_Model_Store_Exception + */ + protected function getCmsPageTitleByIdentifier(int|string $identifier): string + { + return Mage::getResourceSingleton('cms/page')->setStore(Mage::app()->getStore()) + ->getCmsPageTitleByIdentifier($identifier); + } } diff --git a/app/code/core/Mage/Core/Helper/Array.php b/app/code/core/Mage/Core/Helper/Array.php index ef9b5ff64dd..cf9b2cf73b3 100644 --- a/app/code/core/Mage/Core/Helper/Array.php +++ b/app/code/core/Mage/Core/Helper/Array.php @@ -38,12 +38,10 @@ public function mergeRecursiveWithoutOverwriteNumKeys(array $baseArray, array $m } else { $baseArray[$key] = $value; } + } elseif ($key) { + $baseArray[$key] = $value; } else { - if ($key) { - $baseArray[$key] = $value; - } else { - $baseArray[] = $value; - } + $baseArray[] = $value; } } diff --git a/app/code/core/Mage/Index/Block/Adminhtml/Process/Grid.php b/app/code/core/Mage/Index/Block/Adminhtml/Process/Grid.php index 9daee9c0fbd..b9c13823fdb 100644 --- a/app/code/core/Mage/Index/Block/Adminhtml/Process/Grid.php +++ b/app/code/core/Mage/Index/Block/Adminhtml/Process/Grid.php @@ -52,6 +52,7 @@ public function __construct() * Prepare grid collection * * @return $this + * @throws Exception */ protected function _prepareCollection() { @@ -66,6 +67,7 @@ protected function _prepareCollection() * Add name and description to collection elements * * @return $this + * @throws Mage_Core_Exception */ protected function _afterLoadCollection() { @@ -89,10 +91,10 @@ protected function _afterLoadCollection() * Prepare grid columns * * @return $this + * @throws Exception */ protected function _prepareColumns() { - $baseUrl = $this->getUrl(); $this->addColumn('indexer_code', [ 'header' => Mage::helper('index')->__('Index'), 'width' => '180', @@ -183,16 +185,16 @@ public function decorateStatus($value, $row, $column, $isExport) $class = ''; switch ($row->getStatus()) { case Mage_Index_Model_Process::STATUS_PENDING: - $class = 'grid-severity-notice'; + $class = self::CSS_SEVERITY_NOTICE; break; case Mage_Index_Model_Process::STATUS_RUNNING: - $class = 'grid-severity-major'; + $class = self::CSS_SEVERITY_MAJOR; break; case Mage_Index_Model_Process::STATUS_REQUIRE_REINDEX: - $class = 'grid-severity-critical'; + $class = self::CSS_SEVERITY_CRITICAL; break; } - return '' . $value . ''; + return sprintf(self::PATTERN_SEVERITY, $class, $value); } /** @@ -210,13 +212,13 @@ public function decorateUpdateRequired($value, $row, $column, $isExport) $class = ''; switch ($row->getUpdateRequired()) { case 0: - $class = 'grid-severity-notice'; + $class = self::CSS_SEVERITY_NOTICE; break; case 1: - $class = 'grid-severity-critical'; + $class = self::CSS_SEVERITY_CRITICAL; break; } - return '' . $value . ''; + return sprintf(self::PATTERN_SEVERITY, $class, $value); } /** diff --git a/app/code/core/Mage/Index/Model/Indexer.php b/app/code/core/Mage/Index/Model/Indexer.php index d2aec7c6948..92b8672b159 100644 --- a/app/code/core/Mage/Index/Model/Indexer.php +++ b/app/code/core/Mage/Index/Model/Indexer.php @@ -84,7 +84,7 @@ public function getProcessesCollection() * Get index process by specific id * * @param int $processId - * @return Mage_Index_Model_Process | false + * @return Mage_Index_Model_Process|false */ public function getProcessById($processId) { diff --git a/app/code/core/Mage/Index/Model/Process.php b/app/code/core/Mage/Index/Model/Process.php index 504c19a602e..9cc4da17fde 100644 --- a/app/code/core/Mage/Index/Model/Process.php +++ b/app/code/core/Mage/Index/Model/Process.php @@ -23,6 +23,10 @@ * @method string getIndexCode() * @method string getIndexerCode() * @method $this setIndexerCode(string $value) + * @method string getName() + * @method $this setName(string $value) + * @method string getDescription() + * @method $this setDescription(string $value) * @method string getStatus() * @method $this setStatus(string $value) * @method string getStartedAt() @@ -33,6 +37,8 @@ * @method $this setMode(string $value) * @method bool getForcePartialReindex() * @method $this setForcePartialReindex(bool $value) + * @method int getUpdateRequired() + * @method $this setUpdateRequired(int $value) */ class Mage_Index_Model_Process extends Mage_Core_Model_Abstract { diff --git a/app/code/core/Mage/Reports/Model/Resource/Report/Collection.php b/app/code/core/Mage/Reports/Model/Resource/Report/Collection.php index 1bcce912c74..c6c8b479679 100644 --- a/app/code/core/Mage/Reports/Model/Resource/Report/Collection.php +++ b/app/code/core/Mage/Reports/Model/Resource/Report/Collection.php @@ -39,7 +39,7 @@ class Mage_Reports_Model_Resource_Report_Collection /** * Report period * - * @var int + * @var string */ protected $_period; @@ -76,7 +76,7 @@ protected function _construct() {} /** * Set period * - * @param int $period + * @param string $period * @return $this */ public function setPeriod($period) diff --git a/composer.json b/composer.json index ccebd635525..b01378a3592 100644 --- a/composer.json +++ b/composer.json @@ -104,6 +104,7 @@ } ], "autoload-dev": { + "classmap": ["app/code/*/*/*/controllers"], "psr-4": { "OpenMage\\Tests\\Unit\\": "tests/unit" } @@ -155,9 +156,9 @@ "phpmd": "vendor/bin/phpmd app/code/core/Mage text .phpmd.dist.xml --color --cache --baseline-file .phpmd.dist.baseline.xml", "phpstan": "XDEBUG_MODE=off php vendor/bin/phpstan analyze", "phpstan:baseline": "XDEBUG_MODE=off php vendor/bin/phpstan analyze -b .phpstan.dist.baseline.neon", - "phpunit:test": "XDEBUG_MODE=off php vendor/bin/phpunit --configuration .phpunit.dist.xml --no-coverage", - "phpunit:coverage": "XDEBUG_MODE=coverage php vendor/bin/phpunit --configuration .phpunit.dist.xml --testdox", - "phpunit:coverage-local": "XDEBUG_MODE=coverage php vendor/bin/phpunit --configuration .phpunit.dist.xml --coverage-html build/coverage", + "phpunit:test": "XDEBUG_MODE=off php vendor/bin/phpunit --configuration .phpunit.dist.xml --testsuite Base,Error,Mage,Varien --no-coverage", + "phpunit:coverage": "XDEBUG_MODE=coverage php vendor/bin/phpunit --configuration .phpunit.dist.xml --testsuite Base,Error,Mage,Varien --testdox", + "phpunit:coverage-local": "XDEBUG_MODE=coverage php vendor/bin/phpunit --configuration .phpunit.dist.xml --testsuite Base,Error,Mage,Varien --coverage-html build/coverage", "rector:test": "vendor/bin/rector process --config .rector.php --dry-run", "rector:fix": "vendor/bin/rector process --config .rector.php", "test": [ diff --git a/tests/bootstrap.php b/tests/bootstrap.php index 10122badea4..686c08cb758 100644 --- a/tests/bootstrap.php +++ b/tests/bootstrap.php @@ -7,3 +7,5 @@ require_once __DIR__ . '/../errors/processor.php'; ini_set('error_reporting', -1); + +$_SERVER['TEST_ROOT'] = __DIR__; diff --git a/tests/unit/Base/ClassLoadingTest.php b/tests/unit/Base/ClassLoadingTest.php index 1a843f4cb53..8832abdce76 100644 --- a/tests/unit/Base/ClassLoadingTest.php +++ b/tests/unit/Base/ClassLoadingTest.php @@ -23,12 +23,11 @@ class ClassLoadingTest extends TestCase { /** - * @group Base * @dataProvider provideClassExistsData */ public function testClassExists(bool $expectedResult, string $class): void { - $this->assertSame($expectedResult, class_exists($class)); + static::assertSame($expectedResult, class_exists($class)); } public function provideClassExistsData(): Generator diff --git a/tests/unit/Base/DefaultConfigTest.php b/tests/unit/Base/DefaultConfigTest.php index 36735a2ed74..273ffea7335 100644 --- a/tests/unit/Base/DefaultConfigTest.php +++ b/tests/unit/Base/DefaultConfigTest.php @@ -20,18 +20,17 @@ use Generator; use Mage; use Mage_Adminhtml_Helper_Dashboard_Data; +use Mage_Core_Model_Store; use PHPUnit\Framework\TestCase; class DefaultConfigTest extends TestCase { /** * @dataProvider provideGetStoreConfig - * @group Base - * @group Default_Config */ - public function testGetStoreConfig(string $expectedResult, string $path, $store = null): void + public function testGetStoreConfig(string $expectedResult, string $path, bool|int|Mage_Core_Model_Store|null|string $store = null): void { - $this->assertSame($expectedResult, Mage::getStoreConfig($path, $store)); + static::assertSame($expectedResult, Mage::getStoreConfig($path, $store)); } diff --git a/tests/unit/Base/XmlFileLoadingTest.php b/tests/unit/Base/XmlFileLoadingTest.php index 903a34d7b87..b94277fd373 100644 --- a/tests/unit/Base/XmlFileLoadingTest.php +++ b/tests/unit/Base/XmlFileLoadingTest.php @@ -25,7 +25,6 @@ class XmlFileLoadingTest extends TestCase { /** - * @group Base * @dataProvider provideXmlFiles */ public function testFileLoading(string $filepath): void @@ -36,11 +35,10 @@ public function testFileLoading(string $filepath): void SimpleXMLElement::class, LIBXML_PEDANTIC, //not needed by OpenMage, but good to test more strictly ); - $this->assertNotEmpty($simplexml->asXML()); + static::assertNotEmpty($simplexml->asXML()); } /** - * @group Base * @dataProvider provideXmlFiles */ public function testXmlReaderIsValid(string $filepath): void @@ -48,7 +46,7 @@ public function testXmlReaderIsValid(string $filepath): void /** @var XMLReader $xml */ $xml = XMLReader::open($filepath); $xml->setParserProperty(XMLReader::VALIDATE, true); - $this->assertTrue($xml->isValid()); + static::assertTrue($xml->isValid()); } public function provideXmlFiles(): Generator diff --git a/tests/unit/Error/ProcessorTest.php b/tests/unit/Error/ProcessorTest.php index 3a7ce922fb4..12085d32518 100644 --- a/tests/unit/Error/ProcessorTest.php +++ b/tests/unit/Error/ProcessorTest.php @@ -39,14 +39,13 @@ public function tearDown(): void /** * @dataProvider provideGetHostUrl - * @group Error */ public function testGetHostUrl(string $expectedResult, array $serverVars): void { foreach ($serverVars as $serverVar => $value) { $_SERVER[$serverVar] = $value; } - $this->assertSame($expectedResult, $this->subject->getHostUrl()); + static::assertSame($expectedResult, $this->subject->getHostUrl()); } public function provideGetHostUrl(): Generator diff --git a/tests/unit/Mage/Admin/Helper/BlockTest.php b/tests/unit/Mage/Admin/Helper/BlockTest.php index a600f34197f..b0c7915e431 100644 --- a/tests/unit/Mage/Admin/Helper/BlockTest.php +++ b/tests/unit/Mage/Admin/Helper/BlockTest.php @@ -19,35 +19,33 @@ use Mage; use Mage_Admin_Helper_Block as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; -class BlockTest extends TestCase +class BlockTest extends OpenMageTest { - public Subject $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::helper('admin/block'); + parent::setUpBeforeClass(); + self::$subject = Mage::helper('admin/block'); } /** * @covers Mage_Admin_Helper_Block::isTypeAllowed() - * @group Mage_Admin - * @group Mage_Admin_Helper + * @group Helper */ public function testIsTypeAllowed(): void { - $this->assertFalse($this->subject->isTypeAllowed('some-type')); + static::assertFalse(self::$subject->isTypeAllowed('some-type')); } /** * @covers Mage_Admin_Helper_Block::getDisallowedBlockNames() - * @group Mage_Admin - * @group Mage_Admin_Helper + * @group Helper */ public function testGetDisallowedBlockNames(): void { - $this->assertSame(['install/end'], $this->subject->getDisallowedBlockNames()); + static::assertSame(['install/end'], self::$subject->getDisallowedBlockNames()); } } diff --git a/tests/unit/Mage/Admin/Helper/DataTest.php b/tests/unit/Mage/Admin/Helper/DataTest.php index 392bc72acdc..088c1b7be64 100644 --- a/tests/unit/Mage/Admin/Helper/DataTest.php +++ b/tests/unit/Mage/Admin/Helper/DataTest.php @@ -19,35 +19,33 @@ use Mage; use Mage_Admin_Helper_Data as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; -class DataTest extends TestCase +class DataTest extends OpenMageTest { - public Subject $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::helper('admin/data'); + parent::setUpBeforeClass(); + self::$subject = Mage::helper('admin/data'); } /** * @covers Mage_Admin_Helper_Data::generateResetPasswordLinkToken() - * @group Mage_Admin - * @group Mage_Admin_Helper + * @group Helper */ public function testGenerateResetPasswordLinkToken(): void { - $this->assertIsString($this->subject->generateResetPasswordLinkToken()); + static::assertIsString(self::$subject->generateResetPasswordLinkToken()); } /** * @covers Mage_Admin_Helper_Data::getResetPasswordLinkExpirationPeriod() - * @group Mage_Admin - * @group Mage_Admin_Helper + * @group Helper */ public function testGetResetPasswordLinkExpirationPeriod(): void { - $this->assertIsInt($this->subject->getResetPasswordLinkExpirationPeriod()); + static::assertIsInt(self::$subject->getResetPasswordLinkExpirationPeriod()); } } diff --git a/tests/unit/Mage/Admin/Helper/VariableTest.php b/tests/unit/Mage/Admin/Helper/VariableTest.php index dc9dc1c0e6f..8b88696b01c 100644 --- a/tests/unit/Mage/Admin/Helper/VariableTest.php +++ b/tests/unit/Mage/Admin/Helper/VariableTest.php @@ -19,25 +19,24 @@ use Mage; use Mage_Admin_Helper_Variable as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; -class VariableTest extends TestCase +class VariableTest extends OpenMageTest { - public Subject $subject; + public static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::helper('admin/variable'); + parent::setUpBeforeClass(); + self::$subject = Mage::helper('admin/variable'); } /** * @covers Mage_Admin_Helper_Variable::isPathAllowed() - * @group Mage_Admin - * @group Mage_Admin_Helper + * @group Helper */ public function testIsPathAllowed(): void { - $this->assertIsBool($this->subject->isPathAllowed('')); + static::assertIsBool(self::$subject->isPathAllowed('')); } } diff --git a/tests/unit/Mage/Admin/Model/BlockTest.php b/tests/unit/Mage/Admin/Model/BlockTest.php index 6bcffea0a5e..7a19854ae86 100644 --- a/tests/unit/Mage/Admin/Model/BlockTest.php +++ b/tests/unit/Mage/Admin/Model/BlockTest.php @@ -17,63 +17,44 @@ namespace OpenMage\Tests\Unit\Mage\Admin\Model; -use Generator; +use Exception; use Mage; use Mage_Admin_Model_Block as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; +use OpenMage\Tests\Unit\Traits\DataProvider\Mage\Admin\Model\BlockTrait; -class BlockTest extends TestCase +class BlockTest extends OpenMageTest { - public Subject $subject; + use BlockTrait; - public function setUp(): void + private static Subject $subject; + + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::getModel('admin/block'); + parent::setUpBeforeClass(); + self::$subject = Mage::getModel('admin/block'); } /** - * @dataProvider provideValidateData - * @param array $expectedResult + * @dataProvider provideValidateAdminBlockData + * @param true|array $expectedResult * - * @group Mage_Admin - * @group Mage_Admin_Model + * @group Model + * @throws Exception */ - public function testValidate(array $expectedResult, array $methods): void + public function testValidate(bool|array $expectedResult, array $methods): void { - $mock = $this->getMockBuilder(Subject::class) - ->setMethods([ - 'getBlockName', - 'getIsAllowed', - ]) - ->getMock(); - - $mock->method('getBlockName')->willReturn($methods['getBlockName']); - $mock->method('getIsAllowed')->willReturn($methods['getIsAllowed']); - $this->assertEquals($expectedResult, $mock->validate()); - } + $mock = $this->getMockWithCalledMethods(Subject::class, $methods); - public function provideValidateData(): Generator - { - yield 'errors' => [ - [ - 0 => 'Block Name is required field.', - 1 => 'Block Name is incorrect.', - 2 => 'Is Allowed is required field.', - ], - [ - 'getBlockName' => '', - 'getIsAllowed' => '', - ], - ]; + static::assertInstanceOf(Subject::class, $mock); + static::assertEquals($expectedResult, $mock->validate()); } /** - * @group Mage_Admin - * @group Mage_Admin_Model + * @group Model */ public function testIsTypeAllowed(): void { - $this->assertIsBool($this->subject->isTypeAllowed('invalid-type')); + static::assertIsBool(self::$subject->isTypeAllowed('invalid-type')); } } diff --git a/tests/unit/Mage/Admin/Model/ConfigTest.php b/tests/unit/Mage/Admin/Model/ConfigTest.php index ccacf778e3b..71cdd96c7e0 100644 --- a/tests/unit/Mage/Admin/Model/ConfigTest.php +++ b/tests/unit/Mage/Admin/Model/ConfigTest.php @@ -20,52 +20,48 @@ use Mage; use Mage_Admin_Model_Acl; use Mage_Admin_Model_Config as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; use Varien_Simplexml_Config; -class ConfigTest extends TestCase +class ConfigTest extends OpenMageTest { - public Subject $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::getModel('admin/config'); + parent::setUpBeforeClass(); + self::$subject = Mage::getModel('admin/config'); } /** - * @group Mage_Admin - * @group Mage_Admin_Model + * @group Model */ public function testGetAclAssert(): void { - $this->assertFalse($this->subject->getAclAssert('')); + static::assertFalse(self::$subject->getAclAssert('')); } /** - * @group Mage_Admin - * @group Mage_Admin_Model + * @group Model */ public function testGetAclPrivilegeSet(): void { - $this->assertFalse($this->subject->getAclPrivilegeSet()); + static::assertFalse(self::$subject->getAclPrivilegeSet()); } /** - * @group Mage_Admin - * @group Mage_Admin_Model + * @group Model */ public function testLoadAclResources(): void { - $this->assertInstanceOf(Subject::class, $this->subject->loadAclResources(new Mage_Admin_Model_Acl())); + static::assertInstanceOf(Subject::class, self::$subject->loadAclResources(new Mage_Admin_Model_Acl())); } /** - * @group Mage_Admin - * @group Mage_Admin_Model + * @group Model */ public function testGetAdminhtmlConfig(): void { - $this->assertInstanceOf(Varien_Simplexml_Config::class, $this->subject->getAdminhtmlConfig()); + static::assertInstanceOf(Varien_Simplexml_Config::class, self::$subject->getAdminhtmlConfig()); } } diff --git a/tests/unit/Mage/Admin/Model/UserTest.php b/tests/unit/Mage/Admin/Model/UserTest.php index 98f341fc1f2..ddcb6d56f19 100644 --- a/tests/unit/Mage/Admin/Model/UserTest.php +++ b/tests/unit/Mage/Admin/Model/UserTest.php @@ -17,249 +17,152 @@ namespace OpenMage\Tests\Unit\Mage\Admin\Model; -use Generator; use Mage; use Mage_Admin_Model_User as Subject; use Mage_Core_Exception; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; +use OpenMage\Tests\Unit\Traits\DataProvider\Mage\Admin\Model\UserTrait; -class UserTest extends TestCase +class UserTest extends OpenMageTest { - public Subject $subject; + use UserTrait; - public function setUp(): void + private static Subject $subject; + + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::getModel('admin/user'); + parent::setUpBeforeClass(); + self::$subject = Mage::getModel('admin/user'); } /** * @dataProvider provideAuthenticateData - * @param array|true $expectedResult * @group Model - * @group Mage_Admin - * @group Mage_Admin_Model * @group runInSeparateProcess * @runInSeparateProcess */ - public function testAuthenticate($expectedResult, array $methods): void + public function testAuthenticate(bool|string $expectedResult, array $methods): void { - $mock = $this->getMockBuilder(Subject::class) - ->setMethods([ - 'loadByUsername', - 'getId', - 'getUsername', - 'getPassword', - 'getIsActive', - 'validatePasswordHash', - 'hasAssigned2Role', - ]) - ->getMock(); + $defaultMethods = ['loadByUsername' => self::WILL_RETURN_SELF]; + $methods = array_merge($defaultMethods, $methods); + $mock = $this->getMockWithCalledMethods(Subject::class, $methods); - $mock->method('loadByUsername')->willReturnSelf(); - $mock->method('getId')->willReturn($methods['getId']); - // $mock->expects($this->any())->method('getUsername')->willReturn($methods['getUsername']); - $mock->method('getPassword')->willReturn($methods['getPassword']); - $mock->method('validatePasswordHash')->willReturn($methods['validatePasswordHash']); - $mock->method('getIsActive')->willReturn($methods['getIsActive']); - $mock->method('hasAssigned2Role')->willReturn($methods['hasAssigned2Role']); + static::assertInstanceOf(Subject::class, $mock); try { - $this->assertSame($expectedResult, $mock->authenticate($methods['getUsername'], $methods['getPassword'])); + static::assertSame($expectedResult, $mock->authenticate($methods['getUsername'], $methods['getPassword'])); } catch (Mage_Core_Exception $exception) { - $this->assertSame($expectedResult, $exception->getMessage()); + static::assertSame($expectedResult, $exception->getMessage()); } } - public function provideAuthenticateData(): Generator - { - yield 'pass' => [ - true, - [ - 'getId' => '1', - 'getUsername' => 'admin', - 'getPassword' => 'veryl0ngpassw0rd', - 'getIsActive' => '1', - 'validatePasswordHash' => true, - 'hasAssigned2Role' => true, - ], - ]; - yield 'fail #1 inactive' => [ - 'This account is inactive.', - [ - 'getId' => '1', - 'getUsername' => 'admin', - 'getPassword' => 'veryl0ngpassw0rd', - 'getIsActive' => '0', - 'validatePasswordHash' => true, - 'hasAssigned2Role' => true, - ], - ]; - yield 'fail #2 invalid hash' => [ - false, - [ - 'getId' => '1', - 'getUsername' => 'admin', - 'getPassword' => 'veryl0ngpassw0rd', - 'getIsActive' => '1', - 'validatePasswordHash' => false, - 'hasAssigned2Role' => true, - ], - ]; - yield 'fail #3 no role assigned' => [ - 'Access denied.', - [ - 'getId' => '1', - 'getUsername' => 'admin', - 'getPassword' => 'veryl0ngpassw0rd', - 'getIsActive' => '1', - 'validatePasswordHash' => true, - 'hasAssigned2Role' => false, - ], - ]; - } - /** - * @dataProvider provideValidateData + * @dataProvider provideValidateAdminUserData * @param array|true $expectedResult - * @group Mage_Admin - * @group Mage_Admin_Model + * @group Model */ public function testValidate($expectedResult, array $methods): void { - $mock = $this->getMockBuilder(Subject::class) - ->setMethods([ - 'hasNewPassword', - 'getNewPassword', - 'hasPassword', - 'getPassword', - ]) - ->getMock(); + $mock = $this->getMockWithCalledMethods(Subject::class, $methods); - $mock->method('hasNewPassword')->willReturn($methods['hasNewPassword']); - $mock->method('getNewPassword')->willReturn($methods['getNewPassword']); - $mock->method('hasPassword')->willReturn($methods['hasPassword']); - $mock->method('getPassword')->willReturn($methods['getPassword']); - $this->assertSame($expectedResult, $mock->validate()); + static::assertInstanceOf(Subject::class, $mock); + static::assertSame($expectedResult, $mock->validate()); } - public function provideValidateData(): Generator - { - yield 'fail #1' => [ - [ - 0 => 'User Name is required field.', - 1 => 'First Name is required field.', - 2 => 'Last Name is required field.', - 3 => 'Please enter a valid email.', - 4 => 'Password must be at least of 14 characters.', - 5 => 'Password must include both numeric and alphabetic characters.', - ], - [ - 'hasNewPassword' => true, - 'getNewPassword' => '123', - 'hasPassword' => false, - 'getPassword' => '456', - ], - ]; - yield 'fails #2' => [ - [ - 0 => 'User Name is required field.', - 1 => 'First Name is required field.', - 2 => 'Last Name is required field.', - 3 => 'Please enter a valid email.', - 4 => 'Password must be at least of 14 characters.', - 5 => 'Password must include both numeric and alphabetic characters.', - ], - [ - 'hasNewPassword' => false, - 'getNewPassword' => '123', - 'hasPassword' => true, - 'getPassword' => '456', - ], - ]; - } + /** - * @group Mage_Admin - * @group Mage_Admin_Model + * @group Model */ public function testValidateCurrentPassword(): void { - $this->assertIsArray($this->subject->validateCurrentPassword('')); - $this->assertIsArray($this->subject->validateCurrentPassword('123')); + static::assertIsArray(self::$subject->validateCurrentPassword('')); + static::assertIsArray(self::$subject->validateCurrentPassword('123')); } /** - * @group Mage_Admin - * @group Mage_Admin_Model + * @group Model */ public function testLoadByUsername(): void { - $this->assertInstanceOf(Subject::class, $this->subject->loadByUsername('invalid-user')); + static::assertInstanceOf(Subject::class, self::$subject->loadByUsername('invalid-user')); } /** - * @group Mage_Admin - * @group Mage_Admin_Model + * @group Model */ public function testHasAssigned2Role(): void { - $this->assertIsArray($this->subject->hasAssigned2Role(1)); + static::assertIsArray(self::$subject->hasAssigned2Role(1)); } /** * @group Model - * @group Mage_Admin - * @group Mage_Admin_Model */ public function testChangeResetPasswordLinkToken(): void { - $this->assertInstanceOf(Subject::class, $this->subject->changeResetPasswordLinkToken('123')); + static::assertInstanceOf(Subject::class, self::$subject->changeResetPasswordLinkToken('123')); } /** * @dataProvider provideIsResetPasswordLinkTokenExpiredData - * @group Mage_Admin - * @group Mage_Admin_Model + * @group Model */ public function testIsResetPasswordLinkTokenExpired(bool $expectedResult, array $methods): void { - $mock = $this->getMockBuilder(Subject::class) - ->setMethods([ - 'getRpToken', - 'getRpTokenCreatedAt', - ]) - ->getMock(); + $mock = $this->getMockWithCalledMethods(Subject::class, $methods); - $mock->method('getRpToken')->willReturn($methods['getRpToken']); - $mock->method('getRpTokenCreatedAt')->willReturn($methods['getRpTokenCreatedAt']); - $this->assertSame($expectedResult, $mock->isResetPasswordLinkTokenExpired()); + static::assertInstanceOf(Subject::class, $mock); + static::assertSame($expectedResult, $mock->isResetPasswordLinkTokenExpired()); } - public function provideIsResetPasswordLinkTokenExpiredData(): Generator + /** + * @group Model + */ + public function testSendPasswordResetConfirmationEmail(): void { - yield '#1' => [ - true, - [ - 'getRpToken' => '', - 'getRpTokenCreatedAt' => '', - ], - ]; - yield '#2' => [ - true, - [ - 'getRpToken' => '1', - 'getRpTokenCreatedAt' => '0', - ], - ]; + static::assertInstanceOf(Subject::class, self::$subject->sendPasswordResetConfirmationEmail()); } /** - * @group Mage_Admin - * @group Mage_Admin_Model + * @group Model */ - public function testSendPasswordResetConfirmationEmail(): void + public function testCleanPasswordsValidationData(): void + { + self::$subject->setData('password', 'test123'); + self::$subject->setData('current_password', 'current123'); + self::$subject->setData('new_password', 'new123'); + self::$subject->setData('password_confirmation', 'confirm123'); + + self::$subject->cleanPasswordsValidationData(); + + static::assertNull(self::$subject->getData('password')); + static::assertNull(self::$subject->getData('current_password')); + static::assertNull(self::$subject->getData('new_password')); + static::assertNull(self::$subject->getData('password_confirmation')); + } + + /** + * @group Model + */ + public function testGetMinAdminPasswordLength(): void { - $this->assertInstanceOf(Subject::class, $this->subject->sendPasswordResetConfirmationEmail()); + $methods = ['getStoreConfigAsInt' => 10]; + $mock = $this->getMockWithCalledMethods(Subject::class, $methods); + + static::assertInstanceOf(Subject::class, $mock); + static::assertSame(14, $mock->getMinAdminPasswordLength()); + } + + /** + * @group Model + */ + public function testSendAdminNotification(): void + { + $methods = ['getUserCreateAdditionalEmail' => ['test@example.com']]; + $mock = $this->getMockWithCalledMethods(Subject::class, $methods); + + static::assertInstanceOf(Subject::class, $mock); + static::assertInstanceOf(Subject::class, $mock->sendAdminNotification(self::$subject)); } } diff --git a/tests/unit/Mage/Admin/Model/VariableTest.php b/tests/unit/Mage/Admin/Model/VariableTest.php index f5f1b380bf6..c9b9adf9539 100644 --- a/tests/unit/Mage/Admin/Model/VariableTest.php +++ b/tests/unit/Mage/Admin/Model/VariableTest.php @@ -17,65 +17,39 @@ namespace OpenMage\Tests\Unit\Mage\Admin\Model; -use Generator; +use Exception; use Mage; use Mage_Admin_Model_Variable as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; +use OpenMage\Tests\Unit\Traits\DataProvider\Mage\Admin\Model\VariableTrait; -class VariableTest extends TestCase +class VariableTest extends OpenMageTest { - public Subject $subject; + use VariableTrait; - public function setUp(): void + private static Subject $subject; + + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::getModel('admin/variable'); + parent::setUpBeforeClass(); + self::$subject = Mage::getModel('admin/variable'); } /** - * @dataProvider provideValidateData - * @group Mage_Admin - * @group Mage_Admin_Model - * - * @param array|true $expectedResult + * @dataProvider provideValidateAdminVariableData + * @group Model + * @throws Exception */ - public function testValidate($expectedResult, string $variableName, string $isAllowed): void + public function testValidate(bool|array $expectedResult, array $methods): void { - $mock = $this->getMockBuilder(Subject::class) - ->setMethods(['getVariableName', 'getIsAllowed']) - ->getMock(); - - $mock->method('getVariableName')->willReturn($variableName); - $mock->method('getIsAllowed')->willReturn($isAllowed); - $this->assertSame($expectedResult, $mock->validate()); - } + $mock = $this->getMockWithCalledMethods(Subject::class, $methods); - public function provideValidateData(): Generator - { - yield 'test passes' => [ - true, - 'test', - '1', - ]; - yield 'test error empty' => [ - [0 => 'Variable Name is required field.'], - '', - '1', - ]; - yield 'test error regex' => [ - [0 => 'Variable Name is incorrect.'], - '#invalid-name#', - '1', - ]; - yield 'test error allowed' => [ - [0 => 'Is Allowed is required field.'], - 'test', - 'invalid', - ]; + static::assertInstanceOf(Subject::class, $mock); + static::assertSame($expectedResult, $mock->validate()); } public function testIsPathAllowed(): void { - $this->assertIsBool($this->subject->isPathAllowed('invalid-path')); + static::assertIsBool(self::$subject->isPathAllowed('invalid-path')); } } diff --git a/tests/unit/Mage/AdminNotification/Helper/DataTest.php b/tests/unit/Mage/AdminNotification/Helper/DataTest.php index e026a3c2330..ffac2976b26 100644 --- a/tests/unit/Mage/AdminNotification/Helper/DataTest.php +++ b/tests/unit/Mage/AdminNotification/Helper/DataTest.php @@ -20,43 +20,40 @@ use Mage; use Mage_AdminNotification_Helper_Data as Subject; use Mage_AdminNotification_Model_Inbox; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; -class DataTest extends TestCase +class DataTest extends OpenMageTest { - public Subject $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::helper('adminnotification/data'); + parent::setUpBeforeClass(); + self::$subject = Mage::helper('adminnotification/data'); } /** - * @group Mage_AdminNotification - * @group Mage_AdminNotification_Helper + * @group Helper */ public function testGetLatestNotice(): void { - $this->assertInstanceOf(Mage_AdminNotification_Model_Inbox::class, $this->subject->getLatestNotice()); + static::assertInstanceOf(Mage_AdminNotification_Model_Inbox::class, self::$subject->getLatestNotice()); } /** - * @group Mage_AdminNotification - * @group Mage_AdminNotification_Helper + * @group Helper */ public function testGetUnreadNoticeCount(): void { - $this->assertIsInt($this->subject->getUnreadNoticeCount(99)); + static::assertIsInt(self::$subject->getUnreadNoticeCount(99)); } /** * @covers Mage_AdminNotification_Helper_Data::getPopupObjectUrl() - * @group Mage_AdminNotification - * @group Mage_AdminNotification_Helper + * @group Helper */ public function testGetPopupObjectUrl(): void { - $this->assertSame('', $this->subject->getPopupObjectUrl()); + static::assertSame('', self::$subject->getPopupObjectUrl()); } } diff --git a/tests/unit/Mage/AdminNotification/Model/FeedTest.php b/tests/unit/Mage/AdminNotification/Model/FeedTest.php index 50a35f91b53..7d2b782dbff 100644 --- a/tests/unit/Mage/AdminNotification/Model/FeedTest.php +++ b/tests/unit/Mage/AdminNotification/Model/FeedTest.php @@ -19,52 +19,47 @@ use Mage; use Mage_AdminNotification_Model_Feed as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; use SimpleXMLElement; -class FeedTest extends TestCase +class FeedTest extends OpenMageTest { - public Subject $subject; + private static Subject $subject; public function setUp(): void { - Mage::app(); - $this->subject = Mage::getModel('adminnotification/feed'); + self::$subject = Mage::getModel('adminnotification/feed'); } /** - * @group Mage_AdminNotification - * @group Mage_AdminNotification_Model + * @group Model */ public function testGetFeedUrl(): void { - $this->assertIsString($this->subject->getFeedUrl()); + static::assertIsString(self::$subject->getFeedUrl()); } /** - * @group Mage_AdminNotification - * @group Mage_AdminNotification_Model + * @group Model */ public function testCheckUpdate(): void { - $this->assertInstanceOf(Subject::class, $this->subject->checkUpdate()); + static::assertInstanceOf(Subject::class, self::$subject->checkUpdate()); } /** - * @group Mage_AdminNotification - * @group Mage_AdminNotification_Model + * @group Model */ public function testGetFeedData(): void { - $this->assertInstanceOf(SimpleXMLElement::class, $this->subject->getFeedData()); + static::assertInstanceOf(SimpleXMLElement::class, self::$subject->getFeedData()); } /** - * @group Mage_AdminNotification - * @group Mage_AdminNotification_Model + * @group Model */ public function testGetFeedXml(): void { - $this->assertInstanceOf(SimpleXMLElement::class, $this->subject->getFeedXml()); + static::assertInstanceOf(SimpleXMLElement::class, self::$subject->getFeedXml()); } } diff --git a/tests/unit/Mage/AdminNotification/Model/InboxTest.php b/tests/unit/Mage/AdminNotification/Model/InboxTest.php index e10687a1374..2568546f08d 100644 --- a/tests/unit/Mage/AdminNotification/Model/InboxTest.php +++ b/tests/unit/Mage/AdminNotification/Model/InboxTest.php @@ -17,77 +17,55 @@ namespace OpenMage\Tests\Unit\Mage\AdminNotification\Model; -use Generator; use Mage; use Mage_AdminNotification_Model_Inbox as Subject; use Mage_Core_Exception; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; +use OpenMage\Tests\Unit\Traits\DataProvider\Mage\AdminNotification\Model\InboxTrait; -class InboxTest extends TestCase +class InboxTest extends OpenMageTest { + use InboxTrait; + public const TITLE = 'PhpUnit test'; public const URL = 'https://openmage.org'; - public Subject $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::getModel('adminnotification/inbox'); + parent::setUpBeforeClass(); + self::$subject = Mage::getModel('adminnotification/inbox'); } /** * @dataProvider provideGetSeverities - * @group Mage_AdminNotification - * @group Mage_AdminNotification_Model + * @group Model */ - public function testGetSeverities($expectedResult, ?int $severity): void + public function testGetSeverities(array|string|null $expectedResult, ?int $severity): void { - $this->assertSame($expectedResult, $this->subject->getSeverities($severity)); - } - - public function provideGetSeverities(): Generator - { - yield 'null' => [ - [ - Subject::SEVERITY_CRITICAL => 'critical', - Subject::SEVERITY_MAJOR => 'major', - Subject::SEVERITY_MINOR => 'minor', - Subject::SEVERITY_NOTICE => 'notice', - ], - null, - ]; - yield 'valid' => [ - 'critical', - Subject::SEVERITY_CRITICAL, - ]; - yield 'invalid' => [ - null, - 0, - ]; + static::assertSame($expectedResult, self::$subject->getSeverities($severity)); } /** - * @group Mage_AdminNotification - * @group Mage_AdminNotification_Model + * @group Model */ public function testLoadLatestNotice(bool $delete = false): void { - $result = $this->subject->loadLatestNotice(); - $this->assertInstanceOf(Subject::class, $result); + $result = self::$subject->loadLatestNotice(); + static::assertInstanceOf(Subject::class, $result); if ($delete) { $result->delete(); } } /** - * @group Mage_AdminNotification - * @group Mage_AdminNotification_Model + * @group Model */ public function testAdd(): void { - $this->assertInstanceOf(Subject::class, $this->subject->add( + static::assertInstanceOf(Subject::class, self::$subject->add( Subject::SEVERITY_CRITICAL, self::TITLE, [__METHOD__], @@ -98,59 +76,54 @@ public function testAdd(): void /** * @covers Mage_AdminNotification_Model_Inbox::add() - * @group Mage_AdminNotification - * @group Mage_AdminNotification_Model + * @group Model */ public function testAddException(): void { try { - $this->subject->add(0, self::TITLE, __METHOD__); + self::$subject->add(0, self::TITLE, __METHOD__); } catch (Mage_Core_Exception $e) { - $this->assertSame('Wrong message type', $e->getMessage()); + static::assertSame('Wrong message type', $e->getMessage()); } } /** * @covers Mage_AdminNotification_Model_Inbox::addCritical() - * @group Mage_AdminNotification - * @group Mage_AdminNotification_Model + * @group Model */ public function testAddCritical(): void { - $this->assertInstanceOf(Subject::class, $this->subject->addCritical(self::TITLE, __METHOD__)); + static::assertInstanceOf(Subject::class, self::$subject->addCritical(self::TITLE, __METHOD__)); $this->testLoadLatestNotice(true); } /** * @covers Mage_AdminNotification_Model_Inbox::addMajor() - * @group Mage_AdminNotification - * @group Mage_AdminNotification_Model + * @group Model */ public function testAddMajor(): void { - $this->assertInstanceOf(Subject::class, $this->subject->addMajor(self::TITLE, __METHOD__)); + static::assertInstanceOf(Subject::class, self::$subject->addMajor(self::TITLE, __METHOD__)); $this->testLoadLatestNotice(true); } /** * @covers Mage_AdminNotification_Model_Inbox::addMinor() - * @group Mage_AdminNotification - * @group Mage_AdminNotification_Model + * @group Model */ public function testAddMinor(): void { - $this->assertInstanceOf(Subject::class, $this->subject->addMinor(self::TITLE, __METHOD__)); + static::assertInstanceOf(Subject::class, self::$subject->addMinor(self::TITLE, __METHOD__)); $this->testLoadLatestNotice(true); } /** * @covers Mage_AdminNotification_Model_Inbox::addNotice() - * @group Mage_AdminNotification - * @group Mage_AdminNotification_Model + * @group Model */ public function testAddNotice(): void { - $this->assertInstanceOf(Subject::class, $this->subject->addNotice(self::TITLE, __METHOD__)); + static::assertInstanceOf(Subject::class, self::$subject->addNotice(self::TITLE, __METHOD__)); $this->testLoadLatestNotice(true); } } diff --git a/tests/unit/Mage/Adminhtml/Block/CacheTest.php b/tests/unit/Mage/Adminhtml/Block/CacheTest.php index 7bc9be7b6a0..c977feefdbf 100644 --- a/tests/unit/Mage/Adminhtml/Block/CacheTest.php +++ b/tests/unit/Mage/Adminhtml/Block/CacheTest.php @@ -17,39 +17,35 @@ namespace OpenMage\Tests\Unit\Mage\Adminhtml\Block; -use Mage; use Mage_Adminhtml_Block_Cache as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; -class CacheTest extends TestCase +class CacheTest extends OpenMageTest { - public Subject $subject; + private static Subject $subject; public function setUp(): void { - Mage::app(); - $this->subject = new Subject(); + self::$subject = new Subject(); } /** - * @group Mage_Adminhtml - * @group Mage_Adminhtml_Block + * @group Block * @group runInSeparateProcess * @runInSeparateProcess */ public function testGetFlushStorageUrl(): void { - $this->assertStringStartsWith('http', $this->subject->getFlushStorageUrl()); + static::assertStringStartsWith('http', self::$subject->getFlushStorageUrl()); } /** - * @group Mage_Adminhtml - * @group Mage_Adminhtml_Block + * @group Block * @group runInSeparateProcess * @runInSeparateProcess */ public function testGetFlushSystemUrl(): void { - $this->assertStringStartsWith('http', $this->subject->getFlushSystemUrl()); + static::assertStringStartsWith('http', self::$subject->getFlushSystemUrl()); } } diff --git a/tests/unit/Mage/Adminhtml/Block/Customer/Edit/Tab/AddressesTest.php b/tests/unit/Mage/Adminhtml/Block/Customer/Edit/Tab/AddressesTest.php index e952f787e7e..1038c686dd8 100644 --- a/tests/unit/Mage/Adminhtml/Block/Customer/Edit/Tab/AddressesTest.php +++ b/tests/unit/Mage/Adminhtml/Block/Customer/Edit/Tab/AddressesTest.php @@ -17,39 +17,26 @@ namespace OpenMage\Tests\Unit\Mage\Adminhtml\Block\Customer\Edit\Tab; -use Mage; use Mage_Adminhtml_Block_Customer_Edit_Tab_Addresses as Subject; +use Mage_Core_Exception; use Mage_Customer_Model_Customer; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; -class AddressesTest extends TestCase +class AddressesTest extends OpenMageTest { - public Subject $subject; - - public function setUp(): void - { - Mage::app(); - $this->subject = new Subject(); - } - /** - * @group Mage_Adminhtml - * @group Mage_Adminhtml_Block + * @group Block + * @throws Mage_Core_Exception */ public function testInitForm(): void { - $mock = $this->getMockBuilder(Subject::class) - ->setMethods(['getRegistryCurrentCustomer', 'isReadonly']) - ->getMock(); - - $mock - ->method('getRegistryCurrentCustomer') - ->willReturn(new Mage_Customer_Model_Customer()); - - $mock - ->method('isReadonly') - ->willReturn(true); - - $this->assertInstanceOf(Subject::class, $mock->initForm()); + $methods = [ + 'getRegistryCurrentCustomer' => new Mage_Customer_Model_Customer(), + 'isReadonly' => true, + ]; + $mock = $this->getMockWithCalledMethods(Subject::class, $methods); + + static::assertInstanceOf(Subject::class, $mock); + static::assertInstanceOf(Subject::class, $mock->initForm()); } } diff --git a/tests/unit/Mage/Adminhtml/Block/Customer/Edit/Tab/NewsletterTest.php b/tests/unit/Mage/Adminhtml/Block/Customer/Edit/Tab/NewsletterTest.php index 7fa0868a854..8b4eed91a80 100644 --- a/tests/unit/Mage/Adminhtml/Block/Customer/Edit/Tab/NewsletterTest.php +++ b/tests/unit/Mage/Adminhtml/Block/Customer/Edit/Tab/NewsletterTest.php @@ -17,37 +17,23 @@ namespace OpenMage\Tests\Unit\Mage\Adminhtml\Block\Customer\Edit\Tab; -use Mage; use Mage_Adminhtml_Block_Customer_Edit_Tab_Newsletter as Subject; use Mage_Customer_Model_Customer; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; -class NewsletterTest extends TestCase +class NewsletterTest extends OpenMageTest { - public Subject $subject; - - public function setUp(): void - { - Mage::app(); - $this->subject = new Subject(); - } - /** - * - * @group Mage_Adminhtml - * @group Mage_Adminhtml_Block + * @group Block */ public function testInitForm(): void { - $mock = $this->getMockBuilder(Subject::class) - ->setMethods(['getRegistryCurrentCustomer']) - ->getMock(); - - $mock - ->method('getRegistryCurrentCustomer') - // phpcs:ignore Ecg.Classes.ObjectInstantiation.DirectInstantiation - ->willReturn(new Mage_Customer_Model_Customer()); + $methods = [ + 'getRegistryCurrentCustomer' => new Mage_Customer_Model_Customer(), + ]; + $mock = $this->getMockWithCalledMethods(Subject::class, $methods); - $this->assertInstanceOf(Subject::class, $mock->initForm()); + static::assertInstanceOf(Subject::class, $mock); + static::assertInstanceOf(Subject::class, $mock->initForm()); } } diff --git a/tests/unit/Mage/Adminhtml/Block/System/Cache/Form/FormTest.php b/tests/unit/Mage/Adminhtml/Block/System/Cache/Form/FormTest.php index 8e94fc326a1..4363da92935 100644 --- a/tests/unit/Mage/Adminhtml/Block/System/Cache/Form/FormTest.php +++ b/tests/unit/Mage/Adminhtml/Block/System/Cache/Form/FormTest.php @@ -17,25 +17,24 @@ namespace OpenMage\Tests\Unit\Mage\Adminhtml\Block\System\Cache\Form; -use Mage; use Mage_Adminhtml_Block_System_Cache_Form as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; -class FormTest extends TestCase +class FormTest extends OpenMageTest { - public Subject $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = new Subject(); + parent::setUpBeforeClass(); + self::$subject = new Subject(); } /** - * @group Mage_Adminhtml + * @group Block */ public function testInitForm(): void { - $this->assertInstanceOf(Subject::class, $this->subject->initForm()); + static::assertInstanceOf(Subject::class, self::$subject->initForm()); } } diff --git a/tests/unit/Mage/Adminhtml/Block/System/Config/Form/FormTest.php b/tests/unit/Mage/Adminhtml/Block/System/Config/Form/FormTest.php index aea02165241..94fdbd31319 100644 --- a/tests/unit/Mage/Adminhtml/Block/System/Config/Form/FormTest.php +++ b/tests/unit/Mage/Adminhtml/Block/System/Config/Form/FormTest.php @@ -17,25 +17,24 @@ namespace OpenMage\Tests\Unit\Mage\Adminhtml\Block\System\Config\Form; -use Mage; use Mage_Adminhtml_Block_System_Config_Form as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; -class FormTest extends TestCase +class FormTest extends OpenMageTest { - public Subject $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = new Subject(); + parent::setUpBeforeClass(); + self::$subject = new Subject(); } /** - * @group Mage_Adminhtml + * @group Block */ public function testInitForm(): void { - $this->assertInstanceOf(Subject::class, $this->subject->initForm()); + static::assertInstanceOf(Subject::class, self::$subject->initForm()); } } diff --git a/tests/unit/Mage/Adminhtml/Block/System/Convert/Gui/Edit/Tab/ViewTest.php b/tests/unit/Mage/Adminhtml/Block/System/Convert/Gui/Edit/Tab/ViewTest.php index 040cb925445..08f044dd052 100644 --- a/tests/unit/Mage/Adminhtml/Block/System/Convert/Gui/Edit/Tab/ViewTest.php +++ b/tests/unit/Mage/Adminhtml/Block/System/Convert/Gui/Edit/Tab/ViewTest.php @@ -17,35 +17,23 @@ namespace OpenMage\Tests\Unit\Mage\Adminhtml\Block\System\Convert\Gui\Edit\Tab; -use Mage; use Mage_Adminhtml_Block_System_Convert_Gui_Edit_Tab_View as Subject; use Mage_Dataflow_Model_Profile; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; -class ViewTest extends TestCase +class ViewTest extends OpenMageTest { - public Subject $subject; - - public function setUp(): void - { - Mage::app(); - $this->subject = new Subject(); - } - /** - * @group Mage_Adminhtml - * @group Mage_Adminhtml_Block + * @group Block */ public function testInitForm(): void { - $mock = $this->getMockBuilder(Subject::class) - ->setMethods(['getRegistryCurrentConvertProfile']) - ->getMock(); - - $mock - ->method('getRegistryCurrentConvertProfile') - ->willReturn(new Mage_Dataflow_Model_Profile()); + $methods = [ + 'getRegistryCurrentConvertProfile' => new Mage_Dataflow_Model_Profile(), + ]; + $mock = $this->getMockWithCalledMethods(Subject::class, $methods); - $this->assertInstanceOf(Subject::class, $mock->initForm()); + static::assertInstanceOf(Subject::class, $mock); + static::assertInstanceOf(Subject::class, $mock->initForm()); } } diff --git a/tests/unit/Mage/Adminhtml/Block/System/Convert/Profile/Edit/Tab/EditTest.php b/tests/unit/Mage/Adminhtml/Block/System/Convert/Profile/Edit/Tab/EditTest.php index c3c6ea0471c..57e800c373e 100644 --- a/tests/unit/Mage/Adminhtml/Block/System/Convert/Profile/Edit/Tab/EditTest.php +++ b/tests/unit/Mage/Adminhtml/Block/System/Convert/Profile/Edit/Tab/EditTest.php @@ -17,35 +17,23 @@ namespace OpenMage\Tests\Unit\Mage\Adminhtml\Block\System\Convert\Profile\Edit\Tab; -use Mage; use Mage_Adminhtml_Block_System_Convert_Profile_Edit_Tab_Edit as Subject; use Mage_Dataflow_Model_Profile; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; -class EditTest extends TestCase +class EditTest extends OpenMageTest { - public Subject $subject; - - public function setUp(): void - { - Mage::app(); - $this->subject = new Subject(); - } - /** - * @group Mage_Adminhtml - * @group Mage_Adminhtml_Block + * @group Block */ public function testInitForm(): void { - $mock = $this->getMockBuilder(Subject::class) - ->setMethods(['getRegistryCurrentConvertProfile']) - ->getMock(); - - $mock - ->method('getRegistryCurrentConvertProfile') - ->willReturn(new Mage_Dataflow_Model_Profile()); + $methods = [ + 'getRegistryCurrentConvertProfile' => new Mage_Dataflow_Model_Profile(), + ]; + $mock = $this->getMockWithCalledMethods(Subject::class, $methods); - $this->assertInstanceOf(Subject::class, $mock->initForm()); + static::assertInstanceOf(Subject::class, $mock); + static::assertInstanceOf(Subject::class, $mock->initForm()); } } diff --git a/tests/unit/Mage/Adminhtml/Block/TemplateTest.php b/tests/unit/Mage/Adminhtml/Block/TemplateTest.php index fc8de04ecfc..b5f36e44a73 100644 --- a/tests/unit/Mage/Adminhtml/Block/TemplateTest.php +++ b/tests/unit/Mage/Adminhtml/Block/TemplateTest.php @@ -17,62 +17,57 @@ namespace OpenMage\Tests\Unit\Mage\Adminhtml\Block; -use Mage; use Mage_Adminhtml_Block_Template as Subject; +use OpenMage\Tests\Unit\OpenMageTest; use OpenMage\Tests\Unit\Traits\DataProvider\Mage\Core\CoreTrait; -use PHPUnit\Framework\TestCase; -class TemplateTest extends TestCase +class TemplateTest extends OpenMageTest { use CoreTrait; - public Subject $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = new Subject(); + parent::setUpBeforeClass(); + self::$subject = new Subject(); } /** * @see Mage_Core_Model_Session::getFormKey() - * @group Mage_Adminhtml - * @group Mage_Adminhtml_Block + * @group Block * @group runInSeparateProcess * @runInSeparateProcess */ public function testGetFormKey(): void { - $this->assertIsString($this->subject->getFormKey()); + static::assertIsString(self::$subject->getFormKey()); } /** * @covers Mage_Adminhtml_Block_Template::isOutputEnabled() * @dataProvider provideIsOutputEnabled - * @group Mage_Adminhtml - * @group Mage_Adminhtml_Block + * @group Block */ public function testIsOutputEnabled(bool $expectedResult, ?string $moduleName): void { - $this->assertSame($expectedResult, $this->subject->isOutputEnabled($moduleName)); + static::assertSame($expectedResult, self::$subject->isOutputEnabled($moduleName)); } /** - * @group Mage_Adminhtml - * @group Mage_Adminhtml_Block + * @group Block */ public function testGetModuleName(): void { - $this->assertSame('Mage_Adminhtml', $this->subject->getModuleName()); + static::assertSame('Mage_Adminhtml', self::$subject->getModuleName()); } /** * @see Mage_Core_Model_Input_Filter_MaliciousCode::filter() - * @group Mage_Adminhtml - * @group Mage_Adminhtml_Block + * @group Block */ public function testMaliciousCodeFilter(): void { - $this->assertIsString($this->subject->maliciousCodeFilter('')); + static::assertIsString(self::$subject->maliciousCodeFilter('')); } } diff --git a/tests/unit/Mage/Adminhtml/Block/Widget/Grid/ColumnTest.php b/tests/unit/Mage/Adminhtml/Block/Widget/Grid/ColumnTest.php index 02dd8e3ae1f..7a99dc23eb2 100644 --- a/tests/unit/Mage/Adminhtml/Block/Widget/Grid/ColumnTest.php +++ b/tests/unit/Mage/Adminhtml/Block/Widget/Grid/ColumnTest.php @@ -18,26 +18,25 @@ namespace OpenMage\Tests\Unit\Mage\Adminhtml\Block\Widget\Grid; use Mage_Adminhtml_Block_Widget_Grid_Column as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; -class ColumnTest extends TestCase +class ColumnTest extends OpenMageTest { - public Subject $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - $this->subject = new Subject(); + self::$subject = new Subject(); } /** - * @group Mage_Adminhtml - * @group Mage_Adminhtml_Block + * @group Block */ public function testGetType(): void { - $this->assertSame('', $this->subject->getType()); + static::assertSame('', self::$subject->getType()); - $this->subject->setType('text'); - $this->assertSame('text', $this->subject->getType()); + self::$subject->setType('text'); + static::assertSame('text', self::$subject->getType()); } } diff --git a/tests/unit/Mage/Adminhtml/Block/Widget/GridTest.php b/tests/unit/Mage/Adminhtml/Block/Widget/GridTest.php index 48e003655f4..d15e10fe470 100644 --- a/tests/unit/Mage/Adminhtml/Block/Widget/GridTest.php +++ b/tests/unit/Mage/Adminhtml/Block/Widget/GridTest.php @@ -17,157 +17,28 @@ namespace OpenMage\Tests\Unit\Mage\Adminhtml\Block\Widget; -use Generator; -use Mage; use Mage_Adminhtml_Block_Widget_Grid as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; +use OpenMage\Tests\Unit\Traits\DataProvider\Mage\Adminhtml\Block\Widget\GridTrait; -class GridTest extends TestCase +class GridTest extends OpenMageTest { - public Subject $subject; + use GridTrait; - public function setUp(): void + private static Subject $subject; + + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = new Subject(); + parent::setUpBeforeClass(); + self::$subject = new Subject(); } /** * @dataProvider provideAddColumnDefaultData - * @group Mage_Adminhtml - * @group Mage_Adminhtml_Block + * @group Block */ public function testAddColumnDefaultData(array $expectedResult, array $column): void { - $this->assertSame($expectedResult, $this->subject->addColumnDefaultData($column)); - } - - public function provideAddColumnDefaultData(): Generator - { - yield 'empty' => [ - [], - [], - ]; - yield 'index entity_id' => [ - [ - 'index' => 'entity_id', - 'align' => 'right', - 'type' => 'number', - 'width' => '1', - ], - [ - 'index' => 'entity_id', - ], - ]; - yield 'index entity_id w/ override' => [ - [ - 'index' => 'entity_id', - 'align' => 'center', - 'type' => 'text', - ], - [ - 'index' => 'entity_id', - 'align' => 'center', - 'type' => 'text', - ], - ]; - yield 'index array - ref #4475' => [ - [ - 'index' => ['firstname', 'lastname'], - 'type' => 'concat', - 'separator' => ' ', - ], - [ - 'index' => ['firstname', 'lastname'], - 'type' => 'concat', - ], - ]; - yield 'type action' => [ - [ - 'type' => 'action', - 'filter' => false, - 'sortable' => false, - 'width' => '40', - 'header' => 'Action', - ], - [ - 'type' => 'action', - ], - ]; - yield 'type action w/ override' => [ - [ - 'type' => 'action', - 'header' => 'test', - 'filter' => false, - 'sortable' => false, - 'width' => '40', - ], - [ - 'type' => 'action', - 'header' => 'test', - ], - ]; - yield 'type currency' => [ - [ - 'type' => 'currency', - 'align' => 'right', - 'index' => 'price', - 'header' => 'Price', - ], - [ - 'type' => 'currency', - ], - ]; - yield 'type date' => [ - [ - 'type' => 'date', - 'width' => '140', - ], - [ - 'type' => 'date', - ], - ]; - yield 'type datetime' => [ - [ - 'type' => 'datetime', - 'width' => '170', - ], - [ - 'type' => 'datetime', - ], - ]; - yield 'type number' => [ - [ - 'type' => 'number', - 'align' => 'right', - 'width' => '1', - ], - [ - 'type' => 'number', - ], - ]; - yield 'type price' => [ - [ - 'type' => 'price', - 'align' => 'right', - 'index' => 'price', - 'header' => 'Price', - ], - [ - 'type' => 'price', - ], - ]; - yield 'type store' => [ - [ - 'type' => 'store', - 'index' => 'store_id', - 'store_view' => true, - 'width' => '160', - 'header' => 'Store View', - ], - [ - 'type' => 'store', - ], - ]; + static::assertSame($expectedResult, self::$subject->addColumnDefaultData($column)); } } diff --git a/tests/unit/Mage/Adminhtml/Helper/AddressesTest.php b/tests/unit/Mage/Adminhtml/Helper/AddressesTest.php index c00118baada..3d8a5df9362 100644 --- a/tests/unit/Mage/Adminhtml/Helper/AddressesTest.php +++ b/tests/unit/Mage/Adminhtml/Helper/AddressesTest.php @@ -17,46 +17,35 @@ namespace OpenMage\Tests\Unit\Mage\Adminhtml\Helper; -use Generator; use Mage; use Mage_Adminhtml_Helper_Addresses as Subject; use Mage_Customer_Model_Attribute; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; +use OpenMage\Tests\Unit\Traits\DataProvider\Mage\Adminhtml\Helper\AddressTrait; -class AddressesTest extends TestCase +class AddressesTest extends OpenMageTest { - public Subject $subject; + use AddressTrait; - public function setUp(): void + private static Subject $subject; + + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::helper('adminhtml/addresses'); + parent::setUpBeforeClass(); + self::$subject = Mage::helper('adminhtml/addresses'); } /** * @covers Mage_Adminhtml_Helper_Addresses::processStreetAttribute() * @dataProvider provideProcessStreetAttribute - * @group Mage_Adminhtml - * @group Mage_Adminhtml_Helper + * @group Helper */ public function testProcessStreetAttribute(int $expectedResult, int $lines): void { $attribute = new Mage_Customer_Model_Attribute(); $attribute->setScopeMultilineCount($lines); - $result = $this->subject->processStreetAttribute($attribute); - $this->assertSame($expectedResult, $result->getScopeMultilineCount()); - } - - public function provideProcessStreetAttribute(): Generator - { - yield 'default' => [ - Subject::DEFAULT_STREET_LINES_COUNT, - 0, - ]; - yield 'custom' => [ - 4, - 4, - ]; + $result = self::$subject->processStreetAttribute($attribute); + static::assertSame($expectedResult, $result->getScopeMultilineCount()); } } diff --git a/tests/unit/Mage/Adminhtml/Helper/CatalogTest.php b/tests/unit/Mage/Adminhtml/Helper/CatalogTest.php index 1cb1c363a8c..2cc0f4c8ec5 100644 --- a/tests/unit/Mage/Adminhtml/Helper/CatalogTest.php +++ b/tests/unit/Mage/Adminhtml/Helper/CatalogTest.php @@ -19,42 +19,39 @@ use Mage; use Mage_Adminhtml_Helper_Catalog as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; -class CatalogTest extends TestCase +class CatalogTest extends OpenMageTest { - public Subject $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::helper('adminhtml/catalog'); + parent::setUpBeforeClass(); + self::$subject = Mage::helper('adminhtml/catalog'); } /** * @covers Mage_Adminhtml_Helper_Catalog::setAttributeTabBlock() - * @group Mage_Adminhtml - * @group Mage_Adminhtml_Helper + * @group Helper */ public function testSetAttributeTabBlock(): void { - $this->assertInstanceOf(Subject::class, $this->subject->setAttributeTabBlock('')); + static::assertInstanceOf(Subject::class, self::$subject->setAttributeTabBlock('')); } /** * @covers Mage_Adminhtml_Helper_Catalog::setCategoryAttributeTabBlock() - * @group Mage_Adminhtml - * @group Mage_Adminhtml_Helper + * @group Helper */ public function testSetCategoryAttributeTabBlock(): void { - $this->assertInstanceOf(Subject::class, $this->subject->setCategoryAttributeTabBlock('')); + static::assertInstanceOf(Subject::class, self::$subject->setCategoryAttributeTabBlock('')); } /** * @covers Mage_Adminhtml_Helper_Catalog::getSitemapValidPaths() - * @group Mage_Adminhtml - * @group Mage_Adminhtml_Helper + * @group Helper */ public function testGetSitemapValidPaths(): void { @@ -72,6 +69,6 @@ public function testGetSitemapValidPaths(): void 'skin' => '/skin/*/*', ], ]; - $this->assertSame($assert, $this->subject->getSitemapValidPaths()); + static::assertSame($assert, self::$subject->getSitemapValidPaths()); } } diff --git a/tests/unit/Mage/Adminhtml/Helper/ConfigTest.php b/tests/unit/Mage/Adminhtml/Helper/ConfigTest.php index 78c04518855..23f2cf4c17b 100644 --- a/tests/unit/Mage/Adminhtml/Helper/ConfigTest.php +++ b/tests/unit/Mage/Adminhtml/Helper/ConfigTest.php @@ -17,74 +17,40 @@ namespace OpenMage\Tests\Unit\Mage\Adminhtml\Helper; -use Generator; use Mage; use Mage_Adminhtml_Helper_Config as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; +use OpenMage\Tests\Unit\Traits\DataProvider\Mage\Adminhtml\Helper\ConfigTrait; -class ConfigTest extends TestCase +class ConfigTest extends OpenMageTest { - public Subject $subject; + use ConfigTrait; - public function setUp(): void + private static Subject $subject; + + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::helper('adminhtml/config'); + parent::setUpBeforeClass(); + self::$subject = Mage::helper('adminhtml/config'); } /** * @covers Mage_Adminhtml_Helper_Config::getInputTypes() * @dataProvider provideGetInputTypes - * @group Mage_Adminhtml - * @group Mage_Adminhtml_Helper + * @group Helper */ public function testGetInputTypes(array $expectedResult, ?string $inputType): void { - $this->assertSame($expectedResult, $this->subject->getInputTypes($inputType)); - } - - public function provideGetInputTypes(): Generator - { - yield 'null' => [ - [ - 'color' => [ - 'backend_model' => 'adminhtml/system_config_backend_color', - ], - ], - null, - ]; - yield 'color' => [ - [ - 'backend_model' => 'adminhtml/system_config_backend_color', - ], - 'color', - ]; - yield 'invalid' => [ - [], - 'invalid', - ]; + static::assertSame($expectedResult, self::$subject->getInputTypes($inputType)); } /** * @covers Mage_Adminhtml_Helper_Config::getBackendModelByInputType() * @dataProvider provideGetBackendModelByInputType - * @group Mage_Adminhtml - * @group Mage_Adminhtml_Helper + * @group Helper */ public function testGetBackendModelByInputType(?string $expectedResult, string $inputType): void { - $this->assertSame($expectedResult, $this->subject->getBackendModelByInputType($inputType)); - } - - public function provideGetBackendModelByInputType(): Generator - { - yield 'color' => [ - 'adminhtml/system_config_backend_color', - 'color', - ]; - yield 'invalid' => [ - null, - 'invalid', - ]; + static::assertSame($expectedResult, self::$subject->getBackendModelByInputType($inputType)); } } diff --git a/tests/unit/Mage/Adminhtml/Helper/Dashboard/DataTest.php b/tests/unit/Mage/Adminhtml/Helper/Dashboard/DataTest.php index 64239b60d40..c94b78698ab 100644 --- a/tests/unit/Mage/Adminhtml/Helper/Dashboard/DataTest.php +++ b/tests/unit/Mage/Adminhtml/Helper/Dashboard/DataTest.php @@ -20,64 +20,60 @@ use Mage; use Mage_Adminhtml_Helper_Dashboard_Data as Subject; use Mage_Core_Model_Resource_Store_Collection; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; -class DataTest extends TestCase +class DataTest extends OpenMageTest { - public Subject $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::helper('adminhtml/dashboard_data'); + parent::setUpBeforeClass(); + self::$subject = Mage::helper('adminhtml/dashboard_data'); } /** * @covers Mage_Adminhtml_Helper_Dashboard_Data::getStores() - * @group Mage_Adminhtml - * @group Mage_Adminhtml_Helper + * @group Helper */ public function testGetStores(): void { - $this->assertInstanceOf(Mage_Core_Model_Resource_Store_Collection::class, $this->subject->getStores()); + static::assertInstanceOf(Mage_Core_Model_Resource_Store_Collection::class, self::$subject->getStores()); } /** * @covers Mage_Adminhtml_Helper_Dashboard_Data::countStores() - * @group Mage_Adminhtml - * @group Mage_Adminhtml_Helper + * @group Helper */ public function testCountStores(): void { - $this->assertIsInt($this->subject->countStores()); + static::assertIsInt(self::$subject->countStores()); } /** * @covers Mage_Adminhtml_Helper_Dashboard_Data::getDatePeriods() - * @group Mage_Adminhtml - * @group Mage_Adminhtml_Helper + * @group Helper */ public function testGetDatePeriods(): void { $expectedResult = [ - '24h' => $this->subject->__('Last 24 Hours'), - '7d' => $this->subject->__('Last 7 Days'), - '1m' => $this->subject->__('Current Month'), - '3m' => $this->subject->__('Last 3 Months'), - '6m' => $this->subject->__('Last 6 Months'), - '1y' => $this->subject->__('YTD'), - '2y' => $this->subject->__('2YTD'), + '24h' => self::$subject->__('Last 24 Hours'), + '7d' => self::$subject->__('Last 7 Days'), + '1m' => self::$subject->__('Current Month'), + '3m' => self::$subject->__('Last 3 Months'), + '6m' => self::$subject->__('Last 6 Months'), + '1y' => self::$subject->__('YTD'), + '2y' => self::$subject->__('2YTD'), ]; - $this->assertSame($expectedResult, $this->subject->getDatePeriods()); + static::assertSame($expectedResult, self::$subject->getDatePeriods()); } /** * @covers Mage_Adminhtml_Helper_Dashboard_Data::getChartDataHash() - * @group Mage_Adminhtml - * @group Mage_Adminhtml_Helper + * @group Helper */ public function testGetChartDataHash(): void { - $this->assertIsString($this->subject->getChartDataHash('')); + static::assertIsString(self::$subject->getChartDataHash('')); } } diff --git a/tests/unit/Mage/Adminhtml/Helper/DataTest.php b/tests/unit/Mage/Adminhtml/Helper/DataTest.php index bb2d62877f1..825d3ac33c8 100644 --- a/tests/unit/Mage/Adminhtml/Helper/DataTest.php +++ b/tests/unit/Mage/Adminhtml/Helper/DataTest.php @@ -19,71 +19,66 @@ use Mage; use Mage_Adminhtml_Helper_Data as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; -class DataTest extends TestCase +class DataTest extends OpenMageTest { - public Subject $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::helper('adminhtml/data'); + parent::setUpBeforeClass(); + self::$subject = Mage::helper('adminhtml/data'); } /** * @covers Mage_Adminhtml_Helper_Data::getUrl() - * @group Mage_Adminhtml - * @group Mage_Adminhtml_Helper + * @group Helper * @group runInSeparateProcess * @runInSeparateProcess */ public function testGetUrl(): void { - $this->assertIsString($this->subject->getUrl()); + static::assertIsString(self::$subject->getUrl()); } /** * @covers Mage_Adminhtml_Helper_Data::getCurrentUserId() - * @group Mage_Adminhtml - * @group Mage_Adminhtml_Helper + * @group Helper * @group runInSeparateProcess * @runInSeparateProcess */ public function testGetCurrentUserId(): void { - $this->assertFalse($this->subject->getCurrentUserId()); + static::assertFalse(self::$subject->getCurrentUserId()); } /** * @covers Mage_Adminhtml_Helper_Data::prepareFilterString() - * @group Mage_Adminhtml - * @group Mage_Adminhtml_Helper + * @group Helper */ public function testPrepareFilterString(): void { - $this->assertIsArray($this->subject->prepareFilterString('')); + static::assertIsArray(self::$subject->prepareFilterString('')); } /** * @covers Mage_Adminhtml_Helper_Data::decodeFilter() - * @group Mage_Adminhtml - * @group Mage_Adminhtml_Helper + * @group Helper */ public function testDecodeFilter(): void { $string = ''; - $this->subject->decodeFilter($string); - $this->assertSame('', $string); + self::$subject->decodeFilter($string); + static::assertSame('', $string); } /** * @covers Mage_Adminhtml_Helper_Data::isEnabledSecurityKeyUrl() - * @group Mage_Adminhtml - * @group Mage_Adminhtml_Helper + * @group Helper */ public function testIsEnabledSecurityKeyUrl(): void { - $this->assertTrue($this->subject->isEnabledSecurityKeyUrl()); + static::assertTrue(self::$subject->isEnabledSecurityKeyUrl()); } } diff --git a/tests/unit/Mage/Adminhtml/Helper/JsTest.php b/tests/unit/Mage/Adminhtml/Helper/JsTest.php index 973f3a98930..ac64d904e58 100644 --- a/tests/unit/Mage/Adminhtml/Helper/JsTest.php +++ b/tests/unit/Mage/Adminhtml/Helper/JsTest.php @@ -17,49 +17,30 @@ namespace OpenMage\Tests\Unit\Mage\Adminhtml\Helper; -use Generator; use Mage; use Mage_Adminhtml_Helper_Js as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; +use OpenMage\Tests\Unit\Traits\DataProvider\Mage\Adminhtml\Helper\JsTrait; -class JsTest extends TestCase +class JsTest extends OpenMageTest { - public Subject $subject; + use JsTrait; - public function setUp(): void + private static Subject $subject; + + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::helper('adminhtml/js'); + parent::setUpBeforeClass(); + self::$subject = Mage::helper('adminhtml/js'); } /** * @covers Mage_Adminhtml_Helper_Js::decodeGridSerializedInput() * @dataProvider provideDecodeGridSerializedInput - * @group Mage_Adminhtml - * @group Mage_Adminhtml_Helper + * @group Helper */ public function testDecodeGridSerializedInput(array $expectedResult, string $encoded): void { - $this->assertSame($expectedResult, $this->subject->decodeGridSerializedInput($encoded)); - } - - public function provideDecodeGridSerializedInput(): Generator - { - yield 'w/o keys' => [ - [ - 0 => 1, - 1 => 2, - 2 => 3, - 3 => 4, - ], - '1&2&3&4', - ]; - yield 'w/ keys' => [ - [ - 1 => [], - 2 => [], - ], - '1=1&2=2', - ]; + static::assertSame($expectedResult, self::$subject->decodeGridSerializedInput($encoded)); } } diff --git a/tests/unit/Mage/Adminhtml/Helper/Media/JsTest.php b/tests/unit/Mage/Adminhtml/Helper/Media/JsTest.php index ff17b3b317e..566435234ed 100644 --- a/tests/unit/Mage/Adminhtml/Helper/Media/JsTest.php +++ b/tests/unit/Mage/Adminhtml/Helper/Media/JsTest.php @@ -19,24 +19,23 @@ use Mage; use Mage_Adminhtml_Helper_Media_Js as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; -class JsTest extends TestCase +class JsTest extends OpenMageTest { - public Subject $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::helper('adminhtml/media_js'); + parent::setUpBeforeClass(); + self::$subject = Mage::helper('adminhtml/media_js'); } /** - * @group Mage_Adminhtml - * @group Mage_Adminhtml_Helper + * @group Helper */ public function testDecodeGridSerializedInput(): void { - $this->assertIsString($this->subject->getTranslatorScript()); + static::assertIsString(self::$subject->getTranslatorScript()); } } diff --git a/tests/unit/Mage/Adminhtml/Helper/SalesTest.php b/tests/unit/Mage/Adminhtml/Helper/SalesTest.php index 1e8da01ba12..e77780c1a12 100644 --- a/tests/unit/Mage/Adminhtml/Helper/SalesTest.php +++ b/tests/unit/Mage/Adminhtml/Helper/SalesTest.php @@ -17,37 +17,30 @@ namespace OpenMage\Tests\Unit\Mage\Adminhtml\Helper; -use Generator; use Mage; use Mage_Adminhtml_Helper_Sales as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; +use OpenMage\Tests\Unit\Traits\DataProvider\Mage\Adminhtml\Helper\SalesTrait; -class SalesTest extends TestCase +class SalesTest extends OpenMageTest { - public Subject $subject; + use SalesTrait; - public function setUp(): void + private static Subject $subject; + + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::helper('adminhtml/sales'); + parent::setUpBeforeClass(); + self::$subject = Mage::helper('adminhtml/sales'); } /** * @covers Mage_Adminhtml_Helper_Sales::escapeHtmlWithLinks() * @dataProvider provideDecodeGridSerializedInput - * @group Mage_Adminhtml - * @group Mage_Adminhtml_Helper + * @group Helper */ - public function testEscapeHtmlWithLinks($expectedResult, $data): void - { - $this->assertSame($expectedResult, $this->subject->escapeHtmlWithLinks($data, ['a'])); - } - - public function provideDecodeGridSerializedInput(): Generator + public function testEscapeHtmlWithLinks(string $expectedResult, string $data): void { - yield 'test #1' => [ - '<a href="https://localhost">', - '', - ]; + static::assertSame($expectedResult, self::$subject->escapeHtmlWithLinks($data, ['a'])); } } diff --git a/tests/unit/Mage/Api/Model/UserTest.php b/tests/unit/Mage/Api/Model/UserTest.php new file mode 100644 index 00000000000..96156c0adbe --- /dev/null +++ b/tests/unit/Mage/Api/Model/UserTest.php @@ -0,0 +1,35 @@ +getMockWithCalledMethods(Subject::class, $methods); + + static::assertInstanceOf(Subject::class, $mock); + static::assertSame($expectedResult, $mock->validate()); + } +} diff --git a/tests/unit/Mage/Catalog/Helper/CategoryTest.php b/tests/unit/Mage/Catalog/Helper/CategoryTest.php index 14fa24fc2d6..2c9d16ff8e3 100644 --- a/tests/unit/Mage/Catalog/Helper/CategoryTest.php +++ b/tests/unit/Mage/Catalog/Helper/CategoryTest.php @@ -19,24 +19,23 @@ use Mage; use Mage_Catalog_Helper_Category as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; -class CategoryTest extends TestCase +class CategoryTest extends OpenMageTest { - public Subject $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::helper('catalog/category'); + parent::setUpBeforeClass(); + self::$subject = Mage::helper('catalog/category'); } /** - * @group Mage_Catalog - * @group Mage_Catalog_Helper + * @group Helper */ public function testCanUseCanonicalTag(): void { - $this->assertIsBool($this->subject->canUseCanonicalTag()); + static::assertIsBool(self::$subject->canUseCanonicalTag()); } } diff --git a/tests/unit/Mage/Catalog/Helper/DataTest.php b/tests/unit/Mage/Catalog/Helper/DataTest.php index 2cd5e2fdba7..6cf9eba9395 100644 --- a/tests/unit/Mage/Catalog/Helper/DataTest.php +++ b/tests/unit/Mage/Catalog/Helper/DataTest.php @@ -17,92 +17,70 @@ namespace OpenMage\Tests\Unit\Mage\Catalog\Helper; -use Generator; use Mage; use Mage_Catalog_Helper_Data as Subject; use Mage_Catalog_Model_Template_Filter; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; +use OpenMage\Tests\Unit\Traits\DataProvider\Mage\Catalog\Helper\DataTrait; -class DataTest extends TestCase +class DataTest extends OpenMageTest { - public Subject $subject; + use DataTrait; - public function setUp(): void + private static Subject $subject; + + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::helper('catalog'); + parent::setUpBeforeClass(); + self::$subject = Mage::helper('catalog'); } /** * @dataProvider provideSplitSku - * @group Mage_Catalog - * @group Mage_Catalog_Helper + * @group Helper */ - public function testSplitSku($expectedResult, string $sku, int $length = 30): void - { - $this->assertSame($expectedResult, $this->subject->splitSku($sku, $length)); - } - - public function provideSplitSku(): Generator + public function testSplitSku(array $expectedResult, string $sku, int $length = 30): void { - yield 'test #1' => [ - [ - '100', - ], - '100', - ]; - yield 'test #2 w/ length' => [ - [ - '10', - '0', - ], - '100', - 2, - ]; + static::assertSame($expectedResult, self::$subject->splitSku($sku, $length)); } /** - * @group Mage_Catalog - * @group Mage_Catalog_Helper + * @group Helper */ public function testShouldSaveUrlRewritesHistory(): void { - $this->assertIsBool($this->subject->shouldSaveUrlRewritesHistory()); + static::assertIsBool(self::$subject->shouldSaveUrlRewritesHistory()); } /** - * @group Mage_Catalog - * @group Mage_Catalog_Helper + * @group Helper */ public function testIsUsingStaticUrlsAllowed(): void { - $this->assertIsBool($this->subject->isUsingStaticUrlsAllowed()); + static::assertIsBool(self::$subject->isUsingStaticUrlsAllowed()); } /** - * @group Mage_Catalog - * @group Mage_Catalog_Helper + * @group Helper */ public function testIsUrlDirectivesParsingAllowed(): void { - $this->assertIsBool($this->subject->isUrlDirectivesParsingAllowed()); + static::assertIsBool(self::$subject->isUrlDirectivesParsingAllowed()); } /** - * @group Mage_Catalog - * @group Mage_Catalog_Helper + * @group Helper */ public function testGetPageTemplateProcessor(): void { - $this->assertInstanceOf(Mage_Catalog_Model_Template_Filter::class, $this->subject->getPageTemplateProcessor()); + static::assertInstanceOf(Mage_Catalog_Model_Template_Filter::class, self::$subject->getPageTemplateProcessor()); } /** - * @group Mage_Catalog - * @group Mage_Catalog_Helper + * @group Helper */ public function testGetOldFieldMap(): void { - $this->assertSame([], $this->subject->getOldFieldMap()); + static::assertSame([], self::$subject->getOldFieldMap()); } } diff --git a/tests/unit/Mage/Catalog/Helper/MapTest.php b/tests/unit/Mage/Catalog/Helper/MapTest.php index c2ec84f5c3b..df4dcaa6740 100644 --- a/tests/unit/Mage/Catalog/Helper/MapTest.php +++ b/tests/unit/Mage/Catalog/Helper/MapTest.php @@ -19,46 +19,43 @@ use Mage; use Mage_Catalog_Helper_Map as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; -class MapTest extends TestCase +class MapTest extends OpenMageTest { - public Subject $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::helper('catalog/map'); + parent::setUpBeforeClass(); + self::$subject = Mage::helper('catalog/map'); } /** - * @group Mage_Catalog - * @group Mage_Catalog_Helper + * @group Helper * @group runInSeparateProcess * @runInSeparateProcess */ public function testGetCategoryUrl(): void { - $this->assertStringEndsWith('/catalog/seo_sitemap/category/', $this->subject->getCategoryUrl()); + static::assertStringEndsWith('/catalog/seo_sitemap/category/', self::$subject->getCategoryUrl()); } /** - * @group Mage_Catalog - * @group Mage_Catalog_Helper + * @group Helper * @group runInSeparateProcess * @runInSeparateProcess */ public function testGetProductUrl(): void { - $this->assertStringEndsWith('/catalog/seo_sitemap/product/', $this->subject->getProductUrl()); + static::assertStringEndsWith('/catalog/seo_sitemap/product/', self::$subject->getProductUrl()); } /** - * @group Mage_Catalog - * @group Mage_Catalog_Helper + * @group Helper */ public function testGetIsUseCategoryTreeMode(): void { - $this->assertIsBool($this->subject->getIsUseCategoryTreeMode()); + static::assertIsBool(self::$subject->getIsUseCategoryTreeMode()); } } diff --git a/tests/unit/Mage/Catalog/Helper/Product/UrlTest.php b/tests/unit/Mage/Catalog/Helper/Product/UrlTest.php index 6ea1ee24d9b..9a8a05fc762 100644 --- a/tests/unit/Mage/Catalog/Helper/Product/UrlTest.php +++ b/tests/unit/Mage/Catalog/Helper/Product/UrlTest.php @@ -17,82 +17,60 @@ namespace OpenMage\Tests\Unit\Mage\Catalog\Helper\Product; -use Generator; use Mage; use Mage_Catalog_Helper_Product_Url as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; +use OpenMage\Tests\Unit\Traits\DataProvider\Mage\Catalog\Helper\Product\UrlTrait; -class UrlTest extends TestCase +class UrlTest extends OpenMageTest { - public Subject $subject; + use UrlTrait; - public function setUp(): void + private static Subject $subject; + + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::helper('catalog/product_url'); + parent::setUpBeforeClass(); + self::$subject = Mage::helper('catalog/product_url'); } /** * @covers Mage_Catalog_Helper_Product_Url::getConvertTable() - * @group Mage_Catalog - * @group Mage_Catalog_Helper + * @group Helper */ public function testGetConvertTable(): void { - $result = $this->subject->getConvertTable(); - $this->assertCount(317, $result); + $result = self::$subject->getConvertTable(); + static::assertCount(317, $result); } /** * @covers Mage_Catalog_Helper_Product_Url::getConvertTableCustom() - * @group Mage_Catalog - * @group Mage_Catalog_Helper + * @group Helper */ public function testGetConvertTableCustom(): void { - $result = $this->subject->getConvertTableCustom(); - $this->assertEmpty($result); + $result = self::$subject->getConvertTableCustom(); + static::assertEmpty($result); } /** * @covers Mage_Catalog_Helper_Product_Url::getConvertTableShort() - * @group Mage_Catalog - * @group Mage_Catalog_Helper + * @group Helper */ public function testGetConvertTableShort(): void { - $result = $this->subject->getConvertTableShort(); - $this->assertCount(4, $result); + $result = self::$subject->getConvertTableShort(); + static::assertCount(4, $result); } /** * @covers Mage_Catalog_Helper_Product_Url::format() * @dataProvider provideFormat - * @group Mage_Catalog - * @group Mage_Catalog_Helper + * @group Helper */ public function testFormat(string $expectedResult, ?string $string): void { - $this->assertSame($expectedResult, $this->subject->format($string)); - } - - public function provideFormat(): Generator - { - yield 'null' => [ - '', - null, - ]; - yield 'string' => [ - 'string', - 'string', - ]; - yield 'umlauts' => [ - 'string with aou', - 'string with ÄÖÜ', - ]; - yield 'at' => [ - 'at', - '@', - ]; + static::assertSame($expectedResult, self::$subject->format($string)); } } diff --git a/tests/unit/Mage/Catalog/Helper/ProductTest.php b/tests/unit/Mage/Catalog/Helper/ProductTest.php index 7910f8eba9a..7cc3a210885 100644 --- a/tests/unit/Mage/Catalog/Helper/ProductTest.php +++ b/tests/unit/Mage/Catalog/Helper/ProductTest.php @@ -17,93 +17,55 @@ namespace OpenMage\Tests\Unit\Mage\Catalog\Helper; -use Generator; use Mage; use Mage_Catalog_Helper_Product as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; +use OpenMage\Tests\Unit\Traits\DataProvider\Mage\Catalog\Helper\ProductTrait; -class ProductTest extends TestCase +class ProductTest extends OpenMageTest { - public Subject $subject; + use ProductTrait; - public function setUp(): void + private static Subject $subject; + + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::helper('catalog/product'); + parent::setUpBeforeClass(); + self::$subject = Mage::helper('catalog/product'); } /** - * @group Mage_Catalog - * @group Mage_Catalog_Helper + * @group Helper */ public function testCanUseCanonicalTag(): void { - $this->assertIsBool($this->subject->canUseCanonicalTag()); + static::assertIsBool(self::$subject->canUseCanonicalTag()); } /** * @dataProvider provideGetAttributeInputTypes - * @group Mage_Catalog - * @group Mage_Catalog_Helper + * @group Helper */ public function testGetAttributeInputTypes(int $expectedResult, ?string $inputType = null): void { - $this->assertCount($expectedResult, $this->subject->getAttributeInputTypes($inputType)); - } - - public function provideGetAttributeInputTypes(): Generator - { - yield 'null' => [ - 2, - null, - ]; - yield 'invalid' => [ - 0, - 'invalid', - ]; - yield 'multiselect' => [ - 1, - 'multiselect', - ]; - yield 'boolean' => [ - 1, - 'boolean', - ]; + static::assertCount($expectedResult, self::$subject->getAttributeInputTypes($inputType)); } /** * @dataProvider provideGetAttributeBackendModelByInputType - * @group Mage_Catalog - * @group Mage_Catalog_Helper + * @group Helper */ - public function testGetAttributeBackendModelByInputType($expectedResult, string $inputType): void - { - $this->assertSame($expectedResult, $this->subject->getAttributeBackendModelByInputType($inputType)); - } - - public function provideGetAttributeBackendModelByInputType(): Generator + public function testGetAttributeBackendModelByInputType(string $expectedResult, string $inputType): void { - yield 'multiselect' => [ - 'eav/entity_attribute_backend_array', - 'multiselect', - ]; + static::assertSame($expectedResult, self::$subject->getAttributeBackendModelByInputType($inputType)); } /** * @dataProvider provideGetAttributeSourceModelByInputType - * @group Mage_Catalog - * @group Mage_Catalog_Helper + * @group Helper */ - public function testGetAttributeSourceModelByInputType($expectedResult, string $inputType): void - { - $this->assertSame($expectedResult, $this->subject->getAttributeSourceModelByInputType($inputType)); - } - - public function provideGetAttributeSourceModelByInputType(): Generator + public function testGetAttributeSourceModelByInputType(string $expectedResult, string $inputType): void { - yield 'boolean' => [ - 'eav/entity_attribute_source_boolean', - 'boolean', - ]; + static::assertSame($expectedResult, self::$subject->getAttributeSourceModelByInputType($inputType)); } } diff --git a/tests/unit/Mage/Catalog/Model/CategoryTest.php b/tests/unit/Mage/Catalog/Model/CategoryTest.php index 28ecb29f624..80612fc2068 100644 --- a/tests/unit/Mage/Catalog/Model/CategoryTest.php +++ b/tests/unit/Mage/Catalog/Model/CategoryTest.php @@ -23,105 +23,96 @@ use Mage_Catalog_Model_Resource_Product_Collection; use Mage_Catalog_Model_Url; use OpenMage\Tests\Unit\Traits\DataProvider\Mage\Catalog\CatalogTrait; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; -class CategoryTest extends TestCase +class CategoryTest extends OpenMageTest { use CatalogTrait; - public Subject $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::getModel('catalog/category'); + parent::setUpBeforeClass(); + self::$subject = Mage::getModel('catalog/category'); } /** - * @group Mage_Catalog - * @group Mage_Catalog_Model + * @group Model */ public function testGetDefaultAttributeSetId(): void { - $this->assertIsInt($this->subject->getDefaultAttributeSetId()); + static::assertIsInt(self::$subject->getDefaultAttributeSetId()); } /** - * @group Mage_Catalog - * @group Mage_Catalog_Model + * @group Model */ public function testGetProductCollection(): void { - $this->assertInstanceOf(Mage_Catalog_Model_Resource_Product_Collection::class, $this->subject->getProductCollection()); + static::assertInstanceOf(Mage_Catalog_Model_Resource_Product_Collection::class, self::$subject->getProductCollection()); } /** - * @group Mage_Catalog - * @group Mage_Catalog_Model + * @group Model */ public function testGetAvailableSortByOptions(): void { - $this->assertIsArray($this->subject->getAvailableSortByOptions()); + static::assertIsArray(self::$subject->getAvailableSortByOptions()); } /** - * @group Mage_Catalog - * @group Mage_Catalog_Model + * @group Model */ public function testGetDefaultSortBy(): void { - $this->assertSame('position', $this->subject->getDefaultSortBy()); + static::assertSame('position', self::$subject->getDefaultSortBy()); } /** - * @group Mage_Catalog - * @group Mage_Catalog_Model + * @group Model */ public function testValidate(): void { - $this->assertIsArray($this->subject->validate()); + static::assertIsArray(self::$subject->validate()); } /** - * @group Mage_Catalog - * @group Mage_Catalog_Model + * @group Model */ public function testAfterCommitCallback(): void { - $this->assertInstanceOf(Subject::class, $this->subject->afterCommitCallback()); + static::assertInstanceOf(Subject::class, self::$subject->afterCommitCallback()); } /** - * @group Mage_Catalog - * @group Mage_Catalog_Model + * @group Model */ public function testGetUrlModel(): void { - $this->assertInstanceOf(Mage_Catalog_Model_Url::class, $this->subject->getUrlModel()); - $this->assertInstanceOf(Mage_Catalog_Model_Category_Url::class, $this->subject->getUrlModel()); + static::assertInstanceOf(Mage_Catalog_Model_Url::class, self::$subject->getUrlModel()); + static::assertInstanceOf(Mage_Catalog_Model_Category_Url::class, self::$subject->getUrlModel()); } /** * @dataProvider provideFormatUrlKey - * @group Mage_Catalog - * @group Mage_Catalog_Model + * @group Model * @runInSeparateProcess */ // public function testGetCategoryIdUrl($expectedResult, ?string $locale): void // { - // $this->subject->setName(self::TEST_STRING); - // $this->subject->setLocale($locale); - // $this->assertSame($expectedResult, $this->subject->getCategoryIdUrl()); + // self::$subject->setName(self::TEST_STRING); + // self::$subject->setLocale($locale); + // $this->assertSame($expectedResult, self::$subject->getCategoryIdUrl()); // } /** * @dataProvider provideFormatUrlKey - * @group Mage_Catalog - * @group Mage_Catalog_Model + * @group Model */ - public function testFormatUrlKey($expectedResult, string $locale): void + public function testFormatUrlKey(string $expectedResult, string $locale): void { - $this->subject->setLocale($locale); - $this->assertSame($expectedResult, $this->subject->formatUrlKey($this->getTestString())); + self::$subject->setLocale($locale); + static::assertSame($expectedResult, self::$subject->formatUrlKey($this->getTestString())); } } diff --git a/tests/unit/Mage/Catalog/Model/Product/Option/Type/TextTest.php b/tests/unit/Mage/Catalog/Model/Product/Option/Type/TextTest.php index 313cf47fafe..a68f9d3b53f 100644 --- a/tests/unit/Mage/Catalog/Model/Product/Option/Type/TextTest.php +++ b/tests/unit/Mage/Catalog/Model/Product/Option/Type/TextTest.php @@ -21,40 +21,38 @@ use Mage; use Mage_Catalog_Model_Product_Option; use Mage_Catalog_Model_Product_Option_Type_Text as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; -class TextTest extends TestCase +class TextTest extends OpenMageTest { - public Subject $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::getModel('catalog/product_option_type_text'); + parent::setUpBeforeClass(); + self::$subject = Mage::getModel('catalog/product_option_type_text'); } /** - * @group Mage_Catalog - * @group Mage_Catalog_Model + * @group Model * @group runInSeparateProcess * @runInSeparateProcess */ public function testValidateUserValue(): void { - $this->subject->setOption(new Mage_Catalog_Model_Product_Option()); - $this->assertInstanceOf(Subject::class, $this->subject->validateUserValue([])); + self::$subject->setOption(new Mage_Catalog_Model_Product_Option()); + static::assertInstanceOf(Subject::class, self::$subject->validateUserValue([])); } /** * @dataProvider providePrepareForCart - * @group Mage_Catalog - * @group Mage_Catalog_Model + * @group Model */ - public function testPrepareForCart($expectedResult, bool $setIsValid = true, $setUserValue = null): void + public function testPrepareForCart(?string $expectedResult, bool $setIsValid = true, ?string $setUserValue = null): void { - $this->subject->setIsValid($setIsValid)->setUserValue($setUserValue); - $this->assertSame($expectedResult, $this->subject->prepareForCart()); + self::$subject->setIsValid($setIsValid)->setUserValue($setUserValue); + static::assertSame($expectedResult, self::$subject->prepareForCart()); } public function providePrepareForCart(): Generator @@ -71,11 +69,10 @@ public function providePrepareForCart(): Generator /** * @covers Mage_Catalog_Model_Product_Option_Type_Text::getFormattedOptionValue() - * @group Mage_Catalog - * @group Mage_Catalog_Model + * @group Model */ public function testGetDefaultAttributeSetId(): void { - $this->assertIsString($this->subject->getFormattedOptionValue('')); + static::assertIsString(self::$subject->getFormattedOptionValue('')); } } diff --git a/tests/unit/Mage/Catalog/Model/ProductTest.php b/tests/unit/Mage/Catalog/Model/ProductTest.php index e0f088acc6d..9f416fc1d43 100644 --- a/tests/unit/Mage/Catalog/Model/ProductTest.php +++ b/tests/unit/Mage/Catalog/Model/ProductTest.php @@ -26,149 +26,135 @@ use Mage_Catalog_Model_Url; use OpenMage\Tests\Unit\Traits\DataProvider\Base\BoolTrait; use OpenMage\Tests\Unit\Traits\DataProvider\Mage\Catalog\CatalogTrait; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; -class ProductTest extends TestCase +class ProductTest extends OpenMageTest { use BoolTrait; use CatalogTrait; - public Subject $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::getModel('catalog/product'); + parent::setUpBeforeClass(); + self::$subject = Mage::getModel('catalog/product'); } /** - * @group Mage_Catalog - * @group Mage_Catalog_Model + * @group Model */ public function testGetStoreId(): void { - $this->assertIsInt($this->subject->getStoreId()); + static::assertIsInt(self::$subject->getStoreId()); } /** - * @group Mage_Catalog - * @group Mage_Catalog_Model + * @group Model */ public function testGetResourceCollection(): void { - $this->assertInstanceOf(Mage_Catalog_Model_Resource_Product_Collection::class, $this->subject->getResourceCollection()); + static::assertInstanceOf(Mage_Catalog_Model_Resource_Product_Collection::class, self::$subject->getResourceCollection()); } /** - * @group Mage_Catalog - * @group Mage_Catalog_Model + * @group Model */ public function testGetUrlModel(): void { - $this->assertInstanceOf(Mage_Catalog_Model_Url::class, $this->subject->getUrlModel()); - $this->assertInstanceOf(Mage_Catalog_Model_Product_Url::class, $this->subject->getUrlModel()); + static::assertInstanceOf(Mage_Catalog_Model_Url::class, self::$subject->getUrlModel()); + static::assertInstanceOf(Mage_Catalog_Model_Product_Url::class, self::$subject->getUrlModel()); } /** - * @group Mage_Catalog - * @group Mage_Catalog_Model + * @group Model */ public function testValidate(): void { - $this->assertInstanceOf(Subject::class, $this->subject->validate()); + static::assertInstanceOf(Subject::class, self::$subject->validate()); } /** - * @group Mage_Catalog - * @group Mage_Catalog_Model + * @group Model */ // public function testGetName(): void // { - // $this->assertNull($this->subject->getName()); - // $this->assertIsString($this->subject->getName()); + // $this->assertNull(self::$subject->getName()); + // $this->assertIsString(self::$subject->getName()); // } /** - * @group Mage_Catalog - * @group Mage_Catalog_Model + * @group Model */ // public function testGetPrice(): void // { - // $this->assertIsFloat($this->subject->getPrice()); + // $this->assertIsFloat(self::$subject->getPrice()); // } /** - * @group Mage_Catalog - * @group Mage_Catalog_Model + * @group Model */ public function testSetPriceCalculation(): void { - $this->assertInstanceOf(Subject::class, $this->subject->setPriceCalculation()); + static::assertInstanceOf(Subject::class, self::$subject->setPriceCalculation()); } /** - * @group Mage_Catalog - * @group Mage_Catalog_Model + * @group Model */ // public function testGetTypeId(): void // { - // $this->assertIsString($this->subject->getTypeId()); + // $this->assertIsString(self::$subject->getTypeId()); // } /** - * @group Mage_Catalog - * @group Mage_Catalog_Model + * @group Model */ public function testGetStatus(): void { - $this->assertSame(1, $this->subject->getStatus()); + static::assertSame(1, self::$subject->getStatus()); } /** * @dataProvider provideBool - * @group Mage_Catalog - * @group Mage_Catalog_Model + * @group Model */ public function testGetTypeInstance(bool $singleton): void { - $this->assertInstanceOf(Mage_Catalog_Model_Product_Type_Abstract::class, $this->subject->getTypeInstance($singleton)); + static::assertInstanceOf(Mage_Catalog_Model_Product_Type_Abstract::class, self::$subject->getTypeInstance($singleton)); } /** - * @group Mage_Catalog - * @group Mage_Catalog_Model + * @group Model */ public function testGetLinkInstance(): void { - $this->assertInstanceOf(Mage_Catalog_Model_Product_Link::class, $this->subject->getLinkInstance()); + static::assertInstanceOf(Mage_Catalog_Model_Product_Link::class, self::$subject->getLinkInstance()); } /** - * @group Mage_Catalog - * @group Mage_Catalog_Model + * @group Model */ public function testGetDefaultAttributeSetId(): void { - $this->assertIsInt($this->subject->getDefaultAttributeSetId()); + static::assertIsInt(self::$subject->getDefaultAttributeSetId()); } /** - * @group Mage_Catalog - * @group Mage_Catalog_Model + * @group Model */ public function testAfterCommitCallback(): void { - $this->assertInstanceOf(Subject::class, $this->subject->afterCommitCallback()); + static::assertInstanceOf(Subject::class, self::$subject->afterCommitCallback()); } /** * @dataProvider provideFormatUrlKey - * @group Mage_Catalog - * @group Mage_Catalog_Model + * @group Model */ - public function testFormatUrlKey($expectedResult, string $locale): void + public function testFormatUrlKey(string $expectedResult, string $locale): void { - $this->subject->setLocale($locale); - $this->assertSame($expectedResult, $this->subject->formatUrlKey($this->getTestString())); + self::$subject->setLocale($locale); + static::assertSame($expectedResult, self::$subject->formatUrlKey($this->getTestString())); } } diff --git a/tests/unit/Mage/Catalog/Model/Resource/Eav/AttributeTest.php b/tests/unit/Mage/Catalog/Model/Resource/Eav/AttributeTest.php index 2d57ed1762d..5e9e0402310 100644 --- a/tests/unit/Mage/Catalog/Model/Resource/Eav/AttributeTest.php +++ b/tests/unit/Mage/Catalog/Model/Resource/Eav/AttributeTest.php @@ -1,16 +1,9 @@ subject = Mage::getModel('catalog/resource_eav_attribute'); + self::$subject = Mage::getModel('catalog/resource_eav_attribute'); } /** * @dataProvider provideGetStoreId - * @group Mage_Catalog - * @group Mage_Catalog_Model - * @group Mage_Catalog_Model_Resource + * @group Model */ - public function testGetStoreId($expectedResult, $withStoreId): void + public function testGetStoreId(?int $expectedResult, int|string|null $withStoreId): void { if ($withStoreId) { - $this->subject->setStoreId($withStoreId); + self::$subject->setStoreId($withStoreId); } - $this->assertSame($expectedResult, $this->subject->getStoreId()); + static::assertSame($expectedResult, self::$subject->getStoreId()); } } diff --git a/tests/unit/Mage/Catalog/Model/UrlTest.php b/tests/unit/Mage/Catalog/Model/UrlTest.php index 305b6a2dabc..3ebf93234c2 100644 --- a/tests/unit/Mage/Catalog/Model/UrlTest.php +++ b/tests/unit/Mage/Catalog/Model/UrlTest.php @@ -17,53 +17,50 @@ namespace OpenMage\Tests\Unit\Mage\Catalog\Model; -use Generator; use Mage; use Mage_Catalog_Model_Url as Subject; use Mage_Core_Exception; +use OpenMage\Tests\Unit\OpenMageTest; use OpenMage\Tests\Unit\Traits\DataProvider\Base\IntOrNullTrait; use OpenMage\Tests\Unit\Traits\DataProvider\Mage\Catalog\CatalogTrait; -use PHPUnit\Framework\TestCase; -use Symfony\Component\String\Slugger\AsciiSlugger; +use OpenMage\Tests\Unit\Traits\DataProvider\Mage\Catalog\Model\UrlTrait; use Varien_Object; -class UrlTest extends TestCase +class UrlTest extends OpenMageTest { use CatalogTrait; use IntOrNullTrait; + use UrlTrait; - public Subject $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::getModel('catalog/url'); + parent::setUpBeforeClass(); + self::$subject = Mage::getModel('catalog/url'); } /** - * @group Mage_Catalog - * @group Mage_Catalog_Model + * @group Model */ public function testGetStoreRootCategory(): void { - $this->assertInstanceOf(Varien_Object::class, $this->subject->getStoreRootCategory(1)); + static::assertInstanceOf(Varien_Object::class, self::$subject->getStoreRootCategory(1)); } /** * @dataProvider provideIntOrNull - * @group Mage_Catalog - * @group Mage_Catalog_Model + * @group Model */ public function testRefreshRewrites(?int $storeId): void { - $this->assertInstanceOf(Subject::class, $this->subject->refreshRewrites($storeId)); + static::assertInstanceOf(Subject::class, self::$subject->refreshRewrites($storeId)); } /** * @dataProvider provideGeneratePathData * - * @group Mage_Catalog - * @group Mage_Catalog_Model + * @group Model */ public function testGeneratePath( string $expectedResult, @@ -73,120 +70,47 @@ public function testGeneratePath( ?string $parentPath = null ): void { try { - $this->assertSame($expectedResult, $this->subject->generatePath($type, $product, $category, $parentPath)); + static::assertSame($expectedResult, self::$subject->generatePath($type, $product, $category, $parentPath)); } catch (Mage_Core_Exception $e) { - $this->assertSame($expectedResult, $e->getMessage()); + static::assertSame($expectedResult, $e->getMessage()); } } - public function provideGeneratePathData(): Generator - { - $category = new Varien_Object([ - 'id' => '999', - 'store_id' => '1', - 'url_key' => '', - 'name' => 'category', - - ]); - $product = new Varien_Object([ - 'id' => '999', - 'name' => 'product', - ]); - - yield 'test exception' => [ - 'Please specify either a category or a product, or both.', - 'request', - null, - null, - ]; - yield 'request' => [ - 'product.html', - 'request', - $product, - $category, - ]; - // yield 'request w/o product' => [ - // '-.html', - // 'request', - // null, - // $category, - // ]; - yield 'target category' => [ - 'catalog/category/view/id/999', - 'target', - null, - $category, - ]; - yield 'target product' => [ - 'catalog/product/view/id/999', - 'target', - $product, - $category, - ]; - } /** * @dataProvider provideFormatUrlKey - * @group Mage_Catalog - * @group Mage_Catalog_Model + * @group Model */ - public function testFormatUrlKey($expectedResult, string $locale): void + public function testFormatUrlKey(string $expectedResult, string $locale): void { - $this->subject->setLocale($locale); - $this->assertSame($expectedResult, $this->subject->formatUrlKey($this->getTestString())); + self::$subject->setLocale($locale); + static::assertSame($expectedResult, self::$subject->formatUrlKey($this->getTestString())); } /** - * @group Mage_Catalog - * @group Mage_Catalog_Model + * @group Model * @doesNotPerformAssertions */ // public function testGetSlugger(): void // { - // $this->subject->getSlugger(); + // self::$subject->getSlugger(); // } /** * @dataProvider provideGetSluggerConfig - * @group Mage_Catalog - * @group Mage_Catalog_Model + * @group Model */ - public function testGetSluggerConfig($expectedResult, string $locale): void + public function testGetSluggerConfig(array $expectedResult, string $locale): void { - $result = $this->subject->getSluggerConfig($locale); + $result = self::$subject->getSluggerConfig($locale); - $this->assertArrayHasKey($locale, $result); + static::assertArrayHasKey($locale, $result); - $this->assertArrayHasKey('%', $result[$locale]); - $this->assertArrayHasKey('&', $result[$locale]); + static::assertArrayHasKey('%', $result[$locale]); + static::assertArrayHasKey('&', $result[$locale]); - $this->assertSame($expectedResult[$locale]['%'], $result[$locale]['%']); - $this->assertSame($expectedResult[$locale]['&'], $result[$locale]['&']); + static::assertSame($expectedResult[$locale]['%'], $result[$locale]['%']); + static::assertSame($expectedResult[$locale]['&'], $result[$locale]['&']); - $this->assertSame('at', $result[$locale]['@']); - } - - public function provideGetSluggerConfig(): Generator - { - yield 'de_DE' => [ - ['de_DE' => [ - '%' => 'prozent', - '&' => 'und', - ]], - 'de_DE', - ]; - yield 'en_US' => [ - ['en_US' => [ - '%' => 'percent', - '&' => 'and', - ]], - 'en_US', - ]; - yield 'fr_FR' => [ - ['fr_FR' => [ - '%' => 'pour cent', - '&' => 'et', - ]], - 'fr_FR', - ]; + static::assertSame('at', $result[$locale]['@']); } } diff --git a/tests/unit/Mage/Cms/Block/BlockTest.php b/tests/unit/Mage/Cms/Block/BlockTest.php index 5fac0f46736..6199d345e0e 100644 --- a/tests/unit/Mage/Cms/Block/BlockTest.php +++ b/tests/unit/Mage/Cms/Block/BlockTest.php @@ -18,25 +18,27 @@ namespace OpenMage\Tests\Unit\Mage\Cms\Block; use Mage_Cms_Block_Block as Subject; +use Mage_Core_Model_Store_Exception; +use OpenMage\Tests\Unit\OpenMageTest; use OpenMage\Tests\Unit\Traits\DataProvider\Base\NumericStringTrait; -use PHPUnit\Framework\TestCase; -class BlockTest extends TestCase +class BlockTest extends OpenMageTest { use NumericStringTrait; /** * @dataProvider provideNumericString - * @group Mage_Cms - * @group Mage_Cms_Block + * @group Block + * @throws Mage_Core_Model_Store_Exception */ public function testGetCacheKeyInfo(string $blockId): void { - $mock = $this->getMockBuilder(Subject::class) - ->setMethods(['getBlockId']) - ->getMock(); + $methods = [ + 'getBlockId' => $blockId, + ]; + $mock = $this->getMockWithCalledMethods(Subject::class, $methods); - $mock->method('getBlockId')->willReturn($blockId); - $this->assertIsArray($mock->getCacheKeyInfo()); + static::assertInstanceOf(Subject::class, $mock); + static::assertIsArray($mock->getCacheKeyInfo()); } } diff --git a/tests/unit/Mage/Cms/Block/PageTest.php b/tests/unit/Mage/Cms/Block/PageTest.php index aa637f47c2d..ec54f4351d4 100644 --- a/tests/unit/Mage/Cms/Block/PageTest.php +++ b/tests/unit/Mage/Cms/Block/PageTest.php @@ -19,25 +19,27 @@ use Mage_Cms_Block_Page as Subject; use Mage_Cms_Model_Page; +use Mage_Core_Model_Store_Exception; +use OpenMage\Tests\Unit\OpenMageTest; use OpenMage\Tests\Unit\Traits\DataProvider\Base\NumericStringTrait; -use PHPUnit\Framework\TestCase; -class PageTest extends TestCase +class PageTest extends OpenMageTest { use NumericStringTrait; /** * @dataProvider provideNumericString - * @group Mage_Cms - * @group Mage_Cms_Block + * @group Block + * @throws Mage_Core_Model_Store_Exception */ public function testGetPage(string $pageId): void { - $mock = $this->getMockBuilder(Subject::class) - ->setMethods(['getPageId']) - ->getMock(); + $methods = [ + 'getPageId' => $pageId, + ]; + $mock = $this->getMockWithCalledMethods(Subject::class, $methods); - $mock->method('getPageId')->willReturn($pageId); - $this->assertInstanceOf(Mage_Cms_Model_Page::class, $mock->getPage()); + static::assertInstanceOf(Subject::class, $mock); + static::assertInstanceOf(Mage_Cms_Model_Page::class, $mock->getPage()); } } diff --git a/tests/unit/Mage/Cms/Block/Widget/BlockTest.php b/tests/unit/Mage/Cms/Block/Widget/BlockTest.php index 3893735d9d5..703577e4be1 100644 --- a/tests/unit/Mage/Cms/Block/Widget/BlockTest.php +++ b/tests/unit/Mage/Cms/Block/Widget/BlockTest.php @@ -17,44 +17,42 @@ namespace OpenMage\Tests\Unit\Mage\Cms\Block\Widget; -use Mage; use Mage_Cms_Block_Widget_Block as Subject; +use OpenMage\Tests\Unit\OpenMageTest; use OpenMage\Tests\Unit\Traits\DataProvider\Base\NumericStringTrait; -use PHPUnit\Framework\TestCase; -class BlockTest extends TestCase +class BlockTest extends OpenMageTest { use NumericStringTrait; - public Subject $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = new Subject(); + parent::setUpBeforeClass(); + self::$subject = new Subject(); } /** * @dataProvider provideNumericString - * @group Mage_Cms - * @group Mage_Cms_Block + * @group Block */ public function testGetCacheKeyInfo(string $blockId): void { - $mock = $this->getMockBuilder(Subject::class) - ->setMethods(['getBlockId']) - ->getMock(); + $methods = [ + 'getBlockId' => $blockId, + ]; + $mock = $this->getMockWithCalledMethods(Subject::class, $methods); - $mock->method('getBlockId')->willReturn($blockId); - $this->assertIsArray($mock->getCacheKeyInfo()); + static::assertInstanceOf(Subject::class, $mock); + static::assertIsArray($mock->getCacheKeyInfo()); } /** - * @group Mage_Cms - * @group Mage_Cms_Block + * @group Block */ public function testIsRequestFromAdminArea(): void { - $this->assertIsBool($this->subject->isRequestFromAdminArea()); + static::assertIsBool(self::$subject->isRequestFromAdminArea()); } } diff --git a/tests/unit/Mage/Cms/Block/Widget/Page/LinkTest.php b/tests/unit/Mage/Cms/Block/Widget/Page/LinkTest.php index fbd6c7f841d..7e1833d5aad 100644 --- a/tests/unit/Mage/Cms/Block/Widget/Page/LinkTest.php +++ b/tests/unit/Mage/Cms/Block/Widget/Page/LinkTest.php @@ -17,44 +17,60 @@ namespace OpenMage\Tests\Unit\Mage\Cms\Block\Widget\Page; -use Mage; use Mage_Cms_Block_Widget_Page_Link as Subject; -use PHPUnit\Framework\TestCase; +use Mage_Core_Model_Store_Exception; +use OpenMage\Tests\Unit\OpenMageTest; +use OpenMage\Tests\Unit\Traits\DataProvider\Mage\Cms\Block\Widget\Page\LinkTrait; -class LinkTest extends TestCase +class LinkTest extends OpenMageTest { - public Subject $subject; + use LinkTrait; - public function setUp(): void + private static Subject $subject; + + protected function setUp(): void { - Mage::app(); - $this->subject = new Subject(); + parent::setUp(); + self::$subject = new Subject(); } /** - * @group Mage_Cms - * @group Mage_Cms_Block + * @dataProvider provideGetHrefData + * @group Block + * @group runInSeparateProcess + * @runInSeparateProcess */ - public function testGetHref(): void + public function testGetHref(string $expectedResult, array $data): void { - $this->assertIsString($this->subject->getHref()); + self::$subject->setData($data); + + $result = self::$subject->getHref(); + static::assertSame($expectedResult, $result); } /** - * @group Mage_Cms - * @group Mage_Cms_Block + * @dataProvider provideGetTitleData + * @group Block + * @throws Mage_Core_Model_Store_Exception */ - public function testGetTitle(): void + public function testGetTitle(string $expectedResult, array $data): void { - $this->assertIsString($this->subject->getTitle()); + self::$subject->setData($data); + + $result = self::$subject->getTitle(); + static::assertSame($expectedResult, $result); } /** - * @group Mage_Cms - * @group Mage_Cms_Block + * @dataProvider provideGetAnchorTextData + * @group Block + * @throws Mage_Core_Model_Store_Exception */ - // public function testGetAnchorText(): void - // { - // $this->assertIsString($this->subject->getAnchorText()); - // } + public function testGetAnchorText(bool|string|null $expectedResult, array $data): void + { + self::$subject->setData($data); + + $result = self::$subject->getAnchorText(); + static::assertSame($expectedResult, $result); + } } diff --git a/tests/unit/Mage/Cms/Helper/DataTest.php b/tests/unit/Mage/Cms/Helper/DataTest.php index ae858e4e951..cd244fe2c8e 100644 --- a/tests/unit/Mage/Cms/Helper/DataTest.php +++ b/tests/unit/Mage/Cms/Helper/DataTest.php @@ -19,54 +19,50 @@ use Mage; use Mage_Cms_Helper_Data as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; use Varien_Filter_Template; -class DataTest extends TestCase +class DataTest extends OpenMageTest { public const TEST_STRING = '1234567890'; - public Subject $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::helper('cms/data'); + parent::setUpBeforeClass(); + self::$subject = Mage::helper('cms/data'); } /** - * @group Mage_Cms - * @group Mage_Cms_Helper + * @group Helper */ public function testGetAllowedStreamWrappers(): void { - $this->assertIsArray($this->subject->getAllowedStreamWrappers()); + static::assertIsArray(self::$subject->getAllowedStreamWrappers()); } /** - * @group Mage_Cms - * @group Mage_Cms_Helper + * @group Helper */ public function testGetBlockTemplateProcessor(): void { - $this->assertInstanceOf(Varien_Filter_Template::class, $this->subject->getBlockTemplateProcessor()); + static::assertInstanceOf(Varien_Filter_Template::class, self::$subject->getBlockTemplateProcessor()); } /** - * @group Mage_Cms - * @group Mage_Cms_Helper + * @group Helper */ public function testGetPageTemplateProcessor(): void { - $this->assertInstanceOf(Varien_Filter_Template::class, $this->subject->getPageTemplateProcessor()); + static::assertInstanceOf(Varien_Filter_Template::class, self::$subject->getPageTemplateProcessor()); } /** - * @group Mage_Cms - * @group Mage_Cms_Helper + * @group Helper */ public function testIsSwfDisabled(): void { - $this->assertTrue($this->subject->isSwfDisabled()); + static::assertTrue(self::$subject->isSwfDisabled()); } } diff --git a/tests/unit/Mage/Cms/Helper/PageTest.php b/tests/unit/Mage/Cms/Helper/PageTest.php index 472fb1f6c24..383f7008b50 100644 --- a/tests/unit/Mage/Cms/Helper/PageTest.php +++ b/tests/unit/Mage/Cms/Helper/PageTest.php @@ -17,30 +17,20 @@ namespace OpenMage\Tests\Unit\Mage\Cms\Helper; -use Mage; use Mage_Cms_Helper_Page as Subject; use OpenMage\Tests\Unit\Traits\DataProvider\Mage\Cms\CmsTrait; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; -class PageTest extends TestCase +class PageTest extends OpenMageTest { use CmsTrait; - public Subject $subject; - - public function setUp(): void - { - Mage::app(); - $this->subject = Mage::helper('cms/page'); - } - /** * @dataProvider provideGetUsedInStoreConfigPaths - * @group Mage_Cms - * @group Mage_Cms_Helper + * @group Helper */ public function testGetUsedInStoreConfigPaths(array $expectedResult, ?array $path): void { - $this->assertSame($expectedResult, Subject::getUsedInStoreConfigPaths($path)); + static::assertSame($expectedResult, Subject::getUsedInStoreConfigPaths($path)); } } diff --git a/tests/unit/Mage/Cms/Helper/Wysiwyg/ImagesTest.php b/tests/unit/Mage/Cms/Helper/Wysiwyg/ImagesTest.php index c52b75ed32c..f278b0af0ea 100644 --- a/tests/unit/Mage/Cms/Helper/Wysiwyg/ImagesTest.php +++ b/tests/unit/Mage/Cms/Helper/Wysiwyg/ImagesTest.php @@ -21,72 +21,66 @@ use Mage_Cms_Helper_Wysiwyg_Images as Subject; use Mage_Cms_Model_Wysiwyg_Images_Storage; use OpenMage\Tests\Unit\Traits\DataProvider\Mage\Cms\CmsTrait; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; -class ImagesTest extends TestCase +class ImagesTest extends OpenMageTest { use CmsTrait; - public Subject $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::helper('cms/wysiwyg_images'); + parent::setUpBeforeClass(); + self::$subject = Mage::helper('cms/wysiwyg_images'); } /** - * @group Mage_Cms - * @group Mage_Cms_Helper + * @group Helper */ public function testGetCurrentPath(): void { - $this->assertIsString($this->subject->getCurrentPath()); + static::assertIsString(self::$subject->getCurrentPath()); } /** - * @group Mage_Cms - * @group Mage_Cms_Helper + * @group Helper */ public function testGetCurrentUrl(): void { - $this->assertIsString($this->subject->getCurrentUrl()); + static::assertIsString(self::$subject->getCurrentUrl()); } /** - * @group Mage_Cms - * @group Mage_Cms_Helper + * @group Helper */ public function testGetStorage(): void { - $this->assertInstanceOf(Mage_Cms_Model_Wysiwyg_Images_Storage::class, $this->subject->getStorage()); + static::assertInstanceOf(Mage_Cms_Model_Wysiwyg_Images_Storage::class, self::$subject->getStorage()); } /** - * @group Mage_Cms - * @group Mage_Cms_Helper + * @group Helper */ public function testIdEncode(): void { - $this->assertIsString($this->subject->idEncode($this->getTestString())); + static::assertIsString(self::$subject->idEncode($this->getTestString())); } /** - * @group Mage_Cms - * @group Mage_Cms_Helper + * @group Helper */ public function testIdDecode(): void { - $this->assertIsString($this->subject->idDecode($this->getTestString())); + static::assertIsString(self::$subject->idDecode($this->getTestString())); } /** * @dataProvider provideGetShortFilename - * @group Mage_Cms - * @group Mage_Cms_Helper + * @group Helper */ public function testGetShortFilename(string $expectedResult, string $filename, int $maxLength): void { - $this->assertSame($expectedResult, $this->subject->getShortFilename($filename, $maxLength)); + static::assertSame($expectedResult, self::$subject->getShortFilename($filename, $maxLength)); } } diff --git a/tests/unit/Mage/Cms/Model/PageTest.php b/tests/unit/Mage/Cms/Model/PageTest.php index edfab105585..a830768bcd8 100644 --- a/tests/unit/Mage/Cms/Model/PageTest.php +++ b/tests/unit/Mage/Cms/Model/PageTest.php @@ -19,98 +19,88 @@ use Mage; use Mage_Cms_Model_Page as Subject; -use Mage_Core_Model_Resource_Db_Collection_Abstract; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; -class PageTest extends TestCase +class PageTest extends OpenMageTest { public const SKIP_WITH_LOCAL_DATA = 'Constant DATA_MAY_CHANGED is defined.'; - public Subject $subject; + private static Subject $subject; public function setUp(): void { - Mage::app(); - $this->subject = Mage::getModel('cms/page'); + self::$subject = Mage::getModel('cms/page'); } /** - * @group Mage_Cms - * @group Mage_Cms_Model + * @group Model */ public function testLoad(): void { - $this->assertInstanceOf(Subject::class, $this->subject->load(null)); - $this->assertInstanceOf(Subject::class, $this->subject->load(2)); + static::assertInstanceOf(Subject::class, self::$subject->load(null)); + static::assertInstanceOf(Subject::class, self::$subject->load(2)); } /** - * @group Mage_Cms - * @group Mage_Cms_Model + * @group Model */ public function testCheckIdentifier(): void { - $this->assertIsString($this->subject->checkIdentifier('home', 1)); + static::assertIsString(self::$subject->checkIdentifier('home', 1)); } /** - * @group Mage_Cms - * @group Mage_Cms_Model + * @group Model */ public function testGetCmsPageTitleByIdentifier(): void { if (defined('DATA_MAY_CHANGED')) { - $this->markTestSkipped(self::SKIP_WITH_LOCAL_DATA); + static::markTestSkipped(self::SKIP_WITH_LOCAL_DATA); } - $this->assertSame('Home page', $this->subject->getCmsPageTitleByIdentifier('home')); + static::assertSame('Home page', self::$subject->getCmsPageTitleByIdentifier('home')); } /** - * @group Mage_Cms - * @group Mage_Cms_Model + * @group Model */ public function testGetCmsPageTitleById(): void { if (defined('DATA_MAY_CHANGED')) { - $this->markTestSkipped(self::SKIP_WITH_LOCAL_DATA); + static::markTestSkipped(self::SKIP_WITH_LOCAL_DATA); } - $this->assertSame('Home page', $this->subject->getCmsPageTitleById(2)); + static::assertSame('Home page', self::$subject->getCmsPageTitleById(2)); } /** - * @group Mage_Cms - * @group Mage_Cms_Model + * @group Model */ public function testGetCmsPageIdentifierById(): void { - $this->assertSame('home', $this->subject->getCmsPageIdentifierById(2)); + static::assertSame('home', self::$subject->getCmsPageIdentifierById(2)); } /** - * @group Mage_Cms - * @group Mage_Cms_Model + * @group Model */ public function testGetAvailableStatuses(): void { - $this->assertIsArray($this->subject->getAvailableStatuses()); + static::assertIsArray(self::$subject->getAvailableStatuses()); } /** - * @group Mage_Cms - * @group Mage_Cms_Model + * @group Model * @doesNotPerformAssertions */ public function testGetUsedInStoreConfigCollection(): void { - $this->subject->getUsedInStoreConfigCollection(); + self::$subject->getUsedInStoreConfigCollection(); } /** - * @group Mage_Cms - * @group Mage_Cms_Model + * @group Model */ public function testIsUsedInStoreConfig(): void { - $this->assertFalse($this->subject->isUsedInStoreConfig()); + static::assertFalse(self::$subject->isUsedInStoreConfig()); } } diff --git a/tests/unit/Mage/Cms/Model/Wysiwyg/ConfigTest.php b/tests/unit/Mage/Cms/Model/Wysiwyg/ConfigTest.php index a9dd5c2f8ae..06d15a41695 100644 --- a/tests/unit/Mage/Cms/Model/Wysiwyg/ConfigTest.php +++ b/tests/unit/Mage/Cms/Model/Wysiwyg/ConfigTest.php @@ -19,65 +19,60 @@ use Mage; use Mage_Cms_Model_Wysiwyg_Config as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; use Varien_Object; -class ConfigTest extends TestCase +class ConfigTest extends OpenMageTest { public const TEST_STRING = '0123456789'; - public Subject $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::getModel('cms/wysiwyg_config'); + parent::setUpBeforeClass(); + self::$subject = Mage::getModel('cms/wysiwyg_config'); } /** - * @group Mage_Cms - * @group Mage_Cms_Model + * @group Model * @group runInSeparateProcess * @runInSeparateProcess */ public function testGetConfig(): void { - $this->assertInstanceOf(Varien_Object::class, $this->subject->getConfig()); + static::assertInstanceOf(Varien_Object::class, self::$subject->getConfig()); } /** - * @group Mage_Cms - * @group Mage_Cms_Model + * @group Model */ public function testGetSkinImagePlaceholderUrl(): void { - $this->assertIsString($this->subject->getSkinImagePlaceholderUrl()); + static::assertIsString(self::$subject->getSkinImagePlaceholderUrl()); } /** - * @group Mage_Cms - * @group Mage_Cms_Model + * @group Model */ public function testGetSkinImagePlaceholderPath(): void { - $this->assertIsString($this->subject->getSkinImagePlaceholderPath()); + static::assertIsString(self::$subject->getSkinImagePlaceholderPath()); } /** - * @group Mage_Cms - * @group Mage_Cms_Model + * @group Model */ public function testIsEnabled(): void { - $this->assertIsBool($this->subject->isEnabled()); + static::assertIsBool(self::$subject->isEnabled()); } /** - * @group Mage_Cms - * @group Mage_Cms_Model + * @group Model */ public function testIsHidden(): void { - $this->assertIsBool($this->subject->isHidden()); + static::assertIsBool(self::$subject->isHidden()); } } diff --git a/tests/unit/Mage/Cms/Model/Wysiwyg/Images/StorageTest.php b/tests/unit/Mage/Cms/Model/Wysiwyg/Images/StorageTest.php index d665a4404ed..9843debdf15 100644 --- a/tests/unit/Mage/Cms/Model/Wysiwyg/Images/StorageTest.php +++ b/tests/unit/Mage/Cms/Model/Wysiwyg/Images/StorageTest.php @@ -21,73 +21,67 @@ use Mage_Adminhtml_Model_Session; use Mage_Cms_Helper_Wysiwyg_Images; use Mage_Cms_Model_Wysiwyg_Images_Storage as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; -class StorageTest extends TestCase +class StorageTest extends OpenMageTest { - public Subject $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::getModel('cms/wysiwyg_images_storage'); + parent::setUpBeforeClass(); + self::$subject = Mage::getModel('cms/wysiwyg_images_storage'); } /** - * @group Mage_Cms - * @group Mage_Cms_Model + * @group Model */ public function testGetThumbsPath(): void { - $this->assertIsString($this->subject->getThumbsPath()); + static::assertIsString(self::$subject->getThumbsPath()); } /** - * @group Mage_Cms - * @group Mage_Cms_Model + * @group Model * @group runInSeparateProcess * @runInSeparateProcess */ public function testResizeOnTheFly(): void { - $this->assertFalse($this->subject->resizeOnTheFly('not-existing.jpeg')); + static::assertFalse(self::$subject->resizeOnTheFly('not-existing.jpeg')); } /** - * @group Mage_Cms - * @group Mage_Cms_Model + * @group Model */ public function testGetHelper(): void { - $this->assertInstanceOf(Mage_Cms_Helper_Wysiwyg_Images::class, $this->subject->getHelper()); + static::assertInstanceOf(Mage_Cms_Helper_Wysiwyg_Images::class, self::$subject->getHelper()); } /** - * @group Mage_Cms - * @group Mage_Cms_Model + * @group Model * @group runInSeparateProcess * @runInSeparateProcess */ public function testGetSession(): void { - $this->assertInstanceOf(Mage_Adminhtml_Model_Session::class, $this->subject->getSession()); + static::assertInstanceOf(Mage_Adminhtml_Model_Session::class, self::$subject->getSession()); } /** - * @group Mage_Cms - * @group Mage_Cms_Model + * @group Model */ public function testGetThumbnailRoot(): void { - $this->assertIsString($this->subject->getThumbnailRoot()); + static::assertIsString(self::$subject->getThumbnailRoot()); } /** - * @group Mage_Cms - * @group Mage_Cms_Model + * @group Model */ public function testIsImage(): void { - $this->assertIsBool($this->subject->isImage('test.jpeg')); + static::assertIsBool(self::$subject->isImage('test.jpeg')); } } diff --git a/tests/unit/Mage/Contacts/Controllers/IndexControllerTest.php b/tests/unit/Mage/Contacts/Controllers/IndexControllerTest.php new file mode 100644 index 00000000000..805204db9e5 --- /dev/null +++ b/tests/unit/Mage/Contacts/Controllers/IndexControllerTest.php @@ -0,0 +1,68 @@ +getMockBuilder(\Mage_Core_Controller_Request_Http::class) + ->disableOriginalConstructor() + ->onlyMethods(['getPost']) + ->getMock(); + $requestMock->method('getPost')->willReturn($postData); + + $subject = $this->getMockBuilder(Subject::class) + ->disableOriginalConstructor() + ->onlyMethods(['_validateFormKey', 'getRequest', '_redirect']) + ->getMock(); + $subject->method('getRequest')->willReturn($requestMock); + $subject->method('_validateFormKey')->willReturn($isFormKeyValid); + + $sessionMock = $this->getMockBuilder(Mage_Customer_Model_Session::class) + ->disableOriginalConstructor() + ->onlyMethods(['addError', 'addSuccess']) + ->getMock(); + + Mage::register('_singleton/customer/session', $sessionMock); + + if ($expectedErrorMessage) { + $sessionMock->expects(static::once()) + ->method('addError') + ->with($expectedErrorMessage); + } else { + $sessionMock->expects(static::once()) + ->method('addSuccess') + ->with('Your inquiry was submitted and will be responded to as soon as possible. Thank you for contacting us.'); + } + + $subject->expects(static::once())->method('_redirect')->with('*/*/'); + $subject->postAction(); + + Mage::unregister('_singleton/customer/session'); + } +} diff --git a/tests/unit/Mage/Core/Block/Text/ListTest.php b/tests/unit/Mage/Core/Block/Text/ListTest.php index 34bdefb707a..ff633feecbb 100644 --- a/tests/unit/Mage/Core/Block/Text/ListTest.php +++ b/tests/unit/Mage/Core/Block/Text/ListTest.php @@ -18,18 +18,12 @@ namespace OpenMage\Tests\Unit\Mage\Core\Block\Text; use Mage; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; -class ListTest extends TestCase +class ListTest extends OpenMageTest { - public function setUp(): void - { - Mage::app(); - } - /** - * @group Mage_Core - * @group Mage_Core_Block + * @group Block */ public function testDuplicateBlockName(): void { @@ -43,12 +37,11 @@ public function testDuplicateBlockName(): void $childBlockA = $layout->createBlock('core/text', 'child_a')->setText('A2'); $parentBlock->append($childBlockA); - $this->assertSame('A2', $parentBlock->toHtml()); + static::assertSame('A2', $parentBlock->toHtml()); } /** - * @group Mage_Core - * @group Mage_Core_Block + * @group Block */ public function testDuplicateBlockNameOrdering(): void { @@ -70,12 +63,11 @@ public function testDuplicateBlockNameOrdering(): void $childBlockB = $layout->createBlock('core/text', 'child_b')->setText('B'); $parentBlock->insert($childBlockB, 'child_c', false); - $this->assertSame('ABC', $parentBlock->toHtml()); + static::assertSame('ABC', $parentBlock->toHtml()); } /** - * @group Mage_Core - * @group Mage_Core_Block + * @group Block */ public function testUniqueBlockNameOrdering(): void { @@ -98,10 +90,10 @@ public function testUniqueBlockNameOrdering(): void $parentBlock->unsetChild('child_a'); $parentBlock->unsetChild('child_b'); - $this->assertSame('CD', $parentBlock->toHtml()); + static::assertSame('CD', $parentBlock->toHtml()); } - public function testSortInstructionsAfterReplaceChild() + public function testSortInstructionsAfterReplaceChild(): void { $layout = Mage::getModel('core/layout'); @@ -117,6 +109,6 @@ public function testSortInstructionsAfterReplaceChild() $layout->setBlock('target_block', $childBlockB); $parentBlock->setChild('child', $childBlockB); - $this->assertSame('B', $parentBlock->toHtml()); + static::assertSame('B', $parentBlock->toHtml()); } } diff --git a/tests/unit/Mage/Core/Helper/ArrayTest.php b/tests/unit/Mage/Core/Helper/ArrayTest.php new file mode 100644 index 00000000000..1e0e5184eb8 --- /dev/null +++ b/tests/unit/Mage/Core/Helper/ArrayTest.php @@ -0,0 +1,46 @@ +mergeRecursiveWithoutOverwriteNumKeys($baseArray, $mergeArray)); + } +} diff --git a/tests/unit/Mage/Core/Helper/CookieTest.php b/tests/unit/Mage/Core/Helper/CookieTest.php index 76612ec3c3a..5eb59199fa7 100644 --- a/tests/unit/Mage/Core/Helper/CookieTest.php +++ b/tests/unit/Mage/Core/Helper/CookieTest.php @@ -19,53 +19,49 @@ use Mage; use Mage_Core_Helper_Cookie as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; -class CookieTest extends TestCase +class CookieTest extends OpenMageTest { - public Subject $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::helper('core/cookie'); + parent::setUpBeforeClass(); + self::$subject = Mage::helper('core/cookie'); } /** - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testIsUserNotAllowSaveCookie(): void { - $this->assertIsBool($this->subject->isUserNotAllowSaveCookie()); + static::assertIsBool(self::$subject->isUserNotAllowSaveCookie()); } /** - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testGetAcceptedSaveCookiesWebsiteIds(): void { - $this->assertSame('{"1":1}', $this->subject->getAcceptedSaveCookiesWebsiteIds()); + static::assertSame('{"1":1}', self::$subject->getAcceptedSaveCookiesWebsiteIds()); } /** * @covers Mage_Core_Helper_Cookie::getCookieRestrictionLifetime() - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testGetCookieRestrictionLifetime(): void { - $this->assertSame(31536000, $this->subject->getCookieRestrictionLifetime()); + static::assertSame(31536000, self::$subject->getCookieRestrictionLifetime()); } /** * @covers Mage_Core_Helper_Cookie::getCookieRestrictionNoticeCmsBlockIdentifier() - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testGetCookieRestrictionNoticeCmsBlockIdentifier(): void { - $this->assertSame('cookie_restriction_notice_block', $this->subject->getCookieRestrictionNoticeCmsBlockIdentifier()); + static::assertSame('cookie_restriction_notice_block', self::$subject->getCookieRestrictionNoticeCmsBlockIdentifier()); } } diff --git a/tests/unit/Mage/Core/Helper/DataTest.php b/tests/unit/Mage/Core/Helper/DataTest.php index c316cb22f56..149471e795f 100644 --- a/tests/unit/Mage/Core/Helper/DataTest.php +++ b/tests/unit/Mage/Core/Helper/DataTest.php @@ -17,214 +17,137 @@ namespace OpenMage\Tests\Unit\Mage\Core\Helper; -use Generator; use Mage; use Mage_Core_Helper_Data as Subject; use Mage_Core_Model_Encryption; use Mage_Core_Model_Locale; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; +use OpenMage\Tests\Unit\Traits\DataProvider\Mage\Core\Helper\DataTrait; use Varien_Crypt_Mcrypt; -class DataTest extends TestCase +class DataTest extends OpenMageTest { + use DataTrait; + public const TEST_STRING = '1234567890'; - public Subject $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::helper('core/data'); + parent::setUpBeforeClass(); + self::$subject = Mage::helper('core/data'); } /** - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testGetEncryptor(): void { - $this->assertInstanceOf(Mage_Core_Model_Encryption::class, $this->subject->getEncryptor()); + static::assertInstanceOf(Mage_Core_Model_Encryption::class, self::$subject->getEncryptor()); } /** - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testEncrypt(): void { - $this->assertIsString($this->subject->encrypt('test')); + static::assertIsString(self::$subject->encrypt('test')); } /** - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testDecrypt(): void { - $this->assertIsString($this->subject->decrypt('test')); + static::assertIsString(self::$subject->decrypt('test')); } /** - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testValidateKey(): void { - $this->assertInstanceOf(Varien_Crypt_Mcrypt::class, $this->subject->validateKey('test')); + static::assertInstanceOf(Varien_Crypt_Mcrypt::class, self::$subject->validateKey('test')); } /** * @dataProvider provideFormatTimezoneDate - * @group Mage_Core - * @group Mage_Core_Helper - * @group Dates + * @group Helper */ public function testFormatTimezoneDate( string $expectedResult, - $data, + string|int|null $data, string $format = Mage_Core_Model_Locale::FORMAT_TYPE_SHORT, bool $showTime = false, bool $useTimezone = false # disable timezone by default for tests ): void { - $this->assertSame($expectedResult, $this->subject->formatTimezoneDate($data, $format, $showTime, $useTimezone)); - } - - public function provideFormatTimezoneDate(): Generator - { - $date = date_create()->getTimestamp(); - $dateShort = date('n/j/Y', $date); - $dateLong = date('F j, Y', $date); - $dateShortTime = date('n/j/Y g:i A', $date); - - yield 'null' => [ - $dateShort, - null, - ]; - yield 'empty date' => [ - $dateShort, - '', - ]; - yield 'string date' => [ - $dateShort, - 'now', - ]; - yield 'numeric date' => [ - $dateShort, - '0', - ]; - yield 'invalid date' => [ - '', - 'invalid', - ]; - yield 'invalid format' => [ - (string) $date, - $date, - 'invalid', - ]; - yield 'date short' => [ - $dateShort, - $date, - ]; - yield 'date long' => [ - $dateLong, - $date, - 'long', - ]; - // yield 'date short w/ time' => [ - // $dateShortTime, - // $date, - // 'short', - // true, - // ]; + static::assertSame($expectedResult, self::$subject->formatTimezoneDate($data, $format, $showTime, $useTimezone)); } /** - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testGetRandomString(): void { - $this->assertIsString($this->subject->getRandomString(5)); + static::assertIsString(self::$subject->getRandomString(5)); } /** - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testGetHash(): void { - $this->assertIsString($this->subject->getHash('test')); + static::assertIsString(self::$subject->getHash('test')); } /** - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testGetHashPassword(): void { - $this->assertIsString($this->subject->getHashPassword('test', 1)); + static::assertIsString(self::$subject->getHashPassword('test', 1)); } /** - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testValidateHash(): void { - $this->assertIsBool($this->subject->validateHash('test', '1')); + static::assertIsBool(self::$subject->validateHash('test', '1')); } /** - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testGetStoreId(): void { - $this->assertIsInt($this->subject->getStoreId()); + static::assertIsInt(self::$subject->getStoreId()); } /** * @covers Mage_Core_Helper_Data::removeAccents() * @dataProvider provideRemoveAccents - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testRemoveAccents(string $expectedResult, string $string, bool $german): void { - $this->assertSame($expectedResult, $this->subject->removeAccents($string, $german)); - } - - public function provideRemoveAccents(): Generator - { - $string = 'Ae-Ä Oe-Ö Ue-Ü ae-ä oe-ö ue-ü'; - - yield 'german false' => [ - 'Ae-A Oe-O Ue-U ae-a oe-o ue-u', - $string, - false, - ]; - yield 'german true' => [ - 'Ae-Ae Oe-Oe Ue-Ue ae-ae oe-oe ue-ue', - $string, - true, - ]; + static::assertSame($expectedResult, self::$subject->removeAccents($string, $german)); } /** * @covers Mage_Core_Helper_Data::isDevAllowed() - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testIsDevAllowed(): void { - $this->assertIsBool($this->subject->isDevAllowed()); - $this->markTestIncomplete('add tests for IPS'); + static::assertIsBool(self::$subject->isDevAllowed()); + static::markTestIncomplete('add tests for IPS'); } /** * @covers Mage_Core_Helper_Data::getCacheTypes() - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testGetCacheTypes(): void { @@ -239,45 +162,41 @@ public function testGetCacheTypes(): void 'config_api2' => 'Web Services Configuration', ]; - $this->assertSame($expectedResult, $this->subject->getCacheTypes()); + static::assertSame($expectedResult, self::$subject->getCacheTypes()); } /** * @covers Mage_Core_Helper_Data::getCacheBetaTypes() - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testGetCacheBetaTypes(): void { $expectedResult = []; - $this->assertSame($expectedResult, $this->subject->getCacheBetaTypes()); + static::assertSame($expectedResult, self::$subject->getCacheBetaTypes()); } /** * @covers Mage_Core_Helper_Data::uniqHash() - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testUniqHash(): void { $prefix = 'string'; - $this->assertStringStartsWith($prefix, $this->subject->uniqHash($prefix)); + static::assertStringStartsWith($prefix, self::$subject->uniqHash($prefix)); } /** * @covers Mage_Core_Helper_Data::getDefaultCountry() - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testGetDefaultCountry(): void { - $this->assertSame('US', $this->subject->getDefaultCountry()); + static::assertSame('US', self::$subject->getDefaultCountry()); } /** * @covers Mage_Core_Helper_Data::getProtectedFileExtensions() - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testGetProtectedFileExtensions(): void { @@ -300,13 +219,12 @@ public function testGetProtectedFileExtensions(): void 'phtml' => 'phtml', 'shtml' => 'shtml', ]; - $this->assertSame($expectedResult, $this->subject->getProtectedFileExtensions()); + static::assertSame($expectedResult, self::$subject->getProtectedFileExtensions()); } /** * @covers Mage_Core_Helper_Data::getPublicFilesValidPath() - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testGetPublicFilesValidPath(): void { @@ -321,48 +239,43 @@ public function testGetPublicFilesValidPath(): void 'skin' => '/skin/*/*', ], ]; - $this->assertSame($expectedResult, $this->subject->getPublicFilesValidPath()); + static::assertSame($expectedResult, self::$subject->getPublicFilesValidPath()); } /** * @covers Mage_Core_Helper_Data::useDbCompatibleMode() - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testUseDbCompatibleMode(): void { - $this->assertTrue($this->subject->useDbCompatibleMode()); + static::assertTrue(self::$subject->useDbCompatibleMode()); } /** * @covers Mage_Core_Helper_Data::getMerchantCountryCode() - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testGetMerchantCountryCode(): void { - $this->assertIsString($this->subject->getMerchantCountryCode()); + static::assertIsString(self::$subject->getMerchantCountryCode()); } /** * @covers Mage_Core_Helper_Data::getMerchantCountryCode() - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testGetMerchantVatNumber(): void { - $this->assertIsString($this->subject->getMerchantVatNumber()); + static::assertIsString(self::$subject->getMerchantVatNumber()); } /** * @covers Mage_Core_Helper_Data::getMerchantCountryCode() - * @group Mage_Core - * @group Mage_Core_Helper + * @dataProvider provideIsCountryInEUData + * @group Helper */ - public function testIsCountryInEU(): void + public function testIsCountryInEU(bool $expectedResult, string $value): void { - $this->assertTrue($this->subject->isCountryInEU('DE')); - $this->assertFalse($this->subject->isCountryInEU('XX')); - $this->markTestIncomplete('add better tests'); + static::assertSame($expectedResult, self::$subject->isCountryInEU($value)); } } diff --git a/tests/unit/Mage/Core/Helper/EnvironmentConfigLoaderTest.php b/tests/unit/Mage/Core/Helper/EnvironmentConfigLoaderTest.php index 0f88704a3fe..87756702ab2 100644 --- a/tests/unit/Mage/Core/Helper/EnvironmentConfigLoaderTest.php +++ b/tests/unit/Mage/Core/Helper/EnvironmentConfigLoaderTest.php @@ -21,10 +21,10 @@ use Mage; use Mage_Core_Exception; use Mage_Core_Helper_EnvironmentConfigLoader; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; use Varien_Simplexml_Config; -class EnvironmentConfigLoaderTest extends TestCase +class EnvironmentConfigLoaderTest extends OpenMageTest { public const XML_PATH_GENERAL = 'general/store_information/name'; @@ -43,45 +43,41 @@ public function setup(): void } /** - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testBuildPath(): void { $environmentConfigLoaderHelper = new EnvironmentConfigLoaderTestHelper(); $path = $environmentConfigLoaderHelper->exposedBuildPath('GENERAL', 'STORE_INFORMATION', 'NAME'); - $this->assertSame(self::XML_PATH_GENERAL, $path); + static::assertSame(self::XML_PATH_GENERAL, $path); } /** - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testBuildNodePath(): void { $environmentConfigLoaderHelper = new EnvironmentConfigLoaderTestHelper(); $nodePath = $environmentConfigLoaderHelper->exposedBuildNodePath('DEFAULT', self::XML_PATH_GENERAL); - $this->assertSame(self::XML_PATH_DEFAULT, $nodePath); + static::assertSame(self::XML_PATH_DEFAULT, $nodePath); } /** - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testXmlHasTestStrings(): void { $xmlStruct = $this->getTestXml(); $xml = new Varien_Simplexml_Config(); $xml->loadString($xmlStruct); - $this->assertSame('test_default', (string) $xml->getNode(self::XML_PATH_DEFAULT)); - $this->assertSame('test_website', (string) $xml->getNode(self::XML_PATH_WEBSITE)); - $this->assertSame('test_store', (string) $xml->getNode(self::XML_PATH_STORE)); + static::assertSame('test_default', (string) $xml->getNode(self::XML_PATH_DEFAULT)); + static::assertSame('test_website', (string) $xml->getNode(self::XML_PATH_WEBSITE)); + static::assertSame('test_store', (string) $xml->getNode(self::XML_PATH_STORE)); } /** * @dataProvider envOverridesCorrectConfigKeysDataProvider - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper * * @param array $config */ @@ -106,7 +102,7 @@ public function testEnvOverridesForValidConfigKeys(array $config): void $valueAfterOverride = $xml->getNode($configPath); // assert - $this->assertNotSame((string) $defaultValue, (string) $valueAfterOverride, 'Default value was not overridden.'); + static::assertNotSame((string) $defaultValue, (string) $valueAfterOverride, 'Default value was not overridden.'); } public function envOverridesCorrectConfigKeysDataProvider(): Generator @@ -181,7 +177,7 @@ public function envOverridesCorrectConfigKeysDataProvider(): Generator /** * @dataProvider envDoesNotOverrideOnWrongConfigKeysDataProvider - * @group Mage_Core + * @group Helper * * @param array $config */ @@ -195,11 +191,11 @@ public function testEnvDoesNotOverrideForInvalidConfigKeys(array $config): void $xml->loadString($xmlStruct); $defaultValue = 'test_default'; - $this->assertSame($defaultValue, (string) $xml->getNode(self::XML_PATH_DEFAULT)); + static::assertSame($defaultValue, (string) $xml->getNode(self::XML_PATH_DEFAULT)); $defaultWebsiteValue = 'test_website'; - $this->assertSame($defaultWebsiteValue, (string) $xml->getNode(self::XML_PATH_WEBSITE)); + static::assertSame($defaultWebsiteValue, (string) $xml->getNode(self::XML_PATH_WEBSITE)); $defaultStoreValue = 'test_store'; - $this->assertSame($defaultStoreValue, (string) $xml->getNode(self::XML_PATH_STORE)); + static::assertSame($defaultStoreValue, (string) $xml->getNode(self::XML_PATH_STORE)); $loader = new Mage_Core_Helper_EnvironmentConfigLoader(); /** @phpstan-ignore method.internal */ @@ -222,7 +218,7 @@ public function testEnvDoesNotOverrideForInvalidConfigKeys(array $config): void } // assert - $this->assertStringNotContainsString((string) $valueAfterCheck, 'value_will_not_be_changed', 'Default value was wrongfully overridden.'); + static::assertStringNotContainsString((string) $valueAfterCheck, 'value_will_not_be_changed', 'Default value was wrongfully overridden.'); } public function envDoesNotOverrideOnWrongConfigKeysDataProvider(): Generator diff --git a/tests/unit/Mage/Core/Helper/HintTest.php b/tests/unit/Mage/Core/Helper/HintTest.php index 0113107aac4..ca10bed95f0 100644 --- a/tests/unit/Mage/Core/Helper/HintTest.php +++ b/tests/unit/Mage/Core/Helper/HintTest.php @@ -19,35 +19,33 @@ use Mage; use Mage_Core_Helper_Hint as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; -class HintTest extends TestCase +class HintTest extends OpenMageTest { - public Subject $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::helper('core/hint'); + parent::setUpBeforeClass(); + self::$subject = Mage::helper('core/hint'); } /** * @covers Mage_Core_Helper_Hint::getAvailableHints() - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testGetAvailableHints(): void { - $this->assertSame([], $this->subject->getAvailableHints()); + static::assertSame([], self::$subject->getAvailableHints()); } /** * @covers Mage_Core_Helper_Hint::getHintByCode() - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testGetHintByCode(): void { - $this->assertNull($this->subject->getHintByCode('test')); + static::assertNull(self::$subject->getHintByCode('test')); } } diff --git a/tests/unit/Mage/Core/Helper/JsTest.php b/tests/unit/Mage/Core/Helper/JsTest.php index 843eb1cbbcd..4f34939b5a7 100644 --- a/tests/unit/Mage/Core/Helper/JsTest.php +++ b/tests/unit/Mage/Core/Helper/JsTest.php @@ -19,98 +19,90 @@ use Mage; use Mage_Core_Helper_Js as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; -class JsTest extends TestCase +class JsTest extends OpenMageTest { public const TEST_URL = 'foo'; - public Subject $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::helper('core/js'); + parent::setUpBeforeClass(); + self::$subject = Mage::helper('core/js'); } /** * @covers Mage_Core_Helper_Js::getTranslateJson() - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testGetTranslateJson(): void { - $this->assertIsString($this->subject->getTranslateJson()); + static::assertIsString(self::$subject->getTranslateJson()); } /** * @covers Mage_Core_Helper_Js::getTranslatorScript() - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testGetTranslatorScript(): void { - $this->assertIsString($this->subject->getTranslatorScript()); + static::assertIsString(self::$subject->getTranslatorScript()); } /** - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testIncludeScript(): void { - $this->assertStringContainsString(self::TEST_URL, $this->subject->includeScript(self::TEST_URL)); + static::assertStringContainsString(self::TEST_URL, self::$subject->includeScript(self::TEST_URL)); } /** - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testIncludeSkinScript(): void { - $this->assertStringContainsString(self::TEST_URL, $this->subject->includeSkinScript(self::TEST_URL)); + static::assertStringContainsString(self::TEST_URL, self::$subject->includeSkinScript(self::TEST_URL)); } /** - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testGetDeleteConfirmJs(): void { - $this->assertStringStartsWith('deleteConfirm', $this->subject->getDeleteConfirmJs('foo')); - $this->assertStringStartsWith('deleteConfirm', $this->subject->getDeleteConfirmJs('foo', 'bar')); + static::assertStringStartsWith('deleteConfirm', self::$subject->getDeleteConfirmJs('foo')); + static::assertStringStartsWith('deleteConfirm', self::$subject->getDeleteConfirmJs('foo', 'bar')); } /** - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testGetConfirmSetLocationJs(): void { - $this->assertStringStartsWith('confirmSetLocation', $this->subject->getConfirmSetLocationJs('foo')); - $this->assertStringStartsWith('confirmSetLocation', $this->subject->getConfirmSetLocationJs('foo', 'bar')); + static::assertStringStartsWith('confirmSetLocation', self::$subject->getConfirmSetLocationJs('foo')); + static::assertStringStartsWith('confirmSetLocation', self::$subject->getConfirmSetLocationJs('foo', 'bar')); } /** - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testGetSetLocationJs(): void { - $result = $this->subject->getSetLocationJs(self::TEST_URL); - $this->assertStringStartsWith('setLocation', $result); - $this->assertStringContainsString(self::TEST_URL, $result); + $result = self::$subject->getSetLocationJs(self::TEST_URL); + static::assertStringStartsWith('setLocation', $result); + static::assertStringContainsString(self::TEST_URL, $result); } /** * @covers Mage_Core_Helper_Js::getSaveAndContinueEditJs() - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testGetSaveAndContinueEditJs(): void { - $result = $this->subject->getSaveAndContinueEditJs(self::TEST_URL); - $this->assertStringStartsWith('saveAndContinueEdit', $result); - $this->assertStringContainsString(self::TEST_URL, $result); + $result = self::$subject->getSaveAndContinueEditJs(self::TEST_URL); + static::assertStringStartsWith('saveAndContinueEdit', $result); + static::assertStringContainsString(self::TEST_URL, $result); } } diff --git a/tests/unit/Mage/Core/Helper/PurifierTest.php b/tests/unit/Mage/Core/Helper/PurifierTest.php index 83e7127d529..de23339bc26 100644 --- a/tests/unit/Mage/Core/Helper/PurifierTest.php +++ b/tests/unit/Mage/Core/Helper/PurifierTest.php @@ -17,40 +17,29 @@ namespace OpenMage\Tests\Unit\Mage\Core\Helper; -use Generator; use Mage; use Mage_Core_Helper_Purifier as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; +use OpenMage\Tests\Unit\Traits\DataProvider\Mage\Core\Helper\PurifierTrait; -class PurifierTest extends TestCase +class PurifierTest extends OpenMageTest { - public Subject $subject; + use PurifierTrait; - public function setUp(): void + private static Subject $subject; + + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::helper('core/purifier'); + parent::setUpBeforeClass(); + self::$subject = Mage::helper('core/purifier'); } /** * @dataProvider providePurify - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ - public function testPurify($expectedResult, $content): void - { - $this->assertSame($expectedResult, $this->subject->purify($content)); - } - - public function providePurify(): Generator + public function testPurify(array|string $expectedResult, array|string $content): void { - yield 'array' => [ - [], - [], - ]; - yield 'string' => [ - '', - '', - ]; + static::assertSame($expectedResult, self::$subject->purify($content)); } } diff --git a/tests/unit/Mage/Core/Helper/SecurityTest.php b/tests/unit/Mage/Core/Helper/SecurityTest.php index 8e0771de454..b64526d2a96 100644 --- a/tests/unit/Mage/Core/Helper/SecurityTest.php +++ b/tests/unit/Mage/Core/Helper/SecurityTest.php @@ -24,23 +24,22 @@ use Mage_Core_Exception; use Mage_Core_Helper_Security as Subject; use Mage_Page_Block_Html_Topmenu_Renderer; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; use function sprintf; -class SecurityTest extends TestCase +class SecurityTest extends OpenMageTest { - public Subject $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::helper('core/security'); + parent::setUpBeforeClass(); + self::$subject = Mage::helper('core/security'); } /** - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function validateAgainstBlockMethodBlacklistDataProvider(): Generator { @@ -64,15 +63,14 @@ public function validateAgainstBlockMethodBlacklistDataProvider(): Generator * @param string[] $args * @throws Mage_Core_Exception * - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testValidateAgainstBlockMethodBlacklist( Mage_Core_Block_Abstract $block, string $method, array $args ): void { - $this->subject->validateAgainstBlockMethodBlacklist($block, $method, $args); + self::$subject->validateAgainstBlockMethodBlacklist($block, $method, $args); } public function forbiddenBlockMethodsDataProvider(): Generator @@ -121,8 +119,7 @@ public function forbiddenBlockMethodsDataProvider(): Generator * @param string[] $args * @throws Mage_Core_Exception * - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testValidateAgainstBlockMethodBlacklistThrowsException( Mage_Core_Block_Abstract $block, @@ -130,6 +127,6 @@ public function testValidateAgainstBlockMethodBlacklistThrowsException( array $args ): void { $this->expectExceptionMessage(sprintf('Action with combination block %s and method %s is forbidden.', get_class($block), $method)); - $this->subject->validateAgainstBlockMethodBlacklist($block, $method, $args); + self::$subject->validateAgainstBlockMethodBlacklist($block, $method, $args); } } diff --git a/tests/unit/Mage/Core/Helper/StringTest.php b/tests/unit/Mage/Core/Helper/StringTest.php index 5d32349c83b..6640bdc36e4 100644 --- a/tests/unit/Mage/Core/Helper/StringTest.php +++ b/tests/unit/Mage/Core/Helper/StringTest.php @@ -20,129 +20,119 @@ use Mage; use Mage_Core_Helper_Array; use Mage_Core_Helper_String as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; -class StringTest extends TestCase +class StringTest extends OpenMageTest { public const TEST_STRING = '1234567890'; public const TEST_STRING_JSON = '{"name":"John", "age":30, "car":null}'; - public Subject $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::helper('core/string'); + parent::setUpBeforeClass(); + self::$subject = Mage::helper('core/string'); } /** - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testTruncate(): void { - $this->assertSame('', $this->subject->truncate(null)); - $this->assertSame('', $this->subject->truncate(self::TEST_STRING, 0)); + static::assertSame('', self::$subject->truncate(null)); + static::assertSame('', self::$subject->truncate(self::TEST_STRING, 0)); - $this->assertSame('', $this->subject->truncate(self::TEST_STRING, 3)); + static::assertSame('', self::$subject->truncate(self::TEST_STRING, 3)); $remainder = ''; - $this->assertSame('12...', $this->subject->truncate(self::TEST_STRING, 5, '...', $remainder, false)); + static::assertSame('12...', self::$subject->truncate(self::TEST_STRING, 5, '...', $remainder, false)); - $resultString = $this->subject->truncate(self::TEST_STRING, 5, '...'); - $this->assertSame('12...', $resultString); + $resultString = self::$subject->truncate(self::TEST_STRING, 5, '...'); + static::assertSame('12...', $resultString); } /** - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testSubstr(): void { - $resultString = $this->subject->substr(self::TEST_STRING, 2, 2); - $this->assertSame('34', $resultString); + $resultString = self::$subject->substr(self::TEST_STRING, 2, 2); + static::assertSame('34', $resultString); } /** - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testSplitInjection(): void { - $resultString = $this->subject->splitInjection(self::TEST_STRING, 1, '-', ' '); + $resultString = self::$subject->splitInjection(self::TEST_STRING, 1, '-', ' '); #$this->assertSame('1-2-3-4-5-6-7-8-9-0-', $resultString); - $this->assertIsString($resultString); + static::assertIsString($resultString); } /** - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testStrlen(): void { - $this->assertSame(10, $this->subject->strlen(self::TEST_STRING)); + static::assertSame(10, self::$subject->strlen(self::TEST_STRING)); } /** - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testStrSplit(): void { - $this->assertIsArray($this->subject->str_split('')); - $this->assertIsArray($this->subject->str_split(self::TEST_STRING)); - $this->assertIsArray($this->subject->str_split(self::TEST_STRING, 3)); - $this->assertIsArray($this->subject->str_split(self::TEST_STRING, 3, true, true)); + static::assertIsArray(self::$subject->str_split('')); + static::assertIsArray(self::$subject->str_split(self::TEST_STRING)); + static::assertIsArray(self::$subject->str_split(self::TEST_STRING, 3)); + static::assertIsArray(self::$subject->str_split(self::TEST_STRING, 3, true, true)); } /** - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testSplitWords(): void { - $this->assertIsArray($this->subject->splitWords(null)); - $this->assertIsArray($this->subject->splitWords('')); - $this->assertIsArray($this->subject->splitWords(self::TEST_STRING)); - $this->assertIsArray($this->subject->splitWords(self::TEST_STRING, true)); - $this->assertIsArray($this->subject->splitWords(self::TEST_STRING, true, 1)); + static::assertIsArray(self::$subject->splitWords(null)); + static::assertIsArray(self::$subject->splitWords('')); + static::assertIsArray(self::$subject->splitWords(self::TEST_STRING)); + static::assertIsArray(self::$subject->splitWords(self::TEST_STRING, true)); + static::assertIsArray(self::$subject->splitWords(self::TEST_STRING, true, 1)); } /** - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testParseQueryStr(): void { - $this->assertIsArray($this->subject->parseQueryStr(self::TEST_STRING)); + static::assertIsArray(self::$subject->parseQueryStr(self::TEST_STRING)); } /** - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testGetArrayHelper(): void { - $this->assertInstanceOf(Mage_Core_Helper_Array::class, $this->subject->getArrayHelper()); + static::assertInstanceOf(Mage_Core_Helper_Array::class, self::$subject->getArrayHelper()); } /** - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testUnserialize(): void { - $this->assertNull($this->subject->unserialize(null)); + static::assertNull(self::$subject->unserialize(null)); } /** - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testValidateSerializedObject(): void { - $this->assertIsBool($this->subject->validateSerializedObject(self::TEST_STRING)); - $this->assertIsBool($this->subject->validateSerializedObject(self::TEST_STRING_JSON)); + static::assertIsBool(self::$subject->validateSerializedObject(self::TEST_STRING)); + static::assertIsBool(self::$subject->validateSerializedObject(self::TEST_STRING_JSON)); } } diff --git a/tests/unit/Mage/Core/Helper/UnserializeArrayTest.php b/tests/unit/Mage/Core/Helper/UnserializeArrayTest.php index 41ea36f2a56..27a1a433c60 100644 --- a/tests/unit/Mage/Core/Helper/UnserializeArrayTest.php +++ b/tests/unit/Mage/Core/Helper/UnserializeArrayTest.php @@ -18,54 +18,33 @@ namespace OpenMage\Tests\Unit\Mage\Core\Helper; use Exception; -use Generator; use Mage; use Mage_Core_Helper_UnserializeArray as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; +use OpenMage\Tests\Unit\Traits\DataProvider\Mage\Core\Helper\UnserializeArray as UnserializeArrayDataProvider; -class UnserializeArrayTest extends TestCase +class UnserializeArrayTest extends OpenMageTest { - public Subject $subject; + use UnserializeArrayDataProvider; - public function setUp(): void + private static Subject $subject; + + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::helper('core/unserializeArray'); + parent::setUpBeforeClass(); + self::$subject = Mage::helper('core/unserializeArray'); } /** * @dataProvider provideUnserialize - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ - public function testUnserialize($expectedTesult, $string): void + public function testUnserialize(array|string $expectedTesult, ?string $string): void { try { - $this->assertSame($expectedTesult, $this->subject->unserialize($string)); + static::assertSame($expectedTesult, self::$subject->unserialize($string)); } catch (Exception $exception) { - $this->assertSame($expectedTesult, $exception->getMessage()); + static::assertSame($expectedTesult, $exception->getMessage()); } } - - public function provideUnserialize(): Generator - { - $errorMessage = 'Error unserializing data.'; - - yield 'null' => [ - $errorMessage, - null, - ]; - yield 'empty string' => [ - $errorMessage, - '', - ]; - yield 'random string' => [ - $errorMessage, - 'abc', - ]; - yield 'valid' => [ - ['key' => 'value'], - 'a:1:{s:3:"key";s:5:"value";}', - ]; - } } diff --git a/tests/unit/Mage/Core/Helper/UrlTest.php b/tests/unit/Mage/Core/Helper/UrlTest.php index 311e852e381..b2f78fc9669 100644 --- a/tests/unit/Mage/Core/Helper/UrlTest.php +++ b/tests/unit/Mage/Core/Helper/UrlTest.php @@ -17,196 +17,90 @@ namespace OpenMage\Tests\Unit\Mage\Core\Helper; -use Generator; +use Exception; use Mage; use Mage_Core_Helper_Url as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; +use OpenMage\Tests\Unit\Traits\DataProvider\Mage\Core\Helper\UrlTrait; -class UrlTest extends TestCase +class UrlTest extends OpenMageTest { - public const TEST_URL_BASE = 'https://example.com'; + use UrlTrait; - public const TEST_URL_PARAM = 'https://example.com?foo=bar'; + private static Subject $subject; - public const TEST_URL_PARAMS = 'https://example.com?foo=bar&BOO=baz'; - - public const TEST_URL_SID1 = 'https://example.com?SID=S&foo=bar&BOO=baz'; - - public const TEST_URL_SID2 = 'https://example.com?___SID=S&foo=bar&BOO=baz'; - - public const TEST_URL_SID_BOTH = 'https://example.com?___SID=S&SID=S&foo=bar&BOO=baz'; - - public const TEST_URL_PUNY = 'https://XN--example.com?foo=bar&BOO=baz'; - - public Subject $subject; - - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::helper('core/url'); + parent::setUpBeforeClass(); + self::$subject = Mage::helper('core/url'); } /** * @covers Mage_Core_Helper_Url::getCurrentBase64Url() - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testGetCurrentBase64Url(): void { - $this->assertIsString($this->subject->getCurrentBase64Url()); + static::assertIsString(self::$subject->getCurrentBase64Url()); } /** * @covers Mage_Core_Helper_Url::getEncodedUrl() * @dataProvider provideGetEncodedUrl - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testGetEncodedUrl(string $expectedResult, ?string $url): void { - $this->assertSame($expectedResult, $this->subject->getEncodedUrl($url)); - } - - public function provideGetEncodedUrl(): Generator - { - yield 'null' => [ - 'aHR0cDovLw,,', - null, - ]; - yield 'base url' => [ - 'aHR0cHM6Ly9leGFtcGxlLmNvbQ,,', - self::TEST_URL_BASE, - ]; + static::assertSame($expectedResult, self::$subject->getEncodedUrl($url)); } /** * @covers Mage_Core_Helper_Url::getHomeUrl() - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testGetHomeUrl(): void { - $this->assertIsString($this->subject->getHomeUrl()); + static::assertIsString(self::$subject->getHomeUrl()); } /** * @covers Mage_Core_Helper_Url::addRequestParam() * @dataProvider provideAddRequestParam - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testAddRequestParam(string $expectedResult, string $url, array $param): void { - $this->assertSame($expectedResult, $this->subject->addRequestParam($url, $param)); - } - - public function provideAddRequestParam(): Generator - { - yield 'int key' => [ - self::TEST_URL_BASE . '?', - self::TEST_URL_BASE, - [0 => 'int'], - ]; - yield 'int value' => [ - self::TEST_URL_BASE . '?int=0', - self::TEST_URL_BASE, - ['int' => 0], - ]; - yield 'null' => [ - self::TEST_URL_BASE . '?null', - self::TEST_URL_BASE, - ['null' => null], - ]; - yield 'string' => [ - self::TEST_URL_PARAM, - self::TEST_URL_BASE, - ['foo' => 'bar'], - ]; - yield 'string extend' => [ - self::TEST_URL_PARAMS, - self::TEST_URL_PARAM, - ['BOO' => 'baz'], - ]; - yield 'array' => [ - self::TEST_URL_BASE . '?key[]=subValue', - self::TEST_URL_BASE, - ['key' => ['subKey' => 'subValue']], - ]; + static::assertSame($expectedResult, self::$subject->addRequestParam($url, $param)); } /** * @covers Mage_Core_Helper_Url::removeRequestParam() * @dataProvider provideRemoveRequestParam - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testRemoveRequestParam(string $expectedResult, string $url, string $paramKey, bool $caseSensitive = false): void { - $this->assertSame($expectedResult, $this->subject->removeRequestParam($url, $paramKey, $caseSensitive)); - } - - public function provideRemoveRequestParam(): Generator - { - yield 'remove #1' => [ - self::TEST_URL_BASE, - self::TEST_URL_PARAM, - 'foo', - ]; - yield 'remove #2' => [ - self::TEST_URL_PARAMS, - self::TEST_URL_PARAMS, - 'boo', - ]; - yield 'remove #1 case sensitive' => [ - self::TEST_URL_PARAM, - self::TEST_URL_PARAM, - 'FOO', - true, - ]; - yield 'remove #2 case sensitive' => [ - self::TEST_URL_PARAM, - self::TEST_URL_PARAMS, - 'BOO', - true, - ]; - yield 'not-exists' => [ - self::TEST_URL_PARAMS, - self::TEST_URL_PARAMS, - 'not-exists', - ]; - yield '___SID' => [ - self::TEST_URL_SID1, - self::TEST_URL_SID_BOTH, - '___SID', - ]; - yield 'SID' => [ - self::TEST_URL_SID2, - self::TEST_URL_SID_BOTH, - 'SID', - ]; + static::assertSame($expectedResult, self::$subject->removeRequestParam($url, $paramKey, $caseSensitive)); } /** * @covers Mage_Core_Helper_Url::encodePunycode() - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper */ public function testEncodePunycode(): void { - $this->assertSame(self::TEST_URL_BASE, $this->subject->encodePunycode(self::TEST_URL_BASE)); - $this->assertSame(self::TEST_URL_PUNY, $this->subject->encodePunycode(self::TEST_URL_PUNY)); - $this->markTestIncomplete('This test has to be checked.'); + static::assertSame(self::$testUrlBase, self::$subject->encodePunycode(self::$testUrlBase)); + static::assertSame(self::$testUrlPuny, self::$subject->encodePunycode(self::$testUrlPuny)); } /** * @covers Mage_Core_Helper_Url::decodePunycode() - * @group Mage_Core - * @group Mage_Core_Helper + * @group Helper + * @throws Exception */ public function testDecodePunycode(): void { - $this->assertSame(self::TEST_URL_BASE, $this->subject->decodePunycode(self::TEST_URL_BASE)); - $this->assertSame('https://?foo=bar&BOO=baz', $this->subject->decodePunycode(self::TEST_URL_PUNY)); - $this->markTestIncomplete('This test has to be checked.'); + static::assertSame(self::$testUrlBase, self::$subject->decodePunycode(self::$testUrlBase)); + static::assertSame('https://?foo=bar&BOO=baz', self::$subject->decodePunycode(self::$testUrlPuny)); } } diff --git a/tests/unit/Mage/Core/Model/AppTest.php b/tests/unit/Mage/Core/Model/AppTest.php index c88ef46bbee..9e3daefb808 100644 --- a/tests/unit/Mage/Core/Model/AppTest.php +++ b/tests/unit/Mage/Core/Model/AppTest.php @@ -4,7 +4,6 @@ namespace OpenMage\Tests\Unit\Mage\Core\Model; -use Generator; use Mage; use Mage_Core_Exception; use Mage_Core_Model_App as Subject; @@ -13,91 +12,63 @@ use Mage_Core_Model_Store_Group; use Mage_Core_Model_Website; use OpenMage\Tests\Unit\Traits\DataProvider\Mage\Core\CoreTrait; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\Traits\DataProvider\Mage\Core\Model\AppTrait; +use OpenMage\Tests\Unit\OpenMageTest; -class AppTest extends TestCase +class AppTest extends OpenMageTest { + use AppTrait; use CoreTrait; - public Subject $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - $this->subject = Mage::app(); + self::$subject = Mage::app(); } /** * @dataProvider provideGetStoreConfig * @dataProvider provideGetStore - * @group Mage_Core - * @group Mage_Core_Model - * - * @param bool|int|Mage_Core_Model_Store|null|string $id + * @group Model */ - public function testGetStore($id): void + public function testGetStore(Mage_Core_Model_Store|int|string|bool|null $id): void { try { - $this->assertInstanceOf(Mage_Core_Model_Store::class, $this->subject->getStore($id)); + static::assertInstanceOf(Mage_Core_Model_Store::class, self::$subject->getStore($id)); } catch (Mage_Core_Model_Store_Exception $e) { - $this->assertNotEmpty($e->getMessage()); - $this->assertSame('Invalid store code requested.', $e->getMessage()); + static::assertNotEmpty($e->getMessage()); + static::assertSame('Invalid store code requested.', $e->getMessage()); } } - public function provideGetStore(): Generator - { - yield 'Mage_Core_Model_Store' => [ - new Mage_Core_Model_Store(), - ]; - } - /** * @dataProvider provideGetStoreConfig * @dataProvider provideGetWebsite - * @group Mage_Core - * @group Mage_Core_Model - * - * @param int|Mage_Core_Model_Website|null|string|true $id + * @group Model */ - public function testGetWebsite($id): void + public function testGetWebsite(Mage_Core_Model_Website|int|string|bool|null $id): void { try { - $this->assertInstanceOf(Mage_Core_Model_Website::class, $this->subject->getWebsite($id)); - } catch (Mage_Core_Exception $e) { - $this->assertNotEmpty($e->getMessage()); - $this->assertSame('Invalid website id requested.', $e->getMessage()); + static::assertInstanceOf(Mage_Core_Model_Website::class, self::$subject->getWebsite($id)); + } catch (Mage_Core_Exception $exception) { + static::assertNotEmpty($exception->getMessage()); + static::assertSame('Invalid website id requested.', $exception->getMessage()); } } - public function provideGetWebsite(): Generator - { - yield 'Mage_Core_Model_Website' => [ - new Mage_Core_Model_Website(), - ]; - } - /** * @dataProvider provideGetStoreConfig * @dataProvider provideGetGroup - * @group Mage_Core - * @group Mage_Core_Model - * - * @param int|Mage_Core_Model_Store_Group|null|string $id + * @group Model */ - public function testGetGroup($id): void + public function testGetGroup(Mage_Core_Model_Store_Group|int|string|bool|null $id): void { try { - $this->assertInstanceOf(Mage_Core_Model_Store_Group::class, $this->subject->getGroup($id)); + static::assertInstanceOf(Mage_Core_Model_Store_Group::class, self::$subject->getGroup($id)); } catch (Mage_Core_Exception $e) { - $this->assertNotEmpty($e->getMessage()); - $this->assertSame('Invalid store group id requested.', $e->getMessage()); + static::assertNotEmpty($e->getMessage()); + static::assertSame('Invalid store group id requested.', $e->getMessage()); } } - - public function provideGetGroup(): Generator - { - yield 'Mage_Core_Model_Store_Group' => [ - new Mage_Core_Model_Store_Group(), - ]; - } } diff --git a/tests/unit/Mage/Core/Model/ConfigTest.php b/tests/unit/Mage/Core/Model/ConfigTest.php index 28e24abdeb5..6be08a37b8b 100644 --- a/tests/unit/Mage/Core/Model/ConfigTest.php +++ b/tests/unit/Mage/Core/Model/ConfigTest.php @@ -19,33 +19,32 @@ use Mage; use Mage_Core_Model_Config as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; -class ConfigTest extends TestCase +class ConfigTest extends OpenMageTest { - public Subject $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::getModel('core/config'); + parent::setUpBeforeClass(); + self::$subject = Mage::getModel('core/config'); } /** - * @group Mage_Core - * @group Mage_Core_Model + * @group Model */ public function testSaveDeleteGetConfig(): void { $path = 'test/config'; $value = 'foo'; - $this->assertFalse($this->subject->getConfig($path)); + static::assertFalse(self::$subject->getConfig($path)); - $this->subject->saveConfig($path, $value); - $this->assertSame($value, $this->subject->getConfig($path)); + self::$subject->saveConfig($path, $value); + static::assertSame($value, self::$subject->getConfig($path)); - $this->subject->deleteConfig($path); - $this->assertFalse($this->subject->getConfig($path)); + self::$subject->deleteConfig($path); + static::assertFalse(self::$subject->getConfig($path)); } } diff --git a/tests/unit/Mage/Core/Model/Email/Template/AbstractTest.php b/tests/unit/Mage/Core/Model/Email/Template/AbstractTest.php new file mode 100644 index 00000000000..c1e416fca4d --- /dev/null +++ b/tests/unit/Mage/Core/Model/Email/Template/AbstractTest.php @@ -0,0 +1,52 @@ +getMockForAbstractClass(Subject::class); + } + + /** + * @dataProvider provideValidateFileExension + * @group Model + */ + public function testValidateFileExension(bool $expectedResult, string $filePath, string $extension, bool $fileExists): void + { + if ($fileExists) { + static::assertFileExists($filePath); + } else { + static::assertFileDoesNotExist($filePath); + } + + static::markTestSkipped('wait...'); + /** @phpstan-ignore deadCode.unreachable */ + static::assertSame($expectedResult, self::$subject->validateFileExension($filePath, $extension)); + } +} diff --git a/tests/unit/Mage/Core/Model/LayoutTest.php b/tests/unit/Mage/Core/Model/LayoutTest.php index 0384ca5f2ac..8204c55a095 100644 --- a/tests/unit/Mage/Core/Model/LayoutTest.php +++ b/tests/unit/Mage/Core/Model/LayoutTest.php @@ -20,73 +20,59 @@ use Error; use Generator; use Mage; -use Mage_Core_Model_Layout; +use Mage_Core_Block_Abstract; +use Mage_Core_Model_Layout as Subject; +use OpenMage\Tests\Unit\Traits\DataProvider\Mage\Core\Model\LayoutTrait; use OpenMage\Tests\Unit\Traits\PhpStormMetaData\BlocksTrait; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; -class LayoutTest extends TestCase +class LayoutTest extends OpenMageTest { use BlocksTrait; + use LayoutTrait; - public Mage_Core_Model_Layout $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::getModel('core/layout'); + parent::setUpBeforeClass(); + self::$subject = Mage::getModel('core/layout'); } /** * @dataProvider provideCreateBlock - * @group Mage_Core - * @group Mage_Core_Model + * @group Model + * + * @param bool|class-string $expectedResult */ - public function testCreateBlock($expectedResult, bool $willReturnBlock, string $type, ?string $name, array $attributes): void + public function testCreateBlock(bool|string $expectedResult, bool $willReturnBlock, string $type, ?string $name, array $attributes): void { - $result = $this->subject->createBlock($type, $name, $attributes); + $result = self::$subject->createBlock($type, $name, $attributes); - if ($willReturnBlock) { - $this->assertInstanceOf($expectedResult, $result); + if ($willReturnBlock && is_string($expectedResult)) { + static::assertInstanceOf($expectedResult, $result); } else { - $this->assertFalse($result); + static::assertFalse($result); } } - public function provideCreateBlock(): Generator - { - yield 'instance of Mage_Core_Block_Abstract' => [ - \Mage_Cms_Block_Block::class, - true, - 'cms/block', - null, - [], - ]; - yield 'not instance of Mage_Core_Block_Abstract' => [ - false, - false, - 'rule/conditions', - null, - [], - ]; - } - /** * @covers Mage_Core_Model_Layout::getBlockSingleton() * @dataProvider provideGetBlockSingleton - * @group Mage_Core - * @group Mage_Core_Model - * @group pr4411 + * @group Model + * + * @param class-string $expectedResult */ - public function testGetBlockSingleton($expectedResult, bool $isAbstractBlock, string $type): void + public function testGetBlockSingleton(string $expectedResult, bool $isAbstractBlock, string $type): void { - $result = $this->subject->getBlockSingleton($type); + $result = self::$subject->getBlockSingleton($type); - $this->assertInstanceOf($expectedResult, $result); + static::assertInstanceOf($expectedResult, $result); if ($isAbstractBlock) { - $this->assertInstanceOf(\Mage_Core_Block_Abstract::class, $result); + static::assertInstanceOf(Mage_Core_Block_Abstract::class, $result); } else { - $this->assertNotInstanceOf(\Mage_Core_Block_Abstract::class, $result); + static::assertNotInstanceOf(Mage_Core_Block_Abstract::class, $result); } } @@ -120,8 +106,7 @@ public function provideGetBlockSingleton(): Generator /** * @covers Mage_Core_Model_Layout::getBlockSingleton() - * @group Mage_Core - * @group Mage_Core_Model + * @group Model */ public function testGetBlockSingletonError(): void { @@ -132,6 +117,6 @@ public function testGetBlockSingletonError(): void $this->expectExceptionMessage("Class 'Mage_Invalid_Block_Type' not found"); } - $this->subject->getBlockSingleton('invalid/type'); + self::$subject->getBlockSingleton('invalid/type'); } } diff --git a/tests/unit/Mage/Core/Model/LocaleTest.php b/tests/unit/Mage/Core/Model/LocaleTest.php index 32f41b52a46..f814079a178 100644 --- a/tests/unit/Mage/Core/Model/LocaleTest.php +++ b/tests/unit/Mage/Core/Model/LocaleTest.php @@ -20,28 +20,28 @@ use Mage; use Mage_Core_Model_Locale as Subject; use OpenMage\Tests\Unit\Traits\DataProvider\Mage\Catalog\Model\LocaleTrait; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; -class LocaleTest extends TestCase +class LocaleTest extends OpenMageTest { use LocaleTrait; - public Subject $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::getModel('core/locale'); + parent::setUpBeforeClass(); + self::$subject = Mage::getModel('core/locale'); } /** * @dataProvider provideGetNumberData * @param string|float|int $value * - * @group Mage_Core + * @group Model */ public function testGetNumber(?float $expectedResult, $value): void { - $this->assertSame($expectedResult, $this->subject->getNumber($value)); + static::assertSame($expectedResult, self::$subject->getNumber($value)); } } diff --git a/tests/unit/Mage/Core/Model/Security/HtmlEscapedStringTest.php b/tests/unit/Mage/Core/Model/Security/HtmlEscapedStringTest.php index f3c4d7162ef..3ceca832d61 100644 --- a/tests/unit/Mage/Core/Model/Security/HtmlEscapedStringTest.php +++ b/tests/unit/Mage/Core/Model/Security/HtmlEscapedStringTest.php @@ -17,65 +17,37 @@ namespace OpenMage\Tests\Unit\Mage\Core\Model\Security; -use Generator; use Mage_Core_Model_Security_HtmlEscapedString as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; +use OpenMage\Tests\Unit\Traits\DataProvider\Mage\Core\Model\SecurityTrait; -class HtmlEscapedStringTest extends TestCase +class HtmlEscapedStringTest extends OpenMageTest { - public const TEST_STRING = 'This is a bold string'; + use SecurityTrait; - public Subject $subject; + private static Subject $subject; /** * @dataProvider provideHtmlEscapedStringAsStringData * @param array $allowedTags * - * @group Mage_Core + * @group Model */ public function testToSting(string $expectedResult, string $string, ?array $allowedTags): void { - $this->subject = new Subject($string, $allowedTags); - $this->assertSame($expectedResult, $this->subject->__toString()); + self::$subject = new Subject($string, $allowedTags); + static::assertSame($expectedResult, self::$subject->__toString()); } /** * @dataProvider provideHtmlEscapedStringGetUnescapedValueData * @param array $allowedTags * - * @group Mage_Core + * @group Model */ public function testGetUnescapedValue(string $expectedResult, string $string, ?array $allowedTags): void { - $this->subject = new Subject($string, $allowedTags); - $this->assertSame($expectedResult, $this->subject->getUnescapedValue()); - } - - public function provideHtmlEscapedStringAsStringData(): Generator - { - yield 'tags null' => [ - 'This is a bold <b>string</b>', - self::TEST_STRING, - null, - ]; - yield 'tags array' => [ - self::TEST_STRING, - self::TEST_STRING, - ['b'], - ]; - } - - public function provideHtmlEscapedStringGetUnescapedValueData(): Generator - { - yield 'tags null' => [ - self::TEST_STRING, - self::TEST_STRING, - null, - ]; - yield 'tags array' => [ - self::TEST_STRING, - self::TEST_STRING, - ['some-invalid-value'], - ]; + self::$subject = new Subject($string, $allowedTags); + static::assertSame($expectedResult, self::$subject->getUnescapedValue()); } } diff --git a/tests/unit/Mage/Core/Model/StoreTest.php b/tests/unit/Mage/Core/Model/StoreTest.php index fdbbc00f77a..16196491cf9 100644 --- a/tests/unit/Mage/Core/Model/StoreTest.php +++ b/tests/unit/Mage/Core/Model/StoreTest.php @@ -20,32 +20,30 @@ use Mage; use Mage_Core_Model_Store as Subject; use OpenMage\Tests\Unit\Traits\DataProvider\Mage\Core\CoreTrait; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; -class StoreTest extends TestCase +class StoreTest extends OpenMageTest { use CoreTrait; - public Subject $subject; + private static Subject $subject; public function setUp(): void { - Mage::app(); - $this->subject = Mage::getModel('core/store'); + self::$subject = Mage::getModel('core/store'); } /** * @covers Mage_Core_Model_Store::getId() * @dataProvider provideGetStoreId * @param string|int|null $withStore - * @group Mage_Core - * @group Mage_Core_Model + * @group Model */ public function testGetId(?int $expectedResult, $withStore): void { if ($withStore) { - $this->subject->setData('store_id', $withStore); + self::$subject->setData('store_id', $withStore); } - $this->assertSame($expectedResult, $this->subject->getId()); + static::assertSame($expectedResult, self::$subject->getId()); } } diff --git a/tests/unit/Mage/Core/Model/UrlTest.php b/tests/unit/Mage/Core/Model/UrlTest.php index e7ef38908fe..a2d02123549 100644 --- a/tests/unit/Mage/Core/Model/UrlTest.php +++ b/tests/unit/Mage/Core/Model/UrlTest.php @@ -19,33 +19,31 @@ use Mage; use Mage_Core_Model_Url as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; -class UrlTest extends TestCase +class UrlTest extends OpenMageTest { - public Subject $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::getModel('core/url'); + parent::setUpBeforeClass(); + self::$subject = Mage::getModel('core/url'); } /** - * @group Mage_Core - * @group Mage_Core_Model + * @group Model */ public function testEscape(): void { - $this->assertSame('%22%27%3E%3C', $this->subject->escape('"\'><')); + static::assertSame('%22%27%3E%3C', self::$subject->escape('"\'><')); } /** - * @group Mage_Core - * @group Mage_Core_Model + * @group Model */ public function testGetSecure(): void { - $this->assertIsBool($this->subject->getSecure()); + static::assertIsBool(self::$subject->getSecure()); } } diff --git a/tests/unit/Mage/Core/Model/VariableTest.php b/tests/unit/Mage/Core/Model/VariableTest.php index 9199a9adca0..8711363a047 100644 --- a/tests/unit/Mage/Core/Model/VariableTest.php +++ b/tests/unit/Mage/Core/Model/VariableTest.php @@ -19,24 +19,23 @@ use Mage; use Mage_Core_Model_Variable as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; -class VariableTest extends TestCase +class VariableTest extends OpenMageTest { - public Subject $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::getModel('core/variable'); + parent::setUpBeforeClass(); + self::$subject = Mage::getModel('core/variable'); } /** - * @group Mage_Core - * @group Mage_Core_Model + * @group Model */ public function testGetVariablesOptionArray(): void { - $this->assertIsArray($this->subject->getVariablesOptionArray()); + static::assertIsArray(self::$subject->getVariablesOptionArray()); } } diff --git a/tests/unit/Mage/Core/Model/WebsiteTest.php b/tests/unit/Mage/Core/Model/WebsiteTest.php index 569a7ee67a2..b8c8c9f4d57 100644 --- a/tests/unit/Mage/Core/Model/WebsiteTest.php +++ b/tests/unit/Mage/Core/Model/WebsiteTest.php @@ -22,156 +22,142 @@ use Mage_Core_Model_Resource_Store_Group_Collection; use Mage_Core_Model_Website as Subject; use Mage_Directory_Model_Currency; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; use Varien_Db_Select; -class WebsiteTest extends TestCase +class WebsiteTest extends OpenMageTest { - public Subject $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::getModel('core/website'); + parent::setUpBeforeClass(); + self::$subject = Mage::getModel('core/website'); } /** - * @group Mage_Core - * @group Mage_Core_Model + * @group Model */ public function testLoad(): void { - $this->assertInstanceOf(Subject::class, $this->subject->load(1)); - $this->assertInstanceOf(Subject::class, $this->subject->load('default')); + static::assertInstanceOf(Subject::class, self::$subject->load(1)); + static::assertInstanceOf(Subject::class, self::$subject->load('default')); } /** - * @group Mage_Core - * @group Mage_Core_Model + * @group Model */ public function testLoadConfig(): void { - $this->assertInstanceOf(Subject::class, $this->subject->loadConfig('1')); - $this->assertInstanceOf(Subject::class, $this->subject->loadConfig('default')); + static::assertInstanceOf(Subject::class, self::$subject->loadConfig('1')); + static::assertInstanceOf(Subject::class, self::$subject->loadConfig('default')); } /** - * @group Mage_Core - * @group Mage_Core_Model + * @group Model */ public function testGetStoreCollection(): void { - $this->assertInstanceOf(Mage_Core_Model_Resource_Store_Collection::class, $this->subject->getStoreCollection()); + static::assertInstanceOf(Mage_Core_Model_Resource_Store_Collection::class, self::$subject->getStoreCollection()); } /** - * @group Mage_Core - * @group Mage_Core_Model + * @group Model */ public function testGetGroupCollection(): void { - $this->assertInstanceOf(Mage_Core_Model_Resource_Store_Group_Collection::class, $this->subject->getGroupCollection()); + static::assertInstanceOf(Mage_Core_Model_Resource_Store_Group_Collection::class, self::$subject->getGroupCollection()); } /** - * @group Mage_Core - * @group Mage_Core_Model + * @group Model */ public function testGetStores(): void { - $this->assertIsArray($this->subject->getStores()); + static::assertIsArray(self::$subject->getStores()); } /** - * @group Mage_Core - * @group Mage_Core_Model + * @group Model */ public function testGetStoreIds(): void { - $this->assertIsArray($this->subject->getStoreIds()); + static::assertIsArray(self::$subject->getStoreIds()); } /** - * @group Mage_Core - * @group Mage_Core_Model + * @group Model */ public function testGetStoreCodes(): void { - $this->assertIsArray($this->subject->getStoreCodes()); + static::assertIsArray(self::$subject->getStoreCodes()); } /** - * @group Mage_Core - * @group Mage_Core_Model + * @group Model */ public function testGetStoresCount(): void { - $this->assertIsInt($this->subject->getStoresCount()); + static::assertIsInt(self::$subject->getStoresCount()); } /** - * @group Mage_Core - * @group Mage_Core_Model + * @group Model */ public function testGetGroups(): void { - $this->assertIsArray($this->subject->getGroups()); + static::assertIsArray(self::$subject->getGroups()); } /** - * @group Mage_Core - * @group Mage_Core_Model + * @group Model */ public function testGetGroupIds(): void { - $this->assertIsArray($this->subject->getGroupIds()); + static::assertIsArray(self::$subject->getGroupIds()); } /** - * @group Mage_Core - * @group Mage_Core_Model + * @group Model */ public function testGetGroupsCount(): void { - $this->assertIsInt($this->subject->getGroupsCount()); + static::assertIsInt(self::$subject->getGroupsCount()); } /** - * @group Mage_Core - * @group Mage_Core_Model + * @group Model */ public function testGetBaseCurrency(): void { - $this->assertIsObject($this->subject->getBaseCurrency()); - $this->assertInstanceOf(Mage_Directory_Model_Currency::class, $this->subject->getBaseCurrency()); + static::assertIsObject(self::$subject->getBaseCurrency()); + static::assertInstanceOf(Mage_Directory_Model_Currency::class, self::$subject->getBaseCurrency()); } // /** - // * @group Mage_Core - // * @group Mage_Core_Model + // * @group Model // */ // public function testGetDefaultStore(): void // { - // $this->assertIsObject($this->subject->getDefaultStore()); - // $this->assertInstanceOf(Mage_Core_Model_Store::class, $this->subject->getDefaultStore()); + // $this->assertIsObject(self::$subject->getDefaultStore()); + // $this->assertInstanceOf(Mage_Core_Model_Store::class, self::$subject->getDefaultStore()); // } /** - * @group Mage_Core + * @group Model */ public function testGetDefaultStoresSelect(): void { - $this->assertIsObject($this->subject->getDefaultStoresSelect()); - $this->assertInstanceOf(Varien_Db_Select::class, $this->subject->getDefaultStoresSelect(true)); + static::assertIsObject(self::$subject->getDefaultStoresSelect()); + static::assertInstanceOf(Varien_Db_Select::class, self::$subject->getDefaultStoresSelect(true)); } /** - * @group Mage_Core - * @group Mage_Core_Model + * @group Model */ public function testIsReadOnly(): void { - $this->assertFalse($this->subject->isReadOnly()); - $this->assertTrue($this->subject->isReadOnly(true)); + static::assertFalse(self::$subject->isReadOnly()); + static::assertTrue(self::$subject->isReadOnly(true)); } } diff --git a/tests/unit/Mage/Customer/Model/Convert/Adapter/CustomerTest.php b/tests/unit/Mage/Customer/Model/Convert/Adapter/CustomerTest.php index 4f37d1ffd55..7da21d1f4fc 100644 --- a/tests/unit/Mage/Customer/Model/Convert/Adapter/CustomerTest.php +++ b/tests/unit/Mage/Customer/Model/Convert/Adapter/CustomerTest.php @@ -19,30 +19,30 @@ use Mage; use Mage_Customer_Model_Convert_Adapter_Customer as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; use Throwable; -class CustomerTest extends TestCase +class CustomerTest extends OpenMageTest { - public Subject $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::getModel('customer/convert_adapter_customer'); + parent::setUpBeforeClass(); + self::$subject = Mage::getModel('customer/convert_adapter_customer'); } // /** // * @return void // * @throws Throwable // * - // * @group Mage_Customer + // * @group Model // */ // public function testSaveRowNoWebsite(): void // { // $data = []; // try { - // $this->subject->saveRow($data); + // self::$subject->saveRow($data); // $this->fail(); // } catch (Mage_Core_Exception $e) { // $this->assertSame('Skipping import row, required field "website" is not defined.', $e->getMessage()); @@ -53,7 +53,7 @@ public function setUp(): void // * @return void // * @throws Throwable // * - // * @group Mage_Customer + // * @group Model // */ // public function testSaveRowNoEmail(): void // { @@ -61,7 +61,7 @@ public function setUp(): void // 'website' => 'base', // ]; // try { - // $this->subject->saveRow($data); + // self::$subject->saveRow($data); // $this->fail(); // } catch (Mage_Core_Exception $e) { // $this->assertSame('Skipping import row, required field "email" is not defined.', $e->getMessage()); @@ -72,7 +72,7 @@ public function setUp(): void // * @return void // * @throws Throwable // * - // * @group Mage_Customer + // * @group Model // */ // public function testSaveRowNoGroup(): void // { @@ -81,7 +81,7 @@ public function setUp(): void // 'email' => 'test@example.com', // ]; // try { - // $this->subject->saveRow($data); + // self::$subject->saveRow($data); // $this->fail(); // } catch (Mage_Core_Exception $e) { // $this->assertSame('Skipping import row, the value "" is not valid for the "group" field.', $e->getMessage()); @@ -92,7 +92,7 @@ public function setUp(): void // * @return void // * @throws Throwable // * - // * @group Mage_Customer + // * @group Model // */ // public function testSaveRowNoFirstname(): void // { @@ -102,7 +102,7 @@ public function setUp(): void // 'group' => 'General', // ]; // try { - // $this->subject->saveRow($data); + // self::$subject->saveRow($data); // $this->fail(); // } catch (Mage_Core_Exception $e) { // $this->expectExceptionMessage('Skip import row, required field "firstname" for the new customer is not defined.'); @@ -113,7 +113,7 @@ public function setUp(): void // * @return void // * @throws Throwable // * - // * @group Mage_Customer + // * @group Model // */ // public function testSaveRowNoLastname(): void // { @@ -124,7 +124,7 @@ public function setUp(): void // 'firstname' => 'John', // ]; // try { - // $this->subject->saveRow($data); + // self::$subject->saveRow($data); // $this->fail(); // } catch (Mage_Core_Exception $e) { // $this->assertSame('Skip import row, required field "lastname" for the new customer is not defined.', $e->getMessage()); @@ -132,7 +132,7 @@ public function setUp(): void // } /** * @throws Throwable - * @group Mage_Customer + * @group Model */ public function testSaveRow(): void { @@ -143,6 +143,6 @@ public function testSaveRow(): void 'firstname' => 'John', 'lastname' => 'Doe', ]; - $this->assertInstanceOf(Subject::class, $this->subject->saveRow($data)); + static::assertInstanceOf(Subject::class, self::$subject->saveRow($data)); } } diff --git a/tests/unit/Mage/Customer/Model/CustomerTest.php b/tests/unit/Mage/Customer/Model/CustomerTest.php index 28d25c2a7a1..d5494efc371 100644 --- a/tests/unit/Mage/Customer/Model/CustomerTest.php +++ b/tests/unit/Mage/Customer/Model/CustomerTest.php @@ -9,7 +9,7 @@ * * @category OpenMage * @package OpenMage_Tests - * @copyright Copyright (c) 2024 The OpenMage Contributors (https://www.openmage.org) + * @copyright Copyright (c) 2024-2025 The OpenMage Contributors (https://www.openmage.org) * @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) */ @@ -17,27 +17,27 @@ namespace OpenMage\Tests\Unit\Mage\Customer\Model; -use Mage; +use Mage_Core_Exception; use Mage_Customer_Model_Customer as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; +use OpenMage\Tests\Unit\Traits\DataProvider\Mage\Customer\CustomerTrait; +use Zend_Validate_Exception; -class CustomerTest extends TestCase +class CustomerTest extends OpenMageTest { - public Subject $subject; - - public function setUp(): void - { - Mage::app(); - $this->subject = Mage::getModel('customer/customer'); - } + use CustomerTrait; /** - * @group Mage_Customer - * @group Mage_Customer_Model + * @dataProvider provideValidateCustomerData + * @param array|true $expectedResult + * @throws Mage_Core_Exception + * @throws Zend_Validate_Exception */ - public function testValidateAddress(): void + public function testValidate($expectedResult, array $methods): void { - $data = []; - $this->assertIsBool($this->subject->validateAddress($data)); + $mock = $this->getMockWithCalledMethods(Subject::class, $methods); + + static::assertInstanceOf(Subject::class, $mock); + static::assertSame($expectedResult, $mock->validate()); } } diff --git a/tests/unit/Mage/Directory/Block/DataTest.php b/tests/unit/Mage/Directory/Block/DataTest.php index efa0f9999b5..9f8ef1eb1aa 100644 --- a/tests/unit/Mage/Directory/Block/DataTest.php +++ b/tests/unit/Mage/Directory/Block/DataTest.php @@ -21,33 +21,31 @@ use Mage_Directory_Block_Data as Subject; use Mage_Directory_Model_Resource_Country_Collection; use Mage_Directory_Model_Resource_Region_Collection; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; -class DataTest extends TestCase +class DataTest extends OpenMageTest { - public Subject $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = new Subject(); + parent::setUpBeforeClass(); + self::$subject = new Subject(); } /** - * @group Mage_Directory - * @group Mage_Directory_Block + * @group Block */ public function testGetCountryCollection(): void { - $this->assertInstanceOf(Mage_Directory_Model_Resource_Country_Collection::class, $this->subject->getCountryCollection()); + static::assertInstanceOf(Mage_Directory_Model_Resource_Country_Collection::class, self::$subject->getCountryCollection()); } /** - * @group Mage_Directory - * @group Mage_Directory_Block + * @group Block */ public function testGetRegionCollection(): void { - $this->assertInstanceOf(Mage_Directory_Model_Resource_Region_Collection::class, $this->subject->getRegionCollection()); + static::assertInstanceOf(Mage_Directory_Model_Resource_Region_Collection::class, self::$subject->getRegionCollection()); } } diff --git a/tests/unit/Mage/Directory/Helper/DataTest.php b/tests/unit/Mage/Directory/Helper/DataTest.php index e638168617e..106fbd172fa 100644 --- a/tests/unit/Mage/Directory/Helper/DataTest.php +++ b/tests/unit/Mage/Directory/Helper/DataTest.php @@ -17,157 +17,108 @@ namespace OpenMage\Tests\Unit\Mage\Directory\Helper; -use Generator; use Mage; use Mage_Directory_Helper_Data as Subject; use Mage_Directory_Model_Resource_Country_Collection; use Mage_Directory_Model_Resource_Region_Collection; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; +use OpenMage\Tests\Unit\Traits\DataProvider\Mage\Directory\DirectoryTrait; -class DataTest extends TestCase +class DataTest extends OpenMageTest { - public Subject $subject; + use DirectoryTrait; - public function setUp(): void + private static Subject $subject; + + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::helper('directory/data'); + parent::setUpBeforeClass(); + self::$subject = Mage::helper('directory/data'); } /** - * @group Mage_Directory - * @group Mage_Directory_Helper + * @group Helper */ public function testGetRegionCollection(): void { - $this->assertInstanceOf(Mage_Directory_Model_Resource_Region_Collection::class, $this->subject->getRegionCollection()); + static::assertInstanceOf(Mage_Directory_Model_Resource_Region_Collection::class, self::$subject->getRegionCollection()); } /** - * @group Mage_Directory - * @group Mage_Directory_Helper + * @group Helper */ public function testGetCountryCollection(): void { - $this->assertInstanceOf(Mage_Directory_Model_Resource_Country_Collection::class, $this->subject->getCountryCollection()); + static::assertInstanceOf(Mage_Directory_Model_Resource_Country_Collection::class, self::$subject->getCountryCollection()); } /** - * @group Mage_Directory - * @group Mage_Directory_Helper + * @group Helper */ public function testGetRegionJsonByStore(): void { - $this->assertIsString($this->subject->getRegionJson()); + static::assertIsString(self::$subject->getRegionJson()); } /** - * @group Mage_Directory - * @group Mage_Directory_Helper + * @group Helper * @group runInSeparateProcess * @runInSeparateProcess */ public function testCurrencyConvert(): void { - $this->assertSame(10, $this->subject->currencyConvert(10, 'USD')); + static::assertSame(10, self::$subject->currencyConvert(10, 'USD')); } /** * @covers Mage_Directory_Helper_Data::getCountriesWithOptionalZip() * @dataProvider provideGetCountriesWithOptionalZip - * @group Mage_Directory - * @group Mage_Directory_Helper + * @group Helper */ - public function testGetCountriesWithOptionalZip($expectedResult, bool $asJson): void - { - $this->assertSame($expectedResult, $this->subject->getCountriesWithOptionalZip($asJson)); - } - - public function provideGetCountriesWithOptionalZip(): Generator + public function testGetCountriesWithOptionalZip(array|string $expectedResult, bool $asJson): void { - yield 'as json' => [ - '["HK","IE","MO","PA"]', - true, - ]; - yield 'as array' => [ - [ - 0 => 'HK', - 1 => 'IE', - 2 => 'MO', - 3 => 'PA', - ], - false, - ]; + static::assertSame($expectedResult, self::$subject->getCountriesWithOptionalZip($asJson)); } /** * @covers Mage_Directory_Helper_Data::isZipCodeOptional() - * @group Mage_Directory - * @group Mage_Directory_Helper + * @group Helper */ public function testIsZipCodeOptional(): void { - $this->assertIsBool($this->subject->isZipCodeOptional('')); + static::assertIsBool(self::$subject->isZipCodeOptional('')); } /** * @covers Mage_Directory_Helper_Data::getCountriesWithStatesRequired() * @dataProvider provideGetCountriesWithStatesRequired - * @group Mage_Directory - * @group Mage_Directory_Helper + * @group Helper */ - public function testGetCountriesWithStatesRequired($expectedResult, bool $asJson): void + public function testGetCountriesWithStatesRequired(array|string $expectedResult, bool $asJson): void { - $result = $this->subject->getCountriesWithStatesRequired($asJson); + $result = self::$subject->getCountriesWithStatesRequired($asJson); if (defined('DATA_MAY_CHANGED')) { - $asJson ? $this->assertIsString($result) : $this->assertIsArray($result); + $asJson ? static::assertIsString($result) : static::assertIsArray($result); } else { - $this->assertSame($expectedResult, $result); + static::assertSame($expectedResult, $result); } } - public function provideGetCountriesWithStatesRequired(): Generator - { - yield 'as json' => [ - '["AT","CA","CH","DE","EE","ES","FI","FR","LT","LV","RO","US"]', - true, - ]; - yield 'as array' => [ - [ - 0 => 'AT', - 1 => 'CA', - 2 => 'CH', - 3 => 'DE', - 4 => 'EE', - 5 => 'ES', - 6 => 'FI', - 7 => 'FR', - 8 => 'LT', - 9 => 'LV', - 10 => 'RO', - 11 => 'US', - ], - false, - ]; - } - /** * @covers Mage_Directory_Helper_Data::getShowNonRequiredState() - * @group Mage_Directory - * @group Mage_Directory_Helper + * @group Helper */ public function testGetShowNonRequiredState(): void { - $this->assertTrue($this->subject->getShowNonRequiredState()); + static::assertTrue(self::$subject->getShowNonRequiredState()); } /** * @covers Mage_Directory_Helper_Data::getConfigCurrencyBase() - * @group Mage_Directory - * @group Mage_Directory_Helper + * @group Helper */ public function testGetConfigCurrencyBase(): void { - $this->assertSame('USD', $this->subject->getConfigCurrencyBase()); + static::assertSame('USD', self::$subject->getConfigCurrencyBase()); } } diff --git a/tests/unit/Mage/Downloadable/Helper/FileTest.php b/tests/unit/Mage/Downloadable/Helper/FileTest.php index 1ae59909153..3fdec8aef63 100644 --- a/tests/unit/Mage/Downloadable/Helper/FileTest.php +++ b/tests/unit/Mage/Downloadable/Helper/FileTest.php @@ -20,29 +20,28 @@ use Mage; use Mage_Downloadable_Helper_File as Subject; use OpenMage\Tests\Unit\Traits\DataProvider\Mage\Downloadable\DownloadableTrait; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; -class FileTest extends TestCase +class FileTest extends OpenMageTest { use DownloadableTrait; - public Subject $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::helper('downloadable/file'); + parent::setUpBeforeClass(); + self::$subject = Mage::helper('downloadable/file'); } /** * @dataProvider provideGetFilePathData * - * @group Mage_Downloadable - * @group Mage_Downloadable_Helper + * @group Helper */ public function testGetFilePath(string $expectedResult, string $path, ?string $file): void { - $result = $this->subject->getFilePath($path, $file); - $this->assertSame($expectedResult, $result); + $result = self::$subject->getFilePath($path, $file); + static::assertSame($expectedResult, $result); } } diff --git a/tests/unit/Mage/GiftMessage/Helper/MessageTest.php b/tests/unit/Mage/GiftMessage/Helper/MessageTest.php index 67d5c3eee90..6cf83612015 100644 --- a/tests/unit/Mage/GiftMessage/Helper/MessageTest.php +++ b/tests/unit/Mage/GiftMessage/Helper/MessageTest.php @@ -17,61 +17,32 @@ namespace OpenMage\Tests\Unit\Mage\GiftMessage\Helper; -use Generator; use Mage; -use Mage_Catalog_Model_Product; +use Mage_Core_Model_Store; use Mage_GiftMessage_Helper_Message as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; +use OpenMage\Tests\Unit\Traits\DataProvider\Mage\GiftMessage\GiftMessageTrait; use Varien_Object; -class MessageTest extends TestCase +class MessageTest extends OpenMageTest { - public Subject $subject; + use GiftMessageTrait; - public function setUp(): void + private static Subject $subject; + + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::helper('giftmessage/message'); + parent::setUpBeforeClass(); + self::$subject = Mage::helper('giftmessage/message'); } /** * @dataProvider provideIsMessagesAvailable * - * @group Mage_GiftMessage - * @group Mage_GiftMessage_Helper + * @group Helper */ - public function testIsMessagesAvailable(string $type, Varien_Object $entity, $store = null): void + public function testIsMessagesAvailable(string $type, Varien_Object $entity, bool|int|Mage_Core_Model_Store|null|string $store = null): void { - $this->assertIsBool($this->subject->isMessagesAvailable($type, $entity, $store)); - } - - public function provideIsMessagesAvailable(): Generator - { - $entity = new Varien_Object(); - - yield Subject::TYPE_ADDRESS_ITEM => [ - Subject::TYPE_ADDRESS_ITEM, - $entity, - ]; - yield Subject::TYPE_ITEM => [ - Subject::TYPE_ITEM, - $entity->setProduct(new Mage_Catalog_Model_Product()), - ]; - yield Subject::TYPE_ITEMS => [ - Subject::TYPE_ITEMS, - $entity, - ]; - yield Subject::TYPE_ORDER => [ - Subject::TYPE_ORDER, - $entity, - ]; - yield Subject::TYPE_ORDER_ITEM => [ - Subject::TYPE_ORDER_ITEM, - $entity, - ]; - yield 'invalid type' => [ - 'quote', - $entity, - ]; + static::assertIsBool(self::$subject->isMessagesAvailable($type, $entity, $store)); } } diff --git a/tests/unit/Mage/Index/Block/Adminhtml/Process/GridTest.php b/tests/unit/Mage/Index/Block/Adminhtml/Process/GridTest.php new file mode 100644 index 00000000000..80c7c14d2bf --- /dev/null +++ b/tests/unit/Mage/Index/Block/Adminhtml/Process/GridTest.php @@ -0,0 +1,73 @@ +setStatus($data); + + $expectedResult = sprintf(self::$subject::PATTERN_SEVERITY, $expectedResult, $value); + static::assertSame($expectedResult, self::$subject->decorateStatus($value, $row, $column, $isExpected)); + } + + /** + * @covers Mage_Index_Block_Adminhtml_Process_Grid::decorateUpdateRequired() + * @dataProvider provideDecorateUpdateRequiredData + * @group Model + */ + public function testDecorateUpdateRequired(string $expectedResult, int $data): void + { + $value = '1'; + $row = new Mage_Index_Model_Process(); + $column = new Mage_Adminhtml_Block_Widget_Grid_Column(); + $isExpected = false; + + $row->setUpdateRequired($data); + + $expectedResult = sprintf(self::$subject::PATTERN_SEVERITY, $expectedResult, $value); + static::assertSame($expectedResult, self::$subject->decorateUpdateRequired($value, $row, $column, $isExpected)); + } +} diff --git a/tests/unit/Mage/Index/Model/IndexerTest.php b/tests/unit/Mage/Index/Model/IndexerTest.php new file mode 100644 index 00000000000..0d32e5aa775 --- /dev/null +++ b/tests/unit/Mage/Index/Model/IndexerTest.php @@ -0,0 +1,116 @@ +getProcessesCollection()); + } + + /** + * @covers Mage_Index_Model_Indexer::hasErrors() + * @group Model + */ + public function testHasErrors(): void + { + static::assertIsBool(self::$subject->hasErrors()); + } + + /** + * @covers Mage_Index_Model_Indexer::getErrors() + * @group Model + */ + public function testGetErrors(): void + { + static::assertIsArray(self::$subject->getErrors()); + } + + /** + * @covers Mage_Index_Model_Indexer::lockIndexer() + * @group Model + */ + public function testLockIndexer(): void + { + static::assertInstanceOf(Subject::class, self::$subject->lockIndexer()); + } + + /** + * @covers Mage_Index_Model_Indexer::unlockIndexer() + * @group Model + */ + public function testUnlockIndexer(): void + { + static::assertInstanceOf(Subject::class, self::$subject->unlockIndexer()); + } + + /** + * @group Model + */ + public function testIndexEvent(): void + { + $event = new Mage_Index_Model_Event(); + static::assertInstanceOf(Subject::class, self::$subject->indexEvent($event)); + } + + /** + * @group Model + */ + public function testRegisterEvent(): void + { + $event = new Mage_Index_Model_Event(); + static::assertInstanceOf(Subject::class, self::$subject->registerEvent($event)); + } + + /** + * @covers Mage_Index_Model_Indexer::allowTableChanges() + * @group Model + */ + public function testAllowTableChanges(): void + { + static::assertInstanceOf(Subject::class, self::$subject->allowTableChanges()); + } + + /** + * @covers Mage_Index_Model_Indexer::disallowTableChanges() + * @group Model + */ + public function testDisallowTableChanges(): void + { + static::assertInstanceOf(Subject::class, self::$subject->disallowTableChanges()); + } +} diff --git a/tests/unit/Mage/Index/Model/ProcessTest.php b/tests/unit/Mage/Index/Model/ProcessTest.php index 874eeb06b25..239841545be 100644 --- a/tests/unit/Mage/Index/Model/ProcessTest.php +++ b/tests/unit/Mage/Index/Model/ProcessTest.php @@ -21,73 +21,69 @@ use Mage_Core_Exception; use Mage_Index_Model_Process as Subject; use Mage_Index_Model_Resource_Event_Collection; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; -class ProcessTest extends TestCase +class ProcessTest extends OpenMageTest { public const INDEXER_MODEL_IS_NOT_DEFINED = 'Indexer model is not defined.'; - public Subject $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::getModel('index/process'); + parent::setUpBeforeClass(); + self::$subject = Mage::getModel('index/process'); } /** - * @group Mage_Index - * @group Mage_Index_Model + * @group Model */ public function testReindexEverything(): void { - $this->subject->setIndexerCode('html'); + self::$subject->setIndexerCode('html'); try { - $this->assertInstanceOf(Subject::class, $this->subject->reindexEverything()); + static::assertInstanceOf(Subject::class, self::$subject->reindexEverything()); } catch (Mage_Core_Exception $exception) { - $this->assertSame(self::INDEXER_MODEL_IS_NOT_DEFINED, $exception->getMessage()); + static::assertSame(self::INDEXER_MODEL_IS_NOT_DEFINED, $exception->getMessage()); } } /** - * @group Mage_Index - * @group Mage_Index_Model + * @group Model */ public function testDisableIndexerKeys(): void { - $this->subject->setIndexerCode('html'); + self::$subject->setIndexerCode('html'); try { - $this->assertInstanceOf(Subject::class, $this->subject->disableIndexerKeys()); + static::assertInstanceOf(Subject::class, self::$subject->disableIndexerKeys()); } catch (Mage_Core_Exception $exception) { - $this->assertSame(self::INDEXER_MODEL_IS_NOT_DEFINED, $exception->getMessage()); + static::assertSame(self::INDEXER_MODEL_IS_NOT_DEFINED, $exception->getMessage()); } } /** - * @group Mage_Index - * @group Mage_Index_Model + * @group Model */ public function testEnableIndexerKeys(): void { - $this->subject->setIndexerCode('html'); + self::$subject->setIndexerCode('html'); try { - $this->assertInstanceOf(Subject::class, $this->subject->enableIndexerKeys()); + static::assertInstanceOf(Subject::class, self::$subject->enableIndexerKeys()); } catch (Mage_Core_Exception $exception) { - $this->assertSame(self::INDEXER_MODEL_IS_NOT_DEFINED, $exception->getMessage()); + static::assertSame(self::INDEXER_MODEL_IS_NOT_DEFINED, $exception->getMessage()); } } /** - * @group Mage_Index - * @group Mage_Index_Model + * @group Model */ public function testGetUnprocessedEventsCollection(): void { - $this->subject->setIndexerCode('html'); - $this->assertInstanceOf(Mage_Index_Model_Resource_Event_Collection::class, $this->subject->getUnprocessedEventsCollection()); + self::$subject->setIndexerCode('html'); + static::assertInstanceOf(Mage_Index_Model_Resource_Event_Collection::class, self::$subject->getUnprocessedEventsCollection()); } } diff --git a/tests/unit/Mage/Log/Helper/DataTest.php b/tests/unit/Mage/Log/Helper/DataTest.php index 0787cd757c1..4afbb7ef041 100644 --- a/tests/unit/Mage/Log/Helper/DataTest.php +++ b/tests/unit/Mage/Log/Helper/DataTest.php @@ -17,71 +17,57 @@ namespace OpenMage\Tests\Unit\Mage\Log\Helper; -use Generator; use Mage; use Mage_Log_Helper_Data as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; +use OpenMage\Tests\Unit\Traits\DataProvider\Mage\Log\Helper\DataTrait; -class DataTest extends TestCase +class DataTest extends OpenMageTest { - public Subject $subject; + use DataTrait; - public function setUp(): void + private static Subject $subject; + + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::helper('log/data'); + parent::setUpBeforeClass(); + self::$subject = Mage::helper('log/data'); } /** * @covers Mage_Log_Helper_Data::isVisitorLogEnabled() - * @group Mage_Log - * @group Mage_Log_Helper + * @group Helper */ public function testIsVisitorLogEnabled(): void { - $this->assertTrue($this->subject->isVisitorLogEnabled()); + static::assertTrue(self::$subject->isVisitorLogEnabled()); } /** * @covers Mage_Log_Helper_Data::isLogEnabled() - * @group Mage_Log - * @group Mage_Log_Helper + * @group Helper */ public function testIsLogEnabled(): void { - $this->assertFalse($this->subject->isLogEnabled()); + static::assertFalse(self::$subject->isLogEnabled()); } /** * @covers Mage_Log_Helper_Data::isLogDisabled() - * @group Mage_Log - * @group Mage_Log_Helper + * @group Helper */ public function testIsLogDisabled(): void { - $this->assertFalse($this->subject->isLogDisabled()); + static::assertFalse(self::$subject->isLogDisabled()); } /** * @covers Mage_Log_Helper_Data::isLogFileExtensionValid() * @dataProvider provideIsLogFileExtensionValid - * @group Mage_Log - * @group Mage_Log_Helper + * @group Helper */ public function testIsLogFileExtensionValid(bool $expectedResult, string $file): void { - $this->assertSame($expectedResult, $this->subject->isLogFileExtensionValid($file)); - } - - public function provideIsLogFileExtensionValid(): Generator - { - yield 'valid' => [ - true, - 'valid.log', - ]; - yield 'invalid' => [ - false, - 'invalid.file', - ]; + static::assertSame($expectedResult, self::$subject->isLogFileExtensionValid($file)); } } diff --git a/tests/unit/Mage/Log/Model/AggregationTest.php b/tests/unit/Mage/Log/Model/AggregationTest.php index 238233acff6..0a72daa4869 100644 --- a/tests/unit/Mage/Log/Model/AggregationTest.php +++ b/tests/unit/Mage/Log/Model/AggregationTest.php @@ -19,25 +19,24 @@ use Mage; use Mage_Log_Model_Aggregation as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; -class AggregationTest extends TestCase +class AggregationTest extends OpenMageTest { - public Subject $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::getModel('log/aggregation'); + parent::setUpBeforeClass(); + self::$subject = Mage::getModel('log/aggregation'); } /** - * @group Mage_Log - * @group Mage_Log_Model + * @group Model * @doesNotPerformAssertions */ public function testRun(): void { - $this->subject->run(); + self::$subject->run(); } } diff --git a/tests/unit/Mage/Log/Model/CronTest.php b/tests/unit/Mage/Log/Model/CronTest.php index fa8433f37fd..9cf15664db4 100644 --- a/tests/unit/Mage/Log/Model/CronTest.php +++ b/tests/unit/Mage/Log/Model/CronTest.php @@ -19,24 +19,23 @@ use Mage; use Mage_Log_Model_Cron as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; -class CronTest extends TestCase +class CronTest extends OpenMageTest { - public Subject $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::getModel('log/cron'); + parent::setUpBeforeClass(); + self::$subject = Mage::getModel('log/cron'); } /** - * @group Mage_Log - * @group Mage_Log_Model + * @group Model */ public function testLogClean(): void { - $this->assertInstanceOf(Subject::class, $this->subject->logClean()); + static::assertInstanceOf(Subject::class, self::$subject->logClean()); } } diff --git a/tests/unit/Mage/Log/Model/CustomerTest.php b/tests/unit/Mage/Log/Model/CustomerTest.php index ffd035ef148..8766a0919ab 100644 --- a/tests/unit/Mage/Log/Model/CustomerTest.php +++ b/tests/unit/Mage/Log/Model/CustomerTest.php @@ -17,33 +17,67 @@ namespace OpenMage\Tests\Unit\Mage\Log\Model; +use Generator; use Mage; +use Mage_Customer_Model_Customer; use Mage_Log_Model_Customer as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; +use OpenMage\Tests\Unit\Traits\DataProvider\Mage\Log\Model\CustomerTrait; -class CustomerTest extends TestCase +class CustomerTest extends OpenMageTest { - public Subject $subject; - - public function setUp(): void - { - Mage::app(); - $this->subject = Mage::getModel('log/customer'); - } + use CustomerTrait; /** - * @group Mage_Log - * @group Mage_Log_Model + * @dataProvider loadByCustomerDataProvider + * @group Model */ - public function testGetLoginAtTimestamp(): void + public function testLoadByCustomer($input, $expectedCustomerId): void { $mock = $this->getMockBuilder(Subject::class) - ->setMethods(['getLoginAt']) + ->onlyMethods(['load']) ->getMock(); - $this->assertNull($mock->getLoginAtTimestamp()); + $mock->expects(static::once()) + ->method('load') + ->with($expectedCustomerId, 'customer_id') + ->willReturnSelf(); + + $result = $mock->loadByCustomer($input); + + static::assertSame($mock, $result); + } + + public function loadByCustomerDataProvider(): Generator + { + $customerMock = $this->getMockBuilder(Mage_Customer_Model_Customer::class) + ->onlyMethods(['getId']) + ->getMock(); + $customerMock->method('getId')->willReturn(456); + + yield 'int' => [ + 123, + 123, + ]; + yield 'model' => [ + $customerMock, + 456, + ]; + } + + /** + * @dataProvider provideGetLoginAtTimestampData + * @group Model + */ + public function testGetLoginAtTimestamp(bool $expectedResult, array $methods): void + { + $mock = $this->getMockWithCalledMethods(Subject::class, $methods); - $mock->method('getLoginAt')->willReturn(true); - $this->assertIsInt($mock->getLoginAtTimestamp()); + static::assertInstanceOf(Subject::class, $mock); + if ($expectedResult) { + static::assertIsInt($mock->getLoginAtTimestamp()); + } else { + static::assertNull($mock->getLoginAtTimestamp()); + } } } diff --git a/tests/unit/Mage/Log/Model/LogTest.php b/tests/unit/Mage/Log/Model/LogTest.php index 0cb17c2820a..df147bcb4ea 100644 --- a/tests/unit/Mage/Log/Model/LogTest.php +++ b/tests/unit/Mage/Log/Model/LogTest.php @@ -19,24 +19,23 @@ use Mage; use Mage_Log_Model_Log as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; -class LogTest extends TestCase +class LogTest extends OpenMageTest { - public Subject $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::getModel('log/log'); + parent::setUpBeforeClass(); + self::$subject = Mage::getModel('log/log'); } /** - * @group Mage_Log - * @group Mage_Log_Model + * @group Model */ public function testClean(): void { - $this->assertInstanceOf(Subject::class, $this->subject->clean()); + static::assertInstanceOf(Subject::class, self::$subject->clean()); } } diff --git a/tests/unit/Mage/Log/Model/VisitorTest.php b/tests/unit/Mage/Log/Model/VisitorTest.php index 528d1f2d543..bcd3874d5e9 100644 --- a/tests/unit/Mage/Log/Model/VisitorTest.php +++ b/tests/unit/Mage/Log/Model/VisitorTest.php @@ -19,70 +19,64 @@ use Mage; use Mage_Log_Model_Visitor as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; -class VisitorTest extends TestCase +class VisitorTest extends OpenMageTest { - public Subject $subject; + private static Subject $subject; public function setUp(): void { - Mage::app(); - $this->subject = Mage::getModel('log/visitor'); + self::$subject = Mage::getModel('log/visitor'); } /** - * @group Mage_Log - * @group Mage_Log_Model + * @group Model * @group runInSeparateProcess * @runInSeparateProcess */ public function testInitServerData(): void { - $this->assertInstanceOf(Subject::class, $this->subject->initServerData()); + static::assertInstanceOf(Subject::class, self::$subject->initServerData()); } /** - * @group Mage_Log - * @group Mage_Log_Model + * @group Model * @group runInSeparateProcess * @runInSeparateProcess */ public function testGetOnlineMinutesInterval(): void { - $this->assertIsInt($this->subject->getOnlineMinutesInterval()); + static::assertIsInt(self::$subject->getOnlineMinutesInterval()); } /** - * @group Mage_Log - * @group Mage_Log_Model + * @group Model * @group runInSeparateProcess * @runInSeparateProcess */ public function testGetUrl(): void { - $this->assertIsString($this->subject->getUrl()); + static::assertIsString(self::$subject->getUrl()); } /** - * @group Mage_Log - * @group Mage_Log_Model + * @group Model * @group runInSeparateProcess * @runInSeparateProcess */ public function testGetFirstVisitAt(): void { - $this->assertIsString($this->subject->getFirstVisitAt()); + static::assertIsString(self::$subject->getFirstVisitAt()); } /** - * @group Mage_Log - * @group Mage_Log_Model + * @group Model * @group runInSeparateProcess * @runInSeparateProcess */ public function testGetLastVisitAt(): void { - $this->assertIsString($this->subject->getLastVisitAt()); + static::assertIsString(self::$subject->getLastVisitAt()); } } diff --git a/tests/unit/Mage/Newsletter/Model/TemplateTest.php b/tests/unit/Mage/Newsletter/Model/TemplateTest.php new file mode 100644 index 00000000000..7a1ef7c047d --- /dev/null +++ b/tests/unit/Mage/Newsletter/Model/TemplateTest.php @@ -0,0 +1,147 @@ +setTemplateCode($methods['setTemplateCode']); + self::$subject->setTemplateSenderEmail($methods['setTemplateSenderEmail']); + self::$subject->setTemplateSenderName($methods['setTemplateSenderName']); + self::$subject->setTemplateSubject($methods['setTemplateSubject']); + self::$subject->setTemplateText($methods['setTemplateText']); + self::$subject->setTemplateType($methods['setTemplateType']); + + if ($expected) { + $this->expectException(Mage_Core_Exception::class); + $this->expectExceptionMessage($expected); + } else { + $this->expectNotToPerformAssertions(); + } + + self::$subject->validate(); + } + + public function validateTemplateDataProvider(): Generator + { + $validData = [ + 'setTemplateCode' => 'Valid Code', + 'setTemplateSenderEmail' => 'test@example.com', + 'setTemplateSenderName' => 'Sender Name', + 'setTemplateSubject' => 'Valid Subject', + 'setTemplateText' => 'Valid Template Text', + 'setTemplateType' => 1, + ]; + + yield 'valid data' => [ + null, + $validData, + ]; + + $data = $validData; + $data['setTemplateCode'] = null; + yield 'missing template code' => [ + 'You must give a non-empty value for field \'template_code\'', + $data, + ]; + + $data = $validData; + $data['setTemplateSenderEmail'] = null; + yield 'missing sender email' => [ + 'You must give a non-empty value for field \'template_sender_email\'', + $data, + ]; + + $data = $validData; + $data['setTemplateSenderEmail'] = 'invalid-email'; + yield 'invalid sender email' => [ + '\'invalid-email\' is not a valid email address in the basic format local-part@hostname', + $data, + ]; + + $data = $validData; + $data['setTemplateSenderName'] = null; + yield 'missing sender name' => [ + 'You must give a non-empty value for field \'template_sender_name\'', + $data, + ]; + + $data = $validData; + $data['setTemplateSubject'] = null; + yield 'missing template subject' => [ + null, + $data, + ]; + + $data = $validData; + $data['setTemplateText'] = null; + yield 'missing template text' => [ + null, + $data, + ]; + + $data = $validData; + $data['setTemplateType'] = null; + yield 'missing template type' => [ + 'You must give a non-empty value for field \'template_type\'', + $data, + ]; + } + + /** + * @group Model + */ + public function testLoadByCode(): void + { + static::assertInstanceOf(Subject::class, self::$subject->loadByCode('test_code')); + } + + /** + * @group Model + */ + public function testIsValidForSend(): void + { + static::assertIsBool(self::$subject->isValidForSend()); + } + + /** + * @group Model + */ + public function testGetProcessedTemplate(): void + { + static::assertIsString(self::$subject->getProcessedTemplate(['key' => 'value'])); + } +} diff --git a/tests/unit/Mage/Page/Block/Html/HeadTest.php b/tests/unit/Mage/Page/Block/Html/HeadTest.php index 96d1cfedba5..88e022592e6 100644 --- a/tests/unit/Mage/Page/Block/Html/HeadTest.php +++ b/tests/unit/Mage/Page/Block/Html/HeadTest.php @@ -19,60 +19,55 @@ use Mage; use Mage_Page_Block_Html_Head as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; -class HeadTest extends TestCase +class HeadTest extends OpenMageTest { - public Subject $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = new Subject(); + parent::setUpBeforeClass(); + self::$subject = new Subject(); } /** - * @group Mage_Page - * @group Mage_Page_Block + * @group Block */ public function testAddCss(): void { - $this->assertInstanceOf(Subject::class, $this->subject->addCss('test')); + static::assertInstanceOf(Subject::class, self::$subject->addCss('test')); } /** - * @group Mage_Page - * @group Mage_Page_Block + * @group Block */ public function testAddJs(): void { - $this->assertInstanceOf(Subject::class, $this->subject->addJs('test')); + static::assertInstanceOf(Subject::class, self::$subject->addJs('test')); } /** - * @group Mage_Page - * @group Mage_Page_Block + * @group Block */ public function testAddCssIe(): void { - $this->assertInstanceOf(Subject::class, $this->subject->addCssIe('test')); + static::assertInstanceOf(Subject::class, self::$subject->addCssIe('test')); } /** - * @group Mage_Page - * @group Mage_Page_Block + * @group Block */ public function testAddJsIe(): void { - $this->assertInstanceOf(Subject::class, $this->subject->addJsIe('test')); + static::assertInstanceOf(Subject::class, self::$subject->addJsIe('test')); } /** - * @group Mage_Page - * @group Mage_Page_Block + * @group Block */ public function testAddLinkRel(): void { - $this->assertInstanceOf(Subject::class, $this->subject->addLinkRel('test', 'ref')); + static::assertInstanceOf(Subject::class, self::$subject->addLinkRel('test', 'ref')); } } diff --git a/tests/unit/Mage/Page/Block/Html/HeaderTest.php b/tests/unit/Mage/Page/Block/Html/HeaderTest.php index 06c0fcae93a..881f181b1e3 100644 --- a/tests/unit/Mage/Page/Block/Html/HeaderTest.php +++ b/tests/unit/Mage/Page/Block/Html/HeaderTest.php @@ -20,60 +20,54 @@ use Mage; use Mage_Core_Model_Security_HtmlEscapedString; use Mage_Page_Block_Html_Header as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; -class HeaderTest extends TestCase +class HeaderTest extends OpenMageTest { - public Subject $subject; + private static Subject $subject; public function setUp(): void { - Mage::app(); - $this->subject = new Subject(); + self::$subject = new Subject(); } /** - * @group Mage_Page - * @group Mage_Page_Block + * @group Block */ // public function testGetIsHomePage(): void // { - // $this->assertIsBool($this->subject->getIsHomePage()); + // $this->assertIsBool(self::$subject->getIsHomePage()); // } /** - * @group Mage_Page - * @group Mage_Page_Block + * @group Block */ public function testSetLogo(): void { - $this->assertInstanceOf(Subject::class, $this->subject->setLogo('src', 'alt')); + static::assertInstanceOf(Subject::class, self::$subject->setLogo('src', 'alt')); } /** - * @group Mage_Page - * @group Mage_Page_Block + * @group Block */ public function testGetLogoSrc(): void { - $this->assertIsString($this->subject->getLogoSrc()); + static::assertIsString(self::$subject->getLogoSrc()); } /** - * @group Mage_Page - * @group Mage_Page_Block + * @group Block */ public function testGetLogoSrcSmall(): void { - $this->assertIsString($this->subject->getLogoSrcSmall()); + static::assertIsString(self::$subject->getLogoSrcSmall()); } /** - * @group Mage_Page - * @group Mage_Page_Block + * @group Block */ public function testGetLogoAlt(): void { - $this->assertInstanceOf(Mage_Core_Model_Security_HtmlEscapedString::class, $this->subject->getLogoAlt()); + static::assertInstanceOf(Mage_Core_Model_Security_HtmlEscapedString::class, self::$subject->getLogoAlt()); } } diff --git a/tests/unit/Mage/Page/Block/HtmlTest.php b/tests/unit/Mage/Page/Block/HtmlTest.php index e3ea305fd4e..8dd7401a9a9 100644 --- a/tests/unit/Mage/Page/Block/HtmlTest.php +++ b/tests/unit/Mage/Page/Block/HtmlTest.php @@ -19,51 +19,47 @@ use Mage; use Mage_Page_Block_Html as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; -class HtmlTest extends TestCase +class HtmlTest extends OpenMageTest { - public Subject $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = new Subject(); + parent::setUpBeforeClass(); + self::$subject = new Subject(); } /** - * @group Mage_Page - * @group Mage_Page_Block + * @group Block */ public function testGetBaseUrl(): void { - $this->assertIsString($this->subject->getBaseUrl()); + static::assertIsString(self::$subject->getBaseUrl()); } /** - * @group Mage_Page - * @group Mage_Page_Block + * @group Block */ public function testGetBaseSecureUrl(): void { - $this->assertIsString($this->subject->getBaseSecureUrl()); + static::assertIsString(self::$subject->getBaseSecureUrl()); } /** - * @group Mage_Page - * @group Mage_Page_Block + * @group Block */ // public function testGetCurrentUrl(): void // { - // $this->assertIsString($this->subject->getCurrentUrl()); + // $this->assertIsString(self::$subject->getCurrentUrl()); // } /** - * @group Mage_Page - * @group Mage_Page_Block + * @group Block */ public function testGetPrintLogoUrl(): void { - $this->assertIsString($this->subject->getPrintLogoUrl()); + static::assertIsString(self::$subject->getPrintLogoUrl()); } } diff --git a/tests/unit/Mage/Page/Block/RedirectTest.php b/tests/unit/Mage/Page/Block/RedirectTest.php index 474121bbda1..08ae089091c 100644 --- a/tests/unit/Mage/Page/Block/RedirectTest.php +++ b/tests/unit/Mage/Page/Block/RedirectTest.php @@ -17,89 +17,80 @@ namespace OpenMage\Tests\Unit\Mage\Page\Block; -use Mage; use Mage_Page_Block_Redirect as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; -class RedirectTest extends TestCase +class RedirectTest extends OpenMageTest { - public Subject $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = new Subject(); + parent::setUpBeforeClass(); + self::$subject = new Subject(); } /** - * @group Mage_Page - * @group Mage_Page_Block + * @group Block */ public function testGetTargetUrl(): void { - $this->assertSame('', $this->subject->getTargetURL()); + static::assertSame('', self::$subject->getTargetURL()); } /** - * @group Mage_Page - * @group Mage_Page_Block + * @group Block */ public function testGetMessage(): void { - $this->assertSame('', $this->subject->getMessage()); + static::assertSame('', self::$subject->getMessage()); } /** - * @group Mage_Page - * @group Mage_Page_Block + * @group Block */ public function testGetRedirectOutput(): void { - $this->assertIsString($this->subject->getRedirectOutput()); + static::assertIsString(self::$subject->getRedirectOutput()); } /** - * @group Mage_Page - * @group Mage_Page_Block + * @group Block */ public function testGetJsRedirect(): void { - $this->assertIsString($this->subject->getJsRedirect()); + static::assertIsString(self::$subject->getJsRedirect()); } /** - * @group Mage_Page - * @group Mage_Page_Block + * @group Block */ public function testGetHtmlFormRedirect(): void { - $this->assertIsString($this->subject->getHtmlFormRedirect()); + static::assertIsString(self::$subject->getHtmlFormRedirect()); } /** - * @group Mage_Page - * @group Mage_Page_Block + * @group Block */ public function testIsHtmlFormRedirect(): void { - $this->assertIsBool($this->subject->isHtmlFormRedirect()); + static::assertIsBool(self::$subject->isHtmlFormRedirect()); } /** - * @group Mage_Page - * @group Mage_Page_Block + * @group Block */ public function testGetFormId(): void { - $this->assertSame('', $this->subject->getFormId()); + static::assertSame('', self::$subject->getFormId()); } /** - * @group Mage_Page - * @group Mage_Page_Block + * @group Block */ public function testGetFormMethod(): void { - $this->assertSame('POST', $this->subject->getFormMethod()); + static::assertSame('POST', self::$subject->getFormMethod()); } } diff --git a/tests/unit/Mage/Page/Block/SwitchTest.php b/tests/unit/Mage/Page/Block/SwitchTest.php index 37c271d5acb..973148e2d6a 100644 --- a/tests/unit/Mage/Page/Block/SwitchTest.php +++ b/tests/unit/Mage/Page/Block/SwitchTest.php @@ -19,96 +19,87 @@ use Mage; use Mage_Page_Block_Switch as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; -class SwitchTest extends TestCase +class SwitchTest extends OpenMageTest { - public Subject $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = new Subject(); + parent::setUpBeforeClass(); + self::$subject = new Subject(); } /** - * @group Mage_Page - * @group Mage_Page_Block + * @group Block */ public function testGetCurrentWebsiteId(): void { - $this->assertIsInt($this->subject->getCurrentWebsiteId()); + static::assertIsInt(self::$subject->getCurrentWebsiteId()); } /** - * @group Mage_Page - * @group Mage_Page_Block + * @group Block */ public function testGetCurrentGroupId(): void { - $this->assertIsInt($this->subject->getCurrentGroupId()); + static::assertIsInt(self::$subject->getCurrentGroupId()); } /** - * @group Mage_Page - * @group Mage_Page_Block + * @group Block */ public function testGetCurrentStoreId(): void { - $this->assertIsInt($this->subject->getCurrentStoreId()); + static::assertIsInt(self::$subject->getCurrentStoreId()); } /** - * @group Mage_Page - * @group Mage_Page_Block + * @group Block */ public function testGetCurrentStoreCode(): void { - $this->assertIsString($this->subject->getCurrentStoreCode()); + static::assertIsString(self::$subject->getCurrentStoreCode()); } /** - * @group Mage_Page - * @group Mage_Page_Block + * @group Block */ public function testGetRawGroups(): void { - $this->assertIsArray($this->subject->getRawGroups()); + static::assertIsArray(self::$subject->getRawGroups()); } /** - * @group Mage_Page - * @group Mage_Page_Block + * @group Block */ // public function testGetRawStores(): void // { - // $this->assertIsArray($this->subject->getRawStores()); + // $this->assertIsArray(self::$subject->getRawStores()); // } /** - * @group Mage_Page - * @group Mage_Page_Block + * @group Block */ // public function testGetGroups(): void // { - // $this->assertIsArray($this->subject->getGroups()); + // $this->assertIsArray(self::$subject->getGroups()); // } /** - * @group Mage_Page - * @group Mage_Page_Block + * @group Block */ // public function testGetStores(): void // { - // $this->assertIsArray($this->subject->getStores()); + // $this->assertIsArray(self::$subject->getStores()); // } /** - * @group Mage_Page - * @group Mage_Page_Block + * @group Block */ public function testIsStoreInUrl(): void { - $this->assertIsBool($this->subject->isStoreInUrl()); + static::assertIsBool(self::$subject->isStoreInUrl()); } } diff --git a/tests/unit/Mage/Page/Helper/LayoutTest.php b/tests/unit/Mage/Page/Helper/LayoutTest.php index 454d39b2b10..b57035f2e69 100644 --- a/tests/unit/Mage/Page/Helper/LayoutTest.php +++ b/tests/unit/Mage/Page/Helper/LayoutTest.php @@ -19,25 +19,24 @@ use Mage; use Mage_Page_Helper_Layout as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; -class LayoutTest extends TestCase +class LayoutTest extends OpenMageTest { - public Subject $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::helper('page/layout'); + parent::setUpBeforeClass(); + self::$subject = Mage::helper('page/layout'); } /** * @covers Mage_Core_Helper_Abstract::isModuleEnabled() - * @group Mage_Page - * @group Mage_Page_Helper + * @group Helper */ public function testApplyTemplate(): void { - $this->assertTrue($this->subject->isModuleEnabled()); + static::assertTrue(self::$subject->isModuleEnabled()); } } diff --git a/tests/unit/Mage/Page/Model/ConfigTest.php b/tests/unit/Mage/Page/Model/ConfigTest.php index 3405e1fd507..8126a9f3441 100644 --- a/tests/unit/Mage/Page/Model/ConfigTest.php +++ b/tests/unit/Mage/Page/Model/ConfigTest.php @@ -19,24 +19,23 @@ use Mage; use Mage_Page_Model_Config as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; -class ConfigTest extends TestCase +class ConfigTest extends OpenMageTest { - public Subject $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::getModel('page/config'); + parent::setUpBeforeClass(); + self::$subject = Mage::getModel('page/config'); } /** - * @group Mage_Page - * @group Mage_Page_Model + * @group Model */ public function testGetPageLayoutHandles(): void { - $this->assertIsArray($this->subject->getPageLayoutHandles()); + static::assertIsArray(self::$subject->getPageLayoutHandles()); } } diff --git a/tests/unit/Mage/Page/Model/Source/LayoutTest.php b/tests/unit/Mage/Page/Model/Source/LayoutTest.php index cb244aae8e0..02310888646 100644 --- a/tests/unit/Mage/Page/Model/Source/LayoutTest.php +++ b/tests/unit/Mage/Page/Model/Source/LayoutTest.php @@ -19,24 +19,23 @@ use Mage; use Mage_Page_Model_Source_Layout as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; -class LayoutTest extends TestCase +class LayoutTest extends OpenMageTest { - public Subject $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::getModel('page/source_layout'); + parent::setUpBeforeClass(); + self::$subject = Mage::getModel('page/source_layout'); } /** - * @group Mage_Page - * @group Mage_Page_Model + * @group Model */ public function testToOptionArray(): void { - $this->assertIsArray($this->subject->toOptionArray(true)); + static::assertIsArray(self::$subject->toOptionArray(true)); } } diff --git a/tests/unit/Mage/Reports/Helper/DataTest.php b/tests/unit/Mage/Reports/Helper/DataTest.php index 6407fab46bb..2848ba24444 100644 --- a/tests/unit/Mage/Reports/Helper/DataTest.php +++ b/tests/unit/Mage/Reports/Helper/DataTest.php @@ -1,16 +1,9 @@ subject = Mage::helper('reports/data'); + parent::setUpBeforeClass(); + self::$subject = Mage::helper('reports/data'); } /** * @covers Mage_Core_Helper_Abstract::isModuleEnabled() - * @group Mage_Reports - * @group Mage_Reports_Helper + * @group Helper */ public function testIsModuleEnabled(): void { - $this->assertTrue($this->subject->isModuleEnabled()); + static::assertTrue(self::$subject->isModuleEnabled()); } /** * @covers Mage_Reports_Helper_Data::isReportsEnabled() - * @group Mage_Reports - * @group Mage_Reports_Helper + * @group Helper */ public function testIsReportsEnabled(): void { - $this->assertTrue($this->subject->isReportsEnabled()); + static::assertTrue(self::$subject->isReportsEnabled()); } /** * @covers Mage_Reports_Helper_Data::getIntervals() * @dataProvider provideReportsDateIntervals - * @group Mage_Reports - * @group Mage_Reports_Helper + * @group Helper */ - public function testGetIntervals($expectedResult, $from, $to, $period): void + public function testGetIntervals(int|string $expectedResult, string $from, string $to, string $period): void { if (PHP_VERSION_ID >= 80300 && version_compare(InstalledVersions::getPrettyVersion('shardj/zf1-future'), '1.24.2', '<=')) { - $this->markTestSkipped('see https://github.com/Shardj/zf1-future/pull/465'); + static::markTestSkipped('see https://github.com/Shardj/zf1-future/pull/465'); } try { - $this->assertCount($expectedResult, $this->subject->getIntervals($from, $to, $period)); + static::assertCount($expectedResult, self::$subject->getIntervals($from, $to, $period)); } catch (Zend_Date_Exception $exception) { - $this->assertSame("No date part in '' found.", $exception->getMessage()); + static::assertSame("No date part in '' found.", $exception->getMessage()); } } /** * @covers Mage_Reports_Helper_Data::prepareIntervalsCollection() * @dataProvider provideReportsDateIntervals - * @doesNotPerformAssertions - * @group Mage_Reports - * @group Mage_Reports_Helper + * @group Helper */ - public function testPrepareIntervalsCollection($expectedResult, $from, $to, $period): void + public function testPrepareIntervalsCollection(int|string $expectedResult, string $from, string $to, string $period): void { - $this->markTestIncomplete('Test needs to be reviewed.'); - // @phpstan-ignore-next-line - $this->subject->prepareIntervalsCollection(new Varien_Data_Collection(), $from, $to, $period); + $collection = new Varien_Data_Collection(); + + try { + self::$subject->prepareIntervalsCollection($collection, $from, $to, $period); + static::assertGreaterThanOrEqual(0, $collection->count()); + } catch (\Zend_Date_Exception $exception) { + static::assertSame($expectedResult, $exception->getMessage()); + } } } diff --git a/tests/unit/Mage/Reports/Model/Resource/Report/CollectionTest.php b/tests/unit/Mage/Reports/Model/Resource/Report/CollectionTest.php index 2d57109d708..76e7d45b44d 100644 --- a/tests/unit/Mage/Reports/Model/Resource/Report/CollectionTest.php +++ b/tests/unit/Mage/Reports/Model/Resource/Report/CollectionTest.php @@ -1,16 +1,9 @@ subject = Mage::getModel('reports/resource_report_collection'); + self::$subject = Mage::getModel('reports/resource_report_collection'); } /** * @covers Mage_Reports_Model_Resource_Report_Collection::setPeriod() - * @group Mage_Reports - * @group Mage_Reports_Model + * @group Model */ public function testSetPeriod(): void { - $this->assertInstanceOf(Subject::class, $this->subject->setPeriod(1)); + static::assertInstanceOf(Subject::class, self::$subject->setPeriod('1m')); } /** * @covers Mage_Reports_Model_Resource_Report_Collection::setInterval() - * @group Mage_Reports - * @group Mage_Reports_Model + * @group Model */ public function testSetIntervals(): void { - $this->assertInstanceOf(Subject::class, $this->subject->setInterval(new Zend_Date(), new Zend_Date())); + static::assertInstanceOf(Subject::class, self::$subject->setInterval(new Zend_Date(), new Zend_Date())); } /** * @dataProvider provideReportsDateIntervals - * @group Mage_Reports - * @group Mage_Reports_Model + * @group Model */ - public function testGetIntervals($expectedResult, $from, $to, $period): void + public function testGetIntervals(int|string $expectedResult, string|Zend_Date $from, string|Zend_Date $to, string $period): void { - $this->subject->setInterval($from, $to); - $this->subject->setPeriod($period); + self::$subject->setInterval($from, $to); + self::$subject->setPeriod($period); try { - $this->assertIsArray($this->subject->getIntervals()); + static::assertIsArray(self::$subject->getIntervals()); } catch (Zend_Date_Exception $exception) { - $this->assertSame("No date part in '' found.", $exception->getMessage()); + static::assertSame("No date part in '' found.", $exception->getMessage()); } } /** * @covers Mage_Reports_Model_Resource_Report_Collection::getPeriods() - * @group Mage_Reports - * @group Mage_Reports_Model + * @group Model */ public function testGetPeriods(): void { - $this->assertIsArray($this->subject->getPeriods()); + static::assertIsArray(self::$subject->getPeriods()); } /** * @covers Mage_Reports_Model_Resource_Report_Collection::getStoreIds() * @covers Mage_Reports_Model_Resource_Report_Collection::setStoreIds() - * @group Mage_Reports - * @group Mage_Reports_Model + * @group Model */ public function testStoreIds(): void { - $this->subject->setStoreIds([]); - $this->assertSame([], $this->subject->getStoreIds()); + self::$subject->setStoreIds([]); + static::assertSame([], self::$subject->getStoreIds()); } /** * @covers Mage_Reports_Model_Resource_Report_Collection::getSize() - * @group Mage_Reports - * @group Mage_Reports_Model + * @group Model */ public function testGetSize(): void { - $this->assertIsInt($this->subject->getSize()); + static::assertIsInt(self::$subject->getSize()); } /** * @covers Mage_Reports_Model_Resource_Report_Collection::setPageSize() - * @group Mage_Reports - * @group Mage_Reports_Model + * @group Model */ public function testSetPageSize(): void { - $this->assertInstanceOf(Subject::class, $this->subject->setPageSize(1)); + static::assertInstanceOf(Subject::class, self::$subject->setPageSize(1)); } /** * @covers Mage_Reports_Model_Resource_Report_Collection::getPageSize() - * @group Mage_Reports - * @group Mage_Reports_Model + * @group Model */ public function testGetPageSize(): void { - $this->assertNull($this->subject->getPageSize()); + static::assertNull(self::$subject->getPageSize()); } /** - * @group Mage_Reports - * @group Mage_Reports_Model + * @group Model */ - public function testInitReport($modelClass = ''): void + public function testInitReport(string $modelClass = ''): void { - $this->assertInstanceOf(Subject::class, $this->subject->initReport($modelClass)); + static::assertInstanceOf(Subject::class, self::$subject->initReport($modelClass)); } /** - * @group Mage_Reports - * @group Mage_Reports_Model + * @group Model */ public function testGetReportFull(): void { - $this->markTestIncomplete(self::SKIP_INCOMPLETE_MESSAGE); - # $this->assertInstanceOf(Mage_Reports_Model_Report::class, $this->subject->getReportFull(1, 1)); + static::markTestSkipped(self::SKIP_INCOMPLETE_MESSAGE); + /** @phpstan-ignore deadCode.unreachable */ + static::assertInstanceOf(Mage_Reports_Model_Report::class, self::$subject->getReportFull(1, 1)); } /** - * @group Mage_Reports - * @group Mage_Reports_Model + * @group Model */ public function testGetReport(): void { - $this->markTestIncomplete(self::SKIP_INCOMPLETE_MESSAGE); - # $this->assertInstanceOf(Mage_Reports_Model_Report::class, $this->subject->getReport(1, 1)); + static::markTestSkipped(self::SKIP_INCOMPLETE_MESSAGE); + /** @phpstan-ignore deadCode.unreachable */ + static::assertInstanceOf(Mage_Reports_Model_Report::class, self::$subject->getReport(1, 1)); } /** - * @group Mage_Reports - * @group Mage_Reports_Model + * @group Model */ public function testTimeShift(): void { - $this->markTestIncomplete(self::SKIP_INCOMPLETE_MESSAGE); - # $this->assertSame($this->subject->timeShift('')); + static::markTestSkipped(self::SKIP_INCOMPLETE_MESSAGE); + /** @phpstan-ignore deadCode.unreachable */ + static::assertSame(self::$subject->timeShift('')); } } diff --git a/tests/unit/Mage/Review/Model/ReviewTest.php b/tests/unit/Mage/Review/Model/ReviewTest.php new file mode 100644 index 00000000000..30eefd82914 --- /dev/null +++ b/tests/unit/Mage/Review/Model/ReviewTest.php @@ -0,0 +1,41 @@ +getMockWithCalledMethods(Subject::class, $methods); + + static::assertInstanceOf(Subject::class, $mock); + static::assertSame($expectedResult, $mock->validate()); + } +} diff --git a/tests/unit/Mage/Rule/Model/AbstractTest.php b/tests/unit/Mage/Rule/Model/AbstractTest.php index e2adf84cd3b..137a38ed2c1 100644 --- a/tests/unit/Mage/Rule/Model/AbstractTest.php +++ b/tests/unit/Mage/Rule/Model/AbstractTest.php @@ -1,16 +1,9 @@ subject = $this->getMockForAbstractClass(Subject::class); + self::$subject = $this->getMockForAbstractClass(Subject::class); } /** - * @group Mage_Rule - * @group Mage_Rule_Model + * @group Model */ public function testGetProductFlatSelect(): void { try { - $this->assertInstanceOf(Varien_Db_Select::class, $this->subject->getProductFlatSelect(0)); + static::assertInstanceOf(Varien_Db_Select::class, self::$subject->getProductFlatSelect(0)); } catch (Mage_Core_Exception $exception) { - $this->assertSame('Resource is not set.', $exception->getMessage()); + static::assertSame('Resource is not set.', $exception->getMessage()); } } /** * @dataProvider provideBool - * @group Mage_Rule - * @group Mage_Rule_Model + * @group Model */ public function testGetConditions(bool $empty): void { if (!$empty) { - $this->subject->setConditions(new Mage_Rule_Model_Condition_Combine()); + self::$subject->setConditions(new Mage_Rule_Model_Condition_Combine()); } try { - $this->assertInstanceOf(Mage_Rule_Model_Condition_Combine::class, $this->subject->getConditions()); + static::assertInstanceOf(Mage_Rule_Model_Condition_Combine::class, self::$subject->getConditions()); } catch (Error $error) { - $this->assertSame(self::CALL_TO_A_MEMBER_FUNCTION_SET_RULE_ON_NULL, $error->getMessage()); + static::assertSame(self::CALL_TO_A_MEMBER_FUNCTION_SET_RULE_ON_NULL, $error->getMessage()); } } /** * @dataProvider provideBool - * @group Mage_Rule - * @group Mage_Rule_Model + * @group Model */ public function testGetActions(bool $empty): void { if (!$empty) { - $this->subject->setActions(new Mage_Rule_Model_Action_Collection()); + self::$subject->setActions(new Mage_Rule_Model_Action_Collection()); } try { - $this->assertInstanceOf(Mage_Rule_Model_Action_Collection::class, $this->subject->getActions()); + static::assertInstanceOf(Mage_Rule_Model_Action_Collection::class, self::$subject->getActions()); } catch (Error $error) { - $this->assertSame(self::CALL_TO_A_MEMBER_FUNCTION_SET_RULE_ON_NULL, $error->getMessage()); + static::assertSame(self::CALL_TO_A_MEMBER_FUNCTION_SET_RULE_ON_NULL, $error->getMessage()); } } /** - * @group Mage_Rule - * @group Mage_Rule_Model + * @group Model */ public function testGetForm(): void { - $this->assertInstanceOf(Varien_Data_Form::class, $this->subject->getForm()); + static::assertInstanceOf(Varien_Data_Form::class, self::$subject->getForm()); } /** - * @group Mage_Rule - * @group Mage_Rule_Model + * @group Model */ public function testLoadPost(array $data = []): void { - $this->assertInstanceOf(Subject::class, $this->subject->loadPost($data)); + static::assertInstanceOf(Subject::class, self::$subject->loadPost($data)); } /** * @covers Mage_Rule_Model_Abstract::validate() * @dataProvider provideValidateData - * @group Mage_Rule - * @group Mage_Rule_Model + * @group Model */ - public function testValidate($expectedResul, ?array $data = null): void + public function testValidate(bool|array $expectedResul, ?array $data = null): void { $object = new Varien_Object($data); try { - $this->assertSame($expectedResul, $this->subject->validate($object)); + static::assertSame($expectedResul, self::$subject->validate($object)); } catch (Error $error) { - $this->assertSame(self::CALL_TO_A_MEMBER_FUNCTION_SET_RULE_ON_NULL, $error->getMessage()); + static::assertSame(self::CALL_TO_A_MEMBER_FUNCTION_SET_RULE_ON_NULL, $error->getMessage()); } } /** * @dataProvider provideValidateData - * @group Mage_Rule - * @group Mage_Rule_Model + * @group Model */ - public function testValidateData($expectedResul, ?array $data = null): void + public function testValidateData(bool|array $expectedResul, ?array $data = null): void { if (PHP_VERSION_ID >= 80300 && version_compare(InstalledVersions::getPrettyVersion('shardj/zf1-future'), '1.24.2', '<=')) { - $this->markTestSkipped('see https://github.com/Shardj/zf1-future/pull/465'); + static::markTestSkipped('see https://github.com/Shardj/zf1-future/pull/465'); } $object = new Varien_Object($data); - $this->assertSame($expectedResul, $this->subject->validateData($object)); + static::assertSame($expectedResul, self::$subject->validateData($object)); } /** * @covers Mage_Rule_Model_Abstract::isDeleteable() - * @group Mage_Rule - * @group Mage_Rule_Model + * @group Model */ public function testIsDeleteable(): void { - $this->assertIsBool($this->subject->isDeleteable()); + static::assertIsBool(self::$subject->isDeleteable()); } /** * @covers Mage_Rule_Model_Abstract::setIsDeleteable() * @dataProvider provideBool - * @group Mage_Rule - * @group Mage_Rule_Model + * @group Model */ public function testSetIsDeleteable(bool $value): void { - $this->assertInstanceOf(Subject::class, $this->subject->setIsDeleteable($value)); + static::assertInstanceOf(Subject::class, self::$subject->setIsDeleteable($value)); } /** * @covers Mage_Rule_Model_Abstract::isReadonly() - * @group Mage_Rule - * @group Mage_Rule_Model + * @group Model */ public function testIsReadonly(): void { - $this->assertIsBool($this->subject->isReadonly()); + static::assertIsBool(self::$subject->isReadonly()); } /** * @covers Mage_Rule_Model_Abstract::setIsReadonly() * @dataProvider provideBool - * @group Mage_Rule - * @group Mage_Rule_Model + * @group Model */ public function testSetIsReadonly(bool $value): void { - $this->assertInstanceOf(Subject::class, $this->subject->setIsReadonly($value)); + static::assertInstanceOf(Subject::class, self::$subject->setIsReadonly($value)); } /** - * @group Mage_Rule - * @group Mage_Rule_Model + * @group Model */ public function testGetWebsiteIds(): void { try { - $this->assertIsArray($this->subject->getWebsiteIds()); + static::assertIsArray(self::$subject->getWebsiteIds()); } catch (Mage_Core_Exception $exception) { - $this->assertSame('Resource is not set.', $exception->getMessage()); + static::assertSame('Resource is not set.', $exception->getMessage()); } } /** * @covers Mage_Rule_Model_Abstract::asString() - * @group Mage_Rule - * @group Mage_Rule_Model + * @group Model */ public function testAsString(): void { - $this->assertSame('', $this->subject->asString()); + static::assertSame('', self::$subject->asString()); } /** * @covers Mage_Rule_Model_Abstract::asHtml() - * @group Mage_Rule - * @group Mage_Rule_Model + * @group Model */ public function testAsHtml(): void { - $this->assertSame('', $this->subject->asHtml()); + static::assertSame('', self::$subject->asHtml()); } /** * @covers Mage_Rule_Model_Abstract::asArray() - * @group Mage_Rule - * @group Mage_Rule_Model + * @group Model */ public function testAsArray(): void { - $this->assertSame([], $this->subject->asArray()); + static::assertSame([], self::$subject->asArray()); } } diff --git a/tests/unit/Mage/Rule/Model/EnvironmentTest.php b/tests/unit/Mage/Rule/Model/EnvironmentTest.php index 8fdae735880..04a33b16fe3 100644 --- a/tests/unit/Mage/Rule/Model/EnvironmentTest.php +++ b/tests/unit/Mage/Rule/Model/EnvironmentTest.php @@ -1,16 +1,9 @@ subject = Mage::getModel('rule/environment'); + parent::setUpBeforeClass(); + self::$subject = Mage::getModel('rule/environment'); } /** * @covers Mage_Rule_Model_Environment::collect() - * @group Mage_Rule - * @group Mage_Rule_Model + * @group Model */ public function testGetConditionsInstance(): void { - $this->assertInstanceOf(Subject::class, $this->subject->collect()); + static::assertInstanceOf(Subject::class, self::$subject->collect()); } } diff --git a/tests/unit/Mage/Rule/Model/RuleTest.php b/tests/unit/Mage/Rule/Model/RuleTest.php index 636199a4bbc..641a903fa9d 100644 --- a/tests/unit/Mage/Rule/Model/RuleTest.php +++ b/tests/unit/Mage/Rule/Model/RuleTest.php @@ -1,16 +1,9 @@ subject = Mage::getModel('rule/rule'); + parent::setUpBeforeClass(); + self::$subject = Mage::getModel('rule/rule'); } /** * @covers Mage_Rule_Model_Rule::getConditionsInstance() - * @group Mage_Rule - * @group Mage_Rule_Model + * @group Model */ public function testGetConditionsInstance(): void { - $this->assertInstanceOf(Mage_Rule_Model_Condition_Combine::class, $this->subject->getConditionsInstance()); + static::assertInstanceOf(Mage_Rule_Model_Condition_Combine::class, self::$subject->getConditionsInstance()); } /** * @covers Mage_Rule_Model_Rule::getActionsInstance() - * @group Mage_Rule - * @group Mage_Rule_Model + * @group Model */ public function testGetActionsInstance(): void { - $this->assertInstanceOf(Mage_Rule_Model_Action_Collection::class, $this->subject->getActionsInstance()); + static::assertInstanceOf(Mage_Rule_Model_Action_Collection::class, self::$subject->getActionsInstance()); } } diff --git a/tests/unit/Mage/Sales/Block/Order/Item/Renderer/DefaultTest.php b/tests/unit/Mage/Sales/Block/Order/Item/Renderer/DefaultTest.php index ee0d091914f..b1542c4031c 100644 --- a/tests/unit/Mage/Sales/Block/Order/Item/Renderer/DefaultTest.php +++ b/tests/unit/Mage/Sales/Block/Order/Item/Renderer/DefaultTest.php @@ -17,28 +17,26 @@ namespace OpenMage\Tests\Unit\Mage\Sales\Block\Order\Item\Renderer; -use Mage; use Mage_Sales_Block_Order_Item_Renderer_Default as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; use Varien_Object; -class DefaultTest extends TestCase +class DefaultTest extends OpenMageTest { - public Subject $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = new Subject(); + parent::setUpBeforeClass(); + self::$subject = new Subject(); } /** * @covers Mage_Sales_Block_Order_Item_Renderer_Default::setItem() - * @group Mage_Sales - * @group Mage_Sales_Block + * @group Block */ public function testSetItem(): void { - $this->assertInstanceOf(Subject::class, $this->subject->setItem(new Varien_Object())); + static::assertInstanceOf(Subject::class, self::$subject->setItem(new Varien_Object())); } } diff --git a/tests/unit/Mage/Sitemap/Model/SitemapTest.php b/tests/unit/Mage/Sitemap/Model/SitemapTest.php index b2b23d2df97..c48b032549f 100644 --- a/tests/unit/Mage/Sitemap/Model/SitemapTest.php +++ b/tests/unit/Mage/Sitemap/Model/SitemapTest.php @@ -17,56 +17,45 @@ namespace OpenMage\Tests\Unit\Mage\Sitemap\Model; -use Mage; use Mage_Sitemap_Model_Sitemap as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; +use OpenMage\Tests\Unit\Traits\DataProvider\Mage\Sitemap\SitemapTrait; +use Throwable; -class SitemapTest extends TestCase +class SitemapTest extends OpenMageTest { - public const SITEMAP_FILE = '???phpunit.sitemap.xml'; - - public Subject $subject; - - public function setUp(): void - { - Mage::app(); - $this->subject = Mage::getModel('sitemap/sitemap'); - } + use SitemapTrait; /** - * @group Mage_Sitemap - * @group Mage_Sitemap_Model + * @dataProvider provideGetPreparedFilenameData + * @group Model */ - public function testGetPreparedFilename(): void + public function testGetPreparedFilename(array $methods): void { - $mock = $this->getMockBuilder(Subject::class) - ->setMethods(['getSitemapFilename']) - ->getMock(); + $mock = $this->getMockWithCalledMethods(Subject::class, $methods); - $mock->method('getSitemapFilename')->willReturn('text.xml'); - $this->assertIsString($mock->getPreparedFilename()); + static::assertInstanceOf(Subject::class, $mock); + static::assertIsString($mock->getPreparedFilename()); } /** - * @group Mage_Sitemap - * @group Mage_Sitemap - * @group Mage_Sitemap_Model - * @group Mage_Sitemap_Model - * @todo test content of xml + * @dataProvider provideGenerateXmlData + * @group Model + * @throws Throwable * @todo test validation + * @todo test content of xml */ - public function testGenerateXml(): void + public function testGenerateXml(array $methods): void { - $mock = $this->getMockBuilder(Subject::class) - ->setMethods(['isDeleted']) # do not save to DB - ->setMethods(['getSitemapFilename']) - ->getMock(); + $mock = $this->getMockWithCalledMethods(Subject::class, $methods); + static::assertInstanceOf(Subject::class, $mock); - $mock->method('isDeleted')->willReturn(true); - $mock->method('getSitemapFilename')->willReturn(self::SITEMAP_FILE); $result = $mock->generateXml(); - $this->assertInstanceOf(Subject::class, $result); - $this->assertFileExists(self::SITEMAP_FILE); - unlink(self::SITEMAP_FILE); + static::assertInstanceOf(Subject::class, $result); + + /** @var string $file */ + $file = $methods['getSitemapFilename']; + static::assertFileExists($file); + unlink($file); } } diff --git a/tests/unit/Mage/Tax/Helper/DataTest.php b/tests/unit/Mage/Tax/Helper/DataTest.php index c09fa730d57..85db714b45e 100644 --- a/tests/unit/Mage/Tax/Helper/DataTest.php +++ b/tests/unit/Mage/Tax/Helper/DataTest.php @@ -17,393 +17,340 @@ namespace OpenMage\Tests\Unit\Mage\Tax\Helper; -use Generator; use Mage; use Mage_Tax_Helper_Data as Subject; use Mage_Tax_Model_Calculation; use Mage_Tax_Model_Config; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; +use OpenMage\Tests\Unit\Traits\DataProvider\Mage\Tax\TaxTrait; -class DataTest extends TestCase +class DataTest extends OpenMageTest { - public Subject $subject; + use TaxTrait; + private static Subject $subject; + + public const SKIP_INCOMPLETE = 'incomplete'; public const SKIP_WITH_LOCAL_DATA = 'Constant DATA_MAY_CHANGED is defined.'; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::helper('tax/data'); + parent::setUpBeforeClass(); + self::$subject = Mage::helper('tax/data'); } /** * @covers Mage_Tax_Helper_Data::getPostCodeSubStringLength() - * @group Mage_Tax - * @group Mage_Tax_Helper + * @group Helper */ public function testGetPostCodeSubStringLength(): void { - $this->assertSame(10, $this->subject->getPostCodeSubStringLength()); + static::assertSame(10, self::$subject->getPostCodeSubStringLength()); } /** * @covers Mage_Tax_Helper_Data::getConfig() - * @group Mage_Tax - * @group Mage_Tax_Helper + * @group Helper */ public function testGetConfig(): void { - $this->assertInstanceOf(Mage_Tax_Model_Config::class, $this->subject->getConfig()); + static::assertInstanceOf(Mage_Tax_Model_Config::class, self::$subject->getConfig()); } /** * @covers Mage_Tax_Helper_Data::getCalculator() - * @group Mage_Tax - * @group Mage_Tax_Helper + * @group Helper */ public function testGetCalculator(): void { - $this->assertInstanceOf(Mage_Tax_Model_Calculation::class, $this->subject->getCalculator()); + static::assertInstanceOf(Mage_Tax_Model_Calculation::class, self::$subject->getCalculator()); } /** - * @group Mage_Tax - * @group Mage_Tax_Helper + * @group Helper * @doesNotPerformAssertions */ public function testGetProductPrice(): void { - #$this->assertSame('', $this->subject->getProductPrice()); - $this->markTestIncomplete(); + static::markTestSkipped(self::SKIP_INCOMPLETE); + /** @phpstan-ignore deadCode.unreachable */ + static::assertSame('', self::$subject->getProductPrice()); } /** - * @group Mage_Tax - * @group Mage_Tax_Helper + * @group Helper */ public function testPriceIncludesTax(): void { - $this->assertFalse($this->subject->priceIncludesTax()); + static::assertFalse(self::$subject->priceIncludesTax()); } /** * @covers Mage_Tax_Helper_Data::applyTaxAfterDiscount() - * @group Mage_Tax - * @group Mage_Tax_Helper + * @group Helper */ public function testApplyTaxAfterDiscount(): void { - $this->assertTrue($this->subject->applyTaxAfterDiscount()); + static::assertTrue(self::$subject->applyTaxAfterDiscount()); } /** * @covers Mage_Tax_Helper_Data::getIncExcText() * @dataProvider provideGetIncExcText - * @group Mage_Tax - * @group Mage_Tax_Helper + * @group Helper */ public function testGetIncExcText(string $expectedResult, bool $flag): void { - $this->assertStringContainsString($expectedResult, $this->subject->getIncExcText($flag)); - } - - public function provideGetIncExcText(): Generator - { - yield 'true' => [ - 'Incl. Tax', - true, - ]; - yield 'false' => [ - 'Excl. Tax', - false, - ]; + static::assertStringContainsString($expectedResult, self::$subject->getIncExcText($flag)); } /** * @covers Mage_Tax_Helper_Data::getPriceDisplayType() - * @group Mage_Tax - * @group Mage_Tax_Helper + * @group Helper */ public function testGetPriceDisplayType(): void { - $this->assertSame(1, $this->subject->getPriceDisplayType()); + static::assertSame(1, self::$subject->getPriceDisplayType()); } /** - * @group Mage_Tax - * @group Mage_Tax_Helper + * @group Helper * @doesNotPerformAssertions */ public function testNeedPriceConversion(): void { - #$this->assertSame(1, $this->subject->needPriceConversion()); - $this->markTestIncomplete(); + static::markTestSkipped(self::SKIP_INCOMPLETE); + /** @phpstan-ignore deadCode.unreachable */ + static::assertSame(1, self::$subject->needPriceConversion()); } /** - * @group Mage_Tax - * @group Mage_Tax_Helper + * @group Helper * @group runInSeparateProcess * @runInSeparateProcess * @doesNotPerformAssertions */ public function testGetPriceFormat(): void { - #$this->assertSame('', $this->subject->getPriceFormat()); - $this->markTestIncomplete(); + static::markTestSkipped(self::SKIP_INCOMPLETE); + /** @phpstan-ignore deadCode.unreachable */ + static::assertSame('', self::$subject->getPriceFormat()); } /** - * @group Mage_Tax - * @group Mage_Tax_Helper - * @group UsesSampleDataFlag + * @group Helper */ public function testGetTaxRatesByProductClass(): void { if (defined('DATA_MAY_CHANGED')) { - $this->markTestSkipped(self::SKIP_WITH_LOCAL_DATA); + static::markTestSkipped(self::SKIP_WITH_LOCAL_DATA); } - $this->assertSame('{"value_2":8.25,"value_4":0}', $this->subject->getTaxRatesByProductClass()); + static::assertSame('{"value_2":8.25,"value_4":0}', self::$subject->getTaxRatesByProductClass()); } /** - * @group Mage_Tax - * @group Mage_Tax_Helper - * @group UsesSampleDataFlag + * @group Helper */ public function testGetAllRatesByProductClass(): void { if (defined('DATA_MAY_CHANGED')) { - $this->markTestSkipped(self::SKIP_WITH_LOCAL_DATA); + static::markTestSkipped(self::SKIP_WITH_LOCAL_DATA); } - $this->assertSame('{"value_2":8.25,"value_4":0}', $this->subject->getAllRatesByProductClass()); + static::assertSame('{"value_2":8.25,"value_4":0}', self::$subject->getAllRatesByProductClass()); } /** - * @group Mage_Tax - * @group Mage_Tax_Helper + * @group Helper * @doesNotPerformAssertions */ public function testGetPrice(): void { - #$this->assertFalse($this->subject->getPrice()); - $this->markTestIncomplete(); + static::markTestSkipped(self::SKIP_INCOMPLETE); + /** @phpstan-ignore deadCode.unreachable */ + static::assertFalse(self::$subject->getPrice()); } /** * @covers Mage_Tax_Helper_Data::displayPriceIncludingTax() - * @group Mage_Tax - * @group Mage_Tax_Helper + * @group Helper */ public function testDisplayPriceIncludingTax(): void { - $this->assertFalse($this->subject->displayPriceIncludingTax()); + static::assertFalse(self::$subject->displayPriceIncludingTax()); } /** * @covers Mage_Tax_Helper_Data::displayPriceExcludingTax() - * @group Mage_Tax - * @group Mage_Tax_Helper + * @group Helper */ public function testDisplayPriceExcludingTax(): void { - $this->assertTrue($this->subject->displayPriceExcludingTax()); + static::assertTrue(self::$subject->displayPriceExcludingTax()); } /** * @covers Mage_Tax_Helper_Data::displayBothPrices() - * @group Mage_Tax - * @group Mage_Tax_Helper + * @group Helper */ public function testDisplayBothPrices(): void { - $this->assertFalse($this->subject->displayBothPrices()); + static::assertFalse(self::$subject->displayBothPrices()); } /** * @dataProvider provideGetIncExcTaxLabel - * @group Mage_Tax - * @group Mage_Tax_Helper + * @group Helper */ - public function testGetIncExcTaxLabel($expectedResult, bool $flag): void - { - $this->assertStringContainsString($expectedResult, $this->subject->getIncExcTaxLabel($flag)); - } - - public function provideGetIncExcTaxLabel(): Generator + public function testGetIncExcTaxLabel(string $expectedResult, bool $flag): void { - yield 'true' => [ - '(Incl. Tax)', - true, - ]; - yield 'false' => [ - '(Excl. Tax)', - false, - ]; + static::assertStringContainsString($expectedResult, self::$subject->getIncExcTaxLabel($flag)); } /** * @covers Mage_Tax_Helper_Data::shippingPriceIncludesTax() - * @group Mage_Tax - * @group Mage_Tax_Helper + * @group Helper */ public function testShippingPriceIncludesTax(): void { - $this->assertFalse($this->subject->shippingPriceIncludesTax()); + static::assertFalse(self::$subject->shippingPriceIncludesTax()); } /** * @covers Mage_Tax_Helper_Data::getShippingPriceDisplayType() - * @group Mage_Tax - * @group Mage_Tax_Helper + * @group Helper */ public function testGetShippingPriceDisplayType(): void { - $this->assertSame(1, $this->subject->getShippingPriceDisplayType()); + static::assertSame(1, self::$subject->getShippingPriceDisplayType()); } /** * @covers Mage_Tax_Helper_Data::displayShippingPriceIncludingTax() - * @group Mage_Tax - * @group Mage_Tax_Helper + * @group Helper */ public function testDisplayShippingPriceIncludingTax(): void { - $this->assertFalse($this->subject->displayShippingPriceIncludingTax()); + static::assertFalse(self::$subject->displayShippingPriceIncludingTax()); } /** * @covers Mage_Tax_Helper_Data::displayShippingPriceExcludingTax() - * @group Mage_Tax - * @group Mage_Tax_Helper + * @group Helper */ public function testDisplayShippingPriceExcludingTax(): void { - $this->assertTrue($this->subject->displayShippingPriceExcludingTax()); + static::assertTrue(self::$subject->displayShippingPriceExcludingTax()); } /** * @covers Mage_Tax_Helper_Data::displayShippingBothPrices() - * @group Mage_Tax - * @group Mage_Tax_Helper + * @group Helper */ public function testDisplayShippingBothPrices(): void { - $this->assertFalse($this->subject->displayShippingBothPrices()); + static::assertFalse(self::$subject->displayShippingBothPrices()); } /** * @covers Mage_Tax_Helper_Data::getShippingTaxClass() - * @group Mage_Tax - * @group Mage_Tax_Helper + * @group Helper */ public function testGetShippingTaxClass(): void { - $this->assertSame(0, $this->subject->getShippingTaxClass(null)); + static::assertSame(0, self::$subject->getShippingTaxClass(null)); } /** - * @group Mage_Tax - * @group Mage_Tax_Helper + * @group Helper */ public function testGetShippingPrice(): void { - $this->assertEqualsWithDelta(100.0, $this->subject->getShippingPrice(100.0), PHP_FLOAT_EPSILON); + static::assertEqualsWithDelta(100.0, self::$subject->getShippingPrice(100.0), PHP_FLOAT_EPSILON); } /** * @covers Mage_Tax_Helper_Data::discountTax() - * @group Mage_Tax - * @group Mage_Tax_Helper + * @group Helper */ public function testDiscountTax(): void { - $this->assertFalse($this->subject->discountTax()); + static::assertFalse(self::$subject->discountTax()); } /** * @covers Mage_Tax_Helper_Data::getTaxBasedOn() - * @group Mage_Tax - * @group Mage_Tax_Helper + * @group Helper */ public function testGetTaxBasedOn(): void { - $this->assertSame('shipping', $this->subject->getTaxBasedOn()); + static::assertSame('shipping', self::$subject->getTaxBasedOn()); } /** * @covers Mage_Tax_Helper_Data::applyTaxOnCustomPrice() - * @group Mage_Tax - * @group Mage_Tax_Helper + * @group Helper */ public function testApplyTaxOnCustomPrice(): void { - $this->assertTrue($this->subject->applyTaxOnCustomPrice()); + static::assertTrue(self::$subject->applyTaxOnCustomPrice()); } /** * @covers Mage_Tax_Helper_Data::applyTaxOnOriginalPrice() - * @group Mage_Tax - * @group Mage_Tax_Helper + * @group Helper */ public function testApplyTaxOnOriginalPrice(): void { - $this->assertFalse($this->subject->applyTaxOnOriginalPrice()); + static::assertFalse(self::$subject->applyTaxOnOriginalPrice()); } /** - * @group Mage_Tax - * @group Mage_Tax_Helper + * @group Helper */ public function testGetCalculationSequence(): void { - $this->assertSame('1_0', $this->subject->getCalculationSequence()); + static::assertSame('1_0', self::$subject->getCalculationSequence()); } /** * @covers Mage_Tax_Helper_Data::getCalculationAgorithm() - * @group Mage_Tax - * @group Mage_Tax_Helper + * @group Helper */ public function testGetCalculationAgorithm(): void { - $this->assertSame('TOTAL_BASE_CALCULATION', $this->subject->getCalculationAgorithm()); + static::assertSame('TOTAL_BASE_CALCULATION', self::$subject->getCalculationAgorithm()); } /** - * @group Mage_Tax - * @group Mage_Tax_Helper + * @group Helper */ public function testIsWrongDisplaySettingsIgnored(): void { - $this->assertFalse($this->subject->isWrongDisplaySettingsIgnored()); + static::assertFalse(self::$subject->isWrongDisplaySettingsIgnored()); } /** - * @group Mage_Tax - * @group Mage_Tax_Helper + * @group Helper */ public function testIsWrongDiscountSettingsIgnored(): void { - $this->assertFalse($this->subject->isWrongDiscountSettingsIgnored()); + static::assertFalse(self::$subject->isWrongDiscountSettingsIgnored()); } /** - * @group Mage_Tax - * @group Mage_Tax_Helper + * @group Helper */ public function testIsConflictingFptTaxConfigurationSettingsIgnored(): void { - $this->assertFalse($this->subject->isConflictingFptTaxConfigurationSettingsIgnored()); + static::assertFalse(self::$subject->isConflictingFptTaxConfigurationSettingsIgnored()); } /** * @covers Mage_Tax_Helper_Data::isCrossBorderTradeEnabled() - * @group Mage_Tax - * @group Mage_Tax_Helper + * @group Helper */ public function testIsCrossBorderTradeEnabled(): void { - $this->assertFalse($this->subject->isCrossBorderTradeEnabled()); + static::assertFalse(self::$subject->isCrossBorderTradeEnabled()); } } diff --git a/tests/unit/Mage/Uploader/Block/AbstractTest.php b/tests/unit/Mage/Uploader/Block/AbstractTest.php index 56f5c2588a0..5bd42bbebfa 100644 --- a/tests/unit/Mage/Uploader/Block/AbstractTest.php +++ b/tests/unit/Mage/Uploader/Block/AbstractTest.php @@ -17,61 +17,55 @@ namespace OpenMage\Tests\Unit\Mage\Uploader\Block; -use Mage; use Mage_Uploader_Block_Abstract as Subject; use Mage_Uploader_Model_Config_Browsebutton; use Mage_Uploader_Model_Config_Misc; use Mage_Uploader_Model_Config_Uploader; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; -class AbstractTest extends TestCase +class AbstractTest extends OpenMageTest { - public Subject $subject; + private static Subject $subject; public function setUp(): void { - Mage::app(); - $this->subject = $this->getMockForAbstractClass(Subject::class); + self::$subject = $this->getMockForAbstractClass(Subject::class); } /** - * @group Mage_Uploader - * @group Mage_Uploader_Block + * @group Block */ public function testGetMiscConfig(): void { - $this->assertInstanceOf(Mage_Uploader_Model_Config_Misc::class, $this->subject->getMiscConfig()); + static::assertInstanceOf(Mage_Uploader_Model_Config_Misc::class, self::$subject->getMiscConfig()); } /** - * @group Mage_Uploader - * @group Mage_Uploader_Block + * @group Block * @group runInSeparateProcess * @runInSeparateProcess */ public function testGetUploaderConfig(): void { - $this->assertInstanceOf(Mage_Uploader_Model_Config_Uploader::class, $this->subject->getUploaderConfig()); + static::assertInstanceOf(Mage_Uploader_Model_Config_Uploader::class, self::$subject->getUploaderConfig()); } /** - * @group Mage_Uploader - * @group Mage_Uploader_Block + * @group Block */ public function testGetButtonConfig(): void { - $this->assertInstanceOf(Mage_Uploader_Model_Config_Browsebutton::class, $this->subject->getButtonConfig()); + static::assertInstanceOf(Mage_Uploader_Model_Config_Browsebutton::class, self::$subject->getButtonConfig()); } /** - * @group Mage_Uploader - * @group Mage_Uploader_Block + * @group Block */ public function testGetElementId(): void { $suffix = 'test'; - $result = $this->subject->getElementId($suffix); - $this->assertStringStartsWith('id_', $result); - $this->assertStringEndsWith('-' . $suffix, $result); + $result = self::$subject->getElementId($suffix); + static::assertStringStartsWith('id_', $result); + static::assertStringEndsWith('-' . $suffix, $result); } } diff --git a/tests/unit/Mage/Uploader/Helper/DataTest.php b/tests/unit/Mage/Uploader/Helper/DataTest.php index 591686c376d..fe241150215 100644 --- a/tests/unit/Mage/Uploader/Helper/DataTest.php +++ b/tests/unit/Mage/Uploader/Helper/DataTest.php @@ -19,24 +19,23 @@ use Mage; use Mage_Uploader_Helper_Data as Subject; -use PHPUnit\Framework\TestCase; +use OpenMage\Tests\Unit\OpenMageTest; -class DataTest extends TestCase +class DataTest extends OpenMageTest { - public Subject $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); - $this->subject = Mage::helper('uploader/data'); + parent::setUpBeforeClass(); + self::$subject = Mage::helper('uploader/data'); } /** - * @group Mage_Uploader - * @group Mage_Uploader_Helper + * @group Helper */ public function testIsModuleEnabled(): void { - $this->assertIsBool($this->subject->isModuleEnabled()); + static::assertIsBool(self::$subject->isModuleEnabled()); } } diff --git a/tests/unit/Mage/Uploader/Helper/FileTest.php b/tests/unit/Mage/Uploader/Helper/FileTest.php index 3926d5b72bd..d675d08fcf5 100644 --- a/tests/unit/Mage/Uploader/Helper/FileTest.php +++ b/tests/unit/Mage/Uploader/Helper/FileTest.php @@ -20,23 +20,23 @@ use Mage; use Mage_Core_Model_Config; use Mage_Uploader_Helper_File as Subject; +use OpenMage\Tests\Unit\OpenMageTest; use OpenMage\Tests\Unit\Traits\DataProvider\Mage\Uploader\UploaderTrait; -use PHPUnit\Framework\TestCase; -class FileTest extends TestCase +class FileTest extends OpenMageTest { use UploaderTrait; - public Subject $subject; + private static Subject $subject; - public function setUp(): void + public static function setUpBeforeClass(): void { - Mage::app(); + parent::setUpBeforeClass(); /** @var Mage_Core_Model_Config $config */ $config = Mage::getConfig(); $config->setNode('global/mime/types/test-new-node', 'application/octet-stream'); - $this->subject = Mage::helper('uploader/file'); + self::$subject = Mage::helper('uploader/file'); } /** @@ -44,59 +44,50 @@ public function setUp(): void * @param array $expectedResult * @param string|array $extensionsList * - * @group Mage_Uploader - * @group Mage_Uploader_Helper + * @group Helper */ public function testGetMimeTypeFromExtensionList(array $expectedResult, $extensionsList): void { - $this->assertSame($expectedResult, $this->subject->getMimeTypeFromExtensionList($extensionsList)); + static::assertSame($expectedResult, self::$subject->getMimeTypeFromExtensionList($extensionsList)); } /** - * @group Mage_Uploader - * @group Mage_Uploader_Helper + * @group Helper */ public function testGetPostMaxSize(): void { - $this->assertIsString($this->subject->getPostMaxSize()); + static::assertIsString(self::$subject->getPostMaxSize()); } /** - * @group Mage_Uploader - * @group Mage_Uploader_Helper + * @group Helper */ public function testGetUploadMaxSize(): void { - $this->assertIsString($this->subject->getUploadMaxSize()); + static::assertIsString(self::$subject->getUploadMaxSize()); } /** - * @group Mage_Uploader - * @group Mage_Uploader_Helper + * @dataProvider provideGetDataMaxSizeData + * @group Helper */ - public function testGetDataMaxSize(): void + public function testGetDataMaxSize(string $expectedResult, array $methods): void { - $mock = $this->getMockBuilder(Subject::class) - ->setMethods(['getPostMaxSize', 'getUploadMaxSize']) - ->getMock(); + $mock = $this->getMockWithCalledMethods(Subject::class, $methods, true); - $mock->expects($this->once())->method('getPostMaxSize')->willReturn('1G'); - $mock->expects($this->once())->method('getUploadMaxSize')->willReturn('1M'); - $this->assertSame('1M', $mock->getDataMaxSize()); + static::assertInstanceOf(Subject::class, $mock); + static::assertSame($expectedResult, $mock->getDataMaxSize()); } /** * @dataProvider provideGetDataMaxSizeInBytesData - * @group Mage_Uploader - * @group Mage_Uploader_Helper + * @group Helper */ - public function testGetDataMaxSizeInBytes(int $expectedResult, string $maxSize): void + public function testGetDataMaxSizeInBytes(int $expectedResult, array $methods): void { - $mock = $this->getMockBuilder(Subject::class) - ->setMethods(['getDataMaxSize']) - ->getMock(); + $mock = $this->getMockWithCalledMethods(Subject::class, $methods, true); - $mock->expects($this->once())->method('getDataMaxSize')->willReturn($maxSize); - $this->assertSame($expectedResult, $mock->getDataMaxSizeInBytes()); + static::assertInstanceOf(Subject::class, $mock); + static::assertSame($expectedResult, $mock->getDataMaxSizeInBytes()); } } diff --git a/tests/unit/Mage/Wishlist/Model/ItemTest.php b/tests/unit/Mage/Wishlist/Model/ItemTest.php new file mode 100644 index 00000000000..753f1e245e3 --- /dev/null +++ b/tests/unit/Mage/Wishlist/Model/ItemTest.php @@ -0,0 +1,93 @@ +setQty($inputQty); + static::assertEquals($expectedQty, self::$subject->getQty()); + } + + public function qtyDataProvider(): \Generator + { + yield 'positive quantity' => [ + 5, + 5, + ]; + yield 'zero quantity' => [ + 0, + 0, + ]; + yield 'negative quantity' => [ + 1, + -1, + ]; + } + + /** + * @dataProvider validateDataProvider + * @group Model + * @throws Mage_Core_Exception + */ + public function testValidate(?string $expectedExceptionMessage, ?int $wishlistId, ?int $productId): void + { + self::$subject->setWishlistId($wishlistId); + self::$subject->setProductId($productId); + + if ($expectedExceptionMessage) { + $this->expectExceptionMessage($expectedExceptionMessage); + } + + $result = self::$subject->validate(); + + if (!$expectedExceptionMessage) { + static::assertTrue($result); + } + } + + public function validateDataProvider(): \Generator + { + yield 'valid data' => [ + null, + 1, + 1, + ]; + yield 'missing wishlist ID' => [ + 'Cannot specify wishlist.', + null, + 1, + ]; + yield 'missing product ID' => [ + 'Cannot specify product.', + 1, + null, + ]; + } +} diff --git a/tests/unit/OpenMageTest.php b/tests/unit/OpenMageTest.php new file mode 100644 index 00000000000..cccd57c9484 --- /dev/null +++ b/tests/unit/OpenMageTest.php @@ -0,0 +1,66 @@ +getMockBuilder($class) + ->setMethods(array_keys($methods)) + ->getMock(); + + if (is_null($expectOnce)) { + return $mock; + } + + foreach ($methods as $key => $value) { + if ($expectOnce) { + $mockMethod = $mock->expects(static::once())->method($key); + } else { + $mockMethod = $mock->method($key); + } + + if ($value === self::WILL_RETURN_SELF) { + $mockMethod->willReturnSelf(); + } else { + $mockMethod->willReturn($value); + } + } + + return $mock; + } +} diff --git a/tests/unit/Traits/DataProvider/Base/BoolTrait.php b/tests/unit/Traits/DataProvider/Base/BoolTrait.php index d7c32d61cb8..1ec25854bee 100644 --- a/tests/unit/Traits/DataProvider/Base/BoolTrait.php +++ b/tests/unit/Traits/DataProvider/Base/BoolTrait.php @@ -1,16 +1,9 @@ [ + true, + [ + 'getBlockName' => 'test/block', + 'getIsAllowed' => '1', + ], + ]; + yield 'invalid' => [ + [$errorIncorrectBlockName], + [ + 'getBlockName' => 'Test_Block', + 'getIsAllowed' => '1', + ], + ]; + yield 'errors: blank blockname' => [ + [ + 'Block Name is required field.', + 'Block Name is incorrect.', + 'Is Allowed is required field.', + ], + [ + 'getBlockName' => '', + 'getIsAllowed' => '', + ], + ]; + yield 'errors: invalid char blockname' => [ + [$errorIncorrectBlockName], + [ + 'getBlockName' => '~', + 'getIsAllowed' => '1', + ], + ]; + yield 'errors: invalid blockname' => [ + [$errorIncorrectBlockName], + [ + 'getBlockName' => 'test', + 'getIsAllowed' => '0', + ], + ]; + yield 'errors: null blockname' => [ + [ + 'Block Name is required field.', + $errorIncorrectBlockName, + ], + [ + 'getBlockName' => null, + 'getIsAllowed' => '1', + ], + ]; + yield 'errors: special chars in blockname' => [ + [$errorIncorrectBlockName], + [ + 'getBlockName' => '!@#$%^&*()', + 'getIsAllowed' => '1', + ], + ]; + yield 'errors: numeric blockname' => [ + [$errorIncorrectBlockName], + [ + 'getBlockName' => '12345', + 'getIsAllowed' => '1', + ], + ]; + yield 'valid: mixed case blockname' => [ + true, + [ + 'getBlockName' => 'Test/Block', + 'getIsAllowed' => '1', + ], + ]; + } +} diff --git a/tests/unit/Traits/DataProvider/Mage/Admin/Model/UserTrait.php b/tests/unit/Traits/DataProvider/Mage/Admin/Model/UserTrait.php new file mode 100644 index 00000000000..3b07b2281eb --- /dev/null +++ b/tests/unit/Traits/DataProvider/Mage/Admin/Model/UserTrait.php @@ -0,0 +1,115 @@ + '999', + 'getUsername' => 'new', + 'getPassword' => 'veryl0ngpassw0rd', + 'getIsActive' => '1', + 'validatePasswordHash' => true, + 'hasAssigned2Role' => true, + ]; + + yield 'pass' => [ + true, + $validData, + ]; + + $data = $validData; + $data['getUsername'] = 'admin'; + yield 'fail #0 account exists' => [ + 'User Name already exists.', + $data, + ]; + + $data = $validData; + $data['getIsActive'] = '0'; + yield 'fail #1 inactive' => [ + 'This account is inactive.', + $data, + ]; + + $data = $validData; + $data['validatePasswordHash'] = false; + yield 'fail #2 invalid hash' => [ + false, + $data, + ]; + + $data = $validData; + $data['hasAssigned2Role'] = false; + yield 'fail #3 no role assigned' => [ + 'Access denied.', + $data, + ]; + } + + public function provideValidateAdminUserData(): Generator + { + yield 'fail #1' => [ + [ + 0 => 'User Name is required field.', + 1 => 'First Name is required field.', + 2 => 'Last Name is required field.', + 3 => 'Please enter a valid email.', + 4 => 'Password must be at least of 14 characters.', + 5 => 'Password must include both numeric and alphabetic characters.', + ], + [ + 'hasNewPassword' => true, + 'getNewPassword' => '123', + 'hasPassword' => false, + 'getPassword' => '456', + ], + ]; + yield 'fails #2' => [ + [ + 0 => 'User Name is required field.', + 1 => 'First Name is required field.', + 2 => 'Last Name is required field.', + 3 => 'Please enter a valid email.', + 4 => 'Password must be at least of 14 characters.', + 5 => 'Password must include both numeric and alphabetic characters.', + ], + [ + 'hasNewPassword' => false, + 'getNewPassword' => '123', + 'hasPassword' => true, + 'getPassword' => '456', + ], + ]; + } + + public function provideIsResetPasswordLinkTokenExpiredData(): Generator + { + yield '#1' => [ + true, + [ + 'getRpToken' => '', + 'getRpTokenCreatedAt' => '', + ], + ]; + yield '#2' => [ + true, + [ + 'getRpToken' => '1', + 'getRpTokenCreatedAt' => '0', + ], + ]; + } +} diff --git a/tests/unit/Traits/DataProvider/Mage/Admin/Model/VariableTrait.php b/tests/unit/Traits/DataProvider/Mage/Admin/Model/VariableTrait.php new file mode 100644 index 00000000000..1c543e3917e --- /dev/null +++ b/tests/unit/Traits/DataProvider/Mage/Admin/Model/VariableTrait.php @@ -0,0 +1,48 @@ + [ + true, + [ + 'getVariableName' => 'test', + 'getIsAllowed' => '1', + ], + ]; + yield 'test error empty' => [ + ['Variable Name is required field.'], + [ + 'getVariableName' => '', + 'getIsAllowed' => '1', + ], + ]; + yield 'test error regex' => [ + ['Variable Name is incorrect.'], + [ + 'getVariableName' => '#invalid-name#', + 'getIsAllowed' => '1', + ], + ]; + yield 'test error allowed' => [ + ['Is Allowed is required field.'], + [ + 'getVariableName' => 'test', + 'getIsAllowed' => '', + ], + ]; + } +} diff --git a/tests/unit/Traits/DataProvider/Mage/AdminNotification/Model/InboxTrait.php b/tests/unit/Traits/DataProvider/Mage/AdminNotification/Model/InboxTrait.php new file mode 100644 index 00000000000..acd689a70d9 --- /dev/null +++ b/tests/unit/Traits/DataProvider/Mage/AdminNotification/Model/InboxTrait.php @@ -0,0 +1,38 @@ + [ + [ + Subject::SEVERITY_CRITICAL => 'critical', + Subject::SEVERITY_MAJOR => 'major', + Subject::SEVERITY_MINOR => 'minor', + Subject::SEVERITY_NOTICE => 'notice', + ], + null, + ]; + yield 'valid' => [ + 'critical', + Subject::SEVERITY_CRITICAL, + ]; + yield 'invalid' => [ + null, + 0, + ]; + } +} diff --git a/tests/unit/Traits/DataProvider/Mage/Adminhtml/Block/Widget/GridTrait.php b/tests/unit/Traits/DataProvider/Mage/Adminhtml/Block/Widget/GridTrait.php new file mode 100644 index 00000000000..ee7a543ae3e --- /dev/null +++ b/tests/unit/Traits/DataProvider/Mage/Adminhtml/Block/Widget/GridTrait.php @@ -0,0 +1,145 @@ + [ + [], + [], + ]; + yield 'index entity_id' => [ + [ + 'index' => 'entity_id', + 'align' => 'right', + 'type' => 'number', + 'width' => '1', + ], + [ + 'index' => 'entity_id', + ], + ]; + yield 'index entity_id w/ override' => [ + [ + 'index' => 'entity_id', + 'align' => 'center', + 'type' => 'text', + ], + [ + 'index' => 'entity_id', + 'align' => 'center', + 'type' => 'text', + ], + ]; + yield 'index array - ref #4475' => [ + [ + 'index' => ['firstname', 'lastname'], + 'type' => 'concat', + 'separator' => ' ', + ], + [ + 'index' => ['firstname', 'lastname'], + 'type' => 'concat', + ], + ]; + yield 'type action' => [ + [ + 'type' => 'action', + 'filter' => false, + 'sortable' => false, + 'width' => '40', + 'header' => 'Action', + ], + [ + 'type' => 'action', + ], + ]; + yield 'type action w/ override' => [ + [ + 'type' => 'action', + 'header' => 'test', + 'filter' => false, + 'sortable' => false, + 'width' => '40', + ], + [ + 'type' => 'action', + 'header' => 'test', + ], + ]; + yield 'type currency' => [ + [ + 'type' => 'currency', + 'align' => 'right', + 'index' => 'price', + 'header' => 'Price', + ], + [ + 'type' => 'currency', + ], + ]; + yield 'type date' => [ + [ + 'type' => 'date', + 'width' => '140', + ], + [ + 'type' => 'date', + ], + ]; + yield 'type datetime' => [ + [ + 'type' => 'datetime', + 'width' => '170', + ], + [ + 'type' => 'datetime', + ], + ]; + yield 'type number' => [ + [ + 'type' => 'number', + 'align' => 'right', + 'width' => '1', + ], + [ + 'type' => 'number', + ], + ]; + yield 'type price' => [ + [ + 'type' => 'price', + 'align' => 'right', + 'index' => 'price', + 'header' => 'Price', + ], + [ + 'type' => 'price', + ], + ]; + yield 'type store' => [ + [ + 'type' => 'store', + 'index' => 'store_id', + 'store_view' => true, + 'width' => '160', + 'header' => 'Store View', + ], + [ + 'type' => 'store', + ], + ]; + } +} diff --git a/tests/unit/Traits/DataProvider/Mage/Adminhtml/Helper/AddressTrait.php b/tests/unit/Traits/DataProvider/Mage/Adminhtml/Helper/AddressTrait.php new file mode 100644 index 00000000000..44d9efde1c1 --- /dev/null +++ b/tests/unit/Traits/DataProvider/Mage/Adminhtml/Helper/AddressTrait.php @@ -0,0 +1,29 @@ + [ + Subject::DEFAULT_STREET_LINES_COUNT, + 0, + ]; + yield 'custom' => [ + 4, + 4, + ]; + } +} diff --git a/tests/unit/Traits/DataProvider/Mage/Adminhtml/Helper/ConfigTrait.php b/tests/unit/Traits/DataProvider/Mage/Adminhtml/Helper/ConfigTrait.php new file mode 100644 index 00000000000..2a435d4a126 --- /dev/null +++ b/tests/unit/Traits/DataProvider/Mage/Adminhtml/Helper/ConfigTrait.php @@ -0,0 +1,54 @@ + 'adminhtml/system_config_backend_color', + ]; + + public function provideGetInputTypes(): Generator + { + yield 'null' => [ + [ + 'color' => [ + 'backend_model' => self::$backendModel['color'], + ], + ], + null, + ]; + yield 'color' => [ + [ + 'backend_model' => self::$backendModel['color'], + ], + 'color', + ]; + yield 'invalid' => [ + [], + 'invalid', + ]; + } + + public function provideGetBackendModelByInputType(): Generator + { + yield 'color' => [ + self::$backendModel['color'], + 'color', + ]; + yield 'invalid' => [ + null, + 'invalid', + ]; + } +} diff --git a/tests/unit/Traits/DataProvider/Mage/Adminhtml/Helper/JsTrait.php b/tests/unit/Traits/DataProvider/Mage/Adminhtml/Helper/JsTrait.php new file mode 100644 index 00000000000..cde6b0f4d33 --- /dev/null +++ b/tests/unit/Traits/DataProvider/Mage/Adminhtml/Helper/JsTrait.php @@ -0,0 +1,36 @@ + [ + [ + 0 => 1, + 1 => 2, + 2 => 3, + 3 => 4, + ], + '1&2&3&4', + ]; + yield 'w/ keys' => [ + [ + 1 => [], + 2 => [], + ], + '1=1&2=2', + ]; + } +} diff --git a/tests/unit/Traits/DataProvider/Mage/Adminhtml/Helper/SalesTrait.php b/tests/unit/Traits/DataProvider/Mage/Adminhtml/Helper/SalesTrait.php new file mode 100644 index 00000000000..10af4c36416 --- /dev/null +++ b/tests/unit/Traits/DataProvider/Mage/Adminhtml/Helper/SalesTrait.php @@ -0,0 +1,24 @@ + [ + '<a href="https://localhost">', + '', + ]; + } +} diff --git a/tests/unit/Traits/DataProvider/Mage/Api/Model/UserTrait.php b/tests/unit/Traits/DataProvider/Mage/Api/Model/UserTrait.php new file mode 100644 index 00000000000..9b5fa081951 --- /dev/null +++ b/tests/unit/Traits/DataProvider/Mage/Api/Model/UserTrait.php @@ -0,0 +1,121 @@ + 'validuser', + 'getFirstname' => 'John', + 'getLastname' => 'Doe', + 'getEmail' => 'john.doe@example.com', + 'hasNewApiKey' => false, + 'getNewApiKey' => null, + 'hasApiKey' => true, + 'getApiKey' => 'validapikey123', + 'hasApiKeyConfirmation' => true, + 'getApiKeyConfirmation' => 'validapikey123', + 'userExists' => false, + ]; + + yield 'valid data' => [ + true, + $validUser, + ]; + + $data = $validUser; + $data['getUsername'] = ''; + yield 'missing username' => [ + ['User Name is required field.'], + $data, + ]; + + $data = $validUser; + $data['getFirstname'] = ''; + yield 'missing firstname' => [ + ['First Name is required field.'], + $data, + ]; + + $data = $validUser; + $data['getLastname'] = ''; + yield 'missing lastname' => [ + ['Last Name is required field.'], + $data, + ]; + + $data = $validUser; + $data['getEmail'] = ''; + yield 'missing email' => [ + [$errorInvalidEmail], + $data, + ]; + + $data = $validUser; + $data['getEmail'] = 'invalid-email'; + yield 'invalid email' => [ + [$errorInvalidEmail], + $data, + ]; + + $data = $validUser; + $data['getApiKey'] = ''; + yield 'missing api key' => [ + [ + $errorLength, + $errorAlphaNumeric, + $errorIdentical, + ], + $data, + ]; + + $data = $validUser; + $data['getApiKeyConfirmation'] = ''; + yield 'missing api confirm key' => [ + [$errorIdentical], + $data, + ]; + + $data = $validUser; + $apiKey = '1234567'; + $data['getApiKey'] = $apiKey; + $data['getApiKeyConfirmation'] = $apiKey; + yield 'numeric only api key' => [ + [$errorAlphaNumeric], + $data, + ]; + + $data = $validUser; + $apiKey = 'abcdefg'; + $data['getApiKey'] = $apiKey; + $data['getApiKeyConfirmation'] = $apiKey; + yield 'string only api key' => [ + [$errorAlphaNumeric], + $data, + ]; + + $data = $validUser; + $data['userExists'] = true; + yield 'user exists' => [ + ['A user with the same user name or email already exists.'], + $data, + ]; + } +} diff --git a/tests/unit/Traits/DataProvider/Mage/Catalog/CatalogTrait.php b/tests/unit/Traits/DataProvider/Mage/Catalog/CatalogTrait.php index 939c93d4c86..43c9cfc5630 100644 --- a/tests/unit/Traits/DataProvider/Mage/Catalog/CatalogTrait.php +++ b/tests/unit/Traits/DataProvider/Mage/Catalog/CatalogTrait.php @@ -1,16 +1,9 @@ [ + [ + '100', + ], + '100', + ]; + yield 'test #2 w/ length' => [ + [ + '10', + '0', + ], + '100', + 2, + ]; + } +} diff --git a/tests/unit/Traits/DataProvider/Mage/Catalog/Helper/Product/UrlTrait.php b/tests/unit/Traits/DataProvider/Mage/Catalog/Helper/Product/UrlTrait.php new file mode 100644 index 00000000000..fe4cb2a7f8a --- /dev/null +++ b/tests/unit/Traits/DataProvider/Mage/Catalog/Helper/Product/UrlTrait.php @@ -0,0 +1,36 @@ + [ + '', + null, + ]; + yield 'string' => [ + 'string', + 'string', + ]; + yield 'umlauts' => [ + 'string with aou', + 'string with ÄÖÜ', + ]; + yield 'at' => [ + 'at', + '@', + ]; + } +} diff --git a/tests/unit/Traits/DataProvider/Mage/Catalog/Helper/ProductTrait.php b/tests/unit/Traits/DataProvider/Mage/Catalog/Helper/ProductTrait.php new file mode 100644 index 00000000000..536bf6484da --- /dev/null +++ b/tests/unit/Traits/DataProvider/Mage/Catalog/Helper/ProductTrait.php @@ -0,0 +1,52 @@ + [ + 2, + null, + ]; + yield 'invalid' => [ + 0, + 'invalid', + ]; + yield 'multiselect' => [ + 1, + 'multiselect', + ]; + yield 'boolean' => [ + 1, + 'boolean', + ]; + } + + public function provideGetAttributeBackendModelByInputType(): Generator + { + yield 'multiselect' => [ + 'eav/entity_attribute_backend_array', + 'multiselect', + ]; + } + + public function provideGetAttributeSourceModelByInputType(): Generator + { + yield 'boolean' => [ + 'eav/entity_attribute_source_boolean', + 'boolean', + ]; + } +} diff --git a/tests/unit/Traits/DataProvider/Mage/Catalog/Model/LocaleTrait.php b/tests/unit/Traits/DataProvider/Mage/Catalog/Model/LocaleTrait.php index bf49b4ffa37..32d08d3081d 100644 --- a/tests/unit/Traits/DataProvider/Mage/Catalog/Model/LocaleTrait.php +++ b/tests/unit/Traits/DataProvider/Mage/Catalog/Model/LocaleTrait.php @@ -1,16 +1,9 @@ '999', + 'store_id' => '1', + 'url_key' => '', + 'name' => 'category', + + ]); + $product = new Varien_Object([ + 'id' => '999', + 'name' => 'product', + ]); + + yield 'test exception' => [ + 'Please specify either a category or a product, or both.', + 'request', + null, + null, + ]; + yield 'request' => [ + 'product.html', + 'request', + $product, + $category, + ]; + // yield 'request w/o product' => [ + // '-.html', + // 'request', + // null, + // $category, + // ]; + yield 'target category' => [ + 'catalog/category/view/id/999', + 'target', + null, + $category, + ]; + yield 'target product' => [ + 'catalog/product/view/id/999', + 'target', + $product, + $category, + ]; + } + + public function provideGetSluggerConfig(): Generator + { + yield 'de_DE' => [ + ['de_DE' => [ + '%' => 'prozent', + '&' => 'und', + ]], + 'de_DE', + ]; + yield 'en_US' => [ + ['en_US' => [ + '%' => 'percent', + '&' => 'and', + ]], + 'en_US', + ]; + yield 'fr_FR' => [ + ['fr_FR' => [ + '%' => 'pour cent', + '&' => 'et', + ]], + 'fr_FR', + ]; + } +} diff --git a/tests/unit/Traits/DataProvider/Mage/Cms/Block/Widget/Page/LinkTrait.php b/tests/unit/Traits/DataProvider/Mage/Cms/Block/Widget/Page/LinkTrait.php new file mode 100644 index 00000000000..5dd99e3d1b2 --- /dev/null +++ b/tests/unit/Traits/DataProvider/Mage/Cms/Block/Widget/Page/LinkTrait.php @@ -0,0 +1,151 @@ + 'Custom Title', + 'custom_text' => 'Custom Text', + ]; + + public static $tests = [ + 'empty' => 'empty', + 'href' => 'href is set', + 'no_data' => 'no data is set', + 'page_id' => 'page_id is set', + 'text' => 'text is set', + 'title' => 'title is set', + ]; + + public function provideGetHrefData(): Generator + { + $emptyData = [ + 'href' => null, + 'page_id' => null, + ]; + + #$data = $emptyData; + #$data['page_id'] = 1; + #yield 'page_id is set' => [ + # 'https://magento-lts.ddev.site/no-route', + # $data, + #]; + + $data = $emptyData; + $data['href'] = 'home'; + yield self::$tests['href'] => [ + 'home', + $data, + ]; + + yield self::$tests['empty'] => [ + '', + $emptyData, + ]; + + yield self::$tests['no_data'] => [ + '', + [], + ]; + } + + public function provideGetTitleData(): Generator + { + $emptyData = [ + 'href' => null, + 'page_id' => null, + 'title' => null, + ]; + + $data = $emptyData; + $data['title'] = self::$defaults['custom_title']; + yield self::$tests['title'] => [ + self::$defaults['custom_title'], + $data, + ]; + + $data = $emptyData; + $data['page_id'] = 1; + yield self::$tests['page_id'] => [ + '404 Not Found 1', + $data, + ]; + + $data = $emptyData; + $data['href'] = 'home'; + yield self::$tests['href'] => [ + 'Home page', + $data, + ]; + + yield self::$tests['empty'] => [ + '', + $emptyData, + ]; + + yield self::$tests['no_data'] => [ + '', + [], + ]; + } + + public function provideGetAnchorTextData(): Generator + { + $emptyData = [ + 'href' => null, + 'page_id' => null, + 'anchor_text' => null, + 'test' => 'Test', + ]; + + $data = $emptyData; + $data['anchor_text'] = self::$defaults['custom_text']; + yield self::$tests['text'] => [ + self::$defaults['custom_text'], + $data, + ]; + + $data = $emptyData; + $data['title'] = self::$defaults['custom_title']; + yield self::$tests['title'] => [ + self::$defaults['custom_title'], + $data, + ]; + + $data = $emptyData; + $data['page_id'] = 1; + yield self::$tests['page_id'] => [ + '404 Not Found 1', + $data, + ]; + + $data = $emptyData; + $data['href'] = 'home'; + yield self::$tests['href'] => [ + 'Home page', + $data, + ]; + + yield self::$tests['empty'] => [ + null, + $emptyData, + ]; + + yield self::$tests['no_data'] => [ + null, + [], + ]; + } +} diff --git a/tests/unit/Traits/DataProvider/Mage/Cms/CmsTrait.php b/tests/unit/Traits/DataProvider/Mage/Cms/CmsTrait.php index 3807b8c4d9e..9b02b997d0e 100644 --- a/tests/unit/Traits/DataProvider/Mage/Cms/CmsTrait.php +++ b/tests/unit/Traits/DataProvider/Mage/Cms/CmsTrait.php @@ -1,16 +1,9 @@ 'John Doe', + 'email' => 'john.doe@example.com', + 'comment' => 'Test comment', + ]; + + $error = 'Unable to submit your request. Please, try again later'; + + #yield 'valid data' => [ + # $validData, + # true, + # null, + #]; + + yield 'invalid form key' => [ + $validData, + false, + 'Invalid Form Key. Please submit your request again.', + ]; + + $data = $validData; + $data['name'] = ''; + yield 'missing name' => [ + $data, + true, + $error, + ]; + + $data = $validData; + $data['email'] = ''; + yield 'missing email' => [ + $data, + true, + $error, + ]; + + $data = $validData; + $data['email'] = 'invalid-email'; + yield 'invalid email' => [ + $data, + true, + $error, + ]; + + $data = $validData; + $data['comment'] = ''; + yield 'missing comment' => [ + $data, + true, + $error, + ]; + } +} diff --git a/tests/unit/Traits/DataProvider/Mage/Core/CoreTrait.php b/tests/unit/Traits/DataProvider/Mage/Core/CoreTrait.php index 26a1728fc50..41d6fbaf855 100644 --- a/tests/unit/Traits/DataProvider/Mage/Core/CoreTrait.php +++ b/tests/unit/Traits/DataProvider/Mage/Core/CoreTrait.php @@ -1,16 +1,9 @@ [ + [], + [], + [], + ]; + yield 'with base array' => [ + ['a' => 1], + ['a' => 1], + [], + ]; + yield 'with merge array' => [ + ['b' => 1], + [], + ['b' => 1], + ]; + yield 'with base & merge array' => [ + [ + 'a' => 1, + 'b' => 1, + ], + ['a' => 1], + ['b' => 1], + ]; + yield 'with nested merge array' => [ + [ + 'a' => 1, + 'b' => [ + 'c' => 1, + ], + ], + [], + [ + 'a' => 1, + 'b' => [ + 'c' => 1, + ], + ], + ]; + + yield 'with nested base & nested merge array' => [ + [ + 'a' => 1, + 'b' => [ + 'c' => 1, + ], + ], + [ + 'a' => [ + 'b' => 1, + ], + ], + [ + 'a' => 1, + 'b' => [ + 'c' => 1, + ], + ], + ]; + } +} diff --git a/tests/unit/Traits/DataProvider/Mage/Core/Helper/DataTrait.php b/tests/unit/Traits/DataProvider/Mage/Core/Helper/DataTrait.php new file mode 100644 index 00000000000..47a1b69aff6 --- /dev/null +++ b/tests/unit/Traits/DataProvider/Mage/Core/Helper/DataTrait.php @@ -0,0 +1,94 @@ +getTimestamp(); + $dateShort = date('n/j/Y', $date); + $dateLong = date('F j, Y', $date); + $dateShortTime = date('n/j/Y g:i A', $date); + + yield 'null' => [ + $dateShort, + null, + ]; + yield 'empty date' => [ + $dateShort, + '', + ]; + yield 'string date' => [ + $dateShort, + 'now', + ]; + yield 'numeric date' => [ + $dateShort, + '0', + ]; + yield 'invalid date' => [ + '', + 'invalid', + ]; + yield 'invalid format' => [ + (string) $date, + $date, + 'invalid', + ]; + yield 'date short' => [ + $dateShort, + $date, + ]; + yield 'date long' => [ + $dateLong, + $date, + 'long', + ]; + // yield 'date short w/ time' => [ + // $dateShortTime, + // $date, + // 'short', + // true, + // ]; + } + + public function provideRemoveAccents(): Generator + { + $string = 'Ae-Ä Oe-Ö Ue-Ü ae-ä oe-ö ue-ü'; + + yield 'german false' => [ + 'Ae-A Oe-O Ue-U ae-a oe-o ue-u', + $string, + false, + ]; + yield 'german true' => [ + 'Ae-Ae Oe-Oe Ue-Ue ae-ae oe-oe ue-ue', + $string, + true, + ]; + } + + public function provideIsCountryInEUData(): Generator + { + yield 'DE true' => [ + true, + 'DE', + ]; + yield 'US false' => [ + false, + 'US', + ]; + } +} diff --git a/tests/unit/Traits/DataProvider/Mage/Core/Helper/PurifierTrait.php b/tests/unit/Traits/DataProvider/Mage/Core/Helper/PurifierTrait.php new file mode 100644 index 00000000000..5180c20265c --- /dev/null +++ b/tests/unit/Traits/DataProvider/Mage/Core/Helper/PurifierTrait.php @@ -0,0 +1,28 @@ + [ + [], + [], + ]; + yield 'string' => [ + '', + '', + ]; + } +} diff --git a/tests/unit/Traits/DataProvider/Mage/Core/Helper/UnserializeArray.php b/tests/unit/Traits/DataProvider/Mage/Core/Helper/UnserializeArray.php new file mode 100644 index 00000000000..0ce267d293a --- /dev/null +++ b/tests/unit/Traits/DataProvider/Mage/Core/Helper/UnserializeArray.php @@ -0,0 +1,38 @@ + [ + $errorMessage, + null, + ]; + yield 'empty string' => [ + $errorMessage, + '', + ]; + yield 'random string' => [ + $errorMessage, + 'abc', + ]; + yield 'valid' => [ + ['key' => 'value'], + 'a:1:{s:3:"key";s:5:"value";}', + ]; + } +} diff --git a/tests/unit/Traits/DataProvider/Mage/Core/Helper/UrlTrait.php b/tests/unit/Traits/DataProvider/Mage/Core/Helper/UrlTrait.php new file mode 100644 index 00000000000..f05afb73670 --- /dev/null +++ b/tests/unit/Traits/DataProvider/Mage/Core/Helper/UrlTrait.php @@ -0,0 +1,117 @@ + [ + 'aHR0cDovLw,,', + null, + ]; + yield 'base url' => [ + 'aHR0cHM6Ly9leGFtcGxlLmNvbQ,,', + self::$testUrlBase, + ]; + } + + public function provideAddRequestParam(): Generator + { + yield 'int key' => [ + self::$testUrlBase . '?', + self::$testUrlBase, + [0 => 'int'], + ]; + yield 'int value' => [ + self::$testUrlBase . '?int=0', + self::$testUrlBase, + ['int' => 0], + ]; + yield 'null' => [ + self::$testUrlBase . '?null', + self::$testUrlBase, + ['null' => null], + ]; + yield 'string' => [ + self::$testUrlParam, + self::$testUrlBase, + ['foo' => 'bar'], + ]; + yield 'string extend' => [ + self::$testUrlParams, + self::$testUrlParam, + ['BOO' => 'baz'], + ]; + yield 'array' => [ + self::$testUrlBase . '?key[]=subValue', + self::$testUrlBase, + ['key' => ['subKey' => 'subValue']], + ]; + } + + public function provideRemoveRequestParam(): Generator + { + yield 'remove #1' => [ + self::$testUrlBase, + self::$testUrlParam, + 'foo', + ]; + yield 'remove #2' => [ + self::$testUrlParams, + self::$testUrlParams, + 'boo', + ]; + yield 'remove #1 case sensitive' => [ + self::$testUrlParam, + self::$testUrlParam, + 'FOO', + true, + ]; + yield 'remove #2 case sensitive' => [ + self::$testUrlParam, + self::$testUrlParams, + 'BOO', + true, + ]; + yield 'not-exists' => [ + self::$testUrlParams, + self::$testUrlParams, + 'not-exists', + ]; + yield '___SID' => [ + self::$testUrlSid1, + self::$testUrlSidBoth, + '___SID', + ]; + yield 'SID' => [ + self::$testUrlSid2, + self::$testUrlSidBoth, + 'SID', + ]; + } +} diff --git a/tests/unit/Traits/DataProvider/Mage/Core/Model/AppTrait.php b/tests/unit/Traits/DataProvider/Mage/Core/Model/AppTrait.php new file mode 100644 index 00000000000..f86c1fc0cd1 --- /dev/null +++ b/tests/unit/Traits/DataProvider/Mage/Core/Model/AppTrait.php @@ -0,0 +1,40 @@ + [ + new Mage_Core_Model_Store(), + ]; + } + + public function provideGetWebsite(): Generator + { + yield 'Mage_Core_Model_Website' => [ + new Mage_Core_Model_Website(), + ]; + } + + public function provideGetGroup(): Generator + { + yield 'Mage_Core_Model_Store_Group' => [ + new Mage_Core_Model_Store_Group(), + ]; + } +} diff --git a/tests/unit/Traits/DataProvider/Mage/Core/Model/Email/Template/AbstractTrait.php b/tests/unit/Traits/DataProvider/Mage/Core/Model/Email/Template/AbstractTrait.php new file mode 100644 index 00000000000..cdcdaf17726 --- /dev/null +++ b/tests/unit/Traits/DataProvider/Mage/Core/Model/Email/Template/AbstractTrait.php @@ -0,0 +1,41 @@ + [ + true, + $_SERVER['TEST_ROOT'] . '/unit/fixtures/files/test.css', + 'css', + true, + ]; + yield 'css file exists, but empty' => [ + false, + $_SERVER['TEST_ROOT'] . '/unit/fixtures/files/test-empty.css', + 'css', + true, + ]; + yield 'css file not exists' => [ + false, + $_SERVER['TEST_ROOT'] . '/unit/fixtures/files/test.not-exist', + 'css', + false, + ]; + } +} diff --git a/tests/unit/Traits/DataProvider/Mage/Core/Model/LayoutTrait.php b/tests/unit/Traits/DataProvider/Mage/Core/Model/LayoutTrait.php new file mode 100644 index 00000000000..a761c2b6acb --- /dev/null +++ b/tests/unit/Traits/DataProvider/Mage/Core/Model/LayoutTrait.php @@ -0,0 +1,35 @@ + [ + Mage_Cms_Block_Block::class, + true, + 'cms/block', + null, + [], + ]; + yield 'not instance of Mage_Core_Block_Abstract' => [ + false, + false, + 'rule/conditions', + null, + [], + ]; + } +} diff --git a/tests/unit/Traits/DataProvider/Mage/Core/Model/SecurityTrait.php b/tests/unit/Traits/DataProvider/Mage/Core/Model/SecurityTrait.php new file mode 100644 index 00000000000..ba97d791db3 --- /dev/null +++ b/tests/unit/Traits/DataProvider/Mage/Core/Model/SecurityTrait.php @@ -0,0 +1,47 @@ +string'; + + public function provideHtmlEscapedStringAsStringData(): Generator + { + yield 'tags null' => [ + 'This is a bold <b>string</b>', + self::$testString, + null, + ]; + yield 'tags array' => [ + self::$testString, + self::$testString, + ['b'], + ]; + } + + public function provideHtmlEscapedStringGetUnescapedValueData(): Generator + { + yield 'tags null' => [ + self::$testString, + self::$testString, + null, + ]; + yield 'tags array' => [ + self::$testString, + self::$testString, + ['some-invalid-value'], + ]; + } +} diff --git a/tests/unit/Traits/DataProvider/Mage/Customer/CustomerTrait.php b/tests/unit/Traits/DataProvider/Mage/Customer/CustomerTrait.php new file mode 100644 index 00000000000..43db8f21308 --- /dev/null +++ b/tests/unit/Traits/DataProvider/Mage/Customer/CustomerTrait.php @@ -0,0 +1,123 @@ + 'John', + 'getLastname' => 'Doe', + 'getEmail' => 'john.doe@example.com', + 'getPassword' => 'validpassword123', + 'getPasswordConfirmation' => 'validpassword123', + 'getDob' => '1980-01-01', + 'getTaxvat' => '123456789', + 'getGender' => '1', + 'shouldValidateDob' => false, + 'shouldValidateTaxvat' => false, + 'shouldValidateGender' => false, + ]; + + yield 'valid data' => [ + true, + $validCustomer, + ]; + + $data = $validCustomer; + $data['getFirstname'] = ''; + yield 'missing firstname' => [ + ['The first name cannot be empty.'], + $data, + ]; + + $data = $validCustomer; + $data['getLastname'] = ''; + yield 'missing lastname' => [ + ['The last name cannot be empty.'], + $data, + ]; + + $data = $validCustomer; + $data['getEmail'] = ''; + yield 'missing email' => [ + ['Invalid email address "".'], + $data, + ]; + + $data = $validCustomer; + $data['getEmail'] = 'invalid-email'; + yield 'invalid email' => [ + ['Invalid email address "invalid-email".'], + $data, + ]; + + $data = $validCustomer; + $data['getPasswordConfirmation'] = 'differentpassword'; + yield 'passwords do not match' => [ + ['Please make sure your passwords match.'], + $data, + ]; + + $data = $validCustomer; + $password = '123'; + $data['getPassword'] = $password; + $data['getPasswordConfirmation'] = $password; + yield 'passwords to short' => [ + ['The minimum password length is 7'], + $data, + ]; + + $data = $validCustomer; + $password = str_repeat('x', 257); + $data['getPassword'] = $password; + $data['getPasswordConfirmation'] = $password; + yield 'passwords to long' => [ + ['Please enter a password with at most 256 characters.'], + $data, + ]; + + $data = $validCustomer; + $data['getDob'] = ''; + $data['shouldValidateDob'] = true; + yield 'missing dob' => [ + true, # ['The Date of Birth is required.'], + $data, + ]; + + $data = $validCustomer; + $data['getDob'] = 'abc'; + $data['shouldValidateDob'] = true; + yield 'invalid dob' => [ + true, # ['This value is not a valid date.'], + $data, + ]; + + $data = $validCustomer; + $data['getTaxvat'] = ''; + $data['shouldValidateTaxvat'] = true; + yield 'missing taxvat' => [ + true, # ['The TAX/VAT number is required.'], + $data, + ]; + + $data = $validCustomer; + $data['getGender'] = ''; + $data['shouldValidateGender'] = true; + yield 'missing gender' => [ + true, # ['Gender is required.'], + $data, + ]; + } +} diff --git a/tests/unit/Traits/DataProvider/Mage/Directory/DirectoryTrait.php b/tests/unit/Traits/DataProvider/Mage/Directory/DirectoryTrait.php new file mode 100644 index 00000000000..ef836421e29 --- /dev/null +++ b/tests/unit/Traits/DataProvider/Mage/Directory/DirectoryTrait.php @@ -0,0 +1,59 @@ + [ + '["HK","IE","MO","PA"]', + true, + ]; + yield 'as array' => [ + [ + 0 => 'HK', + 1 => 'IE', + 2 => 'MO', + 3 => 'PA', + ], + false, + ]; + } + + + public function provideGetCountriesWithStatesRequired(): Generator + { + yield 'as json' => [ + '["AT","CA","CH","DE","EE","ES","FI","FR","LT","LV","RO","US"]', + true, + ]; + yield 'as array' => [ + [ + 0 => 'AT', + 1 => 'CA', + 2 => 'CH', + 3 => 'DE', + 4 => 'EE', + 5 => 'ES', + 6 => 'FI', + 7 => 'FR', + 8 => 'LT', + 9 => 'LV', + 10 => 'RO', + 11 => 'US', + ], + false, + ]; + } +} diff --git a/tests/unit/Traits/DataProvider/Mage/Downloadable/DownloadableTrait.php b/tests/unit/Traits/DataProvider/Mage/Downloadable/DownloadableTrait.php index a1c75389603..44ae9ee47d6 100644 --- a/tests/unit/Traits/DataProvider/Mage/Downloadable/DownloadableTrait.php +++ b/tests/unit/Traits/DataProvider/Mage/Downloadable/DownloadableTrait.php @@ -1,16 +1,9 @@ [ + Subject::TYPE_ADDRESS_ITEM, + $entity, + ]; + yield Subject::TYPE_ITEM => [ + Subject::TYPE_ITEM, + $entity->setData('product', new Mage_Catalog_Model_Product()), + ]; + yield Subject::TYPE_ITEMS => [ + Subject::TYPE_ITEMS, + $entity, + ]; + yield Subject::TYPE_ORDER => [ + Subject::TYPE_ORDER, + $entity, + ]; + yield Subject::TYPE_ORDER_ITEM => [ + Subject::TYPE_ORDER_ITEM, + $entity, + ]; + yield 'invalid type' => [ + 'quote', + $entity, + ]; + } +} diff --git a/tests/unit/Traits/DataProvider/Mage/Index/Block/Adminhtml/Process/GridTrait.php b/tests/unit/Traits/DataProvider/Mage/Index/Block/Adminhtml/Process/GridTrait.php new file mode 100644 index 00000000000..887cd796f3b --- /dev/null +++ b/tests/unit/Traits/DataProvider/Mage/Index/Block/Adminhtml/Process/GridTrait.php @@ -0,0 +1,49 @@ + [ + Mage_Adminhtml_Block_Widget_Grid::CSS_SEVERITY_NOTICE, + Mage_Index_Model_Process::STATUS_PENDING, + ]; + + yield 'working' => [ + Mage_Adminhtml_Block_Widget_Grid::CSS_SEVERITY_MAJOR, + Mage_Index_Model_Process::STATUS_RUNNING, + ]; + + yield 'require reindex' => [ + Mage_Adminhtml_Block_Widget_Grid::CSS_SEVERITY_CRITICAL, + Mage_Index_Model_Process::STATUS_REQUIRE_REINDEX, + ]; + } + + public function provideDecorateUpdateRequiredData(): Generator + { + yield 'no' => [ + Mage_Adminhtml_Block_Widget_Grid::CSS_SEVERITY_NOTICE, + 0, + ]; + + yield 'yes' => [ + Mage_Adminhtml_Block_Widget_Grid::CSS_SEVERITY_CRITICAL, + 1, + ]; + } +} diff --git a/tests/unit/Traits/DataProvider/Mage/Log/Helper/DataTrait.php b/tests/unit/Traits/DataProvider/Mage/Log/Helper/DataTrait.php new file mode 100644 index 00000000000..c80ef3e2b1d --- /dev/null +++ b/tests/unit/Traits/DataProvider/Mage/Log/Helper/DataTrait.php @@ -0,0 +1,28 @@ + [ + true, + 'valid.log', + ]; + yield 'invalid' => [ + false, + 'invalid.file', + ]; + } +} diff --git a/tests/unit/Traits/DataProvider/Mage/Log/Model/CustomerTrait.php b/tests/unit/Traits/DataProvider/Mage/Log/Model/CustomerTrait.php new file mode 100644 index 00000000000..0f827e93def --- /dev/null +++ b/tests/unit/Traits/DataProvider/Mage/Log/Model/CustomerTrait.php @@ -0,0 +1,32 @@ + [ + true, + [ + 'getLoginAt' => true, + ], + ]; + yield 'invalid' => [ + false, + [ + 'getLoginAt' => false, + ], + ]; + } +} diff --git a/tests/unit/Traits/DataProvider/Mage/Reports/ReportsTrait.php b/tests/unit/Traits/DataProvider/Mage/Reports/ReportsTrait.php index 8004b58e917..dfde13394c9 100644 --- a/tests/unit/Traits/DataProvider/Mage/Reports/ReportsTrait.php +++ b/tests/unit/Traits/DataProvider/Mage/Reports/ReportsTrait.php @@ -1,16 +1,9 @@ [ - 0, + 'No date part in \'\' found.', '', self::$dateFirstDay, Mage_Reports_Helper_Data::REPORT_PERIOD_TYPE_DAY, ]; - if (!defined('DATA_MAY_CHANGED')) { - yield $prefix . 'no to' => [ - 0, - self::$dateFirstDay, - '', - Mage_Reports_Helper_Data::REPORT_PERIOD_TYPE_DAY, - ]; - } + yield $prefix . 'no to' => [ + 'No date part in \'\' found.', + self::$dateFirstDay, + '', + Mage_Reports_Helper_Data::REPORT_PERIOD_TYPE_DAY, + ]; yield $prefix . 'same day' => [ 1, diff --git a/tests/unit/Traits/DataProvider/Mage/Review/ReviewTrait.php b/tests/unit/Traits/DataProvider/Mage/Review/ReviewTrait.php new file mode 100644 index 00000000000..724aa0ccb57 --- /dev/null +++ b/tests/unit/Traits/DataProvider/Mage/Review/ReviewTrait.php @@ -0,0 +1,54 @@ + 'Great product', + 'getDetail' => 'I really liked this product.', + 'getNickname' => 'JohnDoe', + 'getCustomerId' => 1, + 'getEntityId' => 1, + 'getStoreId' => 1, + ]; + + yield 'valid data' => [ + true, + $validReview, + ]; + + $data = $validReview; + $data['getTitle'] = ''; + yield 'missing title' => [ + ['Review summary can\'t be empty'], + $data, + ]; + + $data = $validReview; + $data['getDetail'] = ''; + yield 'missing detail' => [ + ['Review can\'t be empty'], + $data, + ]; + + $data = $validReview; + $data['getNickname'] = ''; + yield 'missing nickname' => [ + ['Nickname can\'t be empty'], + $data, + ]; + } +} diff --git a/tests/unit/Traits/DataProvider/Mage/Rule/RuleTrait.php b/tests/unit/Traits/DataProvider/Mage/Rule/RuleTrait.php index 9aeb560c67d..475a8881fe5 100644 --- a/tests/unit/Traits/DataProvider/Mage/Rule/RuleTrait.php +++ b/tests/unit/Traits/DataProvider/Mage/Rule/RuleTrait.php @@ -1,16 +1,9 @@ [ [ - 0 => 'End Date must be greater than Start Date.', + 'End Date must be greater than Start Date.', ], [ 'from_date' => '2', @@ -52,7 +45,7 @@ public function provideValidateData(): Generator ]; yield 'object with empty website ids' => [ [ - 0 => 'Websites must be specified.', + 'Websites must be specified.', ], [ 'website_ids' => '', @@ -66,7 +59,7 @@ public function provideValidateData(): Generator ]; yield 'object with empty customer group ids' => [ [ - 0 => 'Customer Groups must be specified.', + 'Customer Groups must be specified.', ], [ 'customer_group_ids' => '', diff --git a/tests/unit/Traits/DataProvider/Mage/Sitemap/SitemapTrait.php b/tests/unit/Traits/DataProvider/Mage/Sitemap/SitemapTrait.php new file mode 100644 index 00000000000..fe019ce3ac2 --- /dev/null +++ b/tests/unit/Traits/DataProvider/Mage/Sitemap/SitemapTrait.php @@ -0,0 +1,35 @@ + [ + [ + 'getSitemapFilename' => 'text.xml', + ], + ]; + } + + public function provideGenerateXmlData(): Generator + { + yield 'default' => [ + [ + 'isDeleted' => true, # do not save to DB + 'getSitemapFilename' => '???phpunit.sitemap.xml', + ], + ]; + } +} diff --git a/tests/unit/Traits/DataProvider/Mage/Tax/TaxTrait.php b/tests/unit/Traits/DataProvider/Mage/Tax/TaxTrait.php new file mode 100644 index 00000000000..2a0e077f912 --- /dev/null +++ b/tests/unit/Traits/DataProvider/Mage/Tax/TaxTrait.php @@ -0,0 +1,40 @@ + [ + 'Incl. Tax', + true, + ]; + yield 'false' => [ + 'Excl. Tax', + false, + ]; + } + + public function provideGetIncExcTaxLabel(): Generator + { + yield 'true' => [ + '(Incl. Tax)', + true, + ]; + yield 'false' => [ + '(Excl. Tax)', + false, + ]; + } +} diff --git a/tests/unit/Traits/DataProvider/Mage/Uploader/UploaderTrait.php b/tests/unit/Traits/DataProvider/Mage/Uploader/UploaderTrait.php index f18ca435a37..928244d24ad 100644 --- a/tests/unit/Traits/DataProvider/Mage/Uploader/UploaderTrait.php +++ b/tests/unit/Traits/DataProvider/Mage/Uploader/UploaderTrait.php @@ -1,16 +1,9 @@ [ + '1M', + [ + 'getPostMaxSize' => '1G', + 'getUploadMaxSize' => '1M', + ], + ]; + yield 'larger upload max size' => [ + '1M', + [ + 'getPostMaxSize' => '1M', + 'getUploadMaxSize' => '1G', + ], + ]; + } + public function provideGetDataMaxSizeInBytesData(): Generator { yield 'no unit' => [ 1024, - '1024', + [ + 'getDataMaxSize' => '1024', + ], ]; yield 'kilobyte' => [ 1024, - '1K', + [ + 'getDataMaxSize' => '1K', + ], ]; yield 'megabyte' => [ 1048576, - '1M', + [ + 'getDataMaxSize' => '1M', + ], ]; yield 'gigabyte' => [ 1073741824, - '1G', + [ + 'getDataMaxSize' => '1G', + ], ]; } } diff --git a/tests/unit/Varien/Data/Form/Filter/DateTest.php b/tests/unit/Varien/Data/Form/Filter/DateTest.php index ef118d79732..f84a004ca1a 100644 --- a/tests/unit/Varien/Data/Form/Filter/DateTest.php +++ b/tests/unit/Varien/Data/Form/Filter/DateTest.php @@ -39,11 +39,11 @@ public function setUp(): void public function testInputFilter(?string $expectedResult, ?string $value): void { try { - $this->assertSame($expectedResult, $this->subject->inputFilter($value)); + static::assertSame($expectedResult, $this->subject->inputFilter($value)); } catch (Throwable $e) { // PHP7: bcsub(): bcmath function argument is not well-formed // PHP8: bcsub(): Argument #1 ($num1) is not well-formed - $this->assertStringStartsWith((string) $expectedResult, $e->getMessage()); + static::assertStringStartsWith((string) $expectedResult, $e->getMessage()); } } diff --git a/tests/unit/Varien/Data/Form/Filter/DatetimeTest.php b/tests/unit/Varien/Data/Form/Filter/DatetimeTest.php index 77c35961022..30c68978de7 100644 --- a/tests/unit/Varien/Data/Form/Filter/DatetimeTest.php +++ b/tests/unit/Varien/Data/Form/Filter/DatetimeTest.php @@ -39,11 +39,11 @@ public function setUp(): void public function testInputFilter(?string $expectedResult, ?string $value): void { try { - $this->assertSame($expectedResult, $this->subject->inputFilter($value)); + static::assertSame($expectedResult, $this->subject->inputFilter($value)); } catch (Throwable $e) { // PHP7: bcsub(): bcmath function argument is not well-formed // PHP8: bcsub(): Argument #1 ($num1) is not well-formed - $this->assertStringStartsWith((string) $expectedResult, $e->getMessage()); + static::assertStringStartsWith((string) $expectedResult, $e->getMessage()); } } diff --git a/tests/unit/Varien/Db/Adapter/Pdo/MysqlTest.php b/tests/unit/Varien/Db/Adapter/Pdo/MysqlTest.php index 34a4858ab39..0f70d600885 100644 --- a/tests/unit/Varien/Db/Adapter/Pdo/MysqlTest.php +++ b/tests/unit/Varien/Db/Adapter/Pdo/MysqlTest.php @@ -60,10 +60,10 @@ public function testGetHostInfoWithUnixSocket(): void /** @var Varien_Object $hostInfo */ $hostInfo = $method->invoke($this->adapter, $fakeSocket); - $this->assertSame(Varien_Db_Adapter_Pdo_Mysql::ADDRESS_TYPE_UNIX_SOCKET, $hostInfo->getAddressType()); - $this->assertSame($fakeSocket, $hostInfo->getUnixSocket()); - $this->assertNull($hostInfo->getHostName()); - $this->assertNull($hostInfo->getPort()); + static::assertSame(Varien_Db_Adapter_Pdo_Mysql::ADDRESS_TYPE_UNIX_SOCKET, $hostInfo->getAddressType()); + static::assertSame($fakeSocket, $hostInfo->getUnixSocket()); + static::assertNull($hostInfo->getHostName()); + static::assertNull($hostInfo->getPort()); } /** @@ -77,10 +77,10 @@ public function testGetHostInfoWithIpv4Address(): void /** @var Varien_Object $hostInfo */ $hostInfo = $method->invoke($this->adapter, '192.168.1.1:3306'); - $this->assertSame(Varien_Db_Adapter_Pdo_Mysql::ADDRESS_TYPE_IPV4_ADDRESS, $hostInfo->getAddressType()); - $this->assertSame('192.168.1.1', $hostInfo->getHostName()); - $this->assertSame('3306', $hostInfo->getPort()); - $this->assertNull($hostInfo->getUnixSocket()); + static::assertSame(Varien_Db_Adapter_Pdo_Mysql::ADDRESS_TYPE_IPV4_ADDRESS, $hostInfo->getAddressType()); + static::assertSame('192.168.1.1', $hostInfo->getHostName()); + static::assertSame('3306', $hostInfo->getPort()); + static::assertNull($hostInfo->getUnixSocket()); } /** @@ -94,10 +94,10 @@ public function testGetHostInfoWithIpv4AddressWithoutPort(): void /** @var Varien_Object $hostInfo */ $hostInfo = $method->invoke($this->adapter, '192.168.1.1'); - $this->assertSame(Varien_Db_Adapter_Pdo_Mysql::ADDRESS_TYPE_IPV4_ADDRESS, $hostInfo->getAddressType()); - $this->assertSame('192.168.1.1', $hostInfo->getHostName()); - $this->assertNull($hostInfo->getPort()); - $this->assertNull($hostInfo->getUnixSocket()); + static::assertSame(Varien_Db_Adapter_Pdo_Mysql::ADDRESS_TYPE_IPV4_ADDRESS, $hostInfo->getAddressType()); + static::assertSame('192.168.1.1', $hostInfo->getHostName()); + static::assertNull($hostInfo->getPort()); + static::assertNull($hostInfo->getUnixSocket()); } /** @@ -111,10 +111,10 @@ public function testGetHostInfoWithHostname(): void /** @var Varien_Object $hostInfo */ $hostInfo = $method->invoke($this->adapter, 'db.example.com:3306'); - $this->assertSame(Varien_Db_Adapter_Pdo_Mysql::ADDRESS_TYPE_HOSTNAME, $hostInfo->getAddressType()); - $this->assertSame('db.example.com', $hostInfo->getHostName()); - $this->assertSame('3306', $hostInfo->getPort()); - $this->assertNull($hostInfo->getUnixSocket()); + static::assertSame(Varien_Db_Adapter_Pdo_Mysql::ADDRESS_TYPE_HOSTNAME, $hostInfo->getAddressType()); + static::assertSame('db.example.com', $hostInfo->getHostName()); + static::assertSame('3306', $hostInfo->getPort()); + static::assertNull($hostInfo->getUnixSocket()); } /** @@ -128,10 +128,10 @@ public function testGetHostInfoWithHostnameWithoutPort(): void /** @var Varien_Object $hostInfo */ $hostInfo = $method->invoke($this->adapter, 'db.example.com'); - $this->assertSame(Varien_Db_Adapter_Pdo_Mysql::ADDRESS_TYPE_HOSTNAME, $hostInfo->getAddressType()); - $this->assertSame('db.example.com', $hostInfo->getHostName()); - $this->assertNull($hostInfo->getPort()); - $this->assertNull($hostInfo->getUnixSocket()); + static::assertSame(Varien_Db_Adapter_Pdo_Mysql::ADDRESS_TYPE_HOSTNAME, $hostInfo->getAddressType()); + static::assertSame('db.example.com', $hostInfo->getHostName()); + static::assertNull($hostInfo->getPort()); + static::assertNull($hostInfo->getUnixSocket()); } /** @@ -145,10 +145,10 @@ public function testGetHostInfoWithIpv6Address(): void /** @var Varien_Object $hostInfo */ $hostInfo = $method->invoke($this->adapter, '[2001:db8::1]:3306'); - $this->assertSame(Varien_Db_Adapter_Pdo_Mysql::ADDRESS_TYPE_IPV6_ADDRESS, $hostInfo->getAddressType()); - $this->assertSame('2001:db8::1', $hostInfo->getHostName()); - $this->assertSame('3306', $hostInfo->getPort()); - $this->assertNull($hostInfo->getUnixSocket()); + static::assertSame(Varien_Db_Adapter_Pdo_Mysql::ADDRESS_TYPE_IPV6_ADDRESS, $hostInfo->getAddressType()); + static::assertSame('2001:db8::1', $hostInfo->getHostName()); + static::assertSame('3306', $hostInfo->getPort()); + static::assertNull($hostInfo->getUnixSocket()); } /** @@ -162,10 +162,10 @@ public function testGetHostInfoWithIpv6AddressWithoutPort(): void /** @var Varien_Object $hostInfo */ $hostInfo = $method->invoke($this->adapter, '2001:db8::1'); - $this->assertSame(Varien_Db_Adapter_Pdo_Mysql::ADDRESS_TYPE_IPV6_ADDRESS, $hostInfo->getAddressType()); - $this->assertSame('2001:db8::1', $hostInfo->getHostName()); - $this->assertNull($hostInfo->getPort()); - $this->assertNull($hostInfo->getUnixSocket()); + static::assertSame(Varien_Db_Adapter_Pdo_Mysql::ADDRESS_TYPE_IPV6_ADDRESS, $hostInfo->getAddressType()); + static::assertSame('2001:db8::1', $hostInfo->getHostName()); + static::assertNull($hostInfo->getPort()); + static::assertNull($hostInfo->getUnixSocket()); } /** @@ -179,10 +179,10 @@ public function testGetHostInfoWithIpv6AddressWithZoneId(): void /** @var Varien_Object $hostInfo */ $hostInfo = $method->invoke($this->adapter, '[fe80::1%eth0]:3306'); - $this->assertSame(Varien_Db_Adapter_Pdo_Mysql::ADDRESS_TYPE_IPV6_ADDRESS, $hostInfo->getAddressType()); - $this->assertSame('fe80::1%eth0', $hostInfo->getHostName()); - $this->assertSame('3306', $hostInfo->getPort()); - $this->assertNull($hostInfo->getUnixSocket()); + static::assertSame(Varien_Db_Adapter_Pdo_Mysql::ADDRESS_TYPE_IPV6_ADDRESS, $hostInfo->getAddressType()); + static::assertSame('fe80::1%eth0', $hostInfo->getHostName()); + static::assertSame('3306', $hostInfo->getPort()); + static::assertNull($hostInfo->getUnixSocket()); } /** @@ -196,9 +196,9 @@ public function testGetHostInfoWithIpv6AddressWithZoneIdWithoutPort(): void /** @var Varien_Object $hostInfo */ $hostInfo = $method->invoke($this->adapter, 'fe80::1%eth0'); - $this->assertSame(Varien_Db_Adapter_Pdo_Mysql::ADDRESS_TYPE_IPV6_ADDRESS, $hostInfo->getAddressType()); - $this->assertSame('fe80::1%eth0', $hostInfo->getHostName()); - $this->assertNull($hostInfo->getPort()); - $this->assertNull($hostInfo->getUnixSocket()); + static::assertSame(Varien_Db_Adapter_Pdo_Mysql::ADDRESS_TYPE_IPV6_ADDRESS, $hostInfo->getAddressType()); + static::assertSame('fe80::1%eth0', $hostInfo->getHostName()); + static::assertNull($hostInfo->getPort()); + static::assertNull($hostInfo->getUnixSocket()); } } diff --git a/tests/unit/Varien/ObjectTest.php b/tests/unit/Varien/ObjectTest.php index 919c38fb661..76997f0bfdd 100644 --- a/tests/unit/Varien/ObjectTest.php +++ b/tests/unit/Varien/ObjectTest.php @@ -44,7 +44,7 @@ public function setUp(): void public function testGetData($expectedResult, $setKey, $setValue, string $key, $index = null): void { $this->subject->setData($setKey, $setValue); - $this->assertSame($expectedResult, $this->subject->getData($key, $index)); + static::assertSame($expectedResult, $this->subject->getData($key, $index)); } public function provideGetDataData(): Generator @@ -176,7 +176,7 @@ public function testToString(string $expectedResult, string $format): void $this->subject->setString2('two'); $this->subject->setString3('three'); - $this->assertSame($expectedResult, $this->subject->toString($format)); + static::assertSame($expectedResult, $this->subject->toString($format)); } public function provideToString(): Generator @@ -200,7 +200,7 @@ public function provideToString(): Generator */ public function testGetSetUnsData(): void { - $this->assertTrue($this->subject->isEmpty()); + static::assertTrue($this->subject->isEmpty()); $this->subject->setABC('abc'); $this->subject->setData('efg', 'efg'); $this->subject->set123('123'); @@ -209,46 +209,46 @@ public function testGetSetUnsData(): void $this->subject->setData('key_a_2nd', 'value_a_2nd'); $this->subject->setKeyA3rd('value_a_3rd'); $this->subject->setData('left', 'over'); - $this->assertFalse($this->subject->isEmpty()); + static::assertFalse($this->subject->isEmpty()); - $this->assertSame('abc', $this->subject->getData('a_b_c')); - $this->assertSame('abc', $this->subject->getABC()); + static::assertSame('abc', $this->subject->getData('a_b_c')); + static::assertSame('abc', $this->subject->getABC()); $this->subject->unsetData('a_b_c'); - $this->assertSame('efg', $this->subject->getData('efg')); - $this->assertSame('efg', $this->subject->getEfg()); + static::assertSame('efg', $this->subject->getData('efg')); + static::assertSame('efg', $this->subject->getEfg()); $this->subject->unsEfg(); - $this->assertSame('123', $this->subject->getData('123')); - $this->assertSame('123', $this->subject->get123()); + static::assertSame('123', $this->subject->getData('123')); + static::assertSame('123', $this->subject->get123()); $this->subject->uns123(); $this->subject->unsetData('345'); - $this->assertSame('value_a_first', $this->subject->getData('key_a_first')); - $this->assertSame('value_a_first', $this->subject->getKeyAFirst()); + static::assertSame('value_a_first', $this->subject->getData('key_a_first')); + static::assertSame('value_a_first', $this->subject->getKeyAFirst()); $this->subject->unsetData('key_a_first'); - $this->assertSame('value_a_2nd', $this->subject->getData('key_a_2nd')); - $this->assertSame('value_a_2nd', $this->subject->getKeyA_2nd()); + static::assertSame('value_a_2nd', $this->subject->getData('key_a_2nd')); + static::assertSame('value_a_2nd', $this->subject->getKeyA_2nd()); $this->subject->unsetData('key_a_2nd'); - $this->assertSame('value_a_3rd', $this->subject->getData('key_a3rd')); - $this->assertSame('value_a_3rd', $this->subject->getKeyA3rd()); + static::assertSame('value_a_3rd', $this->subject->getData('key_a3rd')); + static::assertSame('value_a_3rd', $this->subject->getKeyA3rd()); $this->subject->unsetData('key_a3rd'); - $this->assertSame(['left' => 'over'], $this->subject->getData()); + static::assertSame(['left' => 'over'], $this->subject->getData()); $this->subject->unsetData(); - $this->assertSame([], $this->subject->getData()); - $this->assertTrue($this->subject->isEmpty()); + static::assertSame([], $this->subject->getData()); + static::assertTrue($this->subject->isEmpty()); try { /** @phpstan-ignore-next-line */ $this->subject->notData(); - $this->fail('Invalid __call'); + static::fail('Invalid __call'); } catch (Varien_Exception $exception) { - $this->assertStringStartsWith('Invalid method', $exception->getMessage()); + static::assertStringStartsWith('Invalid method', $exception->getMessage()); } } @@ -257,14 +257,14 @@ public function testGetSetUnsData(): void */ public function testOffset(): void { - $this->assertFalse($this->subject->offsetExists('off')); + static::assertFalse($this->subject->offsetExists('off')); $this->subject->offsetSet('off', 'set'); - $this->assertTrue($this->subject->offsetExists('off')); - $this->assertSame('set', $this->subject->offsetGet('off')); - $this->assertNull($this->subject->offsetGet('not-exists')); + static::assertTrue($this->subject->offsetExists('off')); + static::assertSame('set', $this->subject->offsetGet('off')); + static::assertNull($this->subject->offsetGet('not-exists')); $this->subject->offsetUnset('off'); - $this->assertFalse($this->subject->offsetExists('off')); + static::assertFalse($this->subject->offsetExists('off')); } } diff --git a/tests/unit/fixtures/files/test-empty.css b/tests/unit/fixtures/files/test-empty.css new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/unit/fixtures/files/test.css b/tests/unit/fixtures/files/test.css new file mode 100644 index 00000000000..0043c3bd95c --- /dev/null +++ b/tests/unit/fixtures/files/test.css @@ -0,0 +1 @@ +/* test */