AgreementsConfigProviderTest.php 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\CheckoutAgreements\Test\Unit\Model;
  7. use Magento\CheckoutAgreements\Model\AgreementsProvider;
  8. use Magento\Store\Model\ScopeInterface;
  9. /**
  10. * Tests for AgreementsConfigProvider.
  11. */
  12. class AgreementsConfigProviderTest extends \PHPUnit\Framework\TestCase
  13. {
  14. /**
  15. * @var \Magento\CheckoutAgreements\Model\AgreementsConfigProvider
  16. */
  17. protected $model;
  18. /**
  19. * @var \PHPUnit_Framework_MockObject_MockObject
  20. */
  21. protected $scopeConfigMock;
  22. /**
  23. * @var \PHPUnit_Framework_MockObject_MockObject
  24. */
  25. protected $escaperMock;
  26. /**
  27. * @var \PHPUnit_Framework_MockObject_MockObject
  28. */
  29. private $checkoutAgreementsListMock;
  30. /**
  31. * @var \PHPUnit_Framework_MockObject_MockObject
  32. */
  33. private $agreementsFilterMock;
  34. /**
  35. * @inheritdoc
  36. */
  37. protected function setUp()
  38. {
  39. $this->scopeConfigMock = $this->createMock(\Magento\Framework\App\Config\ScopeConfigInterface::class);
  40. $agreementsRepositoryMock = $this->createMock(
  41. \Magento\CheckoutAgreements\Api\CheckoutAgreementsRepositoryInterface::class
  42. );
  43. $this->escaperMock = $this->createMock(\Magento\Framework\Escaper::class);
  44. $this->checkoutAgreementsListMock = $this->createMock(
  45. \Magento\CheckoutAgreements\Api\CheckoutAgreementsListInterface::class
  46. );
  47. $this->agreementsFilterMock = $this->createMock(
  48. \Magento\CheckoutAgreements\Model\Api\SearchCriteria\ActiveStoreAgreementsFilter::class
  49. );
  50. $this->model = new \Magento\CheckoutAgreements\Model\AgreementsConfigProvider(
  51. $this->scopeConfigMock,
  52. $agreementsRepositoryMock,
  53. $this->escaperMock,
  54. $this->checkoutAgreementsListMock,
  55. $this->agreementsFilterMock
  56. );
  57. }
  58. /**
  59. * Test for getConfig if content is HTML.
  60. *
  61. * @return void
  62. */
  63. public function testGetConfigIfContentIsHtml()
  64. {
  65. $content = 'content';
  66. $checkboxText = 'checkbox_text';
  67. $escapedCheckboxText = 'escaped_checkbox_text';
  68. $mode = \Magento\CheckoutAgreements\Model\AgreementModeOptions::MODE_AUTO;
  69. $agreementId = 100;
  70. $expectedResult = [
  71. 'checkoutAgreements' => [
  72. 'isEnabled' => 1,
  73. 'agreements' => [
  74. [
  75. 'content' => $content,
  76. 'checkboxText' => $escapedCheckboxText,
  77. 'mode' => $mode,
  78. 'agreementId' => $agreementId,
  79. ],
  80. ],
  81. ],
  82. ];
  83. $this->scopeConfigMock->expects($this->once())
  84. ->method('isSetFlag')
  85. ->with(AgreementsProvider::PATH_ENABLED, ScopeInterface::SCOPE_STORE)
  86. ->willReturn(true);
  87. $agreement = $this->createMock(\Magento\CheckoutAgreements\Api\Data\AgreementInterface::class);
  88. $searchCriteriaMock = $this->createMock(\Magento\Framework\Api\SearchCriteria::class);
  89. $this->agreementsFilterMock->expects($this->once())
  90. ->method('buildSearchCriteria')
  91. ->willReturn($searchCriteriaMock);
  92. $this->checkoutAgreementsListMock->expects($this->once())
  93. ->method('getList')
  94. ->with($searchCriteriaMock)
  95. ->willReturn([$agreement]);
  96. $this->escaperMock->expects($this->once())
  97. ->method('escapeHtml')
  98. ->with($checkboxText)
  99. ->willReturn($escapedCheckboxText);
  100. $agreement->expects($this->once())->method('getIsHtml')->willReturn(true);
  101. $agreement->expects($this->once())->method('getContent')->willReturn($content);
  102. $agreement->expects($this->once())->method('getCheckboxText')->willReturn($checkboxText);
  103. $agreement->expects($this->once())->method('getMode')->willReturn($mode);
  104. $agreement->expects($this->once())->method('getAgreementId')->willReturn($agreementId);
  105. $this->assertEquals($expectedResult, $this->model->getConfig());
  106. }
  107. /**
  108. * Test for getConfig if content is not HTML.
  109. *
  110. * @return void
  111. */
  112. public function testGetConfigIfContentIsNotHtml()
  113. {
  114. $content = 'content';
  115. $escapedContent = 'escaped_content';
  116. $checkboxText = 'checkbox_text';
  117. $escapedCheckboxText = 'escaped_checkbox_text';
  118. $mode = \Magento\CheckoutAgreements\Model\AgreementModeOptions::MODE_AUTO;
  119. $agreementId = 100;
  120. $expectedResult = [
  121. 'checkoutAgreements' => [
  122. 'isEnabled' => 1,
  123. 'agreements' => [
  124. [
  125. 'content' => $escapedContent,
  126. 'checkboxText' => $escapedCheckboxText,
  127. 'mode' => $mode,
  128. 'agreementId' => $agreementId,
  129. ],
  130. ],
  131. ],
  132. ];
  133. $this->scopeConfigMock->expects($this->once())
  134. ->method('isSetFlag')
  135. ->with(AgreementsProvider::PATH_ENABLED, ScopeInterface::SCOPE_STORE)
  136. ->willReturn(true);
  137. $agreement = $this->createMock(\Magento\CheckoutAgreements\Api\Data\AgreementInterface::class);
  138. $searchCriteriaMock = $this->createMock(\Magento\Framework\Api\SearchCriteria::class);
  139. $this->agreementsFilterMock->expects($this->once())
  140. ->method('buildSearchCriteria')
  141. ->willReturn($searchCriteriaMock);
  142. $this->checkoutAgreementsListMock->expects($this->once())
  143. ->method('getList')
  144. ->with($searchCriteriaMock)
  145. ->willReturn([$agreement]);
  146. $this->escaperMock->expects($this->at(0))->method('escapeHtml')->with($content)->willReturn($escapedContent);
  147. $this->escaperMock->expects($this->at(1))
  148. ->method('escapeHtml')
  149. ->with($checkboxText)
  150. ->willReturn($escapedCheckboxText);
  151. $agreement->expects($this->once())->method('getIsHtml')->willReturn(false);
  152. $agreement->expects($this->once())->method('getContent')->willReturn($content);
  153. $agreement->expects($this->once())->method('getCheckboxText')->willReturn($checkboxText);
  154. $agreement->expects($this->once())->method('getMode')->willReturn($mode);
  155. $agreement->expects($this->once())->method('getAgreementId')->willReturn($agreementId);
  156. $this->assertEquals($expectedResult, $this->model->getConfig());
  157. }
  158. }