diff --git a/modules/ppcp-paypal-subscriptions/src/RenewalHandler.php b/modules/ppcp-paypal-subscriptions/src/RenewalHandler.php index 1261f418e..898a81c57 100644 --- a/modules/ppcp-paypal-subscriptions/src/RenewalHandler.php +++ b/modules/ppcp-paypal-subscriptions/src/RenewalHandler.php @@ -48,8 +48,7 @@ class RenewalHandler { */ public function process( array $subscriptions, string $transaction_id ): void { foreach ( $subscriptions as $subscription ) { - $is_renewal = $subscription->get_meta( '_ppcp_is_subscription_renewal' ) ?? ''; - if ( $is_renewal ) { + if ( $this->is_renewal( $subscription ) ) { $renewal_order = wcs_create_renewal_order( $subscription ); if ( is_a( $renewal_order, WC_Order::class ) ) { $renewal_order->set_payment_method( $subscription->get_payment_method() ); @@ -67,4 +66,19 @@ class RenewalHandler { } } } + + /** + * Checks whether subscription order is for renewal or not. + * + * @param WC_Subscription $subscription WC Subscription. + * @return bool + */ + private function is_renewal( WC_Subscription $subscription ): bool { + $subscription_renewal_meta = $subscription->get_meta( '_ppcp_is_subscription_renewal' ) ?? ''; + if ( $subscription_renewal_meta === 'true' ) { + return true; + } + + return false; + } } diff --git a/tests/e2e/PHPUnit/PayPalSubscriptionsRenewalTest.php b/tests/e2e/PHPUnit/PayPalSubscriptionsRenewalTest.php index f67b6be55..f951aadc2 100644 --- a/tests/e2e/PHPUnit/PayPalSubscriptionsRenewalTest.php +++ b/tests/e2e/PHPUnit/PayPalSubscriptionsRenewalTest.php @@ -2,34 +2,16 @@ namespace WooCommerce\PayPalCommerce\Tests\E2e; -use WC_Subscriptions_Product; use WooCommerce\PayPalCommerce\PayPalSubscriptions\RenewalHandler; class PayPalSubscriptionsRenewalTest extends TestCase { - public function test_process() + public function test_is_renewal_by_meta() { $c = $this->getContainer(); $handler = new RenewalHandler($c->get('woocommerce.logger.woocommerce')); - $order = wc_create_order(); - $order->set_customer_id( 1 ); - $order->save(); - - $subscription = wcs_create_subscription( - array( - 'order_id' => $order->get_id(), - 'status' => 'active', - 'billing_period' => WC_Subscriptions_Product::get_period( $_ENV['PAYPAL_SUBSCRIPTIONS_PRODUCT_ID'] ), - 'billing_interval' => WC_Subscriptions_Product::get_interval( $_ENV['PAYPAL_SUBSCRIPTIONS_PRODUCT_ID'] ), - 'customer_id' => $order->get_customer_id(), - ) - ); - - $parent = $subscription->get_related_orders( 'ids', array( 'parent' ) ); - $this->assertEquals(count($parent), 1); - $renewal = $subscription->get_related_orders( 'ids', array( 'renewal' ) ); - $this->assertEquals(count($renewal), 0); + $subscription = $this->createSubscription(); $handler->process([$subscription], 'TRANSACTION-ID'); $renewal = $subscription->get_related_orders( 'ids', array( 'renewal' ) ); @@ -39,4 +21,21 @@ class PayPalSubscriptionsRenewalTest extends TestCase $renewal = $subscription->get_related_orders( 'ids', array( 'renewal' ) ); $this->assertEquals(count($renewal), 1); } + + private function createSubscription() + { + $order = wc_create_order(); + $order->set_customer_id(1); + $order->save(); + + return wcs_create_subscription( + array( + 'order_id' => $order->get_id(), + 'status' => 'active', + 'billing_period' => 'day', + 'billing_interval' => '1', + 'customer_id' => $order->get_customer_id(), + ) + ); + } }