Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes
IpnTest Class Reference
Inheritance diagram for IpnTest:

Public Member Functions

 testProcessIpnRequestExpressCurrency ($currencyCode)
 
 testProcessIpnRequestFullRefund ()
 
 testProcessIpnRequestPartialRefund ()
 
 testProcessIpnRequestRestRefund ()
 

Static Public Member Functions

static currencyProvider ()
 

Protected Member Functions

 setUp ()
 
 _assertOrder ($order, $currencyCode)
 
 _createMockedHttpAdapter ()
 

Protected Attributes

 $_objectManager
 

Detailed Description

@magentoAppArea frontend

Definition at line 16 of file IpnTest.php.

Member Function Documentation

◆ _assertOrder()

_assertOrder (   $order,
  $currencyCode 
)
protected

Perform order state and status assertions depending on currency code

Parameters
\Magento\Sales\Model\Order$order
string$currencyCode

Definition at line 188 of file IpnTest.php.

189  {
190  if ($currencyCode == 'USD') {
191  $this->assertEquals('complete', $order->getState());
192  $this->assertEquals('complete', $order->getStatus());
193  } else {
194  $this->assertEquals('payment_review', $order->getState());
195  $this->assertEquals('fraud', $order->getStatus());
196  }
197  }
$order
Definition: order.php:55

◆ _createMockedHttpAdapter()

_createMockedHttpAdapter ( )
protected

Mocked HTTP adapter to get VERIFIED PayPal IPN postback result

Returns
\Magento\Framework\HTTP\Adapter\Curl

Definition at line 215 of file IpnTest.php.

216  {
217  $factory = $this->createPartialMock(\Magento\Framework\HTTP\Adapter\CurlFactory::class, ['create']);
218  $adapter = $this->createPartialMock(\Magento\Framework\HTTP\Adapter\Curl::class, ['read', 'write']);
219 
220  $adapter->expects($this->once())->method('read')->with()->will($this->returnValue("\nVERIFIED"));
221 
222  $adapter->expects($this->once())->method('write');
223 
224  $factory->expects($this->once())->method('create')->with()->will($this->returnValue($adapter));
225  return $factory;
226  }
$adapter
Definition: webapi_user.php:16

◆ currencyProvider()

static currencyProvider ( )
static

Data provider for currency check tests

Returns
array

Definition at line 205 of file IpnTest.php.

206  {
207  return [['USD'], ['EUR']];
208  }

◆ setUp()

setUp ( )
protected

Definition at line 23 of file IpnTest.php.

◆ testProcessIpnRequestExpressCurrency()

testProcessIpnRequestExpressCurrency (   $currencyCode)
Parameters
string$currencyCode@dataProvider currencyProvider @magentoDataFixture Magento/Paypal/_files/order_express.php @magentoConfigFixture current_store payment/paypal_direct/active 1 @magentoConfigFixture current_store payment/paypal_express/active 1 @magentoConfigFixture current_store paypal/general/merchant_country US

Definition at line 36 of file IpnTest.php.

37  {
38  $this->_processIpnRequestCurrency($currencyCode);
39  }

◆ testProcessIpnRequestFullRefund()

testProcessIpnRequestFullRefund ( )

Refund full order amount by Paypal Express IPN message service.

@magentoDataFixture Magento/Paypal/_files/order_express_with_invoice_and_shipping.php @magentoConfigFixture current_store payment/paypal_express/active 1 @magentoConfigFixture current_store paypal/general/merchant_country US

Definition at line 48 of file IpnTest.php.

