Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Streamline checkout classes #7869

Merged
merged 23 commits into from
Dec 22, 2023
Merged

Streamline checkout classes #7869

merged 23 commits into from
Dec 22, 2023

Conversation

timur27
Copy link
Contributor

@timur27 timur27 commented Dec 11, 2023

Closes #7783
Contributes to #6882 as per first bullet point here

Changes proposed in this Pull Request

This PR merges two checkout classes into one

WC_Payments_Checkout & WC_Payments_UPE_Checkout extends WC_Payments_Checkout --> WC_Payments_Checkout

Since the latest UPE rollout, only WC_Payments_UPE_Checkout was used. It also used parent class methods in some places.

As a result, in this PR

  • all the logic from WC_Payments_Checkout which was used in WC_Payments_UPE_Checkout was moved into WC_Payments_UPE_Checkout
  • every unused method from WC_Payments_Checkout was removed
  • WC_Payments_Checkout was removed, as the previous two points led to this class being empty
  • WC_Payments_UPE_Checkout was renamed to WC_Payments_Checkout to reduce complexity and improve readability

💡 GitHub shows changes in WC_Payments_UPE_Checkout as if they were applied to the WC_Payments_Checkout, because the former was renamed to the latter and GitHub has hard time displaying the changes in the right way. To make the review process easier, you can review this commits range first and then review the name change separately.

Another significant step forward was the unit tests refactoring and extension. Multiple dependencies to the checkout class within the gateway test suite made the tests mock their own units under test. Checkout classes were used in unit tests for gateways, where we directly or indirectly tested their implementation from the gateway level, which is wrong. This PR improves this and to confirm this, you might try to search for WC_Payments_Checkout in test files and find that it's being used only in the test suite which is supposed to test checkout. Also a few new test cases were added to test-class-wc-payments-checkout.php.

Changes and testing instructions

  • remove deprecated hooks and take care of zero order total scripts reg
    • test zero order total with free shipping & change the country to non-free shipping country without leaving the
      • checkout page and confirm payment methods are loaded
      • ensure you have two shipping zones in WooCommerce (e.g. one free shipping for US and another one flat rate $10 for e.g. United Arab Emirates)
      • add one free physical product and open the shortcode checkout so that US is chosen by default as shipping address country
      • confirm no payment methods section is loaded
      • change the shipping country to United Arab Emirates and confirm that payment methods are loading properly
  • streamline get_payment_fields_js_config into single implementation & 5e5889a & 33200e6
    • open shortcode checkout with multiple PMs enabled, open browser console & confirm no js error are shown and every PM is displayed, perform two purchases: one with cc, another with non-cc
    • repeat the above with Blocks checkout
  • disable every PM other than CC and pay with card on Blocks & shortcode
  • confirm save payment method checkbox is displayed for logged in user for card PM and is not displayed for other, non reusable PMs

  • Run npm run changelog to add a changelog file, choose patch to leave it empty if the change is not significant. You can add multiple changelog files in one PR by running this command a few times.
  • Covered with tests (or have a good reason not to test in description ☝️)
  • Tested on mobile (or does not apply)

Post merge

@timur27 timur27 changed the base branch from develop to cleanup/is-upe-enabled-logic December 11, 2023 15:18
@botwoo
Copy link
Collaborator

botwoo commented Dec 11, 2023

Test the build

Option 1. Jetpack Beta

  • Install and activate Jetpack Beta.
  • Use this build by searching for PR number 7869 or branch name cleanup/upe-checkout-class in your-test.site/wp-admin/admin.php?page=jetpack-beta&plugin=woocommerce-payments

Option 2. Jurassic Ninja - available for logged-in A12s

🚀 Launch a JN site with this branch 🚀

ℹ️ Install this Tampermonkey script to get more options.


Build info:

  • Latest commit: 46708b8
  • Build time: 2023-12-21 13:06:54 UTC

Note: the build is updated when a new commit is pushed to this PR.

Copy link
Contributor

github-actions bot commented Dec 11, 2023

Size Change: 0 B

Total Size: 1.27 MB

