InfoTest.php 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Payment\Test\Unit\Block;
  7. use Magento\Framework\DataObject;
  8. class InfoTest extends \PHPUnit\Framework\TestCase
  9. {
  10. /**
  11. * @var \PHPUnit_Framework_MockObject_MockObject
  12. */
  13. protected $_object;
  14. /**
  15. * @var \PHPUnit_Framework_MockObject_MockObject
  16. */
  17. protected $_storeManager;
  18. /**
  19. * @var \PHPUnit_Framework_MockObject_MockObject
  20. */
  21. protected $_eventManager;
  22. /**
  23. * @var \PHPUnit_Framework_MockObject_MockObject
  24. */
  25. protected $_escaper;
  26. protected function setUp()
  27. {
  28. $helper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
  29. $this->_storeManager = $this->getMockBuilder(
  30. \Magento\Store\Model\StoreManager::class
  31. )->setMethods(
  32. ['getStore']
  33. )->disableOriginalConstructor()->getMock();
  34. $this->_eventManager = $this->getMockBuilder(
  35. \Magento\Framework\Event\ManagerInterface::class
  36. )->setMethods(
  37. ['dispatch']
  38. )->disableOriginalConstructor()->getMock();
  39. $this->_escaper = $helper->getObject(\Magento\Framework\Escaper::class);
  40. $context = $helper->getObject(
  41. \Magento\Framework\View\Element\Template\Context::class,
  42. [
  43. 'storeManager' => $this->_storeManager,
  44. 'eventManager' => $this->_eventManager,
  45. 'escaper' => $this->_escaper
  46. ]
  47. );
  48. $this->_object = $helper->getObject(\Magento\Payment\Block\Info::class, ['context' => $context]);
  49. }
  50. /**
  51. * @dataProvider getIsSecureModeDataProvider
  52. * @param bool $isSecureMode
  53. * @param bool $methodInstance
  54. * @param bool $store
  55. * @param string $storeCode
  56. * @param bool $expectedResult
  57. */
  58. public function testGetIsSecureMode($isSecureMode, $methodInstance, $store, $storeCode, $expectedResult)
  59. {
  60. if (isset($store)) {
  61. $methodInstance = $this->_getMethodInstanceMock($store);
  62. }
  63. if (isset($storeCode)) {
  64. $storeMock = $this->_getStoreMock($storeCode);
  65. $this->_storeManager->expects($this->any())->method('getStore')->will($this->returnValue($storeMock));
  66. }
  67. $paymentInfo = $this->getMockBuilder(\Magento\Payment\Model\Info::class)
  68. ->disableOriginalConstructor()->getMock();
  69. $paymentInfo->expects($this->any())->method('getMethodInstance')->will($this->returnValue($methodInstance));
  70. $this->_object->setData('info', $paymentInfo);
  71. $this->_object->setData('is_secure_mode', $isSecureMode);
  72. $result = $this->_object->getIsSecureMode();
  73. $this->assertEquals($result, $expectedResult);
  74. }
  75. /**
  76. * @return array
  77. */
  78. public function getIsSecureModeDataProvider()
  79. {
  80. return [
  81. [false, true, null, null, false],
  82. [true, true, null, null, true],
  83. [null, false, null, null, true],
  84. [null, null, false, null, false],
  85. [null, null, true, 'default', true],
  86. [null, null, true, 'admin', false]
  87. ];
  88. }
  89. /**
  90. * @param bool $store
  91. * @return \PHPUnit_Framework_MockObject_MockObject
  92. */
  93. protected function _getMethodInstanceMock($store)
  94. {
  95. $methodInstance = $this->getMockBuilder(
  96. \Magento\Payment\Model\Method\AbstractMethod::class
  97. )->setMethods(
  98. ['getStore']
  99. )->disableOriginalConstructor()->getMock();
  100. $methodInstance->expects($this->any())->method('getStore')->will($this->returnValue($store));
  101. return $methodInstance;
  102. }
  103. /**
  104. * @param string $storeCode
  105. * @return \PHPUnit_Framework_MockObject_MockObject
  106. */
  107. protected function _getStoreMock($storeCode)
  108. {
  109. $storeMock = $this->getMockBuilder(\Magento\Store\Model\Store::class)->disableOriginalConstructor()->getMock();
  110. $storeMock->expects($this->any())->method('getCode')->will($this->returnValue($storeCode));
  111. return $storeMock;
  112. }
  113. /**
  114. * @expectedException \Magento\Framework\Exception\LocalizedException
  115. */
  116. public function testGetInfoThrowException()
  117. {
  118. $this->_object->setData('info', new \Magento\Framework\DataObject([]));
  119. $this->_object->getInfo();
  120. }
  121. public function testGetSpecificInformation()
  122. {
  123. $paymentInfo = $this->getMockBuilder(\Magento\Payment\Model\Info::class)
  124. ->disableOriginalConstructor()->getMock();
  125. $this->_object->setData('info', $paymentInfo);
  126. $result = $this->_object->getSpecificInformation();
  127. $this->assertNotNull($result);
  128. }
  129. /**
  130. * @dataProvider getValueAsArrayDataProvider
  131. */
  132. public function testGetValueAsArray($value, $escapeHtml, $expected)
  133. {
  134. $result = $this->_object->getValueAsArray($value, $escapeHtml);
  135. $this->assertEquals($expected, $result);
  136. }
  137. /**
  138. * @return array
  139. */
  140. public function getValueAsArrayDataProvider()
  141. {
  142. return [
  143. [[], true, []],
  144. [[], false, []],
  145. ['string', true, [0 => 'string']],
  146. ['string', false, ['string']],
  147. [['key' => 'v"a!@#%$%^^&&*(*/\'\]l'], true, ['key' => 'v&quot;a!@#%$%^^&amp;&amp;*(*/&#039;\]l']],
  148. [['key' => 'val'], false, ['key' => 'val']]
  149. ];
  150. }
  151. }