Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix fragment when used with extended schema #323

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Commits on Apr 15, 2016

  1. fix fragment when used with extended schema

    This refactors some of `Validator` to fix an issue with validating a
    fragment of an extended schema against a json object. The problem is
    that while navigating through the schema, we are using the configured
    `:version` option as the validator for each partial schema. This is an
    issue because if the root of the schema declares a `$schema`, that
    information is lost in the traversal.
    
    The refactor does two things. Firstly, it does not write back into
    `@options[:version]` and it stops using it outside of the constructor
    entirely. The only place that should know about this is the initialized
    schema, and from that point on, the canonical validator should be the
    schema object's validator since it makes a decision about which to use
    in its constructor. Now we can reduce complexity by using that validator
    in the `:validate_schema` option branch.
    
    The other place that used `:version` is the `schema_from_fragment`
    method, which is where the bug exists. What we're doing here, instead of
    dealing with schemas *and* hashes during the iterator, is pulling the
    schema object out, digging through it using the fragments, and then
    wrapping the result in a schema using the `base_schema`'s validator.
    
    Tests have been included that demonstrate the problem.
    dpatti committed Apr 15, 2016
    Configuration menu
    Copy the full SHA
    4820499 View commit details
    Browse the repository at this point in the history