public function testAfterGetOptions() { $quote = $this->getMockBuilder('Magento\\Sales\\Model\\Quote')->disableOriginalConstructor()->getMock(); $this->sessionMock->expects($this->once())->method('getQuote')->will($this->returnValue($quote)); $this->filterMock->expects($this->once())->method('hasRecurringItems')->with($quote)->will($this->returnValue(true)); $this->assertArrayHasKey('hasRecurringItems', $this->payment->afterGetOptions($this->getMock('\\Magento\\Checkout\\Block\\Onepage\\Payment', array(), array(), '', false), array())); }
public function testObserve() { $quote = $this->getMockBuilder('Magento\\Sales\\Model\\Quote')->disableOriginalConstructor()->getMock(); $event = new \Magento\Framework\Event(array('quote' => $quote, 'method_instance' => $this->getMockBuilder('Magento\\Payment\\Model\\Method\\AbstractMethod')->disableOriginalConstructor()->getMock(), 'result' => new \StdClass())); $this->filterMock->expects($this->once())->method('hasRecurringItems')->with($quote)->will($this->returnValue(true)); $observer = $this->getMockBuilder('Magento\\Framework\\Event\\Observer')->disableOriginalConstructor()->getMock(); $observer->expects($this->any())->method('getEvent')->will($this->returnValue($event)); $this->paymentAvailabilityObserver->observe($observer); $this->assertFalse($event->getResult()->isAvailable); }
/** * @param \Magento\Framework\Event\Observer $observer * @return void */ public function observe(\Magento\Framework\Event\Observer $observer) { /** @var \Magento\Sales\Model\Quote $quote */ $quote = $observer->getEvent()->getQuote(); /** @var \Magento\Payment\Model\Method\AbstractMethod $paymentMethod */ $paymentMethod = $observer->getEvent()->getMethodInstance(); $result = $observer->getEvent()->getResult(); if ($quote && $this->quoteFilter->hasRecurringItems($quote) && !$this->specification->isSatisfiedBy($paymentMethod->getCode())) { $result->isAvailable = false; } }
/** * Add hasRecurringItems option * * @param \Magento\Checkout\Block\Onepage\Payment $subject * @param array $result * * @return array * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function afterGetOptions(\Magento\Checkout\Block\Onepage\Payment $subject, array $result) { $quote = $this->session->getQuote(); $result['hasRecurringItems'] = $quote && $this->filter->hasRecurringItems($quote); return $result; }
/** * @param \Magento\Payment\Model\Checks\ZeroTotal $subject * @param callable $proceed * @param PaymentMethodChecksInterface $paymentMethod * @param Quote $quote * @return bool * * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function aroundIsApplicable(\Magento\Payment\Model\Checks\ZeroTotal $subject, \Closure $proceed, PaymentMethodChecksInterface $paymentMethod, Quote $quote) { return $proceed($paymentMethod, $quote) || $this->specification->isSatisfiedBy($paymentMethod->getCode()) && $this->filter->hasRecurringItems($quote); }