class Shoulda::ActiveRecord::Matchers::HaveDbIndexMatcher
:nodoc:
def correct_unique?
def correct_unique? return true if @unique.nil? if matched_index.unique == @unique true else @missing = "#{table_name} has an index named #{matched_index.name} " << "of unique #{matched_index.unique}, not #{@unique}." false end end
def description
def description "have a #{index_type} index on columns #{@columns.join(' and ')}" end
def expectation
def expectation expected = "#{model_class.name} to #{description}" end
def failure_message
def failure_message "Expected #{expectation} (#{@missing})" end
def index_exists?
def index_exists? ! matched_index.nil? end
def index_type
def index_type case @unique when nil '' when false 'non-unique' else 'unique' end end
def indexes
def indexes ::ActiveRecord::Base.connection.indexes(table_name) end
def initialize(macro, columns)
def initialize(macro, columns) @macro = macro @columns = normalize_columns_to_array(columns) end
def matched_index
def matched_index indexes.detect { |each| each.columns == @columns } end
def matches?(subject)
def matches?(subject) @subject = subject index_exists? && correct_unique? end
def model_class
def model_class @subject.class end
def negative_failure_message
def negative_failure_message "Did not expect #{expectation}" end
def normalize_columns_to_array(columns)
def normalize_columns_to_array(columns) if columns.class == Array columns.collect { |each| each.to_s } else [columns.to_s] end end
def table_name
def table_name model_class.table_name end
def unique(unique)
def unique(unique) @unique = unique self end