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