49  {
50  $ipnData = require __DIR__ . '/../_files/ipn_refund.php';
51  $ipnFactory = $this->_objectManager->create(IpnFactory::class);
52  $ipnModel = $ipnFactory->create(
53  [
54  'data' => $ipnData,
55  'curlFactory' => $this->_createMockedHttpAdapter()
56  ]
57  );
58 
59  $ipnModel->processIpnRequest();
60 
61  $order = $this->_objectManager->create(Order::class);
62  $order->loadByIncrementId('100000001');
63 
64  $creditmemoItems = $order->getCreditmemosCollection()->getItems();
65  $creditmemo = current($creditmemoItems);
66 
67  $this->assertEquals(Order::STATE_CLOSED, $order->getState()) ;
68  $this->assertEquals(1, count($creditmemoItems));
69  $this->assertEquals(Creditmemo::STATE_REFUNDED, $creditmemo->getState());
70  $this->assertEquals(10, $order->getSubtotalRefunded());
71  $this->assertEquals(10, $order->getBaseSubtotalRefunded());
72  $this->assertEquals(20, $order->getShippingRefunded());
73  $this->assertEquals(20, $order->getBaseShippingRefunded());
74  $this->assertEquals(30, $order->getTotalRefunded());
75  $this->assertEquals(30, $order->getBaseTotalRefunded());
76  $this->assertEquals(30, $order->getTotalOnlineRefunded());
77  $this->assertEmpty($order->getTotalOfflineRefunded());
78  }
defined('TESTS_BP')||define('TESTS_BP' __DIR__
Definition: _bootstrap.php:60
$order
Definition: order.php:55

◆ testProcessIpnRequestPartialRefund()

testProcessIpnRequestPartialRefund ( )

Partial refund of order amount by Paypal Express IPN message service.

@magentoDataFixture Magento/Paypal/_files/order_express_with_invoice_and_shipping.php @magentoConfigFixture current_store payment/paypal_express/active 1 @magentoConfigFixture current_store paypal/general/merchant_country US

Definition at line 87 of file IpnTest.php.

88  {
89  $ipnData = require __DIR__ . '/../_files/ipn_refund.php';
90 
91  $refundAmount = -15;
92  $ipnData['mc_gross'] = $refundAmount;
93 
94  $ipnFactory = $this->_objectManager->create(IpnFactory::class);
95  $ipnModel = $ipnFactory->create(
96  [
97  'data' => $ipnData,
98  'curlFactory' => $this->_createMockedHttpAdapter()
99  ]
100  );
101 
102  $ipnModel->processIpnRequest();
103 
104  $order = $this->_objectManager->create(Order::class);
105  $order->loadByIncrementId('100000001');
106 
107  $creditmemoItems = $order->getCreditmemosCollection()->getItems();
108  $comments = $order->load($order->getId())->getAllStatusHistory();
109  $commentData = reset($comments);
110  $commentOrigin = sprintf(
111  'IPN "Refunded". Refund issued by merchant. Registered notification about refunded amount of $%d.00. '.
112  'Transaction ID: "%s". Credit Memo has not been created. Please create offline Credit Memo.',
113  abs($refundAmount),
114  $ipnData['txn_id']
115  );
116 
117  $this->assertEquals(Order::STATE_PROCESSING, $order->getState()) ;
118  $this->assertEmpty(count($creditmemoItems));
119  $this->assertEquals(1, count($comments));
120  $this->assertEquals($commentOrigin, $commentData->getComment());
121  }
defined('TESTS_BP')||define('TESTS_BP' __DIR__
Definition: _bootstrap.php:60
$order
Definition: order.php:55

◆ testProcessIpnRequestRestRefund()

testProcessIpnRequestRestRefund ( )

Refund rest of order amount by Paypal Express IPN message service.

@magentoDataFixture Magento/Paypal/_files/order_express_with_invoice_and_shipping.php @magentoConfigFixture current_store payment/paypal_express/active 1 @magentoConfigFixture current_store paypal/general/merchant_country US

Definition at line 130 of file IpnTest.php.

131  {
132  $ipnData = require __DIR__ . '/../_files/ipn_refund.php';
133 
134  $ipnFactory = $this->_objectManager->create(IpnFactory::class);
135  $ipnModel = $ipnFactory->create(
136  [
137  'data' => $ipnData,
138  'curlFactory' => $this->_createMockedHttpAdapter()
139  ]
140  );
141 
142  $ipnModel->processIpnRequest();
143 
144  $order = $this->_objectManager->create(Order::class);
145  $order->loadByIncrementId('100000001');
146 
147  $creditmemoItems = $order->getCreditmemosCollection()->getItems();
148 
149  $this->assertEquals(Order::STATE_CLOSED, $order->getState()) ;
150  $this->assertEquals(1, count($creditmemoItems));
151  $this->assertEquals(10, $order->getSubtotalRefunded());
152  $this->assertEquals(10, $order->getBaseSubtotalRefunded());
153  $this->assertEquals(20, $order->getShippingRefunded());
154  $this->assertEquals(20, $order->getBaseShippingRefunded());
155  $this->assertEquals(30, $order->getTotalRefunded());
156  $this->assertEquals(30, $order->getBaseTotalRefunded());
157  $this->assertEquals(30, $order->getTotalOnlineRefunded());
158  $this->assertEmpty($order->getTotalOfflineRefunded());
159  }
defined('TESTS_BP')||define('TESTS_BP' __DIR__
Definition: _bootstrap.php:60
$order
Definition: order.php:55

Field Documentation

◆ $_objectManager

$_objectManager
protected

Definition at line 21 of file IpnTest.php.


The documentation for this class was generated from the following file: