Skip to content

Commit 06d06f1

Browse files
committed
Added Unit Test for Actions Block. Use FQCN. Reduce Code-Smell
1 parent c6427d1 commit 06d06f1

File tree

2 files changed

+88
-14
lines changed

2 files changed

+88
-14
lines changed

app/code/Magento/AdminNotification/Block/Grid/Renderer/Actions.php

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
<?php
2+
declare(strict_types=1);
3+
24
/**
35
* Adminhtml AdminNotification Severity Renderer
46
*
@@ -8,12 +10,17 @@
810

911
namespace Magento\AdminNotification\Block\Grid\Renderer;
1012

13+
use Magento\Backend\Block\Context;
14+
use Magento\Backend\Block\Widget\Grid\Column\Renderer\AbstractRenderer;
15+
use Magento\Framework\App\ActionInterface;
16+
use Magento\Framework\DataObject;
17+
use Magento\Framework\Url\Helper\Data;
18+
1119
/**
1220
* Renderer class for action in the admin notifications grid
13-
*
1421
* @package Magento\AdminNotification\Block\Grid\Renderer
1522
*/
16-
class Actions extends \Magento\Backend\Block\Widget\Grid\Column\Renderer\AbstractRenderer
23+
class Actions extends AbstractRenderer
1724
{
1825
/**
1926
* @var \Magento\Framework\Url\Helper\Data
@@ -25,11 +32,8 @@ class Actions extends \Magento\Backend\Block\Widget\Grid\Column\Renderer\Abstrac
2532
* @param \Magento\Framework\Url\Helper\Data $urlHelper
2633
* @param array $data
2734
*/
28-
public function __construct(
29-
\Magento\Backend\Block\Context $context,
30-
\Magento\Framework\Url\Helper\Data $urlHelper,
31-
array $data = []
32-
) {
35+
public function __construct(Context $context, Data $urlHelper, array $data = [])
36+
{
3337
$this->_urlHelper = $urlHelper;
3438
parent::__construct($context, $data);
3539
}
@@ -40,16 +44,16 @@ public function __construct(
4044
* @param \Magento\Framework\DataObject $row
4145
* @return string
4246
*/
43-
public function render(\Magento\Framework\DataObject $row)
47+
public function render(DataObject $row) : string
4448
{
45-
$readDetailsHtml = $row->getUrl() ? '<a class="action-details" target="_blank" href="' .
46-
$this->escapeUrl($row->getUrl())
49+
$readDetailsHtml = $row->getData('url') ? '<a class="action-details" target="_blank" href="' .
50+
$this->escapeUrl($row->getData('url'))
4751
. '">' .
4852
__('Read Details') . '</a>' : '';
4953

50-
$markAsReadHtml = !$row->getIsRead() ? '<a class="action-mark" href="' . $this->getUrl(
54+
$markAsReadHtml = !$row->getData('is_read') ? '<a class="action-mark" href="' . $this->getUrl(
5155
'*/*/markAsRead/',
52-
['_current' => true, 'id' => $row->getId()]
56+
['_current' => true, 'id' => $row->getData('id')]
5357
) . '">' . __(
5458
'Mark as Read'
5559
) . '</a>' : '';
@@ -63,8 +67,8 @@ public function render(\Magento\Framework\DataObject $row)
6367
'*/*/remove/',
6468
[
6569
'_current' => true,
66-
'id' => $row->getId(),
67-
\Magento\Framework\App\ActionInterface::PARAM_NAME_URL_ENCODED => $encodedUrl
70+
'id' => $row->getData('id'),
71+
ActionInterface::PARAM_NAME_URL_ENCODED => $encodedUrl
6872
]
6973
),
7074
__('Are you sure?'),
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
<?php
2+
declare(strict_types=1);
3+
4+
/**
5+
* Copyright © Magento, Inc. All rights reserved.
6+
* See COPYING.txt for license details.
7+
*/
8+
9+
/**
10+
* Test class for \Magento\AdminNotification\Block\Grid\Renderer\Actions
11+
*/
12+
namespace Magento\AdminNotification\Test\Unit\Block\Grid\Renderer;
13+
14+
use Magento\AdminNotification\Block\Grid\Renderer\Actions;
15+
use Magento\Backend\Block\Context;
16+
use Magento\Framework\DataObject;
17+
use Magento\Framework\Escaper;
18+
use Magento\Framework\Url\Helper\Data;
19+
use Magento\Framework\UrlInterface;
20+
use PHPUnit\Framework\TestCase;
21+
22+
class ActionsTest extends TestCase
23+
{
24+
/**
25+
* System under Test
26+
*
27+
* @var Actions
28+
*/
29+
private $sut;
30+
31+
protected function setUp() : void
32+
{
33+
parent::setUp();
34+
35+
/** @var Escaper | \PHPUnit_Framework_MockObject_MockObject $escaperMock */
36+
$escaperMock = $this->getMockBuilder(Escaper::class)->disableOriginalConstructor()->getMock();
37+
$escaperMock->expects($this->once())->method('escapeUrl')->willReturn('https://magento.com');
38+
39+
/** @var UrlInterface | \PHPUnit_Framework_MockObject_MockObject $urlBuilder */
40+
$urlBuilder = $this->getMockBuilder(UrlInterface::class)->getMock();
41+
$urlBuilder->expects($this->once())->method('getUrl')->willReturn('http://magento.com');
42+
43+
/** @var Context | \PHPUnit_Framework_MockObject_MockObject $contextMock */
44+
$contextMock = $this->getMockBuilder(Context::class)->disableOriginalConstructor()->getMock();
45+
$contextMock->expects($this->once())->method('getEscaper')->willReturn($escaperMock);
46+
$contextMock->expects($this->once())->method('getUrlBuilder')->willReturn($urlBuilder);
47+
48+
/** @var Data | \PHPUnit_Framework_MockObject_MockObject $urlHelperMock */
49+
$urlHelperMock = $this->getMockBuilder(Data::class)->disableOriginalConstructor()->getMock();
50+
$urlHelperMock->expects($this->once())->method('getEncodedUrl')->willReturn('http://magento.com');
51+
52+
$this->sut = new Actions($contextMock, $urlHelperMock);
53+
54+
}
55+
56+
public function test_should_render_message_when_urlIsGiven() : void
57+
{
58+
$dataObject = new DataObject();
59+
$dataObject->setdata('url', 'https://magento.com');
60+
$dataObject->setdata('is_read', true);
61+
$dataObject->setdata('id', 1);
62+
63+
$actual = $this->sut->render($dataObject);
64+
$expected = <<<HTML
65+
<a class="action-details" target="_blank" href="https://magento.com">Read Details</a><a class="action-delete" href="http://magento.com" onClick="deleteConfirm('Are you sure?', this.href); return false;">Remove</a>
66+
HTML;
67+
68+
$this->assertEquals($actual, $expected);
69+
}
70+
}

0 commit comments

Comments
 (0)