Skip to content

Commit

Permalink
settings update fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
Timur Karimov committed Mar 18, 2024
1 parent 974ee32 commit 32909f1
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 12 deletions.
22 changes: 16 additions & 6 deletions includes/admin/class-wc-rest-payments-settings-controller.php
Original file line number Diff line number Diff line change
Expand Up @@ -606,11 +606,11 @@ function ( $payment_method ) use ( $available_payment_methods ) {
)
);

if ( function_exists( 'wc_admin_record_tracks_event' ) ) {
$active_payment_methods = $this->wcpay_gateway->get_upe_enabled_payment_method_ids();
$disabled_payment_methods = array_diff( $active_payment_methods, $payment_method_ids_to_enable );
$enabled_payment_methods = array_diff( $payment_method_ids_to_enable, $active_payment_methods );
$active_payment_methods = $this->wcpay_gateway->get_upe_enabled_payment_method_ids();
$disabled_payment_methods = array_diff( $active_payment_methods, $payment_method_ids_to_enable );
$enabled_payment_methods = array_diff( $payment_method_ids_to_enable, $active_payment_methods );

if ( function_exists( 'wc_admin_record_tracks_event' ) ) {
foreach ( $disabled_payment_methods as $disabled_payment_method ) {
wc_admin_record_tracks_event(
Track_Events::PAYMENT_METHOD_DISABLED,
Expand All @@ -630,9 +630,19 @@ function ( $payment_method ) use ( $available_payment_methods ) {
}
}

foreach ( $payment_method_ids_to_enable as $payment_method_id ) {
foreach ( $enabled_payment_methods as $payment_method_id ) {
$gateway = WC_Payments::get_payment_gateway_by_id( $payment_method_id );
$gateway->update_option( 'upe_enabled_payment_method_ids', $payment_method_ids_to_enable );
$gateway->enable();
}

foreach ( $disabled_payment_methods as $payment_method_id ) {
$gateway = WC_Payments::get_payment_gateway_by_id( $payment_method_id );
$gateway->disable();
}

// Keep the enabled payment method IDs list synchronized across gateway setting objects unless we remove this list with all dependencies.
foreach ( WC_Payments::get_payment_gateway_map() as $payment_gateway ) {
$payment_gateway->update_option( 'upe_enabled_payment_method_ids', $payment_method_ids_to_enable );
}

if ( $payment_method_ids_to_enable ) {
Expand Down
9 changes: 9 additions & 0 deletions includes/class-wc-payments.php
Original file line number Diff line number Diff line change
Expand Up @@ -1135,6 +1135,15 @@ public static function get_payment_method_map() {
return self::$payment_method_map;
}

/**
* Returns Payment Gateway map.
*
* @return array
*/
public static function get_payment_gateway_map() {
return self::$payment_gateway_map;
}

/**
* Returns the WC_Payment_Gateway_WCPay instance
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -350,15 +350,15 @@ public function test_update_settings_returns_error_on_non_bool_is_wcpay_enabled_
$this->assertEquals( 400, $response->get_status() );
}

public function test_update_settings_saves_enabled_payment_methods() {
$this->gateway->update_option( 'upe_enabled_payment_method_ids', [ Payment_Method::CARD ] );
public function test_timur_testing() {
WC_Payments::get_gateway()->update_option( 'upe_enabled_payment_method_ids', [ Payment_Method::CARD ] );

$request = new WP_REST_Request();
$request->set_param( 'enabled_payment_method_ids', [ Payment_Method::CARD, Payment_Method::GIROPAY ] );
$request = new WP_REST_Request();
$request->set_param( 'enabled_payment_method_ids', [ Payment_Method::CARD, Payment_Method::GIROPAY ] );

$this->controller->update_settings( $request );
$this->controller->update_settings( $request );

$this->assertEquals( [ Payment_Method::CARD, Payment_Method::GIROPAY ], $this->gateway->get_option( 'upe_enabled_payment_method_ids' ) );
$this->assertEquals( [ Payment_Method::CARD, Payment_Method::GIROPAY ], WC_Payments::get_gateway()->get_option( 'upe_enabled_payment_method_ids' ) );
}

public function test_update_settings_fails_if_user_cannot_manage_woocommerce() {
Expand Down

0 comments on commit 32909f1

Please sign in to comment.