Module Paperclip::Shoulda::Matchers
In: lib/paperclip/matchers.rb
lib/paperclip/matchers/have_attached_file_matcher.rb
lib/paperclip/matchers/validate_attachment_presence_matcher.rb
lib/paperclip/matchers/validate_attachment_size_matcher.rb
lib/paperclip/matchers/validate_attachment_content_type_matcher.rb

Provides RSpec-compatible & Test::Unit-compatible matchers for testing Paperclip attachments.

RSpec

In spec_helper.rb, you‘ll need to require the matchers:

  require "paperclip/matchers"

And include the module:

  Spec::Runner.configure do |config|
    config.include Paperclip::Shoulda::Matchers
  end

Example:

  describe User do
    it { should have_attached_file(:avatar) }
    it { should validate_attachment_presence(:avatar) }
    it { should validate_attachment_content_type(:avatar).
                  allowing('image/png', 'image/gif').
                  rejecting('text/plain', 'text/xml') }
    it { should validate_attachment_size(:avatar).
                  less_than(2.megabytes) }
  end

TestUnit

In test_helper.rb, you‘ll need to require the matchers as well:

  require "paperclip/matchers"

And extend the module:

  class ActiveSupport::TestCase
    extend Paperclip::Shoulda::Matchers

    #...other initializers...#
  end

Example:

  require 'test_helper'

  class UserTest < ActiveSupport::TestCase
    should have_attached_file(:avatar)
    should validate_attachment_presence(:avatar)
    should validate_attachment_content_type(:avatar).
                 allowing('image/png', 'image/gif').
                 rejecting('text/plain', 'text/xml')
    should validate_attachment_size(:avatar).
                 less_than(2.megabytes)
  end

Methods

Classes and Modules

Class Paperclip::Shoulda::Matchers::HaveAttachedFileMatcher
Class Paperclip::Shoulda::Matchers::ValidateAttachmentContentTypeMatcher
Class Paperclip::Shoulda::Matchers::ValidateAttachmentPresenceMatcher
Class Paperclip::Shoulda::Matchers::ValidateAttachmentSizeMatcher

Public Instance methods

Ensures that the given instance or class has an attachment with the given name.

Example:

  describe User do
    it { should have_attached_file(:avatar) }
  end

Ensures that the given instance or class validates the content type of the given attachment as specified.

Example:

  describe User do
    it { should validate_attachment_content_type(:icon).
                  allowing('image/png', 'image/gif').
                  rejecting('text/plain', 'text/xml') }
  end

Ensures that the given instance or class validates the presence of the given attachment.

describe User do

  it { should validate_attachment_presence(:avatar) }

end

Ensures that the given instance or class validates the size of the given attachment as specified.

Examples:

  it { should validate_attachment_size(:avatar).
                less_than(2.megabytes) }
  it { should validate_attachment_size(:icon).
                greater_than(1024) }
  it { should validate_attachment_size(:icon).
                in(0..100) }

[Validate]