lib/wcc/contentful/exceptions.rb in wcc-contentful-0.3.0.pre.rc3 vs lib/wcc/contentful/exceptions.rb in wcc-contentful-0.3.0
- old
+ new
@@ -1,7 +1,40 @@
# frozen_string_literal: true
module WCC::Contentful
+ # Raised by {WCC::Contentful.validate_models!} if a content type in the space
+ # does not match the validation defined on the associated model.
+ class ValidationError < StandardError
+ Message =
+ Struct.new(:path, :error) do
+ def to_s
+ "#{path}: #{error}"
+ end
+ end
+
+ attr_reader :errors
+
+ def initialize(errors)
+ @errors = ValidationError.join_msg_keys(errors)
+ super("Content Type Schema from Contentful failed validation!\n #{@errors.join("\n ")}")
+ end
+
+ # Turns the error messages hash into an array of message structs like:
+ # menu.fields.name.type: must be equal to String
+ def self.join_msg_keys(hash)
+ ret =
+ hash.map do |k, v|
+ if v.is_a?(Hash)
+ msgs = join_msg_keys(v)
+ msgs.map { |msg| Message.new(k.to_s + '.' + msg.path, msg.error) }
+ else
+ v.map { |msg| Message.new(k.to_s, msg) }
+ end
+ end
+ ret.flatten(1)
+ end
+ end
+
class SyncError < StandardError
end
# Raised when a constant under {WCC::Contentful::Model} does not match to a
# content type in the configured Contentful space