diff --git a/app/code/Magento/Cms/Block/Adminhtml/Block/Widget/Chooser.php b/app/code/Magento/Cms/Block/Adminhtml/Block/Widget/Chooser.php
index 3165b1bc02b22..68e2c4c8741bd 100644
--- a/app/code/Magento/Cms/Block/Adminhtml/Block/Widget/Chooser.php
+++ b/app/code/Magento/Cms/Block/Adminhtml/Block/Widget/Chooser.php
@@ -1,7 +1,7 @@
layoutMock = $this->getMockBuilder(LayoutInterface::class)
@@ -93,6 +105,7 @@ protected function setUp(): void
->onlyMethods(
[
'escapeHtml',
+ 'escapeJs'
]
)
->getMock();
@@ -138,6 +151,13 @@ protected function setUp(): void
)
->onlyMethods(['toHtml'])
->getMockForAbstractClass();
+ $this->backendHelperMock = $this->getMockBuilder(Data::class)
+ ->disableOriginalConstructor()
+ ->getMock();
+
+ $this->collectionFactoryMock = $this->getMockBuilder(CollectionFactory::class)
+ ->disableOriginalConstructor()
+ ->getMock();
$objectManager = new ObjectManager($this);
$objectManager->prepareObjectManager();
@@ -286,4 +306,33 @@ public function testGetGridUrl()
$this->assertEquals($url, $this->this->getGridUrl());
}
+
+ /**
+ * @covers \Magento\Cms\Block\Adminhtml\Block\Widget\Chooser::testGetRowClickCallback
+ */
+ public function testGetRowClickCallback(): void
+ {
+ $chooserBlock = new Chooser(
+ $this->context,
+ $this->backendHelperMock,
+ $this->blockFactoryMock,
+ $this->collectionFactoryMock
+ );
+ $this->escaper->expects($this->once())
+ ->method('escapeJs')
+ ->willReturnCallback(function ($input) {
+ return $input;
+ });
+ $jsCallback = $chooserBlock->getRowClickCallback();
+
+ $this->assertStringContainsString(
+ 'blockId = trElement.down("td").innerHTML.replace(/^\s+|\s+$/g,"")',
+ $jsCallback,
+ 'JavaScript callback should use first TD cell for block ID'
+ );
+
+ $this->assertStringContainsString('setElementValue(blockId)', $jsCallback);
+ $this->assertStringContainsString('setElementLabel(blockTitle)', $jsCallback);
+ $this->assertStringContainsString('close()', $jsCallback);
+ }
}