ℹ️ View Unchanged
Filename Size
release/woocommerce-payments/assets/css/admin.css 1.06 kB
release/woocommerce-payments/assets/css/success.css 158 B
release/woocommerce-payments/dist/blocks-checkout-rtl.css 1.8 kB
release/woocommerce-payments/dist/blocks-checkout.css 1.8 kB
release/woocommerce-payments/dist/blocks-checkout.js 85.5 kB
release/woocommerce-payments/dist/checkout-rtl.css 318 B
release/woocommerce-payments/dist/checkout.css 319 B
release/woocommerce-payments/dist/checkout.js 37.1 kB
release/woocommerce-payments/dist/index-rtl.css 37.9 kB
release/woocommerce-payments/dist/index.css 37.9 kB
release/woocommerce-payments/dist/index.js 289 kB
release/woocommerce-payments/dist/multi-currency-analytics.js 1.05 kB
release/woocommerce-payments/dist/multi-currency-rtl.css 3.4 kB
release/woocommerce-payments/dist/multi-currency-switcher-block.js 60.7 kB
release/woocommerce-payments/dist/multi-currency.css 3.4 kB
release/woocommerce-payments/dist/multi-currency.js 55.9 kB
release/woocommerce-payments/dist/order-rtl.css 676 B
release/woocommerce-payments/dist/order.css 679 B
release/woocommerce-payments/dist/order.js 42.3 kB
release/woocommerce-payments/dist/payment-gateways-rtl.css 1.31 kB
release/woocommerce-payments/dist/payment-gateways.css 1.31 kB
release/woocommerce-payments/dist/payment-gateways.js 39.5 kB
release/woocommerce-payments/dist/payment-request-rtl.css 153 B
release/woocommerce-payments/dist/payment-request.css 153 B
release/woocommerce-payments/dist/payment-request.js 13.6 kB
release/woocommerce-payments/dist/product-details.js 919 B
release/woocommerce-payments/dist/settings-rtl.css 10.4 kB
release/woocommerce-payments/dist/settings.css 10.4 kB
release/woocommerce-payments/dist/settings.js 233 kB
release/woocommerce-payments/dist/subscription-edit-page.js 669 B
release/woocommerce-payments/dist/subscription-product-onboarding-modal-rtl.css 519 B
release/woocommerce-payments/dist/subscription-product-onboarding-modal.css 519 B
release/woocommerce-payments/dist/subscription-product-onboarding-modal.js 20.4 kB
release/woocommerce-payments/dist/subscription-product-onboarding-toast.js 710 B
release/woocommerce-payments/dist/subscriptions-empty-state-rtl.css 117 B
release/woocommerce-payments/dist/subscriptions-empty-state.css 117 B
release/woocommerce-payments/dist/subscriptions-empty-state.js 19.5 kB
release/woocommerce-payments/dist/tos-rtl.css 230 B
release/woocommerce-payments/dist/tos.css 231 B
release/woocommerce-payments/dist/tos.js 22 kB
release/woocommerce-payments/dist/woopay-express-button-rtl.css 153 B
release/woocommerce-payments/dist/woopay-express-button.css 153 B
release/woocommerce-payments/dist/woopay-express-button.js 52.6 kB
release/woocommerce-payments/dist/woopay-rtl.css 4.18 kB
release/woocommerce-payments/dist/woopay.css 4.19 kB
release/woocommerce-payments/dist/woopay.js 71.8 kB
release/woocommerce-payments/includes/subscriptions/assets/css/plugin-page.css 622 B
release/woocommerce-payments/includes/subscriptions/assets/js/plugin-page.js 812 B
release/woocommerce-payments/vendor/automattic/jetpack-assets/build/i18n-loader.js 2.43 kB
release/woocommerce-payments/vendor/automattic/jetpack-assets/src/js/i18n-loader.js 1.01 kB
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/tracks-ajax.js 522 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/tracks-callables.js 581 B
release/woocommerce-payments/vendor/automattic/jetpack-identity-crisis/babel.config.js 160 B
release/woocommerce-payments/vendor/automattic/jetpack-identity-crisis/build/index.css 2.32 kB
release/woocommerce-payments/vendor/automattic/jetpack-identity-crisis/build/index.js 13.8 kB
release/woocommerce-payments/vendor/automattic/jetpack-identity-crisis/build/index.rtl.css 2.32 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/about.css 1.03 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/admin-empty-state.css 291 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/admin-order-statuses.css 403 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/admin.css 3.6 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/checkout.css 299 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/modal.css 742 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/view-subscription.css 572 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/wcs-upgrade.css 411 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/admin-pointers.js 544 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/admin.js 9.4 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/jstz.js 6.8 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/jstz.min.js 3.83 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/meta-boxes-coupon.js 544 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/meta-boxes-subscription.js 2.52 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/moment.js 22.1 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/moment.min.js 11.6 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/payment-method-restrictions.js 1.29 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/wcs-meta-boxes-order.js 502 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/frontend/payment-methods.js 355 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/frontend/single-product.js 429 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/frontend/view-subscription.js 1.38 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/frontend/wcs-cart.js 781 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/modal.js 1.1 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/wcs-upgrade.js 1.27 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/build/index.css 392 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/build/index.js 3.05 kB

compressed-size-action

Base automatically changed from cleanup/is-upe-enabled-logic to develop December 11, 2023 20:57
@timur27 timur27 force-pushed the cleanup/upe-checkout-class branch from 9239f77 to c239163 Compare December 12, 2023 06:38
@timur27 timur27 force-pushed the cleanup/upe-checkout-class branch 2 times, most recently from 21d1935 to a9eb6b2 Compare December 18, 2023 16:51
@timur27 timur27 force-pushed the cleanup/upe-checkout-class branch 2 times, most recently from 2991b22 to 7ceff11 Compare December 19, 2023 13:44
@timur27 timur27 marked this pull request as ready for review December 19, 2023 13:45
@timur27 timur27 force-pushed the cleanup/upe-checkout-class branch from 3cf2d34 to ce1de59 Compare December 20, 2023 10:55
@timur27 timur27 force-pushed the cleanup/upe-checkout-class branch from bc4be8f to 3ea8609 Compare December 20, 2023 11:01
@timur27 timur27 requested review from a team, gpressutto5, mdmoore and brettshumaker and removed request for a team and gpressutto5 December 20, 2023 11:29
Copy link
Member

@mdmoore mdmoore left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Everything tests well per the instructions. Just one question regarding the removal of wcpayConfig from the checkout class. Otherwise, it's really nice to see a single clean checkout class!

includes/class-wc-payments-checkout.php Show resolved Hide resolved
@mdmoore mdmoore self-requested a review December 21, 2023 19:11
Copy link
Member

@mdmoore mdmoore left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks again for working on this! 🚢

@timur27
Copy link
Contributor Author

timur27 commented Dec 22, 2023

Merging due to reduced team capacity, and the PR still has one approval.

@timur27 timur27 added this pull request to the merge queue Dec 22, 2023
Merged via the queue into develop with commit 693bb75 Dec 22, 2023
24 of 28 checks passed
@timur27 timur27 deleted the cleanup/upe-checkout-class branch December 22, 2023 14:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Merge UPE and non-UPE checkout classes
3 participants