Commit Graph

1753 Commits

Author SHA1 Message Date
Nestor Soriano 9de1306c21 Fix counters in nav filtering widgets for variable products.
After the change that registers variation attributes as terms
(in addition to reigstering them as post meta) it is now time
to modify the get_filtered_term_product_counts methods in
WC_Widget_Layered_Nav so that it works consistently for both
variable and non-variable products. The logic for the counters
is now as follows:

with OR operator:
- Simple products: count the attributes of all visible products
  (unchanged behavior).
- Variable products: count attributes corresponding to
  visible variations.

with AND operator:
- Simple products: count the attributes of visible products but only
  for products that have all the selected (unchanged behavior).
- Variable products: find all the products for which all the variations
  corresponding to the selected attributes exist and are visible,
  then count the attributes corresponding to the visible variations
  of those products.

A product is "visible" if it's published, not excluded for catalog,
and has stock. Additionally, a variable product will not be considered
visible if the parent product is not.
2020-07-28 08:55:55 +02:00
Nestor Soriano 9c6c0d73d8 Record attribute terms for product variations in wp_term_relationships.
Product attributes are currently recorded as terms in
wp_term_relationships (product attributes are actually taxonomies).
In the case of variable products this is true for the main product,
but not for the variations. The attributes used to define variations
are stored as post meta, but nothing is recorded in the term
relationships table.

This is a problem when using the layered nav filtering plugin,
since the attribute counters displayed are calculated based solely
on the contents of the term relationships table. Adding meta queries
would be really messy (especially when the widget is configured
with AND operator) and would probably also hurt performance.

This commit adds a change to store the attributes for variations
as term relationships, additionally to storing them as post meta.
Terms are stored on variation creation, and updated/deleted together
with the variation as appropriate. "Any" variations (stored in meta
as empty values) are not stored as terms.

