Skip to content

Commit fbee0a5

Browse files
committed
Use the default ordering of the payment methods for new installations when the new settings sync is enabled (#4300)
* Use UPE_AVAILABLE_METHODS as default order when enabling PMC sync
1 parent ea01bfa commit fbee0a5

File tree

2 files changed

+44
-0
lines changed

2 files changed

+44
-0
lines changed

includes/class-wc-stripe-payment-method-configurations.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -357,6 +357,11 @@ public static function maybe_migrate_payment_methods_from_db_to_pmc() {
357357
);
358358
}
359359

360+
// If there is no payment method order defined, set it to the default order
361+
if ( empty( $stripe_settings['stripe_upe_payment_method_order'] ) ) {
362+
$stripe_settings['stripe_upe_payment_method_order'] = array_keys( WC_Stripe_UPE_Payment_Gateway::UPE_AVAILABLE_METHODS );
363+
}
364+
360365
// Mark migration as complete in stripe settings
361366
$stripe_settings['pmc_enabled'] = 'yes';
362367
WC_Stripe_Helper::update_main_stripe_settings( $stripe_settings );

tests/phpunit/admin/migrations/test-class-migrate-payment-methods-from-db-to-pmc.php

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,4 +82,43 @@ public function test_migration_handles_empty_enabled_payment_methods() {
8282
$this->assertArrayHasKey( 'pmc_enabled', $updated_settings );
8383
$this->assertEquals( 'yes', $updated_settings['pmc_enabled'] );
8484
}
85+
86+
public function test_migration_sets_default_payment_method_order() {
87+
// Set up environment with pmc_enabled not set and no payment method order
88+
$stripe_settings = WC_Stripe_Helper::get_stripe_settings();
89+
$stripe_settings['test_connection_type'] = 'connect';
90+
$stripe_settings['pmc_enabled'] = '';
91+
$stripe_settings['stripe_upe_payment_method_order'] = '';
92+
WC_Stripe_Helper::update_main_stripe_settings( $stripe_settings );
93+
94+
$this->mock_payment_method_configurations( [], [] );
95+
96+
// Execute migration
97+
$this->pmc->maybe_migrate_payment_methods_from_db_to_pmc();
98+
99+
// Verify payment method order is set to default
100+
$updated_settings = WC_Stripe_Helper::get_stripe_settings();
101+
$this->assertArrayHasKey( 'stripe_upe_payment_method_order', $updated_settings );
102+
$this->assertEquals( array_keys( WC_Stripe_UPE_Payment_Gateway::UPE_AVAILABLE_METHODS ), $updated_settings['stripe_upe_payment_method_order'] );
103+
}
104+
105+
public function test_migration_preserves_existing_payment_method_order() {
106+
// Set up environment with pmc_enabled not set and existing payment method order
107+
$existing_order = [ 'card', 'sepa_debit', 'ideal' ];
108+
$stripe_settings = WC_Stripe_Helper::get_stripe_settings();
109+
$stripe_settings['test_connection_type'] = 'connect';
110+
$stripe_settings['pmc_enabled'] = '';
111+
$stripe_settings['stripe_upe_payment_method_order'] = $existing_order;
112+
WC_Stripe_Helper::update_main_stripe_settings( $stripe_settings );
113+
114+
$this->mock_payment_method_configurations( [], [] );
115+
116+
// Execute migration
117+
$this->pmc->maybe_migrate_payment_methods_from_db_to_pmc();
118+
119+
// Verify payment method order is preserved
120+
$updated_settings = WC_Stripe_Helper::get_stripe_settings();
121+
$this->assertArrayHasKey( 'stripe_upe_payment_method_order', $updated_settings );
122+
$this->assertEquals( $existing_order, $updated_settings['stripe_upe_payment_method_order'] );
123+
}
85124
}

0 commit comments

Comments
 (0)