module ActiveStorageValidations::Matchers
Public Class Methods
mock_metadata(attachment, width, height) { || ... }
click to toggle source
# File lib/active_storage_validations/matchers.rb, line 24 def self.mock_metadata(attachment, width, height) if Rails::VERSION::MAJOR >= 6 # Mock the Metadata class for rails 6 mock = OpenStruct.new(metadata: { width: width, height: height }) stub_method(ActiveStorageValidations::Metadata, :new, mock) do yield end else # Stub the metadata analysis for rails 5 stub_method(attachment, :analyze, true) do stub_method(attachment, :analyzed?, true) do stub_method(attachment, :metadata, { width: width, height: height }) do yield end end end end end
stub_method(object, method, result) { || ... }
click to toggle source
Helper to stub a method with either RSpec or Minitest (whatever is available)
# File lib/active_storage_validations/matchers.rb, line 11 def self.stub_method(object, method, result) if defined?(Minitest::Mock) object.stub(method, result) do yield end elsif defined?(RSpec::Mocks) RSpec::Mocks.allow_message(object, method) { result } yield else raise 'Need either Minitest::Mock or RSpec::Mocks to run this validator matcher' end end
Public Instance Methods
validate_attached_of(name)
click to toggle source
# File lib/active_storage_validations/matchers/attached_validator_matcher.rb, line 5 def validate_attached_of(name) AttachedValidatorMatcher.new(name) end
validate_content_type_of(name)
click to toggle source
# File lib/active_storage_validations/matchers/content_type_validator_matcher.rb, line 7 def validate_content_type_of(name) ContentTypeValidatorMatcher.new(name) end
validate_dimensions_of(name)
click to toggle source
# File lib/active_storage_validations/matchers/dimension_validator_matcher.rb, line 5 def validate_dimensions_of(name) DimensionValidatorMatcher.new(name) end
validate_size_of(name)
click to toggle source
# File lib/active_storage_validations/matchers/size_validator_matcher.rb, line 7 def validate_size_of(name) SizeValidatorMatcher.new(name) end