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