Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
AfterPaymentSaveObserverTest.php
Go to the documentation of this file.
1 <?php
7 
12 use Magento\Sales\Api\Data\OrderPaymentExtension;
13 use Magento\Sales\Api\Data\OrderPaymentExtensionFactory;
19 use PHPUnit_Framework_MockObject_MockObject as MockObject;
20 
21 class AfterPaymentSaveObserverTest extends \PHPUnit\Framework\TestCase
22 {
27 
31  protected $observer;
32 
36  protected $encryptorModel;
37 
41  protected $paymentExtension;
42 
47 
51  protected $paymentTokenMock;
52 
56  protected $salesOrderMock;
57 
62 
66  protected function setUp()
67  {
69  $encryptorRandomGenerator = $this->createMock(Random::class);
71  $deploymentConfigMock = $this->createMock(DeploymentConfig::class);
72  $this->encryptorModel = new Encryptor($encryptorRandomGenerator, $deploymentConfigMock);
73 
74  $this->paymentExtension = $this->getMockBuilder(OrderPaymentExtension::class)
75  ->setMethods(['setVaultPaymentToken', 'getVaultPaymentToken', '__wakeup'])
76  ->disableOriginalConstructor()
77  ->getMock();
78 
79  $this->paymentTokenManagementMock = $this->getMockBuilder(PaymentTokenManagement::class)
80  ->setMethods(['saveTokenWithPaymentLink'])
81  ->disableOriginalConstructor()
82  ->getMock();
83 
84  $this->paymentTokenMock = $this->getMockBuilder(PaymentToken::class)
85  ->setMethods(null)
86  ->disableOriginalConstructor()
87  ->getMock();
88 
89  $this->paymentExtension->setVaultPaymentToken($this->paymentTokenMock);
90 
91  // Sales Order Model
92  $this->salesOrderMock = $this->createMock(Order::class);
93 
94  // Sales Order Payment Model
95  $this->salesOrderPaymentMock = $this->getMockBuilder(Payment::class)
96  ->setMethods(null)
97  ->disableOriginalConstructor()
98  ->getMock();
99  $this->salesOrderPaymentMock->setOrder($this->salesOrderMock);
100  $this->salesOrderPaymentMock->setExtensionAttributes($this->paymentExtension);
101 
102  // Arguments to observer container
103  $this->eventObserverArgMock = $this->getMockBuilder(Observer::class)
104  ->setMethods(['getDataByKey'])
105  ->disableOriginalConstructor()
106  ->getMock();
107  $this->eventObserverArgMock->expects($this->any())
108  ->method('getDataByKey')
110  ->willReturn($this->salesOrderPaymentMock);
111 
112  // Observer class
113  $this->observer = new AfterPaymentSaveObserver(
114  $this->paymentTokenManagementMock,
115  $this->encryptorModel
116  );
117  }
118 
127  public function testPositiveCase($customerId, $createdAt, $token, $isActive, $method)
128  {
129  $this->paymentTokenMock->setGatewayToken($token);
130  $this->paymentTokenMock->setCustomerId($customerId);
131  $this->paymentTokenMock->setCreatedAt($createdAt);
132  $this->paymentTokenMock->setPaymentMethodCode($method);
133  $this->paymentTokenMock->setIsActive($isActive);
134 
135  $this->paymentExtension->expects($this->exactly(2))
136  ->method('getVaultPaymentToken')
137  ->willReturn($this->paymentTokenMock);
138 
139  if (!empty($token)) {
140  $this->paymentTokenManagementMock->expects($this->once())
141  ->method('saveTokenWithPaymentLink')
142  ->willReturn(true);
143  $this->paymentExtension->expects($this->once())
144  ->method('setVaultPaymentToken')
145  ->with($this->paymentTokenMock);
146  } else {
147  $this->paymentTokenManagementMock->expects($this->never())
148  ->method('saveTokenWithPaymentLink');
149  $this->paymentExtension->expects($this->never())
150  ->method('setVaultPaymentToken')
151  ->with($this->paymentTokenMock);
152  }
153 
154  static::assertSame($this->observer, $this->observer->execute($this->eventObserverArgMock));
155 
156  $paymentToken = $this->salesOrderPaymentMock->getExtensionAttributes()->getVaultPaymentToken();
157  static::assertSame($paymentToken, $this->paymentTokenMock);
158  static::assertEquals($token, $paymentToken->getGatewayToken());
159  static::assertEquals($isActive, $paymentToken->getIsActive());
160  static::assertEquals($createdAt, $paymentToken->getCreatedAt());
161  }
162 
166  public function positiveCaseDataProvider()
167  {
168  return [
169  [
170  1,
171  '10\20\2015',
172  'asdfg',
173  true,
174  'paypal'
175  ],
176  [
177  null,
178  null,
179  null,
180  false,
181  null
182  ],
183  ];
184  }
185 }
testPositiveCase($customerId, $createdAt, $token, $isActive, $method)
$method
Definition: info.phtml:13