Skip to content

Commit 1a68ddc

Browse files
author
olysenko
committed
Merge remote-tracking branch 'origin/MAGETWO-65710' into bugfixes
2 parents 8bc61cb + cd26ace commit 1a68ddc

File tree

18 files changed

+682
-31
lines changed

18 files changed

+682
-31
lines changed
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
<?php
2+
/**
3+
* Copyright © 2013-2017 Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\Analytics\Block\Adminhtml\System\Config;
7+
8+
/**
9+
* Provides field with additional information
10+
*/
11+
class AdditionalComment extends \Magento\Config\Block\System\Config\Form\Field
12+
{
13+
/**
14+
* @param \Magento\Framework\Data\Form\Element\AbstractElement $element
15+
* @return string
16+
*/
17+
public function render(\Magento\Framework\Data\Form\Element\AbstractElement $element)
18+
{
19+
$html = '<div class="config-additional-comment-title">' . $element->getLabel() . '</div>';
20+
$html .= '<div class="config-additional-comment-content">' . $element->getComment() . '</div>';
21+
return $this->decorateRowHtml($element, $html);
22+
}
23+
24+
/**
25+
* @param \Magento\Framework\Data\Form\Element\AbstractElement $element
26+
* @param string $html
27+
* @return string
28+
*/
29+
private function decorateRowHtml(\Magento\Framework\Data\Form\Element\AbstractElement $element, $html)
30+
{
31+
return sprintf(
32+
'<tr id="row_%s"><td colspan="3"><div class="config-additional-comment">%s</div></td></tr>',
33+
$element->getHtmlId(),
34+
$html
35+
);
36+
}
37+
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
<?php
2+
/**
3+
* Copyright © 2013-2017 Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\Analytics\Block\Adminhtml\System\Config;
7+
8+
use Magento\Backend\Block\Template\Context;
9+
use Magento\Framework\Stdlib\DateTime\TimezoneInterface;
10+
11+
/**
12+
* Provides label with default Time Zone
13+
*/
14+
class CollectionTimeLabel extends \Magento\Config\Block\System\Config\Form\Field
15+
{
16+
/**
17+
* @var TimezoneInterface
18+
*/
19+
private $timeZone;
20+
21+
/**
22+
* @param Context $context
23+
* @param TimezoneInterface $timeZone
24+
* @param array $data
25+
*/
26+
public function __construct(
27+
Context $context,
28+
TimezoneInterface $timeZone,
29+
array $data = []
30+
) {
31+
parent::__construct($context, $data);
32+
$this->timeZone = $timeZone;
33+
}
34+
35+
/**
36+
* Add default time zone to comment
37+
*
38+
* @param \Magento\Framework\Data\Form\Element\AbstractElement $element
39+
* @return string
40+
*/
41+
public function render(\Magento\Framework\Data\Form\Element\AbstractElement $element)
42+
{
43+
$timeZoneCode = $this->timeZone->getConfigTimezone();
44+
$getLongTimeZoneName = \IntlTimeZone::createTimeZone($timeZoneCode)->getDisplayName();
45+
$element->setData(
46+
'comment',
47+
sprintf("%s (%s)", $getLongTimeZoneName, $timeZoneCode)
48+
);
49+
return parent::render($element);
50+
}
51+
}

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,16 +39,15 @@ public function __construct(
3939
}
4040

4141
/**
42-
* Unset some non-related element parameters
42+
* Add Subscription status to comment
4343
*
4444
* @param \Magento\Framework\Data\Form\Element\AbstractElement $element
4545
* @return string
4646
*/
4747
public function render(\Magento\Framework\Data\Form\Element\AbstractElement $element)
4848
{
49-
$element->unsScope()->unsCanUseWebsiteValue()->unsCanUseDefaultValue();
5049
$element->setData(
51-
'value',
50+
'comment',
5251
$this->prepareLabelValue()
5352
);
5453
return parent::render($element);
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
<?php
2+
/**
3+
* Copyright © 2013-2017 Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Test\Unit\Block\Adminhtml\System\Config;
7+
8+
use Magento\Framework\Data\Form;
9+
use Magento\Analytics\Block\Adminhtml\System\Config\AdditionalComment;
10+
use Magento\Backend\Block\Template\Context;
11+
use Magento\Framework\Data\Form\Element\AbstractElement;
12+
13+
class AdditionalCommentTest extends \PHPUnit_Framework_TestCase
14+
{
15+
/**
16+
* @var AdditionalComment
17+
*/
18+
private $additionalComment;
19+
20+
/**
21+
* @var AbstractElement|\PHPUnit_Framework_MockObject_MockObject
22+
*/
23+
private $abstractElementMock;
24+
25+
/**
26+
* @var Context|\PHPUnit_Framework_MockObject_MockObject
27+
*/
28+
private $contextMock;
29+
30+
/**
31+
* @var Form|\PHPUnit_Framework_MockObject_MockObject
32+
*/
33+
private $formMock;
34+
35+
/**
36+
* @return void
37+
*/
38+
protected function setUp()
39+
{
40+
$this->abstractElementMock = $this->getMockBuilder(AbstractElement::class)
41+
->setMethods(['getComment', 'getLabel'])
42+
->disableOriginalConstructor()
43+
->getMock();
44+
$this->contextMock = $this->getMockBuilder(Context::class)
45+
->disableOriginalConstructor()
46+
->getMock();
47+
$this->formMock = $this->getMockBuilder(Form::class)
48+
->disableOriginalConstructor()
49+
->getMock();
50+
51+
$this->additionalComment = new AdditionalComment($this->contextMock);
52+
}
53+
54+
/**
55+
* @return void
56+
*/
57+
public function testRender()
58+
{
59+
$this->abstractElementMock->setForm($this->formMock);
60+
$this->abstractElementMock->expects($this->any())
61+
->method('getComment')
62+
->willReturn('New comment');
63+
$this->abstractElementMock->expects($this->any())
64+
->method('getLabel')
65+
->willReturn('Comment label');
66+
$html = $this->additionalComment->render($this->abstractElementMock);
67+
$this->assertRegexp(
68+
"/New comment/",
69+
$html
70+
);
71+
$this->assertRegexp(
72+
"/Comment label/",
73+
$html
74+
);
75+
}
76+
}
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
<?php
2+
/**
3+
* Copyright © 2013-2017 Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Test\Unit\Block\Adminhtml\System\Config;
7+
8+
use Magento\Framework\Data\Form;
9+
use Magento\Analytics\Block\Adminhtml\System\Config\CollectionTimeLabel;
10+
use Magento\Framework\Stdlib\DateTime\TimezoneInterface;
11+
use Magento\Backend\Block\Template\Context;
12+
use Magento\Framework\Data\Form\Element\AbstractElement;
13+
14+
class CollectionTimeLabelTest extends \PHPUnit_Framework_TestCase
15+
{
16+
/**
17+
* @var CollectionTimeLabel
18+
*/
19+
private $collectionTimeLabel;
20+
21+
/**
22+
* @var Context|\PHPUnit_Framework_MockObject_MockObject
23+
*/
24+
private $contextMock;
25+
26+
/**
27+
* @var TimezoneInterface|\PHPUnit_Framework_MockObject_MockObject
28+
*/
29+
private $timeZoneMock;
30+
31+
/**
32+
* @var AbstractElement|\PHPUnit_Framework_MockObject_MockObject
33+
*/
34+
private $abstractElementMock;
35+
36+
/**
37+
* @return void
38+
*/
39+
protected function setUp()
40+
{
41+
$this->abstractElementMock = $this->getMockBuilder(AbstractElement::class)
42+
->setMethods(['getComment'])
43+
->disableOriginalConstructor()
44+
->getMock();
45+
$this->contextMock = $this->getMockBuilder(Context::class)
46+
->disableOriginalConstructor()
47+
->getMock();
48+
$this->formMock = $this->getMockBuilder(Form::class)
49+
->disableOriginalConstructor()
50+
->getMock();
51+
$this->timeZoneMock = $this->getMockBuilder(TimezoneInterface::class)
52+
->disableOriginalConstructor()
53+
->getMock();
54+
55+
$this->collectionTimeLabel = new CollectionTimeLabel($this->contextMock, $this->timeZoneMock);
56+
}
57+
58+
/**
59+
* @return void
60+
*/
61+
public function testRender()
62+
{
63+
$timeZone = "America/New_York";
64+
$this->abstractElementMock->setForm($this->formMock);
65+
$this->timeZoneMock->expects($this->once())
66+
->method('getConfigTimezone')
67+
->willReturn($timeZone);
68+
$this->abstractElementMock->expects($this->any())
69+
->method('getComment')
70+
->willReturn('Eastern Standard Time (America/New_York)');
71+
$this->assertRegexp(
72+
"/Eastern Standard Time \(America\/New_York\)/",
73+
$this->collectionTimeLabel->render($this->abstractElementMock)
74+
);
75+
}
76+
}
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
<?php
2+
/**
3+
* Copyright © 2013-2017 Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Test\Unit\Block\Adminhtml\System\Config;
7+
8+
use Magento\Analytics\Block\Adminhtml\System\Config\SubscriptionStatusLabel;
9+
use Magento\Analytics\Model\SubscriptionStatusProvider;
10+
use Magento\Backend\Block\Template\Context;
11+
use Magento\Framework\Data\Form\Element\AbstractElement;
12+
use Magento\Framework\Data\Form;
13+
14+
/**
15+
* Class SignupTest
16+
*/
17+
class SubscriptionStatusLabelTest extends \PHPUnit_Framework_TestCase
18+
{
19+
/**
20+
* @var SubscriptionStatusLabel
21+
*/
22+
private $subscriptionStatusLabel;
23+
24+
/**
25+
* @var AbstractElement|\PHPUnit_Framework_MockObject_MockObject
26+
*/
27+
private $abstractElementMock;
28+
29+
/**
30+
* @var SubscriptionStatusProvider|\PHPUnit_Framework_MockObject_MockObject
31+
*/
32+
private $subscriptionStatusProviderMock;
33+
34+
/**
35+
* @var Context|\PHPUnit_Framework_MockObject_MockObject
36+
*/
37+
private $contextMock;
38+
39+
/**
40+
* @var Form|\PHPUnit_Framework_MockObject_MockObject
41+
*/
42+
private $formMock;
43+
44+
/**
45+
* @return void
46+
*/
47+
protected function setUp()
48+
{
49+
$this->subscriptionStatusProviderMock = $this->getMockBuilder(SubscriptionStatusProvider::class)
50+
->disableOriginalConstructor()
51+
->getMock();
52+
$this->contextMock = $this->getMockBuilder(Context::class)
53+
->disableOriginalConstructor()
54+
->getMock();
55+
$this->abstractElementMock = $this->getMockBuilder(AbstractElement::class)
56+
->setMethods(['getComment'])
57+
->disableOriginalConstructor()
58+
->getMock();
59+
$this->formMock = $this->getMockBuilder(Form::class)
60+
->disableOriginalConstructor()
61+
->getMock();
62+
63+
$this->subscriptionStatusLabel = new SubscriptionStatusLabel(
64+
$this->contextMock,
65+
$this->subscriptionStatusProviderMock
66+
);
67+
}
68+
69+
/**
70+
* @return void
71+
*/
72+
public function testRender()
73+
{
74+
$this->abstractElementMock->setForm($this->formMock);
75+
$this->subscriptionStatusProviderMock->expects($this->once())
76+
->method('getStatus')
77+
->willReturn('Enabled');
78+
$this->abstractElementMock->expects($this->any())
79+
->method('getComment')
80+
->willReturn('Subscription status: Enabled');
81+
$this->assertRegexp(
82+
"/Subscription status: Enabled/",
83+
$this->subscriptionStatusLabel->render($this->abstractElementMock)
84+
);
85+
}
86+
}

0 commit comments

Comments
 (0)