Class: MiniPaperclip::Shoulda::Matchers::ValidateAttachmentPresenceMatcher

Inherits:
Object
  • Object
show all
Defined in:
lib/mini_paperclip/shoulda/matchers/validate_attachment_presence_matcher.rb

Instance Method Summary collapse

Constructor Details

#initialize(attachment_name) ⇒ ValidateAttachmentPresenceMatcher

Returns a new instance of ValidateAttachmentPresenceMatcher.



17
18
19
# File 'lib/mini_paperclip/shoulda/matchers/validate_attachment_presence_matcher.rb', line 17

def initialize(attachment_name)
  @attachment_name = attachment_name.to_sym
end

Instance Method Details

#descriptionObject



46
47
48
# File 'lib/mini_paperclip/shoulda/matchers/validate_attachment_presence_matcher.rb', line 46

def description
  "require presence of attachment :#{@attachment_name}"
end

#failure_messageObject



37
38
39
# File 'lib/mini_paperclip/shoulda/matchers/validate_attachment_presence_matcher.rb', line 37

def failure_message
  "Attachment :#{@attachment_name} should be required"
end

#failure_message_when_negatedObject Also known as: negative_failure_message



41
42
43
# File 'lib/mini_paperclip/shoulda/matchers/validate_attachment_presence_matcher.rb', line 41

def failure_message_when_negated
  "Attachment :#{@attachment_name} should not be required"
end

#matches?(subject) ⇒ Boolean

Returns:

  • (Boolean)


21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/mini_paperclip/shoulda/matchers/validate_attachment_presence_matcher.rb', line 21

def matches?(subject)
  @subject = subject.class == Class ? subject.new : subject

  begin
    @subject.write_attribute("#{@attachment_name}_file_name", 'hello.png')
    @subject.write_attribute("#{@attachment_name}_updated_at", Time.now)
    @subject.valid?
    @subject.errors[@attachment_name].empty?
  end && begin
    @subject.write_attribute("#{@attachment_name}_file_name", nil)
    @subject.write_attribute("#{@attachment_name}_updated_at", Time.now)
    @subject.valid?
    @subject.errors[@attachment_name].present?
  end
end