From da395281e7d81e13d06e43909e6620d7f20e9e6e Mon Sep 17 00:00:00 2001 From: louwie17 Date: Mon, 27 Sep 2021 10:24:47 -0300 Subject: [PATCH] Add changelog and enable promotion in core and plugin configs (https://github.com/woocommerce/woocommerce-admin/pull/7666) * Add changelog and enable promotion in core and plugin configs * Add PR number * Make variation name a constant * Clone spec as we are overwriting the is_visible prop * Fix unit tests and support array and object * Revert explat variation name * Update changelog entry * Update changelog once more * Make sure the recommendations show up if marketplace suggestions is not defined defaulting to 'yes' --- .../changelogs/update-7319_enable_wc_pay_experiment | 4 ++++ .../recommendations-eligibility-wrapper.tsx | 2 +- plugins/woocommerce-admin/config/core.json | 2 +- plugins/woocommerce-admin/config/plugin.json | 2 +- .../PaymentGatewaySuggestions/EvaluateSuggestion.php | 6 +++--- .../woocommerce-admin/src/Features/WcPayPromotion/Init.php | 5 +++-- .../payment-gateway-suggestions/evaluate-suggestion.php | 6 +++--- 7 files changed, 16 insertions(+), 11 deletions(-) create mode 100644 plugins/woocommerce-admin/changelogs/update-7319_enable_wc_pay_experiment diff --git a/plugins/woocommerce-admin/changelogs/update-7319_enable_wc_pay_experiment b/plugins/woocommerce-admin/changelogs/update-7319_enable_wc_pay_experiment new file mode 100644 index 00000000000..1bc7a847ba8 --- /dev/null +++ b/plugins/woocommerce-admin/changelogs/update-7319_enable_wc_pay_experiment @@ -0,0 +1,4 @@ +Significance: minor +Type: Enhancement + +Add experiment for promoting WooCommerce Payments in payment methods table. #7666 diff --git a/plugins/woocommerce-admin/client/settings-recommendations/recommendations-eligibility-wrapper.tsx b/plugins/woocommerce-admin/client/settings-recommendations/recommendations-eligibility-wrapper.tsx index 74cea6b771c..d9bd2775664 100644 --- a/plugins/woocommerce-admin/client/settings-recommendations/recommendations-eligibility-wrapper.tsx +++ b/plugins/woocommerce-admin/client/settings-recommendations/recommendations-eligibility-wrapper.tsx @@ -19,7 +19,7 @@ const RecommendationsEligibilityWrapper: React.FC = ( { children } ) => { SHOW_MARKETPLACE_SUGGESTION_OPTION, ] ); const canShowMarketplaceSuggestions = - getOption( SHOW_MARKETPLACE_SUGGESTION_OPTION ) === 'yes'; + getOption( SHOW_MARKETPLACE_SUGGESTION_OPTION ) !== 'no'; return hasFinishedResolving && canShowMarketplaceSuggestions; } ); diff --git a/plugins/woocommerce-admin/config/core.json b/plugins/woocommerce-admin/config/core.json index b00cdbd9790..590927ab74d 100644 --- a/plugins/woocommerce-admin/config/core.json +++ b/plugins/woocommerce-admin/config/core.json @@ -18,6 +18,6 @@ "store-alerts": true, "tasks": false, "transient-notices": true, - "wc-pay-promotion": false + "wc-pay-promotion": true } } diff --git a/plugins/woocommerce-admin/config/plugin.json b/plugins/woocommerce-admin/config/plugin.json index afcc7676997..ff4ca9470f8 100644 --- a/plugins/woocommerce-admin/config/plugin.json +++ b/plugins/woocommerce-admin/config/plugin.json @@ -18,6 +18,6 @@ "store-alerts": true, "tasks": false, "transient-notices": true, - "wc-pay-promotion": false + "wc-pay-promotion": true } } diff --git a/plugins/woocommerce-admin/src/Features/PaymentGatewaySuggestions/EvaluateSuggestion.php b/plugins/woocommerce-admin/src/Features/PaymentGatewaySuggestions/EvaluateSuggestion.php index b94c8ecb3bb..122c8ed79fb 100644 --- a/plugins/woocommerce-admin/src/Features/PaymentGatewaySuggestions/EvaluateSuggestion.php +++ b/plugins/woocommerce-admin/src/Features/PaymentGatewaySuggestions/EvaluateSuggestion.php @@ -16,12 +16,12 @@ class EvaluateSuggestion { /** * Evaluates the spec and returns the suggestion. * - * @param array $spec The suggestion to evaluate. - * @return array The evaluated suggestion. + * @param object|array $spec The suggestion to evaluate. + * @return object The evaluated suggestion. */ public static function evaluate( $spec ) { $rule_evaluator = new RuleEvaluator(); - $suggestion = (object) $spec; + $suggestion = is_array( $spec ) ? (object) $spec : clone $spec; if ( isset( $suggestion->is_visible ) ) { $is_visible = $rule_evaluator->evaluate( $suggestion->is_visible ); diff --git a/plugins/woocommerce-admin/src/Features/WcPayPromotion/Init.php b/plugins/woocommerce-admin/src/Features/WcPayPromotion/Init.php index 2481605e71a..b6ef01ccf5d 100644 --- a/plugins/woocommerce-admin/src/Features/WcPayPromotion/Init.php +++ b/plugins/woocommerce-admin/src/Features/WcPayPromotion/Init.php @@ -15,7 +15,8 @@ use Automattic\WooCommerce\Admin\Features\PaymentGatewaySuggestions\EvaluateSugg * WC Pay Promotion engine. */ class Init { - const SPECS_TRANSIENT_NAME = 'woocommerce_admin_payment_method_promotion_specs'; + const SPECS_TRANSIENT_NAME = 'woocommerce_admin_payment_method_promotion_specs'; + const EXPLAT_VARIATION_PREFIX = 'woocommerce_wc_pay_promotion_payment_methods_table_'; /** * Constructor. @@ -113,7 +114,7 @@ class Init { $allow_tracking ); - $variation_name = $abtest->get_variation( 'woocommerce_wc_pay_promotion_payment_methods_table_' . $wc_pay_spec->additional_info->experiment_version ); + $variation_name = $abtest->get_variation( self::EXPLAT_VARIATION_PREFIX . $wc_pay_spec->additional_info->experiment_version ); if ( 'treatment' === $variation_name ) { return true; diff --git a/plugins/woocommerce-admin/tests/features/payment-gateway-suggestions/evaluate-suggestion.php b/plugins/woocommerce-admin/tests/features/payment-gateway-suggestions/evaluate-suggestion.php index 42800164975..23965621fbd 100644 --- a/plugins/woocommerce-admin/tests/features/payment-gateway-suggestions/evaluate-suggestion.php +++ b/plugins/woocommerce-admin/tests/features/payment-gateway-suggestions/evaluate-suggestion.php @@ -31,7 +31,7 @@ class WC_Tests_PaymentGatewaySuggestions_EvaluateSuggestion extends WC_Unit_Test $suggestion = array( 'id' => 'mock-gateway', ); - $evaluated = EvaluateSuggestion::evaluate( $suggestion ); + $evaluated = EvaluateSuggestion::evaluate( (object) $suggestion ); $this->assertEquals( (object) $suggestion, $evaluated ); } @@ -49,7 +49,7 @@ class WC_Tests_PaymentGatewaySuggestions_EvaluateSuggestion extends WC_Unit_Test 'operation' => '=', ), ); - $evaluated = EvaluateSuggestion::evaluate( $suggestion ); + $evaluated = EvaluateSuggestion::evaluate( (object) $suggestion ); $this->assertFalse( $evaluated->is_visible ); } @@ -68,7 +68,7 @@ class WC_Tests_PaymentGatewaySuggestions_EvaluateSuggestion extends WC_Unit_Test ), ); update_option( self::MOCK_OPTION, 'a' ); - $evaluated = EvaluateSuggestion::evaluate( $suggestion ); + $evaluated = EvaluateSuggestion::evaluate( (object) $suggestion ); $this->assertTrue( $evaluated->is_visible ); } }