keystonejs / keystone

The superpowered headless CMS for Node.js — built with GraphQL and React
https://keystonejs.com
MIT License
9.18k stars 1.15k forks source link

Adds `{list}.hooks.validate.[create|update|delete]` hooks #9056

Closed dcousens closed 7 months ago

dcousens commented 7 months ago

This pull request adds hooks.validate.create, hooks.validate.update and hooks.validate.delete for lists. Part of this work is to verify that we are calling these hooks consistently internally, and that the code is easily reviewed.

The existing code was very fragmented, with mutations/create-update.ts, mutations/delete.ts, mutations/validation.ts, mutations/hooks.ts and mutations/access-control.ts each referencing each other for individual parts of functionality.

This pull request merges all of that functionality into mutations/index.ts, leaving only 1 function in mutations/access-control.ts to be used by the mutations/nested-* functionality which I have still yet to review.

These changes do come with a significant increase in the number of tests for hooks, with 288 tests verifying nearly every combination of hooks I could of think of; with only mixed results needing to be tested from GraphQL.

codesandbox-ci[bot] commented 7 months ago

This pull request is automatically built and testable in CodeSandbox.

To see build info of the built libraries, click here or the icon next to each commit SHA.

Latest deployment of this branch, based on commit 8311f654eb1cdc7fe3fe96c8e6e8b2f842d82e61:

Sandbox Source
@keystone-6/sandbox Configuration