function it_returns_empty_collection_if_there_is_no_enabled_payment_methods_for_order_channel(PaymentInterface $payment, OrderInterface $order, ChannelInterface $channel, PaymentMethodRepositoryInterface $paymentMethodRepository) { $payment->getOrder()->willReturn($order); $order->getChannel()->willReturn($channel); $paymentMethodRepository->findEnabledForChannel($channel)->willReturn([]); $this->getSupportedMethods($payment)->shouldReturn([]); }
function it_returns_first_payment_method_from_availables_which_is_enclosed_in_channel(CorePaymentInterface $payment, PaymentMethodRepositoryInterface $paymentMethodRepository, PaymentMethodInterface $firstPaymentMethod, PaymentMethodInterface $secondPaymentMethod, ChannelInterface $channel, OrderInterface $order) { $payment->getOrder()->willReturn($order); $order->getChannel()->willReturn($channel); $paymentMethodRepository->findEnabledForChannel($channel)->willReturn([$firstPaymentMethod, $secondPaymentMethod]); $this->getDefaultPaymentMethod($payment)->shouldReturn($firstPaymentMethod); }
/** * {@inheritdoc} */ public function getDefaultPaymentMethod(PaymentInterface $subject) { /** @var CorePaymentInterface $subject */ Assert::isInstanceOf($subject, CorePaymentInterface::class); /** @var ChannelInterface $channel */ $channel = $subject->getOrder()->getChannel(); $paymentMethods = $this->paymentMethodRepository->findEnabledForChannel($channel); if (empty($paymentMethods)) { throw new UnresolvedDefaultPaymentMethodException(); } return $paymentMethods[0]; }
/** * @param OrderInterface $order */ private function selectPayment(OrderInterface $order) { $paymentMethod = $this->faker->randomElement($this->paymentMethodRepository->findEnabledForChannel($order->getChannel())); Assert::notNull($paymentMethod, 'Payment method should not be null.'); foreach ($order->getPayments() as $payment) { $payment->setMethod($paymentMethod); } $this->applyCheckoutStateTransition($order, OrderCheckoutTransitions::TRANSITION_SELECT_PAYMENT); }
/** * {@inheritdoc} */ public function getSupportedMethods(BasePaymentInterface $payment) { Assert::true($this->supports($payment), 'This payment method is not support by resolver'); return $this->paymentMethodRepository->findEnabledForChannel($payment->getOrder()->getChannel()); }