spec/support/crud/read.rb in mongo-2.3.0 vs spec/support/crud/read.rb in mongo-2.3.1

- old
+ new

@@ -29,10 +29,20 @@ :skip => 'skip', :batch_size => 'batchSize', :limit => 'limit' } + # Map of read preference mode names to their equivalent Ruby-formatted symbols. + # + # @since 2.4.0 + READ_PREFERENCE_MAP = { 'primary' => :primary, + 'secondary' => :secondary, + 'primaryPreferred' => :primary_preferred, + 'secondaryPreferred' => :secondary_preferred, + 'nearest' => :nearest + } + # The operation name. # # @return [ String ] name The operation name. # # @since 2.0.0 @@ -107,11 +117,12 @@ def distinct(collection) collection.distinct(field_name, filter, options) end def find(collection) - collection.find(filter, options.merge(modifiers: BSON::Document.new(modifiers) || {})).to_a + opts = modifiers ? options.merge(modifiers: BSON::Document.new(modifiers)) : options + (read_preference ? collection.with(read: read_preference) : collection).find(filter, opts).to_a end def options ARGUMENT_MAP.reduce({}) do |opts, (key, value)| arguments[value] ? opts.merge!(key => arguments[value]) : opts @@ -138,9 +149,15 @@ arguments['fieldName'] end def arguments @spec['arguments'] + end + + def read_preference + if @spec['read_preference'] && @spec['read_preference']['mode'] + { mode: READ_PREFERENCE_MAP[@spec['read_preference']['mode']] } + end end end end end end