Skip to content

Commit 605a52b

Browse files
committed
MAGETWO-96930: Terms & Conditions logic fix
- Change checkbox behavior - Unit tests fix
1 parent 1815df9 commit 605a52b

File tree

2 files changed

+43
-16
lines changed

2 files changed

+43
-16
lines changed

app/code/Magento/CheckoutAgreements/Model/AgreementsConfigProvider.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,17 +45,18 @@ public function __construct(
4545
}
4646

4747
/**
48-
* {@inheritdoc}
48+
* @inheritdoc
4949
*/
5050
public function getConfig()
5151
{
5252
$agreements = [];
5353
$agreements['checkoutAgreements'] = $this->getAgreementsConfig();
54+
5455
return $agreements;
5556
}
5657

5758
/**
58-
* Returns agreements config
59+
* Returns agreements config.
5960
*
6061
* @return array
6162
*/
@@ -75,7 +76,7 @@ protected function getAgreementsConfig()
7576
'content' => $agreement->getIsHtml()
7677
? $agreement->getContent()
7778
: nl2br($this->escaper->escapeHtml($agreement->getContent())),
78-
'checkboxText' => $agreement->getCheckboxText(),
79+
'checkboxText' => $this->escaper->escapeHtml($agreement->getCheckboxText()),
7980
'mode' => $agreement->getMode(),
8081
'agreementId' => $agreement->getAgreementId()
8182
];

app/code/Magento/CheckoutAgreements/Test/Unit/Model/AgreementsConfigProviderTest.php

Lines changed: 39 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@
88
use Magento\CheckoutAgreements\Model\AgreementsProvider;
99
use Magento\Store\Model\ScopeInterface;
1010

11+
/**
12+
* Tests for AgreementsConfigProvider.
13+
*/
1114
class AgreementsConfigProviderTest extends \PHPUnit\Framework\TestCase
1215
{
1316
/**
@@ -30,6 +33,9 @@ class AgreementsConfigProviderTest extends \PHPUnit\Framework\TestCase
3033
*/
3134
protected $escaperMock;
3235

36+
/**
37+
* @inheritdoc
38+
*/
3339
protected function setUp()
3440
{
3541
$this->scopeConfigMock = $this->createMock(\Magento\Framework\App\Config\ScopeConfigInterface::class);
@@ -45,10 +51,16 @@ protected function setUp()
4551
);
4652
}
4753

54+
/**
55+
* Test for getConfig if content is HTML.
56+
*
57+
* @return void
58+
*/
4859
public function testGetConfigIfContentIsHtml()
4960
{
5061
$content = 'content';
5162
$checkboxText = 'checkbox_text';
63+
$escapedCheckboxText = 'escaped_checkbox_text';
5264
$mode = \Magento\CheckoutAgreements\Model\AgreementModeOptions::MODE_AUTO;
5365
$agreementId = 100;
5466
$expectedResult = [
@@ -57,12 +69,12 @@ public function testGetConfigIfContentIsHtml()
5769
'agreements' => [
5870
[
5971
'content' => $content,
60-
'checkboxText' => $checkboxText,
72+
'checkboxText' => $escapedCheckboxText,
6173
'mode' => $mode,
62-
'agreementId' => $agreementId
63-
]
64-
]
65-
]
74+
'agreementId' => $agreementId,
75+
],
76+
],
77+
],
6678
];
6779

6880
$this->scopeConfigMock->expects($this->once())
@@ -71,8 +83,12 @@ public function testGetConfigIfContentIsHtml()
7183
->willReturn(true);
7284

7385
$agreement = $this->createMock(\Magento\CheckoutAgreements\Api\Data\AgreementInterface::class);
74-
$this->agreementsRepositoryMock->expects($this->any())->method('getList')->willReturn([$agreement]);
86+
$this->agreementsRepositoryMock->expects($this->once())->method('getList')->willReturn([$agreement]);
7587

88+
$this->escaperMock->expects($this->once())
89+
->method('escapeHtml')
90+
->with($checkboxText)
91+
->willReturn($escapedCheckboxText);
7692
$agreement->expects($this->once())->method('getIsHtml')->willReturn(true);
7793
$agreement->expects($this->once())->method('getContent')->willReturn($content);
7894
$agreement->expects($this->once())->method('getCheckboxText')->willReturn($checkboxText);
@@ -82,11 +98,17 @@ public function testGetConfigIfContentIsHtml()
8298
$this->assertEquals($expectedResult, $this->model->getConfig());
8399
}
84100

101+
/**
102+
* Test for getConfig if content is not HTML.
103+
*
104+
* @return void
105+
*/
85106
public function testGetConfigIfContentIsNotHtml()
86107
{
87108
$content = 'content';
88109
$escapedContent = 'escaped_content';
89110
$checkboxText = 'checkbox_text';
111+
$escapedCheckboxText = 'escaped_checkbox_text';
90112
$mode = \Magento\CheckoutAgreements\Model\AgreementModeOptions::MODE_AUTO;
91113
$agreementId = 100;
92114
$expectedResult = [
@@ -95,12 +117,12 @@ public function testGetConfigIfContentIsNotHtml()
95117
'agreements' => [
96118
[
97119
'content' => $escapedContent,
98-
'checkboxText' => $checkboxText,
120+
'checkboxText' => $escapedCheckboxText,
99121
'mode' => $mode,
100-
'agreementId' => $agreementId
101-
]
102-
]
103-
]
122+
'agreementId' => $agreementId,
123+
],
124+
],
125+
],
104126
];
105127

106128
$this->scopeConfigMock->expects($this->once())
@@ -109,9 +131,13 @@ public function testGetConfigIfContentIsNotHtml()
109131
->willReturn(true);
110132

111133
$agreement = $this->createMock(\Magento\CheckoutAgreements\Api\Data\AgreementInterface::class);
112-
$this->agreementsRepositoryMock->expects($this->any())->method('getList')->willReturn([$agreement]);
113-
$this->escaperMock->expects($this->once())->method('escapeHtml')->with($content)->willReturn($escapedContent);
134+
$this->agreementsRepositoryMock->expects($this->once())->method('getList')->willReturn([$agreement]);
114135

136+
$this->escaperMock->expects($this->at(0))->method('escapeHtml')->with($content)->willReturn($escapedContent);
137+
$this->escaperMock->expects($this->at(1))
138+
->method('escapeHtml')
139+
->with($checkboxText)
140+
->willReturn($escapedCheckboxText);
115141
$agreement->expects($this->once())->method('getIsHtml')->willReturn(false);
116142
$agreement->expects($this->once())->method('getContent')->willReturn($content);
117143
$agreement->expects($this->once())->method('getCheckboxText')->willReturn($checkboxText);

0 commit comments

Comments
 (0)