Additionally, a database upgrade is included in order to backfill
terms for already existing products.
2020-07-28 08:55:55 +02:00
Claudio Sanches 7bd34e3545
Merge branch 'master' into fix/25843 2020-07-24 17:04:28 -03:00
Christopher Allford 55385f6cec Moved the orphaned unit test into the correct directory 2020-07-15 14:21:34 -07:00
Nestor Soriano fc0be07e0f Add unit test for WC_Admin_Post_Types::bulk_and_quick_edit_save_post.
The test added checks that the new regular or sale price is
appropriately set when bulk saving.
2020-07-14 11:42:21 +02:00
Nestor Soriano 4531af3382 Small fix in WC_Tests_Admin_Post_Types::bulk_and_quick_edit_stock_status_for_variable_product.
At some point the 'change_stock' key is assumed to be present
in the request data, but it might not. Fixed to test for existence
before using the value.
2020-07-14 11:42:21 +02:00
Nestor Soriano e05aa8a03a Add unit test for WC_Admin_Post_Types::bulk_and_quick_edit_save_post.
The test added checks that stock status of variations when saving
a variable product is changed or not appropriately depending on
the request data supplied.
2020-07-14 11:42:21 +02:00
Joshua T Flowers 43ab840e1a
Add a put method to the WC_Helper_API (#26262)
* Merge wc api authorization headers with given headers

* Add put method to WC_Helper_API

* Add unit test coverage around WC_Helper_API request methods

* Add tests for WC_Helper_API url method
2020-05-06 19:25:23 +03:00
Christopher Allford b5bd8225e8 Moved PHPUnit suite into tests/legacy 2020-04-24 13:53:40 -07:00
Vedanshu Jain ee119e0a7e
Revert "Introduce a `reserved stock` class and database table to prevent race conditions during checkout" 2020-04-21 15:37:21 +05:30
Christopher Allford caa1a6d475 Merge remote-tracking branch 'origin/master' into fix/update-minimum-version 2020-04-16 14:46:17 -07:00
Claudio Sanches e43dc9b8a2 Use assertContains 2020-04-16 18:06:18 -03:00
Claudio Sanches 02e3ec7e97 Use assertStringContainsString to compare images 2020-04-16 17:52:22 -03:00
Claudio Sanches a5bc29e26c Fixed unit test on WP 5.5 alpha 2020-04-16 00:25:32 -03:00
Nestor Soriano 0eed82b3b7 Fix code standards violations introduced in #25092 2020-04-07 12:28:30 +02:00
Christopher Allford 09df1205de Updated the minimum PHP version to 7.0 2020-04-06 17:07:33 -07:00
Vedanshu Jain 3bf473517d
Merge pull request #25708 from woocommerce/update/reserve-stock-for-checkout
Introduce a `reserved stock` class and database table to prevent race conditions during checkout
2020-04-07 02:16:22 +05:30
Vedanshu Jain 237463c39b
Merge pull request #25800 from woocommerce/fix/25748
Fixes tax rounding issues
2020-04-07 00:24:34 +05:30
vedanshujain ef17b148be Removed unused tax class prop 2020-04-06 12:49:46 +00:00
Vedanshu Jain e3eb30c509
Merge pull request #26066 from woocommerce/fix/26002
Fix/26002
2020-04-06 18:05:47 +05:30
Vedanshu Jain 52ded367f5
Merge pull request #26075 from woocommerce/fix/26015
Prune elements with display none to fix regression.
2020-04-06 18:03:45 +05:30
Néstor Soriano 13765d9e91
Merge pull request #25092 from leanzafrancesco/fix/25091
Fix/25091 - Wrong totals in orders with taxable and non-taxable products and percentage coupons
2020-04-06 12:31:07 +02:00
Mike Jolley 9b5189dc7a Remove tests for order methods which were removed 2020-04-03 15:55:15 +01:00
vedanshujain facfb16131 Changed class name to match file name 2020-04-03 15:55:14 +01:00
Claudio Sanches 2ebd86f2dc Revert "Revert "Add support for '_held_for_checkout` records to prevent race conditions."" 2020-04-03 15:55:13 +01:00
vedanshujain af810af57a Add unit test for removing displa:none from emails 2020-04-03 13:49:28 +00:00
vedanshujain 0af20fe4ef Add unit test for guest checkout with per user coupon usage limit. 2020-04-02 15:04:57 +00:00
Steve Grunwell 17c56d6d12 Merge branch 'master' into fix/travis-against-minimium-requirements 2020-04-01 14:30:42 -04:00
Christopher Allford 23e555823b
Merge pull request #25943 from woocommerce/fix/25810
Fixed remainder application for percent coupons
2020-03-30 14:13:03 -07:00
Peter Fabian 0e0b1d646d
Merge pull request #25882 from woocommerce/fix/25845
Set usage count before usages query
2020-03-18 15:44:49 +01:00
Christopher Allford 917e5ff77d
Merge pull request #25923 from woocommerce/fix/test-install-db-socket
Correct usage of database sockets in test install script
2020-03-17 09:08:18 -07:00
Christopher Allford ed55034867 Added a check to prevent coupon cent remainders from decreasing the item cost below zero 2020-03-16 21:32:25 -07:00
Christopher Allford a576060403 Replaced the strict path used in the MaxMind database download test
It was set to /tmp directly instead of using the sys_get_temp_dir() method, leading to failures on systems with a different temp folder location,
2020-03-13 20:44:35 -07:00
Christopher Allford 8c0f4a1204 Made the is_package_shippable check more permissive
Initially it was made more precise to avoid calculating estimates for incomplete addresses. Due to some bad working in template files though, as well as historical precedent, we need to change it back.
2020-03-13 09:15:31 -07:00
Steve Grunwell d085044970 Remove an unnecessary onNotSuccessfulTest() override, as the tearDown() fixture will be called regardless of the successfulness of the test method 2020-03-12 16:00:01 +00:00
Steve Grunwell 0a5161ea3d *CODING STANDARDS ONLY* Add method visibility, clean up inline documentation. 2020-03-12 15:57:32 +00:00
Steve Grunwell 2383670020 Simplify the test for test_get_tables_enables_filter() now that we can leverage PHP >= 5.3 2020-03-12 15:54:25 +00:00
Steve Grunwell 7f74eace0b Rewrite WC_Tests_Install::test_get_tables()
Instead of comparing all tables that exist with all tables that are registered with `WC_Install::get_tables()` (which was only introduced a few versions ago in #19436), rewrite the test to verify that all of the tables *registered* actually exist within the database.

This will prevent tests from failing when, for example, they're run against databases that may or may not have additional plugins installed/activated. This also prevents tests from failing when running WooCommerce 4.x (e.g. with WooCommerce Admin) on WordPress < 5.3, since the tables are created but the callback to register the custom tables is never hooked.
2020-03-12 15:00:03 +00:00
Steve Grunwell 86d44e74bb Make WC_Tests_CRUD_Data::onNotSuccessfulTest() compatible with its parent declaration 2020-03-11 16:35:36 +00:00
vedanshujain a2418156d4 Add tests 2020-03-11 20:47:24 +05:30
vedanshujain 657e95b55e Added tests 2020-03-03 18:46:37 +05:30
vedanshujain 1314fdc0e7 Clear existing shippin rates before adding rate for test 2020-03-03 16:15:25 +05:30
vedanshujain 2c2d96ec95 Added tests for rounding issues 2020-03-02 15:30:10 +05:30
Vedanshu Jain 6f2b232fc7
Merge pull request #25734 from woocommerce/fix/25650
Fixed caching for order item on deletion
2020-02-27 13:48:44 +05:30
Ron Rennick 25ab5596a2 fix composer.lock conflict 2020-02-25 15:00:55 -04:00
Ron Rennick 77d6dc1342 update WCA class namespace in unit tests 2020-02-24 23:22:11 -04:00
Ron Rennick 2d70a48361 bump action scheduler version, add queue unit tests 2020-02-24 21:45:19 -04:00
Christopher Allford 6a292de9f9 Cleared the cache when order items are added, updated, or deleted 2020-02-23 12:41:33 -08:00
vedanshujain ca5fd12103 Add setting to configure hash appends 2020-02-07 17:54:54 +05:30
vedanshujain 56176e0479 Append unique hash to filename for added security 2020-02-07 17:54:54 +05:30