|
3 | 3 | * Copyright © Magento, Inc. All rights reserved.
|
4 | 4 | * See COPYING.txt for license details.
|
5 | 5 | */
|
6 |
| - |
7 |
| -/** |
8 |
| - * Test class for \Magento\Backend\Block\Widget\Grid\Column |
9 |
| - */ |
10 | 6 | namespace Magento\Backend\Test\Unit\Block\Widget\Grid;
|
11 | 7 |
|
| 8 | +use Magento\Backend\Block\Widget\Grid\Column\Renderer\AbstractRenderer; |
| 9 | +use Magento\Framework\DataObject; |
| 10 | + |
12 | 11 | class ColumnTest extends \PHPUnit\Framework\TestCase
|
13 | 12 | {
|
14 | 13 | /**
|
@@ -379,4 +378,97 @@ public function columnGroupedDataProvider()
|
379 | 378 | {
|
380 | 379 | return [[[], false], [['grouped' => 0], false], [['grouped' => 1], true]];
|
381 | 380 | }
|
| 381 | + |
| 382 | + /** |
| 383 | + * Testing row field export with valid frame callback |
| 384 | + */ |
| 385 | + public function testGetRowFieldAndExportWithFrameCallback() |
| 386 | + { |
| 387 | + $row = new DataObject(['id' => '2', 'title' => 'some item']); |
| 388 | + /** @var $rendererMock */ |
| 389 | + $rendererMock = $this->getMockBuilder(AbstractRenderer::class) |
| 390 | + ->disableOriginalConstructor() |
| 391 | + ->setMethods(['renderExport', 'render']) |
| 392 | + ->getMock(); |
| 393 | + |
| 394 | + $rendererMock->expects($this->any())->method('renderExport')->willReturnCallback( |
| 395 | + function (DataObject $row) { |
| 396 | + return $row->getData('title'); |
| 397 | + } |
| 398 | + ); |
| 399 | + |
| 400 | + $rendererMock->expects($this->any())->method('render')->willReturnCallback( |
| 401 | + function (DataObject $row) { |
| 402 | + return $row->getData('title'); |
| 403 | + } |
| 404 | + ); |
| 405 | + |
| 406 | + $frameCallbackHostObject = $this->getMockBuilder(\Magento\Backend\Block\Widget::class) |
| 407 | + ->disableOriginalConstructor() |
| 408 | + ->setMethods(['decorate']) |
| 409 | + ->getMock(); |
| 410 | + |
| 411 | + $frameCallbackHostObject->expects($this->any()) |
| 412 | + ->method('decorate') |
| 413 | + ->willReturnCallback( |
| 414 | + function ($renderValue) { |
| 415 | + return '__callback_decorated_' . $renderValue; |
| 416 | + } |
| 417 | + ); |
| 418 | + |
| 419 | + $this->_block->setRenderer($rendererMock); |
| 420 | + $this->_block->setFrameCallback([$frameCallbackHostObject, 'decorate']); |
| 421 | + $renderResult = $this->_block->getRowField($row); |
| 422 | + $exportResult = $this->_block->getRowFieldExport($row); |
| 423 | + $this->assertEquals('__callback_decorated_some item', $exportResult); |
| 424 | + $this->assertEquals('__callback_decorated_some item', $renderResult); |
| 425 | + } |
| 426 | + |
| 427 | + /** |
| 428 | + * @expectedException \InvalidArgumentException |
| 429 | + * @expectedExceptionMessage Frame callback host must be instance of Magento\Backend\Block\Widget |
| 430 | + */ |
| 431 | + public function testGetRowFieldExportWithInvalidCallback() |
| 432 | + { |
| 433 | + $row = new DataObject(['id' => '2', 'title' => 'some item']); |
| 434 | + /** @var $rendererMock */ |
| 435 | + $rendererMock = $this->getMockBuilder(AbstractRenderer::class) |
| 436 | + ->disableOriginalConstructor() |
| 437 | + ->setMethods(['renderExport', 'render']) |
| 438 | + ->getMock(); |
| 439 | + |
| 440 | + $rendererMock->expects($this->any())->method('renderExport')->willReturnCallback( |
| 441 | + function (DataObject $row) { |
| 442 | + return $row->getData('title'); |
| 443 | + } |
| 444 | + ); |
| 445 | + |
| 446 | + $this->_block->setRenderer($rendererMock); |
| 447 | + $this->_block->setFrameCallback([$this, 'testGetRowFieldExportWithFrameCallback']); |
| 448 | + $this->_block->getRowFieldExport($row); |
| 449 | + } |
| 450 | + |
| 451 | + /** |
| 452 | + * @expectedException \InvalidArgumentException |
| 453 | + * @expectedExceptionMessage Frame callback host must be instance of Magento\Backend\Block\Widget |
| 454 | + */ |
| 455 | + public function testGetRowFieldWithInvalidCallback() |
| 456 | + { |
| 457 | + $row = new DataObject(['id' => '2', 'title' => 'some item']); |
| 458 | + /** @var $rendererMock */ |
| 459 | + $rendererMock = $this->getMockBuilder(AbstractRenderer::class) |
| 460 | + ->disableOriginalConstructor() |
| 461 | + ->setMethods(['render']) |
| 462 | + ->getMock(); |
| 463 | + |
| 464 | + $rendererMock->expects($this->any())->method('render')->willReturnCallback( |
| 465 | + function (DataObject $row) { |
| 466 | + return $row->getData('title'); |
| 467 | + } |
| 468 | + ); |
| 469 | + |
| 470 | + $this->_block->setRenderer($rendererMock); |
| 471 | + $this->_block->setFrameCallback([$this, 'testGetRowFieldExportWithFrameCallback']); |
| 472 | + $this->_block->getRowField($row); |
| 473 | + } |
382 | 474 | }
|
0 commit comments