Skip to content

Commit 7287475

Browse files
committed
ACP2E-3712: fix failing unit tests
1 parent eb491c0 commit 7287475

File tree

7 files changed

+93
-31
lines changed

7 files changed

+93
-31
lines changed

lib/internal/Magento/Framework/Config/Test/Unit/XsdTest.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ class XsdTest extends TestCase
1717
* @param string $invalidXmlFile
1818
* @param int $expectedErrorsQty
1919
* @dataProvider invalidXmlFileDataProvider
20+
* @throws \Exception
2021
*/
2122
public function testInvalidXmlFile($xsdFile, $invalidXmlFile, $expectedErrorsQty)
2223
{
@@ -43,6 +44,6 @@ public function testInvalidXmlFile($xsdFile, $invalidXmlFile, $expectedErrorsQty
4344
*/
4445
public static function invalidXmlFileDataProvider()
4546
{
46-
return [['view.xsd', 'view_invalid.xml', 8], ['theme.xsd', 'theme_invalid.xml', 1]];
47+
return [['view.xsd', 'view_invalid.xml', 10], ['theme.xsd', 'theme_invalid.xml', 1]];
4748
}
4849
}

lib/internal/Magento/Framework/Config/Test/Unit/_files/view_invalid.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,17 @@
1616
<image id="test" type="valid"/>
1717
<image id="test" type="valid_image"/>
1818
<image id="test" type="valid_image_type"/>
19+
<image id="test" type="ii"/>
20+
<image id="test" type="i_i"/>
21+
<image id="test" type="i_i_i"/>
1922
<!-- Invalid image type values -->
2023
<image id="test" type="_invalid_image_type"/>
2124
<image id="test" type="invalid-image"/>
2225
<image id="test" type="Invalid"/>
2326
<image id="test" type="invalid_"/>
2427
<image id="test" type="invalid__image"/>
2528
<image id="test" type="i"/>
29+
<image id="test" type="i_"/>
2630
<image id="test" type="?invalid"/>
2731
<image id="test" type="123"/>
2832
</images>

lib/internal/Magento/Framework/Config/etc/view.xsd

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@
7979
<xs:simpleType>
8080
<xs:restriction base="xs:string">
8181
<xs:pattern value="[a-z]+(_?[a-z])+"/>
82+
<xs:minLength value="2"/>
8283
</xs:restriction>
8384
</xs:simpleType>
8485
</xs:union>

setup/src/Magento/Setup/Test/Unit/Model/UninstallCollectorTest.php

Lines changed: 52 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,11 @@
77

88
namespace Magento\Setup\Test\Unit\Model;
99

10+
use Magento\Setup\Model\FunctionOverrides;
1011
use Magento\Setup\Model\UninstallCollector;
1112

13+
// phpcs:disable PSR1.Classes.ClassDeclaration
14+
// phpcs:disable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
1215
class UninstallCollectorTest extends \PHPUnit\Framework\TestCase
1316
{
1417
/**
@@ -28,6 +31,7 @@ class UninstallCollectorTest extends \PHPUnit\Framework\TestCase
2831

2932
protected function setUp(): void
3033
{
34+
FunctionOverrides::enable();
3135
$objectManagerProvider = $this->createMock(\Magento\Setup\Model\ObjectManagerProvider::class);
3236
$objectManager =
3337
$this->getMockForAbstractClass(\Magento\Framework\ObjectManagerInterface::class, [], '', false);
@@ -86,6 +90,11 @@ public function testUninstallCollectorWithInput()
8690

8791
$this->assertEquals(['Magento_A' => 'Uninstall Class A'], $this->collector->collectUninstall(['Magento_A']));
8892
}
93+
public function tearDown(): void
94+
{
95+
FunctionOverrides::disable();
96+
parent::tearDown();
97+
}
8998
}
9099

91100
namespace Magento\Setup\Model;
@@ -99,13 +108,7 @@ public function testUninstallCollectorWithInput()
99108
*/
100109
function is_subclass_of($obj, $className)
101110
{
102-
if ($obj == 'Uninstall Class A' && $className == \Magento\Framework\Setup\UninstallInterface::class) {
103-
return true;
104-
}
105-
if ($obj == 'Uninstall Class B' && $className == \Magento\Framework\Setup\UninstallInterface::class) {
106-
return true;
107-
}
108-
return false;
111+
return FunctionOverrides::is_subclass_of($obj, $className);
109112
}
110113

111114
/**
@@ -116,8 +119,47 @@ function is_subclass_of($obj, $className)
116119
*/
117120
function class_exists($className)
118121
{
119-
if ($className == 'Magento\A\Setup\Uninstall' || $className == 'Magento\B\Setup\Uninstall') {
120-
return true;
122+
return FunctionOverrides::class_exists($className);
123+
}
124+
125+
/**
126+
* This class is used to override the native functions for the purpose of testing
127+
*/
128+
class FunctionOverrides
129+
{
130+
/**
131+
* @var bool
132+
*/
133+
private static bool $enabled = false;
134+
public static function enable(): void
135+
{
136+
self::$enabled = true;
137+
}
138+
public static function disable(): void
139+
{
140+
self::$enabled = false;
141+
}
142+
public static function is_subclass_of($obj, $className): bool
143+
{
144+
if (!self::$enabled) {
145+
return \is_subclass_of($obj, $className);
146+
}
147+
if ($obj == 'Uninstall Class A' && $className == \Magento\Framework\Setup\UninstallInterface::class) {
148+
return true;
149+
}
150+
if ($obj == 'Uninstall Class B' && $className == \Magento\Framework\Setup\UninstallInterface::class) {
151+
return true;
152+
}
153+
return false;
154+
}
155+
public static function class_exists($className): bool
156+
{
157+
if (!self::$enabled) {
158+
return \class_exists($className);
159+
}
160+
if ($className == 'Magento\A\Setup\Uninstall' || $className == 'Magento\B\Setup\Uninstall') {
161+
return true;
162+
}
163+
return false;
121164
}
122-
return false;
123165
}

setup/src/Magento/Setup/Test/Unit/Module/Di/Code/Scanner/PhpScannerTest.php

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?php
22
/**
3-
* Copyright © Magento, Inc. All rights reserved.
4-
* See COPYING.txt for license details.
3+
* Copyright 2025 Adobe.
4+
* All Rights Reserved.
55
*/
66
declare(strict_types=1);
77

@@ -71,15 +71,19 @@ public function testCollectEntities(): void
7171

7272
$this->log
7373
->method('add')
74-
->willReturnCallback(
75-
function ($arg1, $arg2, $arg3) {
76-
if ($arg1 == 4 && $arg2 == 'Magento\SomeModule\Module\Factory') {
77-
return null;
78-
} elseif ($arg1 == 4 && $arg2 == 'Magento\SomeModule\Element\Factory') {
79-
return null;
80-
}
74+
->willReturnCallback(function ($arg1, $arg2, $arg3) use ($testFiles) {
75+
if ($arg1 == 4 && $arg2 == 'Magento\SomeModule\Module\Factory'
76+
&& $arg3 == 'Invalid Factory for nonexistent class Magento\SomeModule\Module in file '
77+
. $testFiles[0]
78+
) {
79+
return null;
80+
} elseif ($arg1 == 4 && $arg2 == 'Magento\SomeModule\Element\Factory'
81+
&& $arg3 == 'Invalid Factory declaration for class Magento\SomeModule\Element in file '
82+
. $testFiles[0]
83+
) {
84+
return null;
8185
}
82-
);
86+
});
8387

8488
$result = $this->scanner->collectEntities($testFiles);
8589

setup/src/Magento/Setup/Test/Unit/Module/Di/Code/Scanner/XmlScannerTest.php

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?php
22
/**
3-
* Copyright © Magento, Inc. All rights reserved.
4-
* See COPYING.txt for license details.
3+
* Copyright 2025 Adobe.
4+
* All Rights Reserved.
55
*/
66
declare(strict_types=1);
77

@@ -52,8 +52,9 @@ protected function setUp(): void
5252
$testDir . '/app/code/Magento/SomeModule/etc/di.xml',
5353
$testDir . '/app/code/Magento/SomeModule/view/frontend/default.xml',
5454
];
55-
require_once __DIR__ . '/../../_files/app/code/Magento/SomeModule/Element.php';
56-
require_once __DIR__ . '/../../_files/app/code/Magento/SomeModule/NestedElement.php';
55+
56+
require_once __DIR__ . '/../../_files/app/code/Magento/SomeModule/Element.php';
57+
require_once __DIR__ . '/../../_files/app/code/Magento/SomeModule/NestedElement.php';
5758
}
5859

5960
/**
@@ -80,7 +81,19 @@ public function testCollectEntities(): void
8081
});
8182

8283
$actual = $this->model->collectEntities($this->testFiles);
83-
$expected = [];
84+
85+
$proxyElementExists = class_exists('Magento\SomeModule\Element\Proxy');
86+
$proxyNestedElementExists = class_exists('Magento\SomeModule\NestedElement\Proxy');
87+
88+
if ($proxyElementExists || $proxyNestedElementExists) {
89+
$expected = [];
90+
} else {
91+
$expected = [
92+
'Magento\SomeModule\Element\Proxy',
93+
'Magento\SomeModule\NestedElement\Proxy'
94+
];
95+
}
96+
8497
$this->assertEquals($expected, $actual);
8598
}
8699
}

setup/src/Magento/Setup/Test/Unit/Module/Di/_files/app/code/Magento/SomeModule/ElementFactory.php

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99

1010
use Magento\Framework\ObjectManagerInterface;
1111

12-
require_once __DIR__ . '/Element.php';
1312
class ElementFactory
1413
{
1514
/**
@@ -26,13 +25,11 @@ public function __construct(ObjectManagerInterface $objectManager)
2625
}
2726

2827
/**
29-
* @param string $className
3028
* @param array $data
3129
* @return mixed
3230
*/
33-
public function create($className, array $data = [])
31+
public function create(array $data = [])
3432
{
35-
$instance = $this->_objectManager->create($className, $data);
36-
return $instance;
33+
return $this->_objectManager->create(\Magento\SomeModule\Element::class, ['data' => $data]);
3734
}
3835
}

0 commit comments

Comments
 (0)