VaultEnableAssignerTest.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Vault\Test\Unit\Observer;
  7. use Magento\Framework\DataObject;
  8. use Magento\Framework\Event;
  9. use Magento\Framework\Event\Observer;
  10. use Magento\Payment\Model\InfoInterface;
  11. use Magento\Payment\Observer\AbstractDataAssignObserver;
  12. use Magento\Quote\Api\Data\PaymentInterface;
  13. use Magento\Vault\Model\Ui\VaultConfigProvider;
  14. use Magento\Vault\Observer\VaultEnableAssigner;
  15. class VaultEnableAssignerTest extends \PHPUnit\Framework\TestCase
  16. {
  17. public function testExecuteNoActiveCode()
  18. {
  19. $dataObject = new DataObject();
  20. $observer = $this->getPreparedObserverWithMap(
  21. [
  22. [AbstractDataAssignObserver::DATA_CODE, $dataObject]
  23. ]
  24. );
  25. $vaultEnableAssigner = new VaultEnableAssigner();
  26. $vaultEnableAssigner->execute($observer);
  27. }
  28. /**
  29. * @param string $activeCode
  30. * @param boolean $expectedBool
  31. * @dataProvider booleanDataProvider
  32. */
  33. public function testExecute($activeCode, $expectedBool)
  34. {
  35. $dataObject = new DataObject(
  36. [
  37. PaymentInterface::KEY_ADDITIONAL_DATA => [
  38. VaultConfigProvider::IS_ACTIVE_CODE => $activeCode
  39. ]
  40. ]
  41. );
  42. $paymentModel = $this->createMock(InfoInterface::class);
  43. $paymentModel->expects(static::once())
  44. ->method('setAdditionalInformation')
  45. ->with(
  46. VaultConfigProvider::IS_ACTIVE_CODE,
  47. $expectedBool
  48. );
  49. $observer = $this->getPreparedObserverWithMap(
  50. [
  51. [AbstractDataAssignObserver::DATA_CODE, $dataObject],
  52. [AbstractDataAssignObserver::MODEL_CODE, $paymentModel]
  53. ]
  54. );
  55. $vaultEnableAssigner = new VaultEnableAssigner();
  56. $vaultEnableAssigner->execute($observer);
  57. }
  58. /**
  59. * @return array
  60. */
  61. public function booleanDataProvider()
  62. {
  63. return [
  64. ['true', true],
  65. ['1', true],
  66. ['on', true],
  67. ['false', false],
  68. ['0', false],
  69. ['off', false]
  70. ];
  71. }
  72. public function testExecuteNever()
  73. {
  74. $dataObject = new DataObject(
  75. [
  76. PaymentInterface::KEY_ADDITIONAL_DATA => []
  77. ]
  78. );
  79. $paymentModel = $this->createMock(InfoInterface::class);
  80. $paymentModel->expects(static::never())
  81. ->method('setAdditionalInformation');
  82. $observer = $this->getPreparedObserverWithMap(
  83. [
  84. [AbstractDataAssignObserver::DATA_CODE, $dataObject],
  85. [AbstractDataAssignObserver::MODEL_CODE, $paymentModel]
  86. ]
  87. );
  88. $vaultEnableAssigner = new VaultEnableAssigner();
  89. $vaultEnableAssigner->execute($observer);
  90. }
  91. /**
  92. * @param array $returnMap
  93. * @return \PHPUnit_Framework_MockObject_MockObject|Observer
  94. */
  95. private function getPreparedObserverWithMap(array $returnMap)
  96. {
  97. $observer = $this->getMockBuilder(Observer::class)
  98. ->disableOriginalConstructor()
  99. ->getMock();
  100. $event = $this->getMockBuilder(Event::class)
  101. ->disableOriginalConstructor()
  102. ->getMock();
  103. $observer->expects(static::atLeastOnce())
  104. ->method('getEvent')
  105. ->willReturn($event);
  106. $event->expects(static::atLeastOnce())
  107. ->method('getDataByKey')
  108. ->willReturnMap(
  109. $returnMap
  110. );
  111. return $observer;
  112. }
  113. }