Sha256: d6551464ebaecac219f82d03e35ca8ff72adae8bde914c5f6228f3e6f4d89ba9

Contents?: true

Size: 1 KB

Versions: 18

Compression:

Stored size: 1 KB

Contents

RSpec::Matchers.define :a_postmark_json do |string|
  def postmark_key?(key)
    key == ::Postmark::Inflector.to_postmark(key)
  end

  def postmark_object?(obj)
    case obj
    when Hash
      return false unless obj.keys.all? { |k| postmark_key?(k) }
      return false unless obj.values.all? { |v| postmark_object?(v) }
    when Array
      return false unless obj.all? { |v| postmark_object?(v) }
    end

    true
  end

  def postmark_json?(str)
    return false unless str.is_a?(String)

    json = Postmark::Json.decode(str)
    postmark_object?(json)
  rescue
    false
  end

  match do |actual|
    postmark_json?(actual)
  end
end

RSpec::Matchers.define :json_representation_of do |x|
  match { |actual| Postmark::Json.decode(actual) == x }
end

RSpec::Matchers.define :match_json do |x|
  match { |actual| Postmark::Json.encode(x) == actual }
end

RSpec::Matchers.define :be_serialized_to do |json|
  match do |mail_message|
    Postmark.convert_message_to_options_hash(mail_message) == JSON.parse(json)
  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
postmark-1.25.1 spec/support/custom_matchers.rb
postmark-1.25.0 spec/support/custom_matchers.rb
postmark-1.24.1 spec/support/custom_matchers.rb
postmark-1.24.0 spec/support/custom_matchers.rb
postmark-1.23.0 spec/support/custom_matchers.rb
postmark-1.22.3 spec/support/custom_matchers.rb
postmark-1.22.2 spec/support/custom_matchers.rb
postmark-1.22.1 spec/support/custom_matchers.rb
postmark-1.22.0 spec/support/custom_matchers.rb
postmark-1.21.8 spec/support/custom_matchers.rb
postmark-1.21.7 spec/support/custom_matchers.rb
postmark-1.21.6 spec/support/custom_matchers.rb
postmark-1.21.5 spec/support/custom_matchers.rb
postmark-1.21.4 spec/support/custom_matchers.rb
postmark-1.21.3 spec/support/custom_matchers.rb
postmark-1.21.2 spec/support/custom_matchers.rb
postmark-1.21.1 spec/support/custom_matchers.rb
postmark-1.21.0 spec/support/custom_matchers.rb