public function testAuthorizeTransactionPending() { $storeID = 1; $amount = 10; $baseCurrencyMock = $this->getMockBuilder('Magento\\Directory\\Model\\Currency')->disableOriginalConstructor()->setMethods(['formatTxt'])->getMock(); $baseCurrencyMock->expects($this->once())->method('formatTxt')->willReturnCallback(function ($value) { return $value; }); $this->orderMock->expects($this->once())->method('getStoreId')->willReturn($storeID); $this->orderMock->expects($this->once())->method('getBaseGrandTotal')->willReturn($amount); $this->orderMock->expects($this->once())->method('getBaseCurrency')->willReturn($baseCurrencyMock); $this->orderMock->expects($this->once())->method('setState')->with(\Magento\Sales\Model\Order::STATE_PAYMENT_REVIEW, true, "We will authorize {$amount} after the payment is approved at the payment gateway."); $this->paymentMethodMock->expects($this->once())->method('authorize')->with($this->payment)->willReturnSelf(); $this->payment->setIsTransactionPending(true); $paymentResult = $this->payment->authorize(true, $amount); $this->assertInstanceOf('Magento\\Sales\\Model\\Order\\Payment', $paymentResult); $this->assertEquals($amount, $paymentResult->getBaseAmountAuthorized()); $this->assertTrue($paymentResult->getIsTransactionPending()); }
/** * {@inheritdoc} */ public function authorize($isOnline, $amount) { $pluginInfo = $this->pluginList->getNext($this->subjectType, 'authorize'); if (!$pluginInfo) { return parent::authorize($isOnline, $amount); } else { return $this->___callPlugins('authorize', func_get_args(), $pluginInfo); } }
/** * @param bool $isOnline * @param float $amount * @dataProvider authorizeDataProvider */ public function testAuthorize($isOnline, $amount) { $this->paymentProcessor->expects($this->once())->method('authorize')->with($this->payment, $isOnline, $amount)->willReturn($this->payment); $this->assertEquals($this->payment, $this->payment->authorize($isOnline, $amount)); }