module AssertMoar::Assertions

Public Instance Methods

assert_memoizes_method_result(object, method) click to toggle source
# File lib/assert_moar/assertions.rb, line 60
def assert_memoizes_method_result(object, method)
  result = object.send(method)
  assert_same object.send(method), result
end
assert_valid(object) click to toggle source
# File lib/assert_moar/assertions.rb, line 52
def assert_valid(object)
  assert object.valid?, "Expected object to be valid"
end
assert_validates_absence_of(object, property) click to toggle source
# File lib/assert_moar/assertions.rb, line 22
def assert_validates_absence_of(object, property)
  assert has_validator?(object, property, ::ActiveModel::Validations::AbsenceValidator),
    "#{object} does not validate the absence of #{property}"
end
assert_validates_acceptance_of(object, property) click to toggle source
# File lib/assert_moar/assertions.rb, line 32
def assert_validates_acceptance_of(object, property)
  assert has_validator?(object, property, ::ActiveModel::Validations::AcceptanceValidator),
    "#{object} does not validate the acceptance of #{property}"
end
assert_validates_presence_of(object, property) click to toggle source
# File lib/assert_moar/assertions.rb, line 2
def assert_validates_presence_of(object, property)
  assert has_validator?(object, property, ::ActiveModel::Validations::PresenceValidator),
    "#{object} does not validate the presence of #{property}"
end
assert_validates_uniqueness_of(object, property) click to toggle source
# File lib/assert_moar/assertions.rb, line 12
def assert_validates_uniqueness_of(object, property)
  assert has_validator?(object, property, ::ActiveRecord::Validations::UniquenessValidator),
    "#{object} does not validate the presence of #{property}"
end
assert_validates_with_callback(object, callback) click to toggle source
# File lib/assert_moar/assertions.rb, line 42
def assert_validates_with_callback(object, callback)
  assert has_callback_validator?(object, callback),
    "#{object} does not validate with #{callback}"
end
refute_memoizes_method_result(object, method) click to toggle source
# File lib/assert_moar/assertions.rb, line 65
def refute_memoizes_method_result(object, method)
  result = object.send(method)
  refute_same object.send(method), result
end
refute_valid(object) click to toggle source
# File lib/assert_moar/assertions.rb, line 56
def refute_valid object
  refute object.valid?, "Expected object to not be valid"
end
refute_validates_absence_of(object, property) click to toggle source
# File lib/assert_moar/assertions.rb, line 27
def refute_validates_absence_of(object, property)
  refute has_validator?(object, property, ::ActiveModel::Validations::AbsenceValidator),
    "#{object} validates absence of #{property}"
end
refute_validates_acceptance_of(object, property) click to toggle source
# File lib/assert_moar/assertions.rb, line 37
def refute_validates_acceptance_of(object, property)
  refute has_validator?(object, property, ::ActiveModel::Validations::AcceptanceValidator),
    "#{object} validates the acceptance of #{property}"
end
refute_validates_presence_of(object, property) click to toggle source
# File lib/assert_moar/assertions.rb, line 7
def refute_validates_presence_of(object, property)
  refute has_validator?(object, property, ::ActiveModel::Validations::PresenceValidator),
    "#{object} validates presence of #{property}"
end
refute_validates_uniqueness_of(object, property) click to toggle source
# File lib/assert_moar/assertions.rb, line 17
def refute_validates_uniqueness_of(object, property)
  refute has_validator?(object, property, ::ActiveRecord::Validations::UniquenessValidator),
    "#{object} validates presence of #{property}"
end
refute_validates_with_callback(object, callback) click to toggle source
# File lib/assert_moar/assertions.rb, line 47
def refute_validates_with_callback(object, callback)
  refute has_callback_validator?(object, callback),
    "#{object} does not validate with #{callback}"
end

Private Instance Methods

has_callback_validator?(object_or_class, callback) click to toggle source
# File lib/assert_moar/assertions.rb, line 79
def has_callback_validator?(object_or_class, callback)
  klass = object_or_class.class

  klass._validate_callbacks.any? { |v| v.filter == callback }
end
has_validator?(object_or_class, property, validator_class) click to toggle source
# File lib/assert_moar/assertions.rb, line 71
def has_validator?(object_or_class, property, validator_class)
  klass = object_or_class.class
  property = property.to_sym
  validators = Array(klass._validators[property])

  validators.any? { |v| v.is_a?(validator_class) }
end