update tests

This commit is contained in:
Kirill Braslavsky 2021-02-19 19:57:25 +02:00
parent 90a0e28f63
commit 55c3de4f24
2 changed files with 103 additions and 13 deletions

View file

@ -4,7 +4,6 @@ declare(strict_types=1);
namespace WooCommerce\PayPalCommerce\WcGateway\Gateway; namespace WooCommerce\PayPalCommerce\WcGateway\Gateway;
use WooCommerce\PayPalCommerce\Onboarding\Render\OnboardingRenderer;
use WooCommerce\PayPalCommerce\Onboarding\State; use WooCommerce\PayPalCommerce\Onboarding\State;
use WooCommerce\PayPalCommerce\Session\SessionHandler; use WooCommerce\PayPalCommerce\Session\SessionHandler;
use WooCommerce\PayPalCommerce\TestCase; use WooCommerce\PayPalCommerce\TestCase;
@ -45,6 +44,7 @@ class WcGatewayTest extends TestCase
$settings $settings
->shouldReceive('has')->andReturnFalse(); ->shouldReceive('has')->andReturnFalse();
$refundProcessor = Mockery::mock(RefundProcessor::class); $refundProcessor = Mockery::mock(RefundProcessor::class);
$transactionUrlProvider = Mockery::mock(TransactionUrlProvider::class);
$state = Mockery::mock(State::class); $state = Mockery::mock(State::class);
$state $state
->shouldReceive('current_state')->andReturn(State::STATE_ONBOARDED); ->shouldReceive('current_state')->andReturn(State::STATE_ONBOARDED);
@ -56,7 +56,8 @@ class WcGatewayTest extends TestCase
$settings, $settings,
$sessionHandler, $sessionHandler,
$refundProcessor, $refundProcessor,
$state $state,
$transactionUrlProvider
); );
expect('wc_get_order') expect('wc_get_order')
@ -86,6 +87,7 @@ class WcGatewayTest extends TestCase
$sessionHandler = Mockery::mock(SessionHandler::class); $sessionHandler = Mockery::mock(SessionHandler::class);
$refundProcessor = Mockery::mock(RefundProcessor::class); $refundProcessor = Mockery::mock(RefundProcessor::class);
$state = Mockery::mock(State::class); $state = Mockery::mock(State::class);
$transactionUrlProvider = Mockery::mock(TransactionUrlProvider::class);
$state $state
->shouldReceive('current_state')->andReturn(State::STATE_ONBOARDED); ->shouldReceive('current_state')->andReturn(State::STATE_ONBOARDED);
$testee = new PayPalGateway( $testee = new PayPalGateway(
@ -96,7 +98,8 @@ class WcGatewayTest extends TestCase
$settings, $settings,
$sessionHandler, $sessionHandler,
$refundProcessor, $refundProcessor,
$state $state,
$transactionUrlProvider
); );
expect('wc_get_order') expect('wc_get_order')
@ -132,6 +135,7 @@ class WcGatewayTest extends TestCase
$sessionHandler = Mockery::mock(SessionHandler::class); $sessionHandler = Mockery::mock(SessionHandler::class);
$refundProcessor = Mockery::mock(RefundProcessor::class); $refundProcessor = Mockery::mock(RefundProcessor::class);
$state = Mockery::mock(State::class); $state = Mockery::mock(State::class);
$transactionUrlProvider = Mockery::mock(TransactionUrlProvider::class);
$state $state
->shouldReceive('current_state')->andReturn(State::STATE_ONBOARDED); ->shouldReceive('current_state')->andReturn(State::STATE_ONBOARDED);
$testee = new PayPalGateway( $testee = new PayPalGateway(
@ -142,7 +146,8 @@ class WcGatewayTest extends TestCase
$settings, $settings,
$sessionHandler, $sessionHandler,
$refundProcessor, $refundProcessor,
$state $state,
$transactionUrlProvider
); );
expect('wc_get_order') expect('wc_get_order')
@ -193,6 +198,7 @@ class WcGatewayTest extends TestCase
$sessionHandler = Mockery::mock(SessionHandler::class); $sessionHandler = Mockery::mock(SessionHandler::class);
$refundProcessor = Mockery::mock(RefundProcessor::class); $refundProcessor = Mockery::mock(RefundProcessor::class);
$state = Mockery::mock(State::class); $state = Mockery::mock(State::class);
$transactionUrlProvider = Mockery::mock(TransactionUrlProvider::class);
$state $state
->shouldReceive('current_state')->andReturn(State::STATE_ONBOARDED); ->shouldReceive('current_state')->andReturn(State::STATE_ONBOARDED);
$testee = new PayPalGateway( $testee = new PayPalGateway(
@ -203,7 +209,8 @@ class WcGatewayTest extends TestCase
$settings, $settings,
$sessionHandler, $sessionHandler,
$refundProcessor, $refundProcessor,
$state $state,
$transactionUrlProvider
); );
$this->assertTrue($testee->capture_authorized_payment($wcOrder)); $this->assertTrue($testee->capture_authorized_payment($wcOrder));
@ -246,6 +253,7 @@ class WcGatewayTest extends TestCase
$sessionHandler = Mockery::mock(SessionHandler::class); $sessionHandler = Mockery::mock(SessionHandler::class);
$refundProcessor = Mockery::mock(RefundProcessor::class); $refundProcessor = Mockery::mock(RefundProcessor::class);
$state = Mockery::mock(State::class); $state = Mockery::mock(State::class);
$transactionUrlProvider = Mockery::mock(TransactionUrlProvider::class);
$state $state
->shouldReceive('current_state')->andReturn(State::STATE_ONBOARDED); ->shouldReceive('current_state')->andReturn(State::STATE_ONBOARDED);
$testee = new PayPalGateway( $testee = new PayPalGateway(
@ -256,7 +264,8 @@ class WcGatewayTest extends TestCase
$settings, $settings,
$sessionHandler, $sessionHandler,
$refundProcessor, $refundProcessor,
$state $state,
$transactionUrlProvider
); );
$this->assertTrue($testee->capture_authorized_payment($wcOrder)); $this->assertTrue($testee->capture_authorized_payment($wcOrder));
@ -292,6 +301,7 @@ class WcGatewayTest extends TestCase
$sessionHandler = Mockery::mock(SessionHandler::class); $sessionHandler = Mockery::mock(SessionHandler::class);
$refundProcessor = Mockery::mock(RefundProcessor::class); $refundProcessor = Mockery::mock(RefundProcessor::class);
$state = Mockery::mock(State::class); $state = Mockery::mock(State::class);
$transactionUrlProvider = Mockery::mock(TransactionUrlProvider::class);
$state $state
->shouldReceive('current_state')->andReturn(State::STATE_ONBOARDED); ->shouldReceive('current_state')->andReturn(State::STATE_ONBOARDED);
$testee = new PayPalGateway( $testee = new PayPalGateway(
@ -302,7 +312,8 @@ class WcGatewayTest extends TestCase
$settings, $settings,
$sessionHandler, $sessionHandler,
$refundProcessor, $refundProcessor,
$state $state,
$transactionUrlProvider
); );
$this->assertFalse($testee->capture_authorized_payment($wcOrder)); $this->assertFalse($testee->capture_authorized_payment($wcOrder));
@ -325,4 +336,4 @@ class WcGatewayTest extends TestCase
], ],
]; ];
} }
} }

