Sha256: 75296f032704b5a5ac4e5cb9c2045e9395656fcc9c370d83a7a470978afb40cb
Contents?: true
Size: 981 Bytes
Versions: 6
Compression:
Stored size: 981 Bytes
Contents
require 'action_logic/errors' require 'action_logic/action_validation/base_validation' module ActionLogic module ActionValidation class TypeValidation < BaseValidation def self.validate!(validation_rules, context) return unless validation_rules.values.find { |expected_validation| expected_validation[:type] } type_errors = validation_rules.reduce([]) do |collection, (expected_attribute, expected_validation)| next unless expected_validation[:type] if context.to_h[expected_attribute].class != expected_validation[:type] collection << "Attribute: #{expected_attribute} with value: #{context.to_h[expected_attribute]} was expected to be of type #{expected_validation[:type]} but is #{context.to_h[expected_attribute].class}" end collection end raise ActionLogic::AttributeTypeError.new(error_message_format(type_errors.join(", "))) if type_errors.any? end end end end
Version data entries
6 entries across 6 versions & 1 rubygems