lib/floe/validation_mixin.rb in floe-0.13.1 vs lib/floe/validation_mixin.rb in floe-0.14.0

- old
+ new

@@ -16,10 +16,14 @@ def invalid_field_error!(field_name, field_value = nil, comment = nil) self.class.invalid_field_error!(name, field_name, field_value, comment) end + def runtime_field_error!(field_name, field_value, comment, floe_error: "States.Runtime") + raise Floe::ExecutionError.new(self.class.field_error_text(name, field_name, field_value, comment), floe_error) + end + def workflow_state?(field_value, workflow) workflow.payload["States"] ? workflow.payload["States"].include?(field_value) : true end def wrap_parser_error(field_name, field_value) @@ -37,13 +41,17 @@ def missing_field_error!(name, field_name) parser_error!(name, "does not have required field \"#{field_name}\"") end def invalid_field_error!(name, field_name, field_value, comment) + raise Floe::InvalidWorkflowError, field_error_text(name, field_name, field_value, comment) + end + + def field_error_text(name, field_name, field_value, comment = nil) # instead of displaying a large hash or array, just displaying the word Hash or Array field_value = field_value.class if field_value.kind_of?(Hash) || field_value.kind_of?(Array) - parser_error!(name, "field \"#{field_name}\"#{" value \"#{field_value}\"" unless field_value.nil?} #{comment}") + "#{Array(name).join(".")} field \"#{field_name}\"#{" value \"#{field_value}\"" unless field_value.nil?} #{comment}" end end end end