View file

@ -6,8 +6,11 @@ namespace WooCommerce\PayPalCommerce\WcGateway\Processor;
use WooCommerce\PayPalCommerce\ApiClient\Endpoint\OrderEndpoint; use WooCommerce\PayPalCommerce\ApiClient\Endpoint\OrderEndpoint;
use WooCommerce\PayPalCommerce\ApiClient\Endpoint\PaymentsEndpoint; use WooCommerce\PayPalCommerce\ApiClient\Endpoint\PaymentsEndpoint;
use Woocommerce\PayPalCommerce\ApiClient\Entity\Capture;
use WooCommerce\PayPalCommerce\ApiClient\Entity\Order; use WooCommerce\PayPalCommerce\ApiClient\Entity\Order;
use WooCommerce\PayPalCommerce\ApiClient\Entity\OrderStatus; use WooCommerce\PayPalCommerce\ApiClient\Entity\OrderStatus;
use WooCommerce\PayPalCommerce\ApiClient\Entity\Payments;
use WooCommerce\PayPalCommerce\ApiClient\Entity\PurchaseUnit;
use WooCommerce\PayPalCommerce\ApiClient\Factory\OrderFactory; use WooCommerce\PayPalCommerce\ApiClient\Factory\OrderFactory;
use WooCommerce\PayPalCommerce\ApiClient\Repository\CartRepository; use WooCommerce\PayPalCommerce\ApiClient\Repository\CartRepository;
use WooCommerce\PayPalCommerce\Button\Helper\ThreeDSecure; use WooCommerce\PayPalCommerce\Button\Helper\ThreeDSecure;
@ -15,14 +18,32 @@ use WooCommerce\PayPalCommerce\Session\SessionHandler;
use WooCommerce\PayPalCommerce\TestCase; use WooCommerce\PayPalCommerce\TestCase;
use WooCommerce\PayPalCommerce\WcGateway\Gateway\PayPalGateway; use WooCommerce\PayPalCommerce\WcGateway\Gateway\PayPalGateway;
use WooCommerce\PayPalCommerce\WcGateway\Settings\Settings; use WooCommerce\PayPalCommerce\WcGateway\Settings\Settings;
use WooCommerce\WooCommerce\Logging\WooCommerceLoggingModule;
use Mockery; use Mockery;
class OrderProcessorTest extends TestCase class OrderProcessorTest extends TestCase
{ {
public function testAuthorize() { public function testAuthorize() {
$transactionId = 'ABC123';
$capture = Mockery::mock(Capture::class);
$capture->expects('id')
->andReturn($transactionId);
$payments = Mockery::mock(Payments::class);
$payments->expects('captures')
->andReturn([$capture]);
$purchaseUnit = Mockery::mock(PurchaseUnit::class);
$purchaseUnit->expects('payments')
->andReturn($payments);
$wcOrder = Mockery::mock(\WC_Order::class); $wcOrder = Mockery::mock(\WC_Order::class);
$wcOrder->expects('update_meta_data')
->with(PayPalGateway::ORDER_PAYMENT_MODE_META_KEY, 'live');
$wcOrder->expects('set_transaction_id')
->with($transactionId);
$orderStatus = Mockery::mock(OrderStatus::class); $orderStatus = Mockery::mock(OrderStatus::class);
$orderStatus $orderStatus
->expects('is') ->expects('is')
@ -32,8 +53,10 @@ class OrderProcessorTest extends TestCase
->expects('is') ->expects('is')
->with(OrderStatus::COMPLETED) ->with(OrderStatus::COMPLETED)
->andReturn(true); ->andReturn(true);
$orderId = 'abc'; $orderId = 'abc';
$orderIntent = 'AUTHORIZE'; $orderIntent = 'AUTHORIZE';
$currentOrder = Mockery::mock(Order::class); $currentOrder = Mockery::mock(Order::class);
$currentOrder $currentOrder
->expects('id') ->expects('id')
@ -44,13 +67,18 @@ class OrderProcessorTest extends TestCase
$currentOrder $currentOrder
->shouldReceive('status') ->shouldReceive('status')
->andReturn($orderStatus); ->andReturn($orderStatus);
$currentOrder->expects('purchase_units')
->andReturn([$purchaseUnit]);
$sessionHandler = Mockery::mock(SessionHandler::class); $sessionHandler = Mockery::mock(SessionHandler::class);
$sessionHandler $sessionHandler
->expects('order') ->expects('order')
->andReturn($currentOrder); ->andReturn($currentOrder);
$sessionHandler $sessionHandler
->expects('destroy_session_data'); ->expects('destroy_session_data');
$cartRepository = Mockery::mock(CartRepository::class); $cartRepository = Mockery::mock(CartRepository::class);
$orderEndpoint = Mockery::mock(OrderEndpoint::class); $orderEndpoint = Mockery::mock(OrderEndpoint::class);
$orderEndpoint $orderEndpoint
->expects('patch_order_with') ->expects('patch_order_with')
@ -60,14 +88,19 @@ class OrderProcessorTest extends TestCase
->expects('authorize') ->expects('authorize')
->with($currentOrder) ->with($currentOrder)
->andReturn($currentOrder); ->andReturn($currentOrder);
$paymentsEndpoint = Mockery::mock(PaymentsEndpoint::class); $paymentsEndpoint = Mockery::mock(PaymentsEndpoint::class);
$orderFactory = Mockery::mock(OrderFactory::class); $orderFactory = Mockery::mock(OrderFactory::class);
$orderFactory $orderFactory
->expects('from_wc_order') ->expects('from_wc_order')
->with($wcOrder, $currentOrder) ->with($wcOrder, $currentOrder)
->andReturn($currentOrder); ->andReturn($currentOrder);
$threeDSecure = Mockery::mock(ThreeDSecure::class); $threeDSecure = Mockery::mock(ThreeDSecure::class);
$authorizedPaymentProcessor = Mockery::mock(AuthorizedPaymentsProcessor::class); $authorizedPaymentProcessor = Mockery::mock(AuthorizedPaymentsProcessor::class);
$settings = Mockery::mock(Settings::class); $settings = Mockery::mock(Settings::class);
$settings $settings
->shouldReceive('has') ->shouldReceive('has')
@ -81,7 +114,8 @@ class OrderProcessorTest extends TestCase
$orderFactory, $orderFactory,
$threeDSecure, $threeDSecure,
$authorizedPaymentProcessor, $authorizedPaymentProcessor,
$settings $settings,
false
); );
$cart = Mockery::mock(\WC_Cart::class); $cart = Mockery::mock(\WC_Cart::class);
@ -115,6 +149,20 @@ class OrderProcessorTest extends TestCase
} }
public function testCapture() { public function testCapture() {
$transactionId = 'ABC123';
$capture = Mockery::mock(Capture::class);
$capture->expects('id')
->andReturn($transactionId);
$payments = Mockery::mock(Payments::class);
$payments->expects('captures')
->andReturn([$capture]);
$purchaseUnit = Mockery::mock(PurchaseUnit::class);
$purchaseUnit->expects('payments')
->andReturn($payments);
$wcOrder = Mockery::mock(\WC_Order::class); $wcOrder = Mockery::mock(\WC_Order::class);
$orderStatus = Mockery::mock(OrderStatus::class); $orderStatus = Mockery::mock(OrderStatus::class);
$orderStatus $orderStatus
@ -137,6 +185,9 @@ class OrderProcessorTest extends TestCase
$currentOrder $currentOrder
->shouldReceive('status') ->shouldReceive('status')
->andReturn($orderStatus); ->andReturn($orderStatus);
$currentOrder
->expects('purchase_units')
->andReturn([$purchaseUnit]);
$sessionHandler = Mockery::mock(SessionHandler::class); $sessionHandler = Mockery::mock(SessionHandler::class);
$sessionHandler $sessionHandler
->expects('order') ->expects('order')
@ -174,7 +225,8 @@ class OrderProcessorTest extends TestCase
$orderFactory, $orderFactory,
$threeDSecure, $threeDSecure,
$authorizedPaymentProcessor, $authorizedPaymentProcessor,
$settings $settings,
false
); );
$cart = Mockery::mock(\WC_Cart::class); $cart = Mockery::mock(\WC_Cart::class);
@ -198,6 +250,10 @@ class OrderProcessorTest extends TestCase
$wcOrder $wcOrder
->expects('update_status') ->expects('update_status')
->with('on-hold', 'Awaiting payment.'); ->with('on-hold', 'Awaiting payment.');
$wcOrder->expects('update_meta_data')
->with(PayPalGateway::ORDER_PAYMENT_MODE_META_KEY, 'live');
$wcOrder->expects('set_transaction_id')
->with($transactionId);
$wcOrder $wcOrder
->expects('update_status') ->expects('update_status')
->with('processing', 'Payment received.'); ->with('processing', 'Payment received.');
@ -205,7 +261,26 @@ class OrderProcessorTest extends TestCase
} }
public function testError() { public function testError() {
$transactionId = 'ABC123';
$capture = Mockery::mock(Capture::class);
$capture->shouldReceive('id')
->andReturn($transactionId);
$payments = Mockery::mock(Payments::class);
$payments->shouldReceive('captures')
->andReturn([$capture]);
$purchaseUnit = Mockery::mock(PurchaseUnit::class);
$purchaseUnit->shouldReceive('payments')
->andReturn($payments);
$wcOrder = Mockery::mock(\WC_Order::class); $wcOrder = Mockery::mock(\WC_Order::class);
$wcOrder->expects('update_meta_data')
->with(PayPalGateway::ORDER_PAYMENT_MODE_META_KEY, 'live');
$wcOrder->shouldReceive('set_transaction_id')
->with($transactionId);
$orderStatus = Mockery::mock(OrderStatus::class); $orderStatus = Mockery::mock(OrderStatus::class);
$orderStatus $orderStatus
->expects('is') ->expects('is')
@ -226,6 +301,9 @@ class OrderProcessorTest extends TestCase
$currentOrder $currentOrder
->shouldReceive('payment_source') ->shouldReceive('payment_source')
->andReturnNull(); ->andReturnNull();
$currentOrder
->shouldReceive('purchase_units')
->andReturn([$purchaseUnit]);
$sessionHandler = Mockery::mock(SessionHandler::class); $sessionHandler = Mockery::mock(SessionHandler::class);
$sessionHandler $sessionHandler
->expects('order') ->expects('order')
@ -246,7 +324,8 @@ class OrderProcessorTest extends TestCase
$orderFactory, $orderFactory,
$threeDSecure, $threeDSecure,
$authorizedPaymentProcessor, $authorizedPaymentProcessor,
$settings $settings,
false
); );
$cart = Mockery::mock(\WC_Cart::class); $cart = Mockery::mock(\WC_Cart::class);
@ -270,4 +349,4 @@ class OrderProcessorTest extends TestCase
} }
} }