class Openapi3Parser::Validators::MutuallyExclusiveFields::MutuallyExclusiveFieldErrors
Attributes
input[R]
mutually_exclusive_fields[R]
Public Class Methods
new(mutually_exclusive_fields, input)
click to toggle source
# File lib/openapi3_parser/validators/mutually_exclusive_fields.rb, line 66 def initialize(mutually_exclusive_fields, input) @mutually_exclusive_fields = mutually_exclusive_fields @input = input end
Public Instance Methods
errors()
click to toggle source
# File lib/openapi3_parser/validators/mutually_exclusive_fields.rb, line 79 def errors @errors ||= begin default = { required: [], exclusive: [] } mutually_exclusive_fields .each_with_object(default) do |exclusive, errors| add_error(errors, exclusive) end end end
exclusive_errors()
click to toggle source
# File lib/openapi3_parser/validators/mutually_exclusive_fields.rb, line 75 def exclusive_errors errors[:exclusive] end
required_errors()
click to toggle source
# File lib/openapi3_parser/validators/mutually_exclusive_fields.rb, line 71 def required_errors errors[:required] end
Private Instance Methods
add_error(errors, mutually_exclusive)
click to toggle source
# File lib/openapi3_parser/validators/mutually_exclusive_fields.rb, line 93 def add_error(errors, mutually_exclusive) fields = mutually_exclusive.fields number_non_nil = count_non_nil_fields(fields) if number_non_nil.zero? && mutually_exclusive.required errors[:required] << required_error(fields) elsif number_non_nil > 1 errors[:exclusive] << exclusive_error(fields) end end
count_non_nil_fields(fields)
click to toggle source
# File lib/openapi3_parser/validators/mutually_exclusive_fields.rb, line 103 def count_non_nil_fields(fields) fields.count do |field| data = input[field] data.respond_to?(:nil_input?) ? !data.nil_input? : !data.nil? end end
exclusive_error(fields)
click to toggle source
# File lib/openapi3_parser/validators/mutually_exclusive_fields.rb, line 114 def exclusive_error(fields) "#{fields.sentence_join} are mutually exclusive fields" end
required_error(fields)
click to toggle source
# File lib/openapi3_parser/validators/mutually_exclusive_fields.rb, line 110 def required_error(fields) "One of #{fields.sentence_join} is required" end