feat: UnfilteredLists rule #358
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
This PR introduces a new query analysis rule,
UnfilteredLists, to thewpgraphql-debug-extensionsplugin. This rule helps developers identify GraphQL queries that request lists of items without explicitly providing pagination arguments such asfirst,last,after,before,offset, orlimit.Key enhancements in this rule include:
debugExtensionsoutput will include a clear message detailing which fields are affected and suggesting the pagination arguments to consider.Related Issue
#349
Dependant PRs
None
Type of Change
How Has This Been Tested?
This feature has been tested by executing various GraphQL queries against a local WordPress environment with WPGraphQL and
wpgraphql-debug-extensionsactive, observing thedebugExtensions.unfilteredListsoutput.Test Cases and Steps:
wpgraphql-debug-extensionsplugin is active.UnfilteredListsrule is registered. (This is handled inPlugin.phpwhereaddAnalyzerItem( new UnfilteredLists() )should be present).your-site.com/graphql).Test Queries:
Test Case 1: Unfiltered
postsconnection (Should Trigger Warning)debugExtensions.unfilteredLists:Test Case 2: Unfiltered
usersconnection (Should Trigger Warning)debugExtensions.unfilteredLists:Test Case 3: Paginated
postsconnection (Should NOT Trigger Warning)debugExtensions.unfilteredLists:Test Case 4: Query with multiple lists, one paginated, one unfiltered (Should Trigger for the unfiltered one)
debugExtensions.unfilteredLists:Test Case 5: Query with no list fields (Should NOT Trigger Warning)
debugExtensions.unfilteredLists:Checklist