39 Commits
Author SHA1 Message Date
Geoff TaylorandGitHub 6fb7b226fc feat: WC Settings API, compatibility refactor, HPOS fix (#1002)
* feat: WC Settings API, compatibility refactor, HPOS fix, CI improvements

WC Settings GraphQL API:
- Add WCSetting interface with common fields and type-safe resolveType
- Add concrete types: WCStringSetting, WCArraySetting, WCRelativeDateSetting,
  WCImageWidthSetting with typed value/default fields
- Add WCSettingGroup type with nested settings field
- Add wcSettingGroups and wcSettings root query fields (admin only)
- Add updateWCSetting and updateWCSettings mutations
- Dynamic WCSettingTypeEnum collected from registered WC settings
- Filters: graphql_woocommerce_setting_type_map, graphql_woocommerce_setting_types
- Register WC admin settings for GraphQL requests via Compatibility class

Compatibility refactor:
- Consolidate ACF, JWT Auth, and QL Search filters into Compatibility class
- Remove class-acf-schema-filters.php, class-jwt-auth-schema-filters.php, functions.php

HPOS compatibility fix:
- Replace hardcoded directory name check with dirname(__DIR__) === WP_PLUGIN_DIR
- Works with any plugin folder name while still skipping nested vendor installs

CI improvements:
- Remove STRIPE_API_PUBLISHABLE_KEY restriction from coverage job
- Add HPOS to coverage matrix entries
- Sort type registry and includes alphabetically

Other fixes:
- Fix Settings_Mutation::validate_setting_checkbox_field to be static
- Update ShippingZone settings field type to WCStringSetting

Closes #864, closes #969

* refactor: Rename and split core classes, add order cursor pagination tests

Class renames:
- WooCommerce_Filters → WooCommerce (class-woocommerce.php), setup() → init()
- Core_Schema_Filters → Post_Types (class-post-types.php)

Class split:
- Extract taxonomy registration from Core_Schema_Filters into Taxonomies (class-taxonomies.php)

Access functions:
- Add wc_graphql_resolve_product_type() for interface resolveType callbacks
- Add wc_graphql_is_session_handler_disabled()
- Add wc_graphql_enabled_authorizing_url_fields()
- Add wc_graphql_get_authorizing_url_nonce_param_name()
- Replace direct class references with global functions in type-registry,
  compatibility, protected-router, and all product interface files

Stripe gateway compatibility:
- Move woographql_stripe_gateway_args from WooCommerce to Compatibility class
- Rename to woocommerce_gateway_stripe_args

Tests:
- Add OrderCursorPaginationTest (6 tests) covering COT cursor-based
  pagination: forward/backward, date ordering ASC/DESC, cursor integrity

* fix: Use proper expectedField/expectedNode assertions in cursor pagination tests

Replace empty assertQuerySuccessful([]) calls and manual lodashGet
assertions with expectedField, expectedNode, and not()->expectedNode()
for proper GraphQL response validation.
2026-03-27 16:32:30 -04:00
Geoff TaylorandGitHub c6a22e1293 fix: refresh order object after meta save in checkout mutation (#978)
* fix: refresh order object after meta save in checkout mutation

The woocommerce_checkout_order_processed hook was receiving a stale
order object without the metadata saved by update_order_meta().
Refreshing the order via wc_get_order() after meta save ensures
plugins hooking into woocommerce_checkout_order_processed can access
the checkout metadata.

Resolves #932

* chore: Linter compliances met
2026-03-20 19:22:31 -04:00
Geoff TaylorandGitHub 07dfdf9348 feat: New fees input fields add to cart query and checkout mutation (#929)
* feat: New fees input fields add to `cart` query and `checkout` mutation

* chore: Linter compliance met

* devops: CartQueriesTest tests updated
2026-03-18 16:59:08 -04:00
Geoff TaylorandGitHub 005f361fb8 fix: inverted logic in pop_transaction_id() causes cart session corruption (#971)
* fix: resolve REQUEST_URI fatal error and JWT key length issues in CI

QLSessionHandlerTest::tearDown() was calling unset($_SERVER) which
destroyed the entire superglobal. WordPress cron.php then fataled on
shutdown when accessing $_SERVER['REQUEST_URI']. Changed to only unset
the specific HTTP_WOOCOMMERCE_SESSION key.

Also updated JWT secret keys to meet firebase/php-jwt v7's minimum
32-byte requirement for HS256 in both test config and Docker entrypoint.

* fix: the rest of the files added

* devops: php7.4 removed from matrix

* chore: Linter compliances met

* devops: More broken test updated

* devops: Tests updated for CI

* fix: QLSessionHandlerCest fixed

* fix: QLSessionHandlerCest fixed

* devops: CI fixed
2026-03-17 23:49:48 -04:00
Geoff TaylorandGitHub f61b55f8df fix: Add direct or/and syntax support to ProductTaxonomyInput and fix test issues (#948)
* fix: Add direct or/and syntax support to ProductTaxonomyInput and fix test issues

* fix: Add OrderNote visibility filters for queries and mutations
2025-10-11 16:29:36 -04:00
962410d265 fix: add model classes to type configs to better support query analyzer ID tracking (#874)
* - remove several fields that are already registered by core when the post type is mapped to the schema

* devops: Tests updated and coupon "salt" restored

* chore: Linter & PHPStan compliance met

* chore: Linter & PHPStan compliance met

* devops: "self" replaced with "static" in cli tests

* chore: fix cleanup after rebasing

---------

Co-authored-by: Geoff Taylor <geoff@axistaylor.com>
2024-08-06 18:54:18 -04:00
Dovid LevineandGitHub e96236696f chore: bump deps to meet actual requirements and lint for WPCS 3.0 (#816)
* chore: bump min versions to actual and update deps

* chore: fix multiple empty lines at EOF

* chore: preincrement when standalone (phpcs)

* fix: use `printf` instead of `echo sprintf` [phpcs]

* chore: avoid lonely `if()` in `else{}` [phpcs]

* chore: avoid reserved keywords as param names [phpcs]

* chore: remove unused callback params [phpcs]

* chore: remove more unused callback params [phpcs]

* chore: apply lints to tests

* chore: update ruleset for PHPCS 3.0

* texts: restore $last_request_headers
2023-11-30 08:41:32 -05:00
57800b46f3 feat: HPOS support added. (#748)
* feat: HPOS support added.

* fix: Refund connections and connection permission fixed

* chore: Linter compliance met.

* devops: CI script updated.

* devops: CI script updated.

* fix: Syntax error fixed.

* devops: CI script updated.

* devops: CI script updated.

* devops: CI script updated.

* chore: PHPStan fixes started.

* chore: linter compliance met.

* chore: fix scanning and type-hinting for non-stubbed classes

* dev: refactor Order model around WC_Abstract_Order

* chore: update dev deps

* devops: PHPStan and Linter compliance met.

* devops: HPOS test temporarily suppressed.

---------

Co-authored-by: David Levine <david@axepress.dev>
2023-06-21 13:21:29 -04:00
Geoffrey K TaylorandGitHub b7c7b2d299 fix: Cart emptied after checkout (#649)
* fix: Cart emptied after checkout

* chore: WPCS compliance met.
2022-08-26 20:32:37 -04:00
Geoffrey K TaylorandGitHub 9073793e86 chore: WPGraphQL v1.9.x connection resolver support added and autoloader removed. (#647)
* chore: WPGraphQL v1.9x + WP Bedrock support added.

* chore: lint compliance met.

* chore: composer/installers added back to allow-plugins
2022-08-26 14:53:36 -04:00
Geoffrey K TaylorandGitHub 223bde6ea2 feat: "product" and "variation" connections added to LineItem type (#604)
* feat: "product" and "variation" connections added to LineItem type

* chore: Coding standards met

* fix: GraphQLE2E helper updated to reflect schema changes

* chore: PHP 8.0 compliance met

* chore: Workflow codecoverage set to target PHP 7.4

* chore: WPCS compliance met
2022-03-04 23:44:48 -05:00
Geoffrey K TaylorandGitHub 6dbdcb5ae8 fix: Product Attribute naming conventions changed (#603)
* fix: Product Attribute naming conventions changed

* devops: dev dependencies updated

* devops: dev dependencies updated

* devops: dev dependencies updated

* devops: Dockerfile updated

* devops: dev dependencies updated

* devops: dev dependencies updated

* devops: dev dependencies updated

* devops: Dockerfile updated

* chore: Docker composer configurations updated

* chore: Coding standards met.
2022-02-04 15:00:44 -05:00
a7714d0cd2 Updates to be compatible with WPGraphQL v1.6.1 (#537)
* fix: Huge refactor across schema and unit tests

* - add shipping_method loader in class-core-schema-filters.php

* - Update class-wc-db-loader.php to respect the new SHIPPING_METHOD loader with a `load_shipping_method_from_id()` function

* - Convert Shipping_Method_Connection_Resolver to extend AbstractConnectionResolver

* - Replace resolver for Shipping Methods connection. Remove use of `resolveNode` and replace the resolver with the new connection class `get_connection()` call

* chore: Factory class refactored.

* - update the function that registers Product Types to the Schema to use the value from the `get_enabled_product_types()` as the Type name and the key as the fieldName

* chore: PaymentGatewayQueriesTest refactored.

* chore: WPCS compliance met

* chore: Syntax error fixed.

Co-authored-by: Jason Bahl <jasonbahl@mac.com>
2021-08-11 14:26:09 -04:00
Geoff Taylor 66690f03ff "Customer_Connection_Resolver" deprecated. 2021-06-14 11:40:42 -04:00
Geoff Taylor db095015b1 Version numbers and Repo templates updated. 2021-02-26 21:12:52 -05:00
Geoff TaylorandGeoff Taylor f47bee2b5f Docker/Codeception configuration heavily refactored.. 2021-01-22 11:34:09 -05:00
Geoffrey K TaylorandGitHub e708346e65 Merge branch 'release/v0.6.0' into feature/some-node-interfaces-support 2020-10-03 01:46:46 -04:00
Geoff Taylor 6026ed9cd3 "testCheckoutMutationCartItemValidation" completed. 2020-10-03 01:28:55 -04:00
Geoff Taylor 0cbd8de1d8 Deprecated code removed. 2020-10-01 19:49:11 -04:00
Geoff Taylor b7a14f95a1 Session Handler upgraded. 2020-10-01 01:45:26 -04:00
Geoff TaylorandGeoff Taylor 2456586cdd Stripe test cleaned up 2020-09-21 14:29:59 -04:00
Geoff TaylorandGeoff Taylor f700c4d4fb Stripe payment gateway support implemented 2020-09-21 14:25:35 -04:00
Geoff TaylorandGeoff Taylor 55fa706370 initial commit 2020-09-21 14:17:35 -04:00
Geoff Taylor 449d3b1674 "typeId" fields replaced by "databaseId". 2020-09-16 16:32:14 -04:00
Geoff Taylor 9132693608 Skip conditional added to stripe test 2020-06-09 11:16:18 -04:00
Geoff TaylorandGeoff Taylor 56507b663a Checkout mutation input fields updated 2020-05-11 21:23:56 -04:00
Geoff TaylorandGeoff Taylor a72c512c0d Product review mutations implemented and tested. 2020-05-11 21:23:46 -04:00
Geoff TaylorandGeoff Taylor 0573591ab8 Stripe payment gateway support implemented 2020-05-11 21:22:40 -04:00
Geoffrey K Taylor 85a935d7cb Update README.md 2020-05-11 21:22:28 -04:00
Geoff Taylor 971f4eaf0f ""ProductUnion" type implemented. 2019-10-17 21:39:38 -04:00
Geoff Taylor b7f52e2a27 Checkout mutation output fields updated. 2019-08-26 17:39:46 -04:00
Geoff Taylor df92511c0c PaymentGateway implemented and tested. 2019-07-29 19:01:42 -04:00
Geoff Taylor 2bbe110013 php5.6 test compatibility fixed. 2019-07-25 18:04:59 -04:00
Geoff Taylor f3c23a27f3 docker script added for e2e testing support 2019-07-17 20:02:41 -04:00
Geoff Taylor 95d82ddf81 JWT Auth fields added to "Customer" type. "Customer" added to "checkout" mutation output. 2019-07-09 16:02:42 -04:00
Geoff Taylor 85355808a7 Tests updated, debugging needed. 2019-07-09 14:05:26 -04:00
Geoff Taylor 97af6e170f tests debugging and code cleanup. 2019-07-09 13:01:19 -04:00
Geoff Taylor ad82310c0a crud loader refactored 2019-07-09 03:55:55 -04:00
Geoff Taylor 85001f0512 "Checkout_Mutation" and "Checkout" class implemented. 2019-07-09 00:49:11 -04:00