Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
RegisterCaptureNotificationCommandTest.php
Go to the documentation of this file.
1 <?php
7 
13 use PHPUnit_Framework_MockObject_MockObject as MockObject;
14 
18 class RegisterCaptureNotificationCommandTest extends \PHPUnit\Framework\TestCase
19 {
23  private $amount = 10.00;
24 
28  private $newOrderStatus = 'custom_status';
29 
42  public function testExecute(
43  bool $isTransactionPending,
44  bool $isFraudDetected,
45  $currentState,
46  string $expectedState,
47  string $expectedStatus,
48  string $expectedMessage
49  ): void {
50  $order = $this->getOrder($currentState);
51  $actualReturn = (new RegisterCaptureNotificationCommand($this->getStatusResolver()))->execute(
52  $this->getPayment($isTransactionPending, $isFraudDetected),
53  $this->amount,
54  $order
55  );
56 
57  $this->assertOrderStateAndStatus($order, $expectedState, $expectedStatus);
58  self::assertEquals(__($expectedMessage, $this->amount), $actualReturn);
59  }
60 
64  public function commandResultDataProvider()
65  {
66  return [
67  [
68  false,
69  false,
72  $this->newOrderStatus,
73  'Registered notification about captured amount of %1.',
74  ],
75  [
76  false,
77  false,
78  null,
80  $this->newOrderStatus,
81  'Registered notification about captured amount of %1.',
82  ],
83  [
84  true,
85  false,
88  $this->newOrderStatus,
89  'An amount of %1 will be captured after being approved at the payment gateway.',
90  ],
91  [
92  false,
93  true,
97  'Order is suspended as its capture amount %1 is suspected to be fraudulent.',
98  ],
99  [
100  true,
101  true,
105  'Order is suspended as its capture amount %1 is suspected to be fraudulent.',
106  ],
107  ];
108  }
109 
113  private function getStatusResolver()
114  {
115  $statusResolver = $this->getMockBuilder(StatusResolver::class)
116  ->disableOriginalConstructor()
117  ->getMock();
118  $statusResolver->method('getOrderStatusByState')
119  ->willReturn($this->newOrderStatus);
120 
121  return $statusResolver;
122  }
123 
128  private function getOrder($state)
129  {
131  $order = $this->getMockBuilder(Order::class)
132  ->disableOriginalConstructor()
133  ->setMethods(['getBaseCurrency', 'getOrderStatusByState'])
134  ->getMock();
135  $order->method('getBaseCurrency')
136  ->willReturn($this->getCurrency());
137  $order->setState($state);
138 
139  return $order;
140  }
141 
147  private function getPayment($isTransactionPending, $isFraudDetected)
148  {
149  $payment = $this->getMockBuilder(OrderPaymentInterface::class)
150  ->setMethods(['getIsTransactionPending', 'getIsFraudDetected'])
151  ->getMockForAbstractClass();
152  $payment->method('getIsTransactionPending')
153  ->willReturn($isTransactionPending);
154  $payment->method('getIsFraudDetected')
155  ->willReturn($isFraudDetected);
156 
157  return $payment;
158  }
159 
163  private function getCurrency()
164  {
165  $currency = $this->getMockBuilder(Currency::class)
166  ->disableOriginalConstructor()
167  ->getMock();
168  $currency->method('formatTxt')
169  ->willReturn($this->amount);
170 
171  return $currency;
172  }
173 
179  private function assertOrderStateAndStatus($order, $expectedState, $expectedStatus)
180  {
181  self::assertEquals($expectedState, $order->getState(), 'The order {state} should match.');
182  self::assertEquals($expectedStatus, $order->getStatus(), 'The order {status} should match.');
183  }
184 }
testExecute(bool $isTransactionPending, bool $isFraudDetected, $currentState, string $expectedState, string $expectedStatus, string $expectedMessage)
if( $block->displayPriceExclTax()||$block->displayBothPrices())(__('Excl. Tax')) ?>"> <?php if ($block -> displayPriceWithWeeeDetails()): ?> <span class="cart-tax-total" data-mage-init=' Magento Weee Helper Data Magento Weee Helper Data title amount
Definition: unit.phtml:68
void(\Magento\Framework\DataObject $document)
Definition: Payment.php:585
$order
Definition: order.php:55
__()
Definition: __.php:13
$payment
Definition: order.php:17