Skip to content

Commit 488f68d

Browse files
Merge remote-tracking branch '39722/bug/39692-block-selection-in-widget' into blprs
2 parents ae3ddf5 + 3dd14f9 commit 488f68d

File tree

3 files changed

+57
-8
lines changed

3 files changed

+57
-8
lines changed

app/code/Magento/Cms/Block/Adminhtml/Block/Widget/Chooser.php

Lines changed: 3 additions & 3 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 2011 Adobe
4+
* All Rights Reserved.
55
*/
66
namespace Magento\Cms\Block\Adminhtml\Block\Widget;
77

@@ -100,7 +100,7 @@ public function getRowClickCallback()
100100
$js = '
101101
function (grid, event) {
102102
var trElement = Event.findElement(event, "tr");
103-
var blockId = trElement.down("td").next().next().innerHTML.replace(/^\s+|\s+$/g,"");
103+
var blockId = trElement.down("td").innerHTML.replace(/^\s+|\s+$/g,"");
104104
var blockTitle = trElement.down("td").next().innerHTML;
105105
' .
106106
$chooserJsObject .

app/code/Magento/Cms/Test/Mftf/Test/AdminAddBlockWidgetToCMSPageTest.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<!--
33
/**
4-
* Copyright © Magento, Inc. All rights reserved.
5-
* See COPYING.txt for license details.
4+
* Copyright 2020 Adobe
5+
* All Rights Reserved.
66
*/
77
-->
88
<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
@@ -51,7 +51,7 @@
5151
<!-- Assert block_id value in page content -->
5252
<actionGroup ref="AdminAssertCMSPageContentParamValueActionGroup" stepKey="assertBlockId">
5353
<argument name="param" value="block_id"/>
54-
<argument name="value" value="$$createPreReqBlock.identifier$$"/>
54+
<argument name="value" value="$$createPreReqBlock.id$$"/>
5555
</actionGroup>
5656
</test>
5757
</tests>

app/code/Magento/Cms/Test/Unit/Block/Adminhtml/Block/Widget/ChooserTest.php

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

88
namespace Magento\Cms\Test\Unit\Block\Adminhtml\Block\Widget;
99

1010
use Magento\Backend\Block\Template\Context;
11+
use Magento\Backend\Helper\Data;
1112
use Magento\Cms\Block\Adminhtml\Block\Widget\Chooser;
1213
use Magento\Cms\Model\Block;
1314
use Magento\Cms\Model\BlockFactory;
15+
use Magento\Cms\Model\ResourceModel\Block\CollectionFactory;
1416
use Magento\Framework\Data\Form\Element\AbstractElement;
1517
use Magento\Framework\Escaper;
1618
use Magento\Framework\Math\Random;
@@ -77,6 +79,16 @@ class ChooserTest extends TestCase
7779
*/
7880
protected $chooserMock;
7981

82+
/**
83+
* @var Data|MockObject
84+
*/
85+
protected $backendHelperMock;
86+
87+
/**
88+
* @var CollectionFactory|MockObject
89+
*/
90+
protected $collectionFactoryMock;
91+
8092
protected function setUp(): void
8193
{
8294
$this->layoutMock = $this->getMockBuilder(LayoutInterface::class)
@@ -93,6 +105,7 @@ protected function setUp(): void
93105
->onlyMethods(
94106
[
95107
'escapeHtml',
108+
'escapeJs'
96109
]
97110
)
98111
->getMock();
@@ -138,6 +151,13 @@ protected function setUp(): void
138151
)
139152
->onlyMethods(['toHtml'])
140153
->getMockForAbstractClass();
154+
$this->backendHelperMock = $this->getMockBuilder(Data::class)
155+
->disableOriginalConstructor()
156+
->getMock();
157+
158+
$this->collectionFactoryMock = $this->getMockBuilder(CollectionFactory::class)
159+
->disableOriginalConstructor()
160+
->getMock();
141161

142162
$objectManager = new ObjectManager($this);
143163
$objectManager->prepareObjectManager();
@@ -286,4 +306,33 @@ public function testGetGridUrl()
286306

287307
$this->assertEquals($url, $this->this->getGridUrl());
288308
}
309+
310+
/**
311+
* @covers \Magento\Cms\Block\Adminhtml\Block\Widget\Chooser::testGetRowClickCallback
312+
*/
313+
public function testGetRowClickCallback(): void
314+
{
315+
$chooserBlock = new Chooser(
316+
$this->context,
317+
$this->backendHelperMock,
318+
$this->blockFactoryMock,
319+
$this->collectionFactoryMock
320+
);
321+
$this->escaper->expects($this->once())
322+
->method('escapeJs')
323+
->willReturnCallback(function ($input) {
324+
return $input;
325+
});
326+
$jsCallback = $chooserBlock->getRowClickCallback();
327+
328+
$this->assertStringContainsString(
329+
'blockId = trElement.down("td").innerHTML.replace(/^\s+|\s+$/g,"")',
330+
$jsCallback,
331+
'JavaScript callback should use first TD cell for block ID'
332+
);
333+
334+
$this->assertStringContainsString('setElementValue(blockId)', $jsCallback);
335+
$this->assertStringContainsString('setElementLabel(blockTitle)', $jsCallback);
336+
$this->assertStringContainsString('close()', $jsCallback);
337+
}
289338
}

0 commit comments

Comments
 (0)