Commit Graph

2415 Commits

Author SHA1 Message Date
Bartosz Budzanowski a0eb52d32b Introduce payment gateway feature check for cart content. (https://github.com/woocommerce/woocommerce-blocks/pull/3719)
* Add supports data to payment methods abstractions. Implement in Stripe.

* Add capabilities to the payment gateway.

* Payment requirements in cart schema.

* Supported features format update.

* Formatting.

* Check required payment features.

* Refactor capabilieties check.

* No need for the cart parameter.

* Allow external modifiacation of features capability.

* Use ExtendRestApi to inject payment requirements into cart endpoint.

* Simplify the code.

* Enable more integrations.

* Enable Stripe payment request.

* Move  the filter to a more correc location.

* Add features check.

* Update typedefs and documentation.

* Update tests with new functionality.

* Style fixes.
2021-01-29 07:28:44 +01:00
Mike Jolley 7ae87ca367 Subscriptions Shipping Packages Integration Points (https://github.com/woocommerce/woocommerce-blocks/pull/3687)
* Expose schemas

* Accept strings for select shipping rate

* strings are allowed

* Refactor shipping package to hold it's own state

* Add extension data to cart hook

* Progress but state is broken

* Move state back to hook

* Progress but state is broken

* use shipping hook updates

* Fix re-render issue

* hide x1

* Shipping slot fill

* Working slot fills

* Do not export package

* Update extend usage in unit tests

* update mock test data

* Package per slotfill

* Resolved merge conflicts

* Update assets/js/blocks/cart-checkout/subscriptions-integration.js

Co-authored-by: Seghir Nadir <nadir.seghir@gmail.com>

* rename slot

* deriveSelectedRates return doc

* useCallback in throwError

* final class ExtendRestApi

* spacing

* Move shipping rate selection to package level

* remove const for counts

* Remove schemas from extend

* unused use

* move to a single fill for packages

* add todos

* move subs code

* fix extra extensions

Co-authored-by: Seghir Nadir <nadir.seghir@gmail.com>
2021-01-28 15:24:01 +01:00
Darren Ethier 5c9b0f448a Enable defaults for new import rules and configure (https://github.com/woocommerce/woocommerce-blocks/pull/3755)
* enable rules and add exceptions

The `import/no-unresolved` and `import/no-extraneous-dependencies` rules defaults are enabled and configuration for adding exceptions for both webpack config resolution and externals or indirect dependencies are added.

* woops forgot to commit eslint-import-plugin-webpack resolver dependency

* I guess node resolver needs installed too?

* remove default resolve (doesn’t seem to help with the GH action errors)

* change config to lowercase for node
2021-01-28 08:53:09 -05:00
Raluca Stan e7af435f08 Fix image link in all products block. (https://github.com/woocommerce/woocommerce-blocks/pull/3722)
* Fix image link in all products block.

- add alt text on product image
- prevent the appearance of both product and placeholder image at the same time
- make anchor with placeholder image accessible

* Add testing for product-elements/image block.
2021-01-28 14:23:20 +01:00
Darren Ethier f2012158f3 Update @wordpress/scripts and eslint and stylint configurations (https://github.com/woocommerce/woocommerce-blocks/pull/3749)
* implement prettier config for importing wordpress/prettier config

* update packages

This updates @wordpress/scripts to latest version so we are using the latest `@wordpress/eslint-plugin` rules.
Also installs a new required dependency due to the above update.

* temporarily convert new rules to warnings to handle in followups.

* fix stylint configuration and temporarily block rule

Latest @wordpress/scripts update requires the `@wordpress/stylelint-config` package instead of the previous builtin configuration. So applies a fix needed from that change.

* update puppeteer dependency version

* package-lock update
2021-01-27 11:49:33 -05:00
Raluca Stan a922e469ca Add missing wrapper from FeaturedCategory & FeatureProduct blocks (https://github.com/woocommerce/woocommerce-blocks/pull/3746)
* Add missing wrapper from FeaturedCategory block

In the rendered block we now have a div.wc-block-featured-category__wrapper around inner elements.

* Add missing inner wrapper for Featured Product block

In the rendered block we now have a div.wc-block-featured-product__wrapper around inner elements.
2021-01-27 16:44:53 +01:00
Raluca Stan 23ac1073ff Fix color for BlockErrorBoundry (https://github.com/woocommerce/woocommerce-blocks/pull/3738)
* Fix color for BlockErrorBoundry

The new color ensures readability on both light and dark themes.

* Remove spaces from scss file
2021-01-27 14:10:58 +01:00
Albert Juhé Lluveras 618a798998 Panel component: allow all kind of nodes as title (https://github.com/woocommerce/woocommerce-blocks/pull/3745)
* Allow all kind of nodes, not only React elements as Panel title

* Move period outside of link
2021-01-27 13:02:54 +01:00
Thomas Roberts 49a56e27ee Add subtotal to cart and checkout and update the CartLineItem component with new styles (https://github.com/woocommerce/woocommerce-blocks/pull/3734)
* Create new vars to differentiate between single and multiple item price

This is because we need to display the subtotal of the item AND the total (subtotal * quantity)

* Add subtotal and move quantity picker

As per the new designs, the quantity picker should be moved below the product metadata, and the product subtotals should appear below the product name.

* Move line item total to top of grid on mobile/medium/small

* Remove CSS for trash icon that is no longer used.

* Remove link style colour override from product name and make total bold

* Remove quantity column from CartLineItem

This is because the quantity picker is now displayed below the product metadata and name.

* Fix margins around quantity picker and its width

* Always disable link to product in OrderSummaryItem

* Add single price below product name in OrderSummaryItem

* Add styles for new OrderItemSummary design

* Move total into its own "column"

This is to stop product description text flowing under the total and making it look untidy.

* Add styles to cater for total price being its own column

* Convert precision after multiplication instead of before

* Remove unnecessary div from OrderSummaryItem

* Remove line height from product names on order summary

* Add more margin to the bottom of the product metadata div

* Delete trash icon

* Only remove margin from the bottom of last product-details

* Move quantity input to below product name in cart skeleton

* Add placeholder for individual price to Cart skeleton
2021-01-27 11:34:59 +00:00
Mike Jolley dfac8d7ca7 Unset blocks on the PHP side if on the widgets page (https://github.com/woocommerce/woocommerce-blocks/pull/3737) 2021-01-27 11:22:55 +00:00
renovate[bot] 8e9c3dafbf Update dependency downshift to v6.1.0 (https://github.com/woocommerce/woocommerce-blocks/pull/3743)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-01-27 06:00:48 +00:00
renovate[bot] fc0bab0a24 Update dependency @woocommerce/eslint-plugin to v1.1.0 (https://github.com/woocommerce/woocommerce-blocks/pull/3742)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-01-27 04:14:36 +00:00
renovate[bot] e96f28c74a Update dependency @testing-library/user-event to v12.6.2 (https://github.com/woocommerce/woocommerce-blocks/pull/3741)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-01-27 03:25:59 +00:00
renovate[bot] c45c17df89 Update dependency @octokit/graphql to v4.5.9 (https://github.com/woocommerce/woocommerce-blocks/pull/3740)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-01-27 02:41:48 +00:00
Albert Juhé Lluveras 4ae28daca0 Honor hidden property of cart item data and add support for experimenal property (https://github.com/woocommerce/woocommerce-blocks/pull/3732)
* Honor hidden property of cart item data and add support for experimental property

* Add docs to experimental property

* Typo

* Add protection in ProductDetails for the case where 'details' is not an array

* Update ProductDetails so it works properly in cases where 'name' is not provided

* Add snapshot testing to ProductDetails
2021-01-26 15:50:19 +01:00
renovate[bot] 3557b91bae Lock file maintenance (https://github.com/woocommerce/woocommerce-blocks/pull/3730)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-01-26 12:23:07 +01:00
Albert Juhé Lluveras 7f1d785b1c Remove star-rating class from Product rating block (https://github.com/woocommerce/woocommerce-blocks/pull/3717) 2021-01-25 11:19:36 +01:00
Thomas Roberts 96e3ff9662 Change payment processing for subscriptions (https://github.com/woocommerce/woocommerce-blocks/pull/3686)
* Remove savePaymentInfo check when displaying payment methods

This is because the savePaymentInfo is derived from whether the save payment method checkbox shows. This check doesn't make sense to do because it's not a good indicator of whether the payment method is enabled. Subscriptions for example hides the checkbox because it is implied that the method will be saved. We should instead rely on the server-side to only send permitted saved payment methods.

* Add safely_get_request_payment_method

This will allow us to try to get the payment method if it was passed in the request, but will default to an empty string if not. This is different to get_request_payment_method because it doesn't throw any errors. We need it to be different because get_request_payment_method is used when the order definitely needs payment (so a normal checkout scenario, vs. a £0 subscription checkout)

* Add action to update order meta when checking out

This is needed because some extensions rely on this action to add their information to the metadata of order items.

* Remove safely_get_request_payment_method

This is no longer needed.

* Remove @since from experimental hook

* Add PHPDoc for new update_order_meta hook

* Document use of experimental hook

* Reinstate the check for allowing saved cards

* Add method to Stripe integration to determine if saved_cards is enabled

* Add new field to get_payment_method_data

This adds displaySavePaymentMethodCheckbox which will be used to determine if the checkbox to save payment methods should display.

* Add displaySavePaymentMethodCheckbox option to client

This will determine whether the "Save payment information" checkbox will be displayed.

* Add requiresSaving option to Stripe payment method data

This is informed by the saved_cards option and the result of the wc_stripe_display_save_payment_method_checkbox filter.

* Rename displaySavePaymentMethodCheckbox to requiresSaving & fix logic

* Revert negation on display_save_payment method_checkbox filter & rename

We are going to rename the properties we use to determine whether saved cards are shown, or whether the save payment method checkbox is shown, so that their names are more descriptive of what they are for.

* Rename allowSavedCards and requiresSaving in Stripe integration

* Rename savePaymentInfo&requiresSaving to showSavedCards & showSaveOption

This is so we can hide the checkbox independently of hiding the saved payment methods.

* Show deprecated message if payment methods use savePaymentInfo

This is because we are leaving it in to enable backward compatibility but payment methods registering using this should be informed of the change in case it gets removed.

* Update Stripe typedefs and keys of supports object

* Show customer payment methods if showSavedCards is true on the method

* Make PaymentMethodTab accept showSaveOption prop

This will allow us to show the save checkbox only if the payment method says it should be shown.

* Update tests to use new keys in supports when reg'ing payment methods

* Add optional chaining when validating payment method config

This makes the code a little tidier :)

* Update assets/js/blocks-registry/payment-methods/payment-method-config.js

Co-authored-by: Seghir Nadir <nadir.seghir@gmail.com>

* Add more information to deprecated call in payment method config

* Fix lint error

* Fix prop types for PaymentMethodTab

* Add information about supports on payment methods to docs

Co-authored-by: Seghir Nadir <nadir.seghir@gmail.com>
2021-01-24 14:59:13 +01:00
Seghir Nadir e5d256254a Move error to admin notice (https://github.com/woocommerce/woocommerce-blocks/pull/3720) 2021-01-22 08:45:41 -05:00
Albert Juhé Lluveras 03b03380d3 Allow extensions to filter Total label (https://github.com/woocommerce/woocommerce-blocks/pull/3716)
* Allow extensions to filter totals label

* Add docs
2021-01-21 15:45:31 +01:00
Seghir Nadir 5b2b753100 Move Total components to checkout package (https://github.com/woocommerce/woocommerce-blocks/pull/3671)
* move items to package

* move components to package

* fix dep issue

* pass down classname

* move Panel and Price utils

* expose extensions

* fix import

* move cart call to inside slot

* fix unit tests

* fixes after rebase

* move ShippingRatesControl into packages/checkout

This fixes the `wc-blocks-checkout` circular dependency because `Package` was importing from `@woocommerce/checkout`.

Co-authored-by: Darren Ethier <darren@roughsmootheng.in>
2021-01-20 21:35:53 +01:00
Seghir Nadir 3dfbda1e8c Add circular dependency check and fix it (https://github.com/woocommerce/woocommerce-blocks/pull/3695)
* add circular dependency check and fix it

* only throw error

* udpate error message

* only throw on production

* better defaults

* add variable to travis

* double echo

* echo with -e
2021-01-20 20:33:50 +01:00
Darren Ethier 1693f97a44 Update close-stale-issues.yml
Fix errant space
2021-01-20 10:08:05 -05:00
Darren Ethier 091f6770d1 Add exempt issue label for stale workflow
Added the `Epic` label to the configuration for the stale workflow as epics will generally be long living issues.
2021-01-20 10:07:49 -05:00
Darren Ethier 10cfbb99f0 Update expiry trigger on stale automation workflow
Change days before close value to 10. I'm going to leave the days-before-stale at 60 because 30 is too short for our current velocity.
2021-01-20 10:06:04 -05:00
Bartosz Budzanowski abdf123ffb Update version for the next release. 2021-01-20 14:43:54 +01:00
github-actions[bot] e2a7bb32b0 Release: 4.3.0 (https://github.com/woocommerce/woocommerce-blocks/pull/3698)
* generating changeset for pull request

* generating changeset for pull request

* Update changelog.txt for 4.3.0 release.

* Update testing instructions for 4.3.0 releae.

* Update testing instruction for review.

* Revert "Improve error displayed to customers when an item's stock status changes during checkout. (https://github.com/woocommerce/woocommerce-blocks/pull/3656)"

This reverts commit a30179f165.

* Revert 3656 documentation changes.

* Update test zip link.

* Update release date for 4.2.0.

* Bumping version strings to new version.

Co-authored-by: github-actions <github-actions@github.com>
Co-authored-by: budzanowski <bartosz.budzanowski@gmail.com>
2021-01-20 14:42:14 +01:00
Raluca Stan ed0a440274 add missing aria-label for stars image in review-list-item component (https://github.com/woocommerce/woocommerce-blocks/pull/3706) 2021-01-20 13:45:25 +01:00
renovate[bot] a19bf2c556 Update dependency fs-extra to v9.1.0 (https://github.com/woocommerce/woocommerce-blocks/pull/3712)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-01-20 07:43:44 +00:00
renovate[bot] 99948532f5 Update dependency eslint to v7.18.0 (https://github.com/woocommerce/woocommerce-blocks/pull/3711)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-01-20 06:00:34 +00:00
renovate[bot] 4077744c06 Update dependency downshift to v6.0.16 (https://github.com/woocommerce/woocommerce-blocks/pull/3710)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-01-20 04:21:10 +00:00
renovate[bot] e788d72fb6 Update dependency core-js to v3.8.3 (https://github.com/woocommerce/woocommerce-blocks/pull/3709)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-01-20 03:54:20 +00:00
renovate[bot] c930a10d63 Update dependency autoprefixer to v10.2.3 (https://github.com/woocommerce/woocommerce-blocks/pull/3708)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-01-20 02:46:41 +00:00
renovate[bot] c1d0cd4174 Update dependency @stripe/react-stripe-js to v1.2.0 (https://github.com/woocommerce/woocommerce-blocks/pull/3707)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-01-20 01:44:26 +00:00
Darren Ethier b4507d3b92 Fix circular dependencies (https://github.com/woocommerce/woocommerce-blocks/pull/3704)
* fix circular dependency in text-input

* fix circular dependency in chip component

* fix circular dependencies in AddressForm component

* fix circular dependencies in product-list

* fix circular dependencies in hooks

* fix circular dependencies in context

* Fix circular dependencies in components/cart-checkout

* fix use-checkout-submit test

- can’t mock the hook alias anymore
- account for undefined object returned from `usePaymentMethods`
2021-01-19 10:55:44 -05:00
Bartosz Budzanowski 806568bf99 Update smoke-testing.md
Add information about product-search action attribute URL.
2021-01-19 09:33:32 +01:00
Thomas Roberts a30179f165 Improve error displayed to customers when an item's stock status changes during checkout. (https://github.com/woocommerce/woocommerce-blocks/pull/3656)
* Add new exceptions for out of stock scenarios

These are needed to differentiate between the different stock validation errors, and so we can create the correct error message.

* Catch new out of stock exceptions when checking the cart for errors

This is so we can get the cart sent back to the client, if we don't catch these, then the route will just return a 500 error and crash.

* Add ArrayUtils class

This will contain methods used to operate on arrays that don't fit anywhere else.

* Handle the case in Checkout where the error is already a WP_Error

This will happen when the cart fails validation.

* Handle StockAvailabilityException in AbstractRoute

This will happen when an item or number of items in the cart are out of stock/insufficient stock.

* Throw exceptions for each type of invalid stock in validate_cart_items

This will allow us to create an error message for each type of violation to display to the user.

* Display additional error notices returned by the API

* Fix wording when throwing exceptions relating to stock

* Handle TooManyInCartException in CartController

* Abstract the merging of cart, status, and additional data into new fn

This allows us to simplify the way errors are returned from the API. The reason we have to add all of the data at once is because of how WP_Error works with the additional data, if there is already existing data in a WP_Error object, it gets moved into additional_data. By adding all of the data in one place, we stop this from happening. Also since we're only adding status and/or cart explicitly, it makes sense to just do it in one place.

* Add get_route_error_response_from_object method

This is so we can differentiate between a string and WP_Error object.

* Remove unnecessary slashes from WP_Error instantiation

* Add option to enclose each item in quotes in natural_language_join

* Abstract adding error messages to error object into single function

A lot of code was repeated, so doing this cuts down on that and ensures any changes only need to be made in one place.

* Create new parent exception for each type of out of stock exception

This is so we don't have to repeat code inside each different exception and we can simply inherit StockAvailabilityException.

* Catch the generic StockAvailabilityException in get_cart_item_errors

* No longer recalculate totals in validate function

It is not needed, the totals are recalculated elsewhere. This call was superfluous.

* Reduce nesting, and only throw exception if error object has errors

* Improve comment on get_route_error_response_from_object method

* Fix nesting when throwing the InvalidStockLevelsInCartException
2021-01-18 17:35:02 +00:00
Darren Ethier 056a446832 change eslint workflow to use different method and action (https://github.com/woocommerce/woocommerce-blocks/pull/3693)
Our existing worfklow was giving a cryptic error that I couldn’t troubleshoot so decided to just switch to a different method
2021-01-17 14:06:24 -05:00
Darren Ethier 869c0a189e Delete clean-up-artifacts.yml
This was just a test so removing.
2021-01-17 10:37:40 -05:00
Darren Ethier 194ed59268 Update clean-up-artifacts.yml 2021-01-17 09:14:32 -05:00
Darren Ethier f9812047f2 Create clean-up-artifacts.yml 2021-01-17 09:12:21 -05:00
Darren Ethier dd1415c73b Fix broken PHPunit tests (https://github.com/woocommerce/woocommerce-blocks/pull/3690)
* Ensure phpunit tests are running against the blocks code and not what is included in WooCommerce core.

* cast to object to correct response expectations.

The change in https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/3679/files#diff-5d8cf88af3d9be56abf0b110a7500b3711552009533d894e07f0e891b4af266eL317 resulted in a change in shape for the response.
2021-01-16 08:48:46 +01:00
renovate[bot] ca471e1320 Update dependency @testing-library/react to v11.2.3 (https://github.com/woocommerce/woocommerce-blocks/pull/3674)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-01-15 14:24:40 +01:00
renovate[bot] 178d6d9f8a Update dependency @types/jest to v26.0.20 (https://github.com/woocommerce/woocommerce-blocks/pull/3675)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-01-15 13:25:32 +01:00
renovate[bot] 1502967dc0 Update dependency @testing-library/jest-dom to v5.11.9 (https://github.com/woocommerce/woocommerce-blocks/pull/3673)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-01-15 13:25:02 +01:00
Vedanshu Jain 6d8aa16d4c Add protection around mock queries in unit tests. (https://github.com/woocommerce/woocommerce-blocks/pull/3602)
* Add protection around mock queries in unit tests.

This adds additional checks before mocking wc_get_orders query results to prevent overriding refunds query. This is needed with WC core 4.9 since it does an addtional wc_get_orders query to preload and hydrate cache for refunds in order to improve performance.

* update jetpack autoloader to 2.7.1

Co-authored-by: Seghir Nadir <nadir.seghir@gmail.com>
2021-01-14 15:48:57 +01:00
Albert Juhé Lluveras 5f563fd024 update jetpack autoloader to 2.7.1 (https://github.com/woocommerce/woocommerce-blocks/pull/3683)
Co-authored-by: Seghir Nadir <nadir.seghir@gmail.com>
2021-01-14 14:11:55 +01:00
Mike Jolley 8c98c1eaac Support for multiple fee rows in the cart (https://github.com/woocommerce/woocommerce-blocks/pull/3678)
* Inject the routes controller

* Cart totals need to be calculated on cart routes or fees will be missing

* Add fees to schema and response

* Add fees to useStoreCart

* Fix styling of multiple fee rows

* Fix test shape
2021-01-13 16:57:42 +00:00
Mike Jolley 60be55400a Improve Package Handling in CartShippingRateSchema (https://github.com/woocommerce/woocommerce-blocks/pull/3680)
* Generate package names when geting them from the cart

* Split package formatting methods

* Fix variable name
2021-01-13 16:19:22 +00:00
renovate[bot] a4e642f683 Update dependency autoprefixer to v10.2.1 (https://github.com/woocommerce/woocommerce-blocks/pull/3676)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-01-13 14:49:56 +00:00