Skip to content

Commit 4758b43

Browse files
committed
MC-29420: Remove event handlers from CE
1 parent 70ede03 commit 4758b43

File tree

29 files changed

+545
-163
lines changed

29 files changed

+545
-163
lines changed

app/code/Magento/Bundle/Test/Unit/Block/Adminhtml/Catalog/Product/Composite/Fieldset/Options/Type/CheckboxTest.php

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@
55
*/
66
namespace Magento\Bundle\Test\Unit\Block\Adminhtml\Catalog\Product\Composite\Fieldset\Options\Type;
77

8+
use Magento\Framework\DataObject;
89
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
10+
use Magento\Framework\View\Helper\SecureHtmlRenderer;
911

1012
class CheckboxTest extends \PHPUnit\Framework\TestCase
1113
{
@@ -16,9 +18,20 @@ class CheckboxTest extends \PHPUnit\Framework\TestCase
1618

1719
protected function setUp()
1820
{
21+
$secureRendererMock = $this->createMock(SecureHtmlRenderer::class);
22+
$secureRendererMock->method('renderTag')
23+
->willReturnCallback(
24+
function (string $tag, array $attributes, string $content): string {
25+
$attributes = new DataObject($attributes);
26+
27+
return "<$tag {$attributes->serialize()}>$content</$tag>";
28+
}
29+
);
30+
1931
$this->block = (new ObjectManager($this))
2032
->getObject(
21-
\Magento\Bundle\Block\Adminhtml\Catalog\Product\Composite\Fieldset\Options\Type\Checkbox::class
33+
\Magento\Bundle\Block\Adminhtml\Catalog\Product\Composite\Fieldset\Options\Type\Checkbox::class,
34+
['htmlRenderer' => $secureRendererMock]
2235
);
2336
}
2437

app/code/Magento/Bundle/Test/Unit/Block/Adminhtml/Catalog/Product/Composite/Fieldset/Options/Type/MultiTest.php

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@
55
*/
66
namespace Magento\Bundle\Test\Unit\Block\Adminhtml\Catalog\Product\Composite\Fieldset\Options\Type;
77

8+
use Magento\Framework\DataObject;
89
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
10+
use Magento\Framework\View\Helper\SecureHtmlRenderer;
911

1012
class MultiTest extends \PHPUnit\Framework\TestCase
1113
{
@@ -16,8 +18,21 @@ class MultiTest extends \PHPUnit\Framework\TestCase
1618

1719
protected function setUp()
1820
{
21+
$secureRendererMock = $this->createMock(SecureHtmlRenderer::class);
22+
$secureRendererMock->method('renderTag')
23+
->willReturnCallback(
24+
function (string $tag, array $attributes, string $content): string {
25+
$attributes = new DataObject($attributes);
26+
27+
return "<$tag {$attributes->serialize()}>$content</$tag>";
28+
}
29+
);
30+
1931
$this->block = (new ObjectManager($this))
20-
->getObject(\Magento\Bundle\Block\Adminhtml\Catalog\Product\Composite\Fieldset\Options\Type\Multi::class);
32+
->getObject(
33+
\Magento\Bundle\Block\Adminhtml\Catalog\Product\Composite\Fieldset\Options\Type\Multi::class,
34+
['htmlRenderer' => $secureRendererMock]
35+
);
2136
}
2237

2338
public function testSetValidationContainer()

app/code/Magento/Bundle/Test/Unit/Block/Adminhtml/Catalog/Product/Composite/Fieldset/Options/Type/RadioTest.php

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@
55
*/
66
namespace Magento\Bundle\Test\Unit\Block\Adminhtml\Catalog\Product\Composite\Fieldset\Options\Type;
77

8+
use Magento\Framework\DataObject;
89
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
10+
use Magento\Framework\View\Helper\SecureHtmlRenderer;
911

1012
class RadioTest extends \PHPUnit\Framework\TestCase
1113
{
@@ -16,8 +18,21 @@ class RadioTest extends \PHPUnit\Framework\TestCase
1618

1719
protected function setUp()
1820
{
21+
$secureRendererMock = $this->createMock(SecureHtmlRenderer::class);
22+
$secureRendererMock->method('renderTag')
23+
->willReturnCallback(
24+
function (string $tag, array $attributes, string $content): string {
25+
$attributes = new DataObject($attributes);
26+
27+
return "<$tag {$attributes->serialize()}>$content</$tag>";
28+
}
29+
);
30+
1931
$this->block = (new ObjectManager($this))
20-
->getObject(\Magento\Bundle\Block\Adminhtml\Catalog\Product\Composite\Fieldset\Options\Type\Radio::class);
32+
->getObject(
33+
\Magento\Bundle\Block\Adminhtml\Catalog\Product\Composite\Fieldset\Options\Type\Radio::class,
34+
['htmlRenderer' => $secureRendererMock]
35+
);
2136
}
2237

2338
public function testSetValidationContainer()

app/code/Magento/Bundle/Test/Unit/Block/Adminhtml/Catalog/Product/Composite/Fieldset/Options/Type/SelectTest.php

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@
55
*/
66
namespace Magento\Bundle\Test\Unit\Block\Adminhtml\Catalog\Product\Composite\Fieldset\Options\Type;
77

8+
use Magento\Framework\DataObject;
89
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
10+
use Magento\Framework\View\Helper\SecureHtmlRenderer;
911

1012
class SelectTest extends \PHPUnit\Framework\TestCase
1113
{
@@ -16,8 +18,21 @@ class SelectTest extends \PHPUnit\Framework\TestCase
1618

1719
protected function setUp()
1820
{
21+
$secureRendererMock = $this->createMock(SecureHtmlRenderer::class);
22+
$secureRendererMock->method('renderTag')
23+
->willReturnCallback(
24+
function (string $tag, array $attributes, string $content): string {
25+
$attributes = new DataObject($attributes);
26+
27+
return "<$tag {$attributes->serialize()}>$content</$tag>";
28+
}
29+
);
30+
1931
$this->block = (new ObjectManager($this))
20-
->getObject(\Magento\Bundle\Block\Adminhtml\Catalog\Product\Composite\Fieldset\Options\Type\Select::class);
32+
->getObject(
33+
\Magento\Bundle\Block\Adminhtml\Catalog\Product\Composite\Fieldset\Options\Type\Select::class,
34+
['htmlRenderer' => $secureRendererMock]
35+
);
2136
}
2237

2338
public function testSetValidationContainer()

app/code/Magento/Config/Test/Unit/Block/System/Config/Form/Field/Select/AllowspecificTest.php

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
use Magento\Framework\Math\Random;
99
use Magento\Framework\View\Helper\SecureHtmlRenderer;
10+
use Magento\Framework\DataObject;
1011

1112
class AllowspecificTest extends \PHPUnit\Framework\TestCase
1213
{
@@ -32,6 +33,14 @@ function (string $event, string $listener, string $selector): string {
3233
return "<script>document.querySelector('{$selector}').{$event} = () => { {$listener} };</script>";
3334
}
3435
);
36+
$secureRendererMock->method('renderTag')
37+
->willReturnCallback(
38+
function (string $tag, array $attributes, string $content): string {
39+
$attributes = new DataObject($attributes);
40+
41+
return "<$tag {$attributes->serialize()}>$content</$tag>";
42+
}
43+
);
3544
$this->_object = $testHelper->getObject(
3645
\Magento\Config\Block\System\Config\Form\Field\Select\Allowspecific::class,
3746
[
@@ -71,7 +80,7 @@ public function testGetAfterElementHtml()
7180
$actual = $this->_object->getAfterElementHtml();
7281

7382
$this->assertStringEndsWith('</script>' . $afterHtmlCode, $actual);
74-
$this->assertStringStartsWith('<script type="text/javascript">', trim($actual));
83+
$this->assertStringStartsWith('<script >', trim($actual));
7584
$this->assertContains('test_prefix_spec_element_test_suffix', $actual);
7685
}
7786

app/code/Magento/Config/Test/Unit/Block/System/Config/Form/FieldTest.php

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
*/
66
namespace Magento\Config\Test\Unit\Block\System\Config\Form;
77

8+
use Magento\Framework\View\Helper\SecureHtmlRenderer;
9+
810
/**
911
* Test how class render field html element in Stores Configuration
1012
*/
@@ -38,10 +40,24 @@ class FieldTest extends \PHPUnit\Framework\TestCase
3840
protected function setUp()
3941
{
4042
$this->_storeManagerMock = $this->createMock(\Magento\Store\Model\StoreManager::class);
43+
$secureRendererMock = $this->createMock(SecureHtmlRenderer::class);
44+
$secureRendererMock->method('renderEventListenerAsTag')
45+
->willReturnCallback(
46+
function (string $event, string $js, string $selector): string {
47+
return "<script>document.querySelector('$selector').$event = function () { $js };</script>";
48+
}
49+
);
50+
$secureRendererMock->method('renderStyleAsTag')
51+
->willReturnCallback(
52+
function (string $style, string $selector): string {
53+
return "<style>$selector { $style }</style>";
54+
}
55+
);
4156

4257
$data = [
4358
'storeManager' => $this->_storeManagerMock,
4459
'urlBuilder' => $this->createMock(\Magento\Backend\Model\Url::class),
60+
'secureRenderer' => $secureRendererMock,
4561
];
4662
$helper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
4763
$this->_object = $helper->getObject(\Magento\Config\Block\System\Config\Form\Field::class, $data);
@@ -150,7 +166,7 @@ public function testRenderHint()
150166
{
151167
$testHint = 'test_hint';
152168
$this->_elementMock->expects($this->any())->method('getHint')->will($this->returnValue($testHint));
153-
$expected = '<td class=""><div class="hint"><div style="display: none;">' . $testHint . '</div></div>';
169+
$expected = '<td class=""><div class="hint"><div id="hint_test_field_id">' . $testHint . '</div></div>';
154170
$actual = $this->_object->render($this->_elementMock);
155171
$this->assertContains($expected, $actual);
156172
}
@@ -187,8 +203,9 @@ public function testRenderInheritCheckbox()
187203
'_inherit" name="' .
188204
$this->_testData['name'] .
189205
'[inherit]" type="checkbox" value="1"' .
190-
' class="checkbox config-inherit" checked="checked"' . ' disabled="disabled"' . ' readonly="1"' .
191-
' onclick="toggleValueElements(this, Element.previous(this.parentNode))" /> ';
206+
' class="checkbox config-inherit" checked="checked"' . ' disabled="disabled"' . ' readonly="1" />' .
207+
'<script>document.querySelector(\'input#test_field_id_inherit\').onclick = function () '.
208+
'{ toggleValueElements(this, Element.previous(this.parentNode)) };</script>';
192209

193210
$expected .= '<label for="' . $this->_testData['htmlId'] . '_inherit" class="inherit">Use Website</label>';
194211
$actual = $this->_object->render($this->_elementMock);

app/code/Magento/Config/Test/Unit/Block/System/Config/Form/Fieldset/Modules/DisableOutputTest.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
*/
66
namespace Magento\Config\Test\Unit\Block\System\Config\Form\Fieldset\Modules;
77

8+
use Magento\Framework\View\Helper\SecureHtmlRenderer;
9+
810
/**
911
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
1012
*/
@@ -141,6 +143,14 @@ protected function setUp()
141143
]
142144
);
143145

146+
$secureRendererMock = $this->createMock(SecureHtmlRenderer::class);
147+
$secureRendererMock->method('renderEventListenerAsTag')
148+
->willReturnCallback(
149+
function (string $event, string $js, string $selector): string {
150+
return "<script>document.querySelector('$selector').$event = function () { $js };</script>";
151+
}
152+
);
153+
144154
$data = [
145155
'context' => $context,
146156
'authSession' => $this->authSessionMock,
@@ -150,6 +160,7 @@ protected function setUp()
150160
'group' => $groupMock,
151161
'form' => $formMock,
152162
],
163+
'secureRenderer' => $secureRendererMock
153164
];
154165

155166
$this->object = $this->objectManager->getObject(

app/code/Magento/Config/Test/Unit/Block/System/Config/Form/FieldsetTest.php

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
*/
66
namespace Magento\Config\Test\Unit\Block\System\Config\Form;
77

8+
use Magento\Framework\View\Helper\SecureHtmlRenderer;
9+
810
/**
911
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
1012
*/
@@ -100,6 +102,13 @@ protected function setUp()
100102
$groupMock->expects($this->any())->method('getFieldsetCss')->will($this->returnValue('test_fieldset_css'));
101103

102104
$this->_helperMock = $this->createMock(\Magento\Framework\View\Helper\Js::class);
105+
$secureRendererMock = $this->createMock(SecureHtmlRenderer::class);
106+
$secureRendererMock->method('renderStyleAsTag')
107+
->willReturnCallback(
108+
function (string $style, string $selector): string {
109+
return "<style>$selector { $style }</style>";
110+
}
111+
);
103112

104113
$data = [
105114
'request' => $this->_requestMock,
@@ -108,6 +117,7 @@ protected function setUp()
108117
'layout' => $this->_layoutMock,
109118
'jsHelper' => $this->_helperMock,
110119
'data' => ['group' => $groupMock],
120+
'secureRenderer' => $secureRendererMock
111121
];
112122
$this->_testHelper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
113123
$this->_object = $this->_testHelper->getObject(\Magento\Config\Block\System\Config\Form\Fieldset::class, $data);
@@ -222,8 +232,8 @@ public function testRenderWithStoredElements($expanded, $nested, $extra)
222232

223233
$this->assertContains('test_field_toHTML', $actual);
224234

225-
$expected = '<div id="row_test_field_id_comment" class="system-tooltip-box"' .
226-
' style="display:none;">test_field_tootip</div>';
235+
$expected = '<div id="row_test_field_id_comment" class="system-tooltip-box">test_field_tootip</div>' .
236+
'<style>row_test_field_id_comment { display:none; }</style>';
227237
$this->assertContains($expected, $actual);
228238
if ($nested) {
229239
$this->assertContains('nested', $actual);

app/code/Magento/Developer/Test/Unit/Model/TemplateEngine/Decorator/DebugHintsTest.php

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@
55
*/
66
namespace Magento\Developer\Test\Unit\Model\TemplateEngine\Decorator;
77

8+
use Magento\Framework\DataObject;
9+
use Magento\Framework\Math\Random;
10+
use Magento\Framework\View\Helper\SecureHtmlRenderer;
11+
812
class DebugHintsTest extends \PHPUnit\Framework\TestCase
913
{
1014
/**
@@ -28,7 +32,36 @@ public function testRender($showBlockHints)
2832
)->will(
2933
$this->returnValue('<div id="fixture"/>')
3034
);
31-
$model = new \Magento\Developer\Model\TemplateEngine\Decorator\DebugHints($subject, $showBlockHints);
35+
$randomMock = $this->createMock(Random::class);
36+
$randomMock->method('getRandomString')->willReturn('random');
37+
$secureRendererMock = $this->createMock(SecureHtmlRenderer::class);
38+
$secureRendererMock->method('renderTag')
39+
->willReturnCallback(
40+
function (string $tag, array $attributes, string $content): string {
41+
$attributes = new DataObject($attributes);
42+
43+
return "<$tag {$attributes->serialize()}>$content</$tag>";
44+
}
45+
);
46+
$secureRendererMock->method('renderEventListenerAsTag')
47+
->willReturnCallback(
48+
function (string $event, string $js, string $selector): string {
49+
return "<script>document.querySelector('$selector').$event = function () { $js };</script>";
50+
}
51+
);
52+
$secureRendererMock->method('renderStyleAsTag')
53+
->willReturnCallback(
54+
function (string $style, string $selector): string {
55+
return "<style>$selector { $style }</style>";
56+
}
57+
);
58+
59+
$model = new \Magento\Developer\Model\TemplateEngine\Decorator\DebugHints(
60+
$subject,
61+
$showBlockHints,
62+
$secureRendererMock,
63+
$randomMock
64+
);
3265
$actualResult = $model->render($block, 'template.phtml', ['var' => 'val']);
3366
$this->assertNotNull($actualResult);
3467
}

app/code/Magento/Msrp/view/frontend/templates/render/item/price_msrp_item.phtml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
</a>
5252
<?= /* @noEscape */ $secureRenderer->renderEventListenerAsTag(
5353
'onclick',
54-
'e.preventDefault()',
54+
'event.preventDefault()',
5555
'a#' . /* @noEscape */ ($popupId)
5656
) ?>
5757
<?php else: ?>
@@ -68,7 +68,7 @@
6868
</a>
6969
<?= /* @noEscape */ $secureRenderer->renderEventListenerAsTag(
7070
'onclick',
71-
'e.preventDefault()',
71+
'event.preventDefault()',
7272
'a#' . /* @noEscape */ ($helpLinkId)
7373
) ?>
7474
</div>

0 commit comments

Comments
 (0)