47 lines
1.3 KiB
Ruby
47 lines
1.3 KiB
Ruby
# encoding: UTF-8
|
|
# frozen_string_literal: true
|
|
|
|
RSpec::Matchers.define :be_d do |expected|
|
|
match do |actual|
|
|
if expected.is_a? BigDecimal
|
|
actual.to_d == expected
|
|
elsif expected.is_a? String
|
|
actual.to_d == expected.to_d
|
|
else
|
|
raise "not support type #{expected.class}"
|
|
end
|
|
end
|
|
|
|
failure_message do |actual|
|
|
"expected #{actual} would be of #{expected}"
|
|
end
|
|
end
|
|
|
|
RSpec::Matchers.define :include_api_error do |expected|
|
|
match do |actual|
|
|
raise 'actual doesnt respond to body' unless actual.respond_to?(:body)
|
|
raise 'expected is not a String' unless expected.is_a? String
|
|
|
|
errors = JSON.parse(actual.body)['errors']
|
|
!errors.nil? && expected.in?(errors)
|
|
end
|
|
|
|
# TODO: Better Error message. Same as in module RSpec::Matchers::BuiltIn::Include
|
|
failure_message do |actual|
|
|
"expected: #{JSON.parse(actual.body)['errors'].join(',')}\nto include: #{expected}\n"
|
|
end
|
|
end
|
|
|
|
RSpec::Matchers.define :include_ar_error do |attr, expected|
|
|
match do |actual|
|
|
raise 'actual is not subclass of ActiveRecord::Base' unless actual.is_a?(ActiveRecord::Base)
|
|
|
|
include(expected).matches?(actual.errors[attr])
|
|
end
|
|
|
|
# TODO: Better Error message. Same as in module RSpec::Matchers::BuiltIn::Include
|
|
failure_message do |actual|
|
|
"expected: #{actual.errors}\nto include: #{expected}\n"
|
|
end
|
|
end
|