woocommerce-paypal-payments/tests/PHPUnit/WcGateway/Gateway/WcGatewayTest.php

534 lines
19 KiB
PHP
Raw Normal View History

2020-04-29 08:58:16 +03:00
<?php
declare(strict_types=1);
2020-09-14 07:51:45 +03:00
namespace WooCommerce\PayPalCommerce\WcGateway\Gateway;
2020-04-29 08:58:16 +03:00
2021-07-28 10:03:43 +03:00
use Psr\Container\ContainerInterface;
use Psr\Log\LoggerInterface;
use WooCommerce\PayPalCommerce\ApiClient\Endpoint\OrderEndpoint;
use WooCommerce\PayPalCommerce\ApiClient\Endpoint\PaymentsEndpoint;
use Woocommerce\PayPalCommerce\ApiClient\Entity\Capture;
use WooCommerce\PayPalCommerce\ApiClient\Entity\CaptureStatus;
2021-10-06 17:44:41 +03:00
use WooCommerce\PayPalCommerce\Onboarding\Environment;
2020-09-28 11:47:24 +03:00
use WooCommerce\PayPalCommerce\Onboarding\State;
2020-09-14 07:51:45 +03:00
use WooCommerce\PayPalCommerce\Session\SessionHandler;
2021-06-04 11:57:25 +02:00
use WooCommerce\PayPalCommerce\Subscription\Helper\SubscriptionHelper;
2020-09-14 07:51:45 +03:00
use WooCommerce\PayPalCommerce\TestCase;
use WooCommerce\PayPalCommerce\Vaulting\PaymentTokenRepository;
2020-09-14 07:51:45 +03:00
use WooCommerce\PayPalCommerce\WcGateway\Notice\AuthorizeOrderActionNotice;
use WooCommerce\PayPalCommerce\WcGateway\Processor\AuthorizedPaymentsProcessor;
use WooCommerce\PayPalCommerce\WcGateway\Processor\OrderProcessor;
2020-09-28 11:47:24 +03:00
use WooCommerce\PayPalCommerce\WcGateway\Processor\RefundProcessor;
2020-09-14 07:51:45 +03:00
use WooCommerce\PayPalCommerce\WcGateway\Settings\Settings;
use WooCommerce\PayPalCommerce\WcGateway\Settings\SettingsRenderer;
2020-04-29 08:58:16 +03:00
use Mockery;
use function Brain\Monkey\Functions\expect;
2021-03-17 10:30:02 +02:00
use function Brain\Monkey\Functions\when;
2020-04-29 08:58:16 +03:00
class WcGatewayTest extends TestCase
{
2021-10-06 17:44:41 +03:00
private $environment;
2020-04-29 08:58:16 +03:00
2021-10-06 17:44:41 +03:00
public function setUp(): void {
parent::setUp();
$this->environment = Mockery::mock(Environment::class);
}
public function testProcessPaymentSuccess() {
2020-09-02 13:54:53 +03:00
expect('is_admin')->andReturn(false);
2020-04-29 08:58:16 +03:00
$orderId = 1;
$wcOrder = Mockery::mock(\WC_Order::class);
$wcOrder->shouldReceive('get_customer_id')->andReturn(1);
2020-07-02 10:20:13 +03:00
$settingsRenderer = Mockery::mock(SettingsRenderer::class);
2020-04-29 08:58:16 +03:00
$orderProcessor = Mockery::mock(OrderProcessor::class);
$orderProcessor
->expects('process')
->andReturnUsing(
2021-03-17 10:30:02 +02:00
function(\WC_Order $order) use ($wcOrder) : bool {
2020-04-29 08:58:16 +03:00
return $order === $wcOrder;
}
);
$authorizedPaymentsProcessor = Mockery::mock(AuthorizedPaymentsProcessor::class);
$authorizedOrderActionNotice = Mockery::mock(AuthorizeOrderActionNotice::class);
2020-07-02 14:40:17 +03:00
$settings = Mockery::mock(Settings::class);
2020-08-26 09:59:07 +03:00
$sessionHandler = Mockery::mock(SessionHandler::class);
$sessionHandler
->shouldReceive('destroy_session_data');
2020-07-02 14:40:17 +03:00
$settings
->shouldReceive('has')->andReturnFalse();
2020-09-28 11:47:24 +03:00
$refundProcessor = Mockery::mock(RefundProcessor::class);
2021-02-19 19:57:25 +02:00
$transactionUrlProvider = Mockery::mock(TransactionUrlProvider::class);
2020-09-28 11:47:24 +03:00
$state = Mockery::mock(State::class);
$state
->shouldReceive('current_state')->andReturn(State::STATE_ONBOARDED);
2021-06-04 11:57:25 +02:00
$subscriptionHelper = Mockery::mock(SubscriptionHelper::class);
$subscriptionHelper
->shouldReceive('has_subscription')
->with($orderId)
->andReturn(true)
->andReturn(false);
2021-06-04 11:57:25 +02:00
$subscriptionHelper
->shouldReceive('is_subscription_change_payment')
->andReturn(true);
$paymentTokenRepository = Mockery::mock(PaymentTokenRepository::class);
$logger = Mockery::mock(LoggerInterface::class);
$logger->shouldReceive('info');
$paymentsEndpoint = Mockery::mock(PaymentsEndpoint::class);
$orderEndpoint = Mockery::mock(OrderEndpoint::class);
2020-08-18 08:46:18 +03:00
$testee = new PayPalGateway(
2020-07-02 10:20:13 +03:00
$settingsRenderer,
2020-04-29 08:58:16 +03:00
$orderProcessor,
$authorizedPaymentsProcessor,
2020-06-29 13:45:03 +03:00
$authorizedOrderActionNotice,
2020-08-26 09:59:07 +03:00
$settings,
2020-09-28 11:47:24 +03:00
$sessionHandler,
$refundProcessor,
2021-02-19 19:57:25 +02:00
$state,
2021-06-04 11:57:25 +02:00
$transactionUrlProvider,
2021-08-27 17:28:15 +03:00
$subscriptionHelper,
PayPalGateway::ID,
2021-10-07 17:36:29 +02:00
$this->environment,
$paymentTokenRepository,
$logger,
$paymentsEndpoint,
$orderEndpoint
);
2020-04-29 08:58:16 +03:00
expect('wc_get_order')
->with($orderId)
->andReturn($wcOrder);
2021-03-17 10:30:02 +02:00
when('wc_get_checkout_url')
->justReturn('test');
2020-04-29 08:58:16 +03:00
$result = $testee->process_payment($orderId);
2021-03-17 10:30:02 +02:00
2020-04-29 08:58:16 +03:00
$this->assertIsArray($result);
2021-03-17 10:30:02 +02:00
2020-04-29 08:58:16 +03:00
$this->assertEquals('success', $result['result']);
$this->assertEquals($result['redirect'], $wcOrder);
}
public function testProcessPaymentOrderNotFound() {
2020-09-02 13:54:53 +03:00
expect('is_admin')->andReturn(false);
2020-04-29 08:58:16 +03:00
$orderId = 1;
2020-07-02 10:20:13 +03:00
$settingsRenderer = Mockery::mock(SettingsRenderer::class);
2020-04-29 08:58:16 +03:00
$orderProcessor = Mockery::mock(OrderProcessor::class);
$authorizedPaymentsProcessor = Mockery::mock(AuthorizedPaymentsProcessor::class);
$authorizedOrderActionNotice = Mockery::mock(AuthorizeOrderActionNotice::class);
2020-07-02 14:40:17 +03:00
$settings = Mockery::mock(Settings::class);
$settings
->shouldReceive('has')->andReturnFalse();
2020-08-26 09:59:07 +03:00
$sessionHandler = Mockery::mock(SessionHandler::class);
2020-09-28 11:47:24 +03:00
$refundProcessor = Mockery::mock(RefundProcessor::class);
$state = Mockery::mock(State::class);
2021-02-19 19:57:25 +02:00
$transactionUrlProvider = Mockery::mock(TransactionUrlProvider::class);
2020-09-28 11:47:24 +03:00
$state
->shouldReceive('current_state')->andReturn(State::STATE_ONBOARDED);
2021-06-04 11:57:25 +02:00
$subscriptionHelper = Mockery::mock(SubscriptionHelper::class);
$paymentTokenRepository = Mockery::mock(PaymentTokenRepository::class);
$logger = Mockery::mock(LoggerInterface::class);
$paymentsEndpoint = Mockery::mock(PaymentsEndpoint::class);
$orderEndpoint = Mockery::mock(OrderEndpoint::class);
2021-06-04 11:57:25 +02:00
$testee = new PayPalGateway(
2020-07-02 10:20:13 +03:00
$settingsRenderer,
2020-04-29 08:58:16 +03:00
$orderProcessor,
$authorizedPaymentsProcessor,
2020-06-29 13:45:03 +03:00
$authorizedOrderActionNotice,
2020-08-26 09:59:07 +03:00
$settings,
2020-09-28 11:47:24 +03:00
$sessionHandler,
$refundProcessor,
2021-02-19 19:57:25 +02:00
$state,
2021-06-04 11:57:25 +02:00
$transactionUrlProvider,
2021-08-27 17:28:15 +03:00
$subscriptionHelper,
PayPalGateway::ID,
2021-10-07 17:36:29 +02:00
$this->environment,
$paymentTokenRepository,
$logger,
$paymentsEndpoint,
$orderEndpoint
2020-04-29 08:58:16 +03:00
);
expect('wc_get_order')
->with($orderId)
->andReturn(false);
2021-03-17 10:30:02 +02:00
$redirectUrl = 'http://example.com/checkout';
when('wc_get_checkout_url')
->justReturn($redirectUrl);
expect('wc_add_notice')
->with('Couldn\'t find order to process','error');
$this->assertEquals(
[
'result' => 'failure',
'redirect' => $redirectUrl
],
$testee->process_payment($orderId)
);
2020-04-29 08:58:16 +03:00
}
public function testProcessPaymentFails() {
2020-09-02 13:54:53 +03:00
expect('is_admin')->andReturn(false);
2020-04-29 08:58:16 +03:00
$orderId = 1;
$wcOrder = Mockery::mock(\WC_Order::class);
$lastError = 'some-error';
2020-07-02 10:20:13 +03:00
$settingsRenderer = Mockery::mock(SettingsRenderer::class);
2020-04-29 08:58:16 +03:00
$orderProcessor = Mockery::mock(OrderProcessor::class);
$orderProcessor
->expects('process')
->andReturnFalse();
$orderProcessor
2020-08-31 13:03:16 +03:00
->expects('last_error')
2020-04-29 08:58:16 +03:00
->andReturn($lastError);
$authorizedPaymentsProcessor = Mockery::mock(AuthorizedPaymentsProcessor::class);
$authorizedOrderActionNotice = Mockery::mock(AuthorizeOrderActionNotice::class);
2020-07-02 14:40:17 +03:00
$settings = Mockery::mock(Settings::class);
$settings
->shouldReceive('has')->andReturnFalse();
2020-08-26 09:59:07 +03:00
$sessionHandler = Mockery::mock(SessionHandler::class);
2020-09-28 11:47:24 +03:00
$refundProcessor = Mockery::mock(RefundProcessor::class);
$state = Mockery::mock(State::class);
2021-02-19 19:57:25 +02:00
$transactionUrlProvider = Mockery::mock(TransactionUrlProvider::class);
2020-09-28 11:47:24 +03:00
$state
->shouldReceive('current_state')->andReturn(State::STATE_ONBOARDED);
2021-06-04 11:57:25 +02:00
$subscriptionHelper = Mockery::mock(SubscriptionHelper::class);
$subscriptionHelper->shouldReceive('has_subscription')->with($orderId)->andReturn(true);
$subscriptionHelper->shouldReceive('is_subscription_change_payment')->andReturn(true);
2021-08-13 14:39:27 +02:00
$wcOrder->shouldReceive('update_status')->andReturn(true);
2021-06-04 11:57:25 +02:00
$paymentTokenRepository = Mockery::mock(PaymentTokenRepository::class);
$logger = Mockery::mock(LoggerInterface::class);
$paymentsEndpoint = Mockery::mock(PaymentsEndpoint::class);
$orderEndpoint = Mockery::mock(OrderEndpoint::class);
2020-08-18 08:46:18 +03:00
$testee = new PayPalGateway(
2020-07-02 10:20:13 +03:00
$settingsRenderer,
2020-04-29 08:58:16 +03:00
$orderProcessor,
$authorizedPaymentsProcessor,
2020-06-29 13:45:03 +03:00
$authorizedOrderActionNotice,
2020-08-26 09:59:07 +03:00
$settings,
2020-09-28 11:47:24 +03:00
$sessionHandler,
$refundProcessor,
2021-02-19 19:57:25 +02:00
$state,
2021-06-04 11:57:25 +02:00
$transactionUrlProvider,
2021-08-27 17:28:15 +03:00
$subscriptionHelper,
PayPalGateway::ID,
2021-10-07 17:36:29 +02:00
$this->environment,
$paymentTokenRepository,
$logger,
$paymentsEndpoint,
2021-10-07 17:36:29 +02:00
$orderEndpoint,
PayPalGateway::ID
2020-04-29 08:58:16 +03:00
);
expect('wc_get_order')
->with($orderId)
->andReturn($wcOrder);
expect('wc_add_notice')
2020-08-31 13:03:16 +03:00
->with($lastError, 'error');
2020-04-29 08:58:16 +03:00
2021-03-17 10:30:02 +02:00
$redirectUrl = 'http://example.com/checkout';
when('wc_get_checkout_url')
->justReturn($redirectUrl);
2021-06-04 11:57:25 +02:00
2020-04-29 08:58:16 +03:00
$result = $testee->process_payment($orderId);
2021-03-17 10:30:02 +02:00
$this->assertEquals(
[
'result' => 'failure',
'redirect' => $redirectUrl
],
$result
);
2020-04-29 08:58:16 +03:00
}
public function testCaptureAuthorizedPayment() {
2020-09-02 13:54:53 +03:00
expect('is_admin')->andReturn(false);
2020-04-29 08:58:16 +03:00
$wcOrder = Mockery::mock(\WC_Order::class);
$wcOrder
->expects('add_order_note');
$wcOrder
->expects('update_meta_data')
2020-08-18 08:46:18 +03:00
->with(PayPalGateway::CAPTURED_META_KEY, 'true');
2021-04-19 11:47:28 +03:00
$wcOrder
->expects('payment_complete');
2020-04-29 08:58:16 +03:00
$wcOrder
->expects('save');
2020-07-02 10:20:13 +03:00
$settingsRenderer = Mockery::mock(SettingsRenderer::class);
2020-04-29 08:58:16 +03:00
$orderProcessor = Mockery::mock(OrderProcessor::class);
$capture = Mockery::mock(Capture::class);
$capture
->shouldReceive('status')
->andReturn(new CaptureStatus(CaptureStatus::COMPLETED));
2020-04-29 08:58:16 +03:00
$authorizedPaymentsProcessor = Mockery::mock(AuthorizedPaymentsProcessor::class);
$authorizedPaymentsProcessor
->expects('process')
->with($wcOrder)
->andReturn(AuthorizedPaymentsProcessor::SUCCESSFUL);
$authorizedPaymentsProcessor
->expects('captures')
->andReturn([$capture]);
2020-04-29 08:58:16 +03:00
$authorizedOrderActionNotice = Mockery::mock(AuthorizeOrderActionNotice::class);
$authorizedOrderActionNotice
2020-08-31 13:03:16 +03:00
->expects('display_message')
2020-04-29 08:58:16 +03:00
->with(AuthorizeOrderActionNotice::SUCCESS);
2020-06-29 13:45:03 +03:00
2020-07-02 14:40:17 +03:00
$settings = Mockery::mock(Settings::class);
$settings
->shouldReceive('has')->andReturnFalse();
2020-08-26 09:59:07 +03:00
$sessionHandler = Mockery::mock(SessionHandler::class);
2020-09-28 11:47:24 +03:00
$refundProcessor = Mockery::mock(RefundProcessor::class);
$state = Mockery::mock(State::class);
2021-02-19 19:57:25 +02:00
$transactionUrlProvider = Mockery::mock(TransactionUrlProvider::class);
2020-09-28 11:47:24 +03:00
$state
->shouldReceive('current_state')->andReturn(State::STATE_ONBOARDED);
2021-06-04 11:57:25 +02:00
$subscriptionHelper = Mockery::mock(SubscriptionHelper::class);
$paymentTokenRepository = Mockery::mock(PaymentTokenRepository::class);
$logger = Mockery::mock(LoggerInterface::class);
$paymentsEndpoint = Mockery::mock(PaymentsEndpoint::class);
$orderEndpoint = Mockery::mock(OrderEndpoint::class);
2020-08-18 08:46:18 +03:00
$testee = new PayPalGateway(
2020-07-02 10:20:13 +03:00
$settingsRenderer,
2020-04-29 08:58:16 +03:00
$orderProcessor,
$authorizedPaymentsProcessor,
2020-06-29 13:45:03 +03:00
$authorizedOrderActionNotice,
2020-08-26 09:59:07 +03:00
$settings,
2020-09-28 11:47:24 +03:00
$sessionHandler,
$refundProcessor,
2021-02-19 19:57:25 +02:00
$state,
2021-06-04 11:57:25 +02:00
$transactionUrlProvider,
2021-08-27 17:28:15 +03:00
$subscriptionHelper,
PayPalGateway::ID,
2021-10-07 17:36:29 +02:00
$this->environment,
$paymentTokenRepository,
$logger,
$paymentsEndpoint,
$orderEndpoint
2020-04-29 08:58:16 +03:00
);
2020-08-28 08:13:45 +03:00
$this->assertTrue($testee->capture_authorized_payment($wcOrder));
2020-04-29 08:58:16 +03:00
}
public function testCaptureAuthorizedPaymentHasAlreadyBeenCaptured() {
2020-09-02 13:54:53 +03:00
expect('is_admin')->andReturn(false);
2020-04-29 08:58:16 +03:00
$wcOrder = Mockery::mock(\WC_Order::class);
$wcOrder
->expects('get_status')
->andReturn('on-hold');
$wcOrder
->expects('add_order_note');
$wcOrder
->expects('update_meta_data')
2020-08-18 08:46:18 +03:00
->with(PayPalGateway::CAPTURED_META_KEY, 'true');
2021-04-19 11:47:28 +03:00
$wcOrder
->expects('payment_complete');
2020-04-29 08:58:16 +03:00
$wcOrder
->expects('save');
2020-07-02 10:20:13 +03:00
$settingsRenderer = Mockery::mock(SettingsRenderer::class);
2020-04-29 08:58:16 +03:00
$orderProcessor = Mockery::mock(OrderProcessor::class);
$authorizedPaymentsProcessor = Mockery::mock(AuthorizedPaymentsProcessor::class);
$authorizedPaymentsProcessor
->expects('process')
->with($wcOrder)
->andReturn(AuthorizedPaymentsProcessor::ALREADY_CAPTURED);
2020-04-29 08:58:16 +03:00
$authorizedOrderActionNotice = Mockery::mock(AuthorizeOrderActionNotice::class);
$authorizedOrderActionNotice
2020-08-31 13:03:16 +03:00
->expects('display_message')
2020-04-29 08:58:16 +03:00
->with(AuthorizeOrderActionNotice::ALREADY_CAPTURED);
2020-07-02 14:40:17 +03:00
$settings = Mockery::mock(Settings::class);
$settings
->shouldReceive('has')->andReturnFalse();
2020-08-26 09:59:07 +03:00
$sessionHandler = Mockery::mock(SessionHandler::class);
2020-09-28 11:47:24 +03:00
$refundProcessor = Mockery::mock(RefundProcessor::class);
$state = Mockery::mock(State::class);
2021-02-19 19:57:25 +02:00
$transactionUrlProvider = Mockery::mock(TransactionUrlProvider::class);
2020-09-28 11:47:24 +03:00
$state
->shouldReceive('current_state')->andReturn(State::STATE_ONBOARDED);
2021-06-04 11:57:25 +02:00
$subscriptionHelper = Mockery::mock(SubscriptionHelper::class);
$paymentTokenRepository = Mockery::mock(PaymentTokenRepository::class);
$logger = Mockery::mock(LoggerInterface::class);
$paymentsEndpoint = Mockery::mock(PaymentsEndpoint::class);
$orderEndpoint = Mockery::mock(OrderEndpoint::class);
2020-08-18 08:46:18 +03:00
$testee = new PayPalGateway(
2020-07-02 10:20:13 +03:00
$settingsRenderer,
2020-04-29 08:58:16 +03:00
$orderProcessor,
$authorizedPaymentsProcessor,
2020-06-29 13:45:03 +03:00
$authorizedOrderActionNotice,
2020-08-26 09:59:07 +03:00
$settings,
2020-09-28 11:47:24 +03:00
$sessionHandler,
$refundProcessor,
2021-02-19 19:57:25 +02:00
$state,
2021-06-04 11:57:25 +02:00
$transactionUrlProvider,
2021-08-27 17:28:15 +03:00
$subscriptionHelper,
PayPalGateway::ID,
2021-10-07 17:36:29 +02:00
$this->environment,
$paymentTokenRepository,
$logger,
$paymentsEndpoint,
$orderEndpoint
2020-04-29 08:58:16 +03:00
);
2020-08-28 08:13:45 +03:00
$this->assertTrue($testee->capture_authorized_payment($wcOrder));
2020-04-29 08:58:16 +03:00
}
/**
* @dataProvider dataForTestCaptureAuthorizedPaymentNoActionableFailures
*
* @param string $lastStatus
* @param int $expectedMessage
*/
public function testCaptureAuthorizedPaymentNoActionableFailures($lastStatus, $expectedMessage) {
2020-09-02 13:54:53 +03:00
expect('is_admin')->andReturn(false);
2020-04-29 08:58:16 +03:00
$wcOrder = Mockery::mock(\WC_Order::class);
2020-07-02 10:20:13 +03:00
$settingsRenderer = Mockery::mock(SettingsRenderer::class);
2020-04-29 08:58:16 +03:00
$orderProcessor = Mockery::mock(OrderProcessor::class);
$authorizedPaymentsProcessor = Mockery::mock(AuthorizedPaymentsProcessor::class);
$authorizedPaymentsProcessor
->expects('process')
->with($wcOrder)
->andReturn($lastStatus);
$authorizedPaymentsProcessor
->expects('captures')
->andReturn([]);
2020-04-29 08:58:16 +03:00
$authorizedOrderActionNotice = Mockery::mock(AuthorizeOrderActionNotice::class);
$authorizedOrderActionNotice
2020-08-31 13:03:16 +03:00
->expects('display_message')
2020-04-29 08:58:16 +03:00
->with($expectedMessage);
2020-07-02 14:40:17 +03:00
$settings = Mockery::mock(Settings::class);
$settings
->shouldReceive('has')->andReturnFalse();
2020-08-26 09:59:07 +03:00
$sessionHandler = Mockery::mock(SessionHandler::class);
2020-09-28 11:47:24 +03:00
$refundProcessor = Mockery::mock(RefundProcessor::class);
$state = Mockery::mock(State::class);
2021-02-19 19:57:25 +02:00
$transactionUrlProvider = Mockery::mock(TransactionUrlProvider::class);
2020-09-28 11:47:24 +03:00
$state
->shouldReceive('current_state')->andReturn(State::STATE_ONBOARDED);
2021-06-04 11:57:25 +02:00
$subscriptionHelper = Mockery::mock(SubscriptionHelper::class);
$paymentTokenRepository = Mockery::mock(PaymentTokenRepository::class);
$logger = Mockery::mock(LoggerInterface::class);
$paymentsEndpoint = Mockery::mock(PaymentsEndpoint::class);
$orderEndpoint = Mockery::mock(OrderEndpoint::class);
2020-08-18 08:46:18 +03:00
$testee = new PayPalGateway(
2020-07-02 10:20:13 +03:00
$settingsRenderer,
2020-04-29 08:58:16 +03:00
$orderProcessor,
$authorizedPaymentsProcessor,
2020-06-29 13:45:03 +03:00
$authorizedOrderActionNotice,
2020-08-26 09:59:07 +03:00
$settings,
2020-09-28 11:47:24 +03:00
$sessionHandler,
$refundProcessor,
2021-02-19 19:57:25 +02:00
$state,
2021-06-04 11:57:25 +02:00
$transactionUrlProvider,
2021-08-27 17:28:15 +03:00
$subscriptionHelper,
PayPalGateway::ID,
2021-10-07 17:36:29 +02:00
$this->environment,
$paymentTokenRepository,
$logger,
$paymentsEndpoint,
$orderEndpoint
2020-04-29 08:58:16 +03:00
);
2020-08-28 08:13:45 +03:00
$this->assertFalse($testee->capture_authorized_payment($wcOrder));
2020-04-29 08:58:16 +03:00
}
2021-08-27 17:28:15 +03:00
2021-07-28 10:03:43 +03:00
/**
* @dataProvider dataForTestNeedsSetup
*/
public function testNeedsSetup($currentState, $needSetup)
{
expect('is_admin')->andReturn(true);
$settingsRenderer = Mockery::mock(SettingsRenderer::class);
$orderProcessor = Mockery::mock(OrderProcessor::class);
$authorizedOrdersProcessor = Mockery::mock(AuthorizedPaymentsProcessor::class);
$authorizeOrderActionNotice = Mockery::mock(AuthorizeOrderActionNotice::class);
$config = Mockery::mock(ContainerInterface::class);
$config
->shouldReceive('has')
->andReturn(false);
$sessionHandler = Mockery::mock(SessionHandler::class);
$refundProcessor = Mockery::mock(RefundProcessor::class);
$onboardingState = Mockery::mock(State::class);
$onboardingState
->expects('current_state')
->andReturn($currentState);
$transactionUrlProvider = Mockery::mock(TransactionUrlProvider::class);
$subscriptionHelper = Mockery::mock(SubscriptionHelper::class);
2021-08-27 17:28:15 +03:00
$paymentTokenRepository = Mockery::mock(PaymentTokenRepository::class);
$logger = Mockery::mock(LoggerInterface::class);
$paymentsEndpoint = Mockery::mock(PaymentsEndpoint::class);
$orderEndpoint = Mockery::mock(OrderEndpoint::class);
2021-07-28 10:03:43 +03:00
$testee = new PayPalGateway(
$settingsRenderer,
$orderProcessor,
$authorizedOrdersProcessor,
$authorizeOrderActionNotice,
$config,
$sessionHandler,
$refundProcessor,
$onboardingState,
$transactionUrlProvider,
2021-08-27 17:28:15 +03:00
$subscriptionHelper,
PayPalGateway::ID,
2021-10-07 17:36:29 +02:00
$this->environment,
$paymentTokenRepository,
$logger,
$paymentsEndpoint,
$orderEndpoint
2021-07-28 10:03:43 +03:00
);
2021-08-27 17:28:15 +03:00
2021-07-28 10:03:43 +03:00
$this->assertSame($needSetup, $testee->needs_setup());
}
2020-04-29 08:58:16 +03:00
public function dataForTestCaptureAuthorizedPaymentNoActionableFailures() : array
{
return [
'inaccessible' => [
AuthorizedPaymentsProcessor::INACCESSIBLE,
AuthorizeOrderActionNotice::NO_INFO,
],
'not_found' => [
AuthorizedPaymentsProcessor::NOT_FOUND,
AuthorizeOrderActionNotice::NOT_FOUND,
],
'not_mapped' => [
'some-other-failure',
AuthorizeOrderActionNotice::FAILED,
],
];
}
2021-08-27 17:28:15 +03:00
2021-07-28 10:03:43 +03:00
public function dataForTestNeedsSetup(): array
{
return [
[State::STATE_START, true],
[State::STATE_PROGRESSIVE, true],
[State::STATE_ONBOARDED, false]
];
}
2021-02-19 19:57:25 +02:00
}