diff --git a/tests/PHPUnit/WcGateway/Gateway/WcGatewayTest.php b/tests/PHPUnit/WcGateway/Gateway/WcGatewayTest.php index 102069ef7..df70e8071 100644 --- a/tests/PHPUnit/WcGateway/Gateway/WcGatewayTest.php +++ b/tests/PHPUnit/WcGateway/Gateway/WcGatewayTest.php @@ -4,7 +4,6 @@ declare(strict_types=1); namespace WooCommerce\PayPalCommerce\WcGateway\Gateway; -use WooCommerce\PayPalCommerce\Onboarding\Render\OnboardingRenderer; use WooCommerce\PayPalCommerce\Onboarding\State; use WooCommerce\PayPalCommerce\Session\SessionHandler; use WooCommerce\PayPalCommerce\TestCase; @@ -45,6 +44,7 @@ class WcGatewayTest extends TestCase $settings ->shouldReceive('has')->andReturnFalse(); $refundProcessor = Mockery::mock(RefundProcessor::class); + $transactionUrlProvider = Mockery::mock(TransactionUrlProvider::class); $state = Mockery::mock(State::class); $state ->shouldReceive('current_state')->andReturn(State::STATE_ONBOARDED); @@ -56,7 +56,8 @@ class WcGatewayTest extends TestCase $settings, $sessionHandler, $refundProcessor, - $state + $state, + $transactionUrlProvider ); expect('wc_get_order') @@ -86,6 +87,7 @@ class WcGatewayTest extends TestCase $sessionHandler = Mockery::mock(SessionHandler::class); $refundProcessor = Mockery::mock(RefundProcessor::class); $state = Mockery::mock(State::class); + $transactionUrlProvider = Mockery::mock(TransactionUrlProvider::class); $state ->shouldReceive('current_state')->andReturn(State::STATE_ONBOARDED); $testee = new PayPalGateway( @@ -96,7 +98,8 @@ class WcGatewayTest extends TestCase $settings, $sessionHandler, $refundProcessor, - $state + $state, + $transactionUrlProvider ); expect('wc_get_order') @@ -132,6 +135,7 @@ class WcGatewayTest extends TestCase $sessionHandler = Mockery::mock(SessionHandler::class); $refundProcessor = Mockery::mock(RefundProcessor::class); $state = Mockery::mock(State::class); + $transactionUrlProvider = Mockery::mock(TransactionUrlProvider::class); $state ->shouldReceive('current_state')->andReturn(State::STATE_ONBOARDED); $testee = new PayPalGateway( @@ -142,7 +146,8 @@ class WcGatewayTest extends TestCase $settings, $sessionHandler, $refundProcessor, - $state + $state, + $transactionUrlProvider ); expect('wc_get_order') @@ -193,6 +198,7 @@ class WcGatewayTest extends TestCase $sessionHandler = Mockery::mock(SessionHandler::class); $refundProcessor = Mockery::mock(RefundProcessor::class); $state = Mockery::mock(State::class); + $transactionUrlProvider = Mockery::mock(TransactionUrlProvider::class); $state ->shouldReceive('current_state')->andReturn(State::STATE_ONBOARDED); $testee = new PayPalGateway( @@ -203,7 +209,8 @@ class WcGatewayTest extends TestCase $settings, $sessionHandler, $refundProcessor, - $state + $state, + $transactionUrlProvider ); $this->assertTrue($testee->capture_authorized_payment($wcOrder)); @@ -246,6 +253,7 @@ class WcGatewayTest extends TestCase $sessionHandler = Mockery::mock(SessionHandler::class); $refundProcessor = Mockery::mock(RefundProcessor::class); $state = Mockery::mock(State::class); + $transactionUrlProvider = Mockery::mock(TransactionUrlProvider::class); $state ->shouldReceive('current_state')->andReturn(State::STATE_ONBOARDED); $testee = new PayPalGateway( @@ -256,7 +264,8 @@ class WcGatewayTest extends TestCase $settings, $sessionHandler, $refundProcessor, - $state + $state, + $transactionUrlProvider ); $this->assertTrue($testee->capture_authorized_payment($wcOrder)); @@ -292,6 +301,7 @@ class WcGatewayTest extends TestCase $sessionHandler = Mockery::mock(SessionHandler::class); $refundProcessor = Mockery::mock(RefundProcessor::class); $state = Mockery::mock(State::class); + $transactionUrlProvider = Mockery::mock(TransactionUrlProvider::class); $state ->shouldReceive('current_state')->andReturn(State::STATE_ONBOARDED); $testee = new PayPalGateway( @@ -302,7 +312,8 @@ class WcGatewayTest extends TestCase $settings, $sessionHandler, $refundProcessor, - $state + $state, + $transactionUrlProvider ); $this->assertFalse($testee->capture_authorized_payment($wcOrder)); @@ -325,4 +336,4 @@ class WcGatewayTest extends TestCase ], ]; } -} \ No newline at end of file +} diff --git a/tests/PHPUnit/WcGateway/Processor/OrderProcessorTest.php b/tests/PHPUnit/WcGateway/Processor/OrderProcessorTest.php index eeec7845f..c42e61216 100644 --- a/tests/PHPUnit/WcGateway/Processor/OrderProcessorTest.php +++ b/tests/PHPUnit/WcGateway/Processor/OrderProcessorTest.php @@ -6,8 +6,11 @@ namespace WooCommerce\PayPalCommerce\WcGateway\Processor; use WooCommerce\PayPalCommerce\ApiClient\Endpoint\OrderEndpoint; use WooCommerce\PayPalCommerce\ApiClient\Endpoint\PaymentsEndpoint; +use Woocommerce\PayPalCommerce\ApiClient\Entity\Capture; use WooCommerce\PayPalCommerce\ApiClient\Entity\Order; 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\Repository\CartRepository; use WooCommerce\PayPalCommerce\Button\Helper\ThreeDSecure; @@ -15,14 +18,32 @@ use WooCommerce\PayPalCommerce\Session\SessionHandler; use WooCommerce\PayPalCommerce\TestCase; use WooCommerce\PayPalCommerce\WcGateway\Gateway\PayPalGateway; use WooCommerce\PayPalCommerce\WcGateway\Settings\Settings; -use WooCommerce\WooCommerce\Logging\WooCommerceLoggingModule; use Mockery; class OrderProcessorTest extends TestCase { 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->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 ->expects('is') @@ -32,8 +53,10 @@ class OrderProcessorTest extends TestCase ->expects('is') ->with(OrderStatus::COMPLETED) ->andReturn(true); + $orderId = 'abc'; $orderIntent = 'AUTHORIZE'; + $currentOrder = Mockery::mock(Order::class); $currentOrder ->expects('id') @@ -44,13 +67,18 @@ class OrderProcessorTest extends TestCase $currentOrder ->shouldReceive('status') ->andReturn($orderStatus); + $currentOrder->expects('purchase_units') + ->andReturn([$purchaseUnit]); + $sessionHandler = Mockery::mock(SessionHandler::class); $sessionHandler ->expects('order') ->andReturn($currentOrder); $sessionHandler ->expects('destroy_session_data'); + $cartRepository = Mockery::mock(CartRepository::class); + $orderEndpoint = Mockery::mock(OrderEndpoint::class); $orderEndpoint ->expects('patch_order_with') @@ -60,14 +88,19 @@ class OrderProcessorTest extends TestCase ->expects('authorize') ->with($currentOrder) ->andReturn($currentOrder); + $paymentsEndpoint = Mockery::mock(PaymentsEndpoint::class); + $orderFactory = Mockery::mock(OrderFactory::class); $orderFactory ->expects('from_wc_order') ->with($wcOrder, $currentOrder) ->andReturn($currentOrder); + $threeDSecure = Mockery::mock(ThreeDSecure::class); + $authorizedPaymentProcessor = Mockery::mock(AuthorizedPaymentsProcessor::class); + $settings = Mockery::mock(Settings::class); $settings ->shouldReceive('has') @@ -81,7 +114,8 @@ class OrderProcessorTest extends TestCase $orderFactory, $threeDSecure, $authorizedPaymentProcessor, - $settings + $settings, + false ); $cart = Mockery::mock(\WC_Cart::class); @@ -115,6 +149,20 @@ class OrderProcessorTest extends TestCase } 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); $orderStatus = Mockery::mock(OrderStatus::class); $orderStatus @@ -137,6 +185,9 @@ class OrderProcessorTest extends TestCase $currentOrder ->shouldReceive('status') ->andReturn($orderStatus); + $currentOrder + ->expects('purchase_units') + ->andReturn([$purchaseUnit]); $sessionHandler = Mockery::mock(SessionHandler::class); $sessionHandler ->expects('order') @@ -174,7 +225,8 @@ class OrderProcessorTest extends TestCase $orderFactory, $threeDSecure, $authorizedPaymentProcessor, - $settings + $settings, + false ); $cart = Mockery::mock(\WC_Cart::class); @@ -198,6 +250,10 @@ class OrderProcessorTest extends TestCase $wcOrder ->expects('update_status') ->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 ->expects('update_status') ->with('processing', 'Payment received.'); @@ -205,7 +261,26 @@ class OrderProcessorTest extends TestCase } 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->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 ->expects('is') @@ -226,6 +301,9 @@ class OrderProcessorTest extends TestCase $currentOrder ->shouldReceive('payment_source') ->andReturnNull(); + $currentOrder + ->shouldReceive('purchase_units') + ->andReturn([$purchaseUnit]); $sessionHandler = Mockery::mock(SessionHandler::class); $sessionHandler ->expects('order') @@ -246,7 +324,8 @@ class OrderProcessorTest extends TestCase $orderFactory, $threeDSecure, $authorizedPaymentProcessor, - $settings + $settings, + false ); $cart = Mockery::mock(\WC_Cart::class); @@ -270,4 +349,4 @@ class OrderProcessorTest extends TestCase } -} \ No newline at end of file +}