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); + } }