class MiniTest::Matchers::ActiveModel::ValidateUniquenessMatcher

Public Class Methods

new(attr) click to toggle source
Calls superclass method
# File lib/matchers/validate_uniqueness_matcher.rb, line 22
def initialize attr
  @scope = nil
  @case_insensitive = false

  super attr, :uniqueness
end

Public Instance Methods

case_insensitive() click to toggle source
# File lib/matchers/validate_uniqueness_matcher.rb, line 34
def case_insensitive
  @case_insensitive = true
  self
end
description() click to toggle source
Calls superclass method
# File lib/matchers/validate_uniqueness_matcher.rb, line 48
def description
  desc = []
  desc  << " scoped to #{to_sentence(@scope)}" if @scope
  desc << ' allowing case insensitive values'  if @case_insensitive
  super << desc.to_sentence
end
matches?(subject) click to toggle source
Calls superclass method
# File lib/matchers/validate_uniqueness_matcher.rb, line 39
def matches? subject
  return false unless @result = super(subject)

  check_scope if @scope
  check_case_sensivity if @case_insensitive

  @result
end
scoped_to(*scope) click to toggle source
# File lib/matchers/validate_uniqueness_matcher.rb, line 29
def scoped_to *scope
  @scope = [scope].flatten.map(&:to_s)
  self
end

Private Instance Methods

check_case_sensivity() click to toggle source
# File lib/matchers/validate_uniqueness_matcher.rb, line 69
def check_case_sensivity
  if @validator.options[:case_sensitive] == false
    @positive_message << ' with case insensitive values'
  else
    @negative_message << ' without case insensitive values'
    @result = false
  end
end
check_scope() click to toggle source
# File lib/matchers/validate_uniqueness_matcher.rb, line 57
def check_scope
  actual_scope = [@validator.options[:scope]].flatten.map(&:to_s)
  message = " scoped to #{to_sentence(actual_scope)}"

  if actual_scope == @scope
    @positive_message << message
  else
    @negative_message << message
    @result = false
  end
end