mirror of
https://github.com/danbee/my-images
synced 2025-03-04 08:49:05 +00:00
46 lines
907 B
Ruby
46 lines
907 B
Ruby
require "rspec/expectations"
|
|
|
|
RSpec::Matchers.define :validate_attachment_of do |attr_name|
|
|
match do |record|
|
|
matcher.matches?(record, attr_name)
|
|
end
|
|
|
|
chain :on do |validation_context|
|
|
matcher.on(validation_context)
|
|
end
|
|
|
|
chain :with_message do |message|
|
|
matcher.with_message(message)
|
|
end
|
|
|
|
private
|
|
|
|
def matcher
|
|
@matcher ||= ValidateAttachmentOfMatcher.new
|
|
end
|
|
|
|
class ValidateAttachmentOfMatcher
|
|
def on(validation_context)
|
|
@validation_context = validation_context
|
|
end
|
|
|
|
def with_message(message)
|
|
@message = message
|
|
end
|
|
|
|
def matches?(record, attr_name)
|
|
record.send(attr_name).purge
|
|
record.valid?(validation_context)
|
|
record.errors[attr_name].include? message
|
|
end
|
|
|
|
private
|
|
|
|
attr_reader :validation_context
|
|
|
|
def message
|
|
@message || I18n.translate("activerecord.errors.messages.attached")
|
|
end
|
|
end
|
|
end
|