Skip to content

Commit a7888d4

Browse files
ENGCOM-7018: Cleanup ObjectManager usage - Magento_Analytics #27082
- Merge Pull Request #27082 from Bartlomiejsz/magento2:feature/objectmanager_cleanup_analytics - Merged commits: 1. bcadcfb 2. 4b069f6
2 parents 5a9fcab + 4b069f6 commit a7888d4

File tree

2 files changed

+51
-30
lines changed

2 files changed

+51
-30
lines changed

app/code/Magento/Analytics/Block/Adminhtml/System/Config/CollectionTimeLabel.php

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,50 +3,55 @@
33
* Copyright © Magento, Inc. All rights reserved.
44
* See COPYING.txt for license details.
55
*/
6+
declare(strict_types=1);
7+
68
namespace Magento\Analytics\Block\Adminhtml\System\Config;
79

8-
use Magento\Framework\App\ObjectManager;
10+
use Magento\Backend\Block\Template\Context;
11+
use Magento\Config\Block\System\Config\Form\Field;
12+
use Magento\Framework\Data\Form\Element\AbstractElement;
13+
use Magento\Framework\Locale\ResolverInterface;
914

1015
/**
1116
* Provides label with default Time Zone
1217
*/
13-
class CollectionTimeLabel extends \Magento\Config\Block\System\Config\Form\Field
18+
class CollectionTimeLabel extends Field
1419
{
1520
/**
16-
* @var \Magento\Framework\Locale\ResolverInterface
21+
* @var ResolverInterface
1722
*/
1823
private $localeResolver;
1924

2025
/**
21-
* @param \Magento\Backend\Block\Template\Context $context
26+
* @param Context $context
27+
* @param ResolverInterface $localeResolver
2228
* @param array $data
23-
* @param \Magento\Framework\Locale\ResolverInterface|null $localeResolver
2429
*/
2530
public function __construct(
26-
\Magento\Backend\Block\Template\Context $context,
27-
array $data = [],
28-
\Magento\Framework\Locale\ResolverInterface $localeResolver = null
31+
Context $context,
32+
ResolverInterface $localeResolver,
33+
array $data = []
2934
) {
30-
$this->localeResolver = $localeResolver ?:
31-
ObjectManager::getInstance()->get(\Magento\Framework\Locale\ResolverInterface::class);
3235
parent::__construct($context, $data);
36+
$this->localeResolver = $localeResolver;
3337
}
3438

3539
/**
3640
* Add current time zone to comment, properly translated according to locale
3741
*
38-
* @param \Magento\Framework\Data\Form\Element\AbstractElement $element
42+
* @param AbstractElement $element
43+
*
3944
* @return string
4045
*/
41-
public function render(\Magento\Framework\Data\Form\Element\AbstractElement $element)
46+
public function render(AbstractElement $element): string
4247
{
4348
$timeZoneCode = $this->_localeDate->getConfigTimezone();
4449
$locale = $this->localeResolver->getLocale();
4550
$getLongTimeZoneName = \IntlTimeZone::createTimeZone($timeZoneCode)
4651
->getDisplayName(false, \IntlTimeZone::DISPLAY_LONG, $locale);
4752
$element->setData(
4853
'comment',
49-
sprintf("%s (%s)", $getLongTimeZoneName, $timeZoneCode)
54+
sprintf('%s (%s)', $getLongTimeZoneName, $timeZoneCode)
5055
);
5156
return parent::render($element);
5257
}

app/code/Magento/Analytics/Test/Unit/Block/Adminhtml/System/Config/CollectionTimeLabelTest.php

Lines changed: 33 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,43 +3,59 @@
33
* Copyright © Magento, Inc. All rights reserved.
44
* See COPYING.txt for license details.
55
*/
6+
declare(strict_types=1);
7+
68
namespace Magento\Analytics\Test\Unit\Block\Adminhtml\System\Config;
79

810
use Magento\Analytics\Block\Adminhtml\System\Config\CollectionTimeLabel;
911
use Magento\Backend\Block\Template\Context;
1012
use Magento\Framework\Data\Form;
1113
use Magento\Framework\Data\Form\Element\AbstractElement;
14+
use Magento\Framework\Escaper;
1215
use Magento\Framework\Locale\ResolverInterface;
1316
use Magento\Framework\Stdlib\DateTime\TimezoneInterface;
1417
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
18+
use PHPUnit\Framework\MockObject\MockObject;
19+
use PHPUnit\Framework\TestCase;
1520

16-
class CollectionTimeLabelTest extends \PHPUnit\Framework\TestCase
21+
/**
22+
* Test class for \Magento\Analytics\Block\Adminhtml\System\Config\CollectionTimeLabel
23+
*/
24+
class CollectionTimeLabelTest extends TestCase
1725
{
1826
/**
1927
* @var CollectionTimeLabel
2028
*/
2129
private $collectionTimeLabel;
2230

2331
/**
24-
* @var Context|\PHPUnit_Framework_MockObject_MockObject
32+
* @var Context|MockObject
2533
*/
2634
private $contextMock;
2735

2836
/**
29-
* @var TimezoneInterface|\PHPUnit_Framework_MockObject_MockObject
37+
* @var ResolverInterface|MockObject
38+
*/
39+
private $localeResolverMock;
40+
41+
/**
42+
* @var Form|MockObject
43+
*/
44+
private $formMock;
45+
46+
/**
47+
* @var TimezoneInterface|MockObject
3048
*/
3149
private $timeZoneMock;
3250

3351
/**
34-
* @var AbstractElement|\PHPUnit_Framework_MockObject_MockObject
52+
* @var AbstractElement|MockObject
3553
*/
3654
private $abstractElementMock;
3755

3856
/**
39-
* @var ResolverInterface|\PHPUnit_Framework_MockObject_MockObject
57+
* @inheritDoc
4058
*/
41-
private $localeResolver;
42-
4359
protected function setUp()
4460
{
4561
$this->abstractElementMock = $this->getMockBuilder(AbstractElement::class)
@@ -48,7 +64,7 @@ protected function setUp()
4864
->getMock();
4965

5066
$objectManager = new ObjectManager($this);
51-
$escaper = $objectManager->getObject(\Magento\Framework\Escaper::class);
67+
$escaper = $objectManager->getObject(Escaper::class);
5268
$reflection = new \ReflectionClass($this->abstractElementMock);
5369
$reflection_property = $reflection->getProperty('_escaper');
5470
$reflection_property->setAccessible(true);
@@ -64,35 +80,35 @@ protected function setUp()
6480
$this->timeZoneMock = $this->getMockBuilder(TimezoneInterface::class)
6581
->disableOriginalConstructor()
6682
->getMock();
67-
$this->contextMock->expects($this->any())
68-
->method('getLocaleDate')
83+
$this->contextMock->method('getLocaleDate')
6984
->willReturn($this->timeZoneMock);
70-
$this->localeResolver = $this->getMockBuilder(ResolverInterface::class)
85+
$this->localeResolverMock = $this->getMockBuilder(ResolverInterface::class)
7186
->disableOriginalConstructor()
7287
->setMethods(['getLocale'])
7388
->getMockForAbstractClass();
7489

75-
$objectManager = new ObjectManager($this);
7690
$this->collectionTimeLabel = $objectManager->getObject(
7791
CollectionTimeLabel::class,
7892
[
7993
'context' => $this->contextMock,
80-
'localeResolver' => $this->localeResolver
94+
'localeResolver' => $this->localeResolverMock
8195
]
8296
);
8397
}
8498

99+
/**
100+
* Test for \Magento\Analytics\Block\Adminhtml\System\Config\CollectionTimeLabel::render()
101+
*/
85102
public function testRender()
86103
{
87-
$timeZone = "America/New_York";
104+
$timeZone = 'America/New_York';
88105
$this->abstractElementMock->setForm($this->formMock);
89106
$this->timeZoneMock->expects($this->once())
90107
->method('getConfigTimezone')
91108
->willReturn($timeZone);
92-
$this->abstractElementMock->expects($this->any())
93-
->method('getComment')
109+
$this->abstractElementMock->method('getComment')
94110
->willReturn('Eastern Standard Time (America/New_York)');
95-
$this->localeResolver->expects($this->once())
111+
$this->localeResolverMock->expects($this->once())
96112
->method('getLocale')
97113
->willReturn('en_US');
98114
$this->assertRegExp(

0 commit comments

Comments
 (0)