Sha256: 3aae74db4476da87fd7a1b1c7abe2ce5f2575a2b0e982eec94c7d2e3f0ff586a

Contents?: true

Size: 1.12 KB

Versions: 3

Compression:

Stored size: 1.12 KB

Contents

module Examples
  class CustomErrors
    include JSON::SchemaBuilder

    def required_error
      lambda do |entities, error|
        if error[:failed_attribute] == "Required"
          required = entities.map(&:required).inject(:+).uniq
          error[:message] = "#{error[:fragment]} requires properties #{required.map(&:to_s).inspect}"
        end
      end
    end

    def object_error
      lambda do |entities, error|
        error[:message] = "Custom object error"
      end
    end

    def example
      object error: required_error do
        object :user, required: true, error: object_error
        object :settings, error: required_error do
          string :name, required: true, error: "Custom name error"
        end
      end
    end

    def example2
      object do
        object :settings, error: required_error do
          string :other, required: true, error: "Other error"
        end
      end
    end

    def any_of
      object do
        entity :user do
          any_of [
            object { object(:settings) { string :name, error: "Nested" } },
            null
          ]
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
json-schema_builder-0.6.1 spec/support/examples/custom_errors.rb
json-schema_builder-0.6.0 spec/support/examples/custom_errors.rb
json-schema_builder-0.5.0 spec/support/examples/custom_errors.rb