Sha256: 45bfcb5b655650b5a603064e5e66e71eb1c8e8d61cda6c58260b5db45ef79243
Contents?: true
Size: 1.68 KB
Versions: 1
Compression:
Stored size: 1.68 KB
Contents
module Mongoid module Matchers def have_index_for(index_key) HaveIndexFor.new(index_key) end class HaveIndexFor < Mongoid::Matchers::HaveIndexForBase def matches?(klass) @model = klass.is_a?(Class) ? klass : klass.class @errors = [] if model.index_options[index_key] if !index_options.nil? && !index_options.empty? index_options.each do |option, option_value| if denormalising_options(model.index_options[index_key])[option] != option_value @errors.push "index for #{index_key.inspect} with options of #{model.index_options[index_key].inspect}" end end end else @errors.push "no index for #{index_key}" end @errors.empty? end def failure_message_for_should "Expected #{model.inspect} to #{description}, got #{@errors.to_sentence}" end def failure_message_for_should_not "Expected #{model.inspect} to not #{description}, got #{model.inspect} to #{description}" end alias failure_message failure_message_for_should alias failure_message_when_negated failure_message_for_should_not def description desc = "have an index for #{index_key.inspect}" desc << " with options of #{index_options.inspect}" if index_options desc end private MAPPINGS = { dropDups: :drop_dups # Deprecated from MongoDB 3.0 }.freeze def denormalising_options(opts) options = {} opts.each_pair do |option, value| options[MAPPINGS[option] || option] = value end options end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
mongoid-rspec-4.2.0 | lib/matchers/indexes/v3/have_index_for.rb |