[13.x] Allow JsonSchema fluent boolean flags to be unset#60239
Open
LucasCavalheri wants to merge 1 commit into
Open
[13.x] Allow JsonSchema fluent boolean flags to be unset#60239LucasCavalheri wants to merge 1 commit into
LucasCavalheri wants to merge 1 commit into
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
This PR fixes the fluent boolean flag API in
JsonSchematypes so thatpreviously enabled flags may also be disabled.
Currently, methods such as:
only apply changes when the given value is
true.This works for fresh instances:
because nothing is enabled yet.
However, it fails when composing schemas conditionally or attempting to
remove previously applied state:
Before this change, passing
falsewould not unset the existing flag.Changes
Updated the fluent flag setters to allow disabling previously enabled state.
In
src/Illuminate/JsonSchema/Types/Type.php:In
src/Illuminate/JsonSchema/Types/ArrayType.php:This keeps the generated schema output clean while allowing conditional
schema composition.
Tests
Added the following tests:
tests/JsonSchema/ArrayTypeTest.phptest_it_may_unset_unique_itemstests/JsonSchema/TypeTest.phptest_required_may_be_unsettest_nullable_may_be_unsetThese tests validate both:
Files Changed
src/Illuminate/JsonSchema/Types/Type.phpsrc/Illuminate/JsonSchema/Types/ArrayType.phptests/JsonSchema/ArrayTypeTest.phptests/JsonSchema/TypeTest.phpValidation
Result:
Linting was also run on the modified files: