mongoid 3.1.6 → 4.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (571) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +479 -8
  3. data/README.md +10 -7
  4. data/lib/config/locales/en.yml +34 -20
  5. data/lib/mongoid.rb +10 -76
  6. data/lib/mongoid/atomic.rb +3 -14
  7. data/lib/mongoid/atomic/paths/embedded.rb +0 -30
  8. data/lib/mongoid/atomic/paths/embedded/many.rb +1 -1
  9. data/lib/mongoid/atomic/paths/embedded/one.rb +1 -1
  10. data/lib/mongoid/atomic/paths/root.rb +0 -13
  11. data/lib/mongoid/attributes.rb +65 -101
  12. data/lib/mongoid/attributes/dynamic.rb +154 -0
  13. data/lib/mongoid/attributes/nested.rb +82 -0
  14. data/lib/mongoid/attributes/processing.rb +13 -66
  15. data/lib/mongoid/{dirty.rb → changeable.rb} +32 -2
  16. data/lib/mongoid/composable.rb +105 -0
  17. data/lib/mongoid/config.rb +3 -9
  18. data/lib/mongoid/config/options.rb +1 -1
  19. data/lib/mongoid/contextual.rb +2 -0
  20. data/lib/mongoid/contextual/aggregable/memory.rb +2 -2
  21. data/lib/mongoid/contextual/aggregable/mongo.rb +7 -9
  22. data/lib/mongoid/contextual/atomic.rb +53 -53
  23. data/lib/mongoid/contextual/geo_near.rb +1 -1
  24. data/lib/mongoid/contextual/map_reduce.rb +4 -2
  25. data/lib/mongoid/contextual/memory.rb +23 -11
  26. data/lib/mongoid/contextual/mongo.rb +75 -57
  27. data/lib/mongoid/contextual/none.rb +90 -0
  28. data/lib/mongoid/contextual/text_search.rb +178 -0
  29. data/lib/mongoid/copyable.rb +2 -3
  30. data/lib/mongoid/criteria.rb +39 -34
  31. data/lib/mongoid/criteria/#findable.rb# +141 -0
  32. data/lib/mongoid/{criterion → criteria}/findable.rb +7 -47
  33. data/lib/mongoid/{criterion/inspection.rb → criteria/inspectable.rb} +2 -2
  34. data/lib/mongoid/{criterion → criteria}/marshalable.rb +3 -1
  35. data/lib/mongoid/{criterion → criteria}/modifiable.rb +28 -8
  36. data/lib/mongoid/criteria/permission.rb +70 -0
  37. data/lib/mongoid/{criterion/scoping.rb → criteria/scopable.rb} +2 -2
  38. data/lib/mongoid/document.rb +39 -24
  39. data/lib/mongoid/errors.rb +4 -1
  40. data/lib/mongoid/errors/document_not_destroyed.rb +25 -0
  41. data/lib/mongoid/errors/document_not_found.rb +2 -1
  42. data/lib/mongoid/errors/invalid_storage_options.rb +1 -1
  43. data/lib/mongoid/errors/invalid_storage_parent.rb +26 -0
  44. data/lib/mongoid/errors/invalid_value.rb +16 -0
  45. data/lib/mongoid/errors/mongoid_error.rb +1 -1
  46. data/lib/mongoid/errors/readonly_document.rb +24 -0
  47. data/lib/mongoid/extensions.rb +15 -7
  48. data/lib/mongoid/extensions/array.rb +3 -3
  49. data/lib/mongoid/extensions/big_decimal.rb +1 -1
  50. data/lib/mongoid/extensions/boolean.rb +15 -17
  51. data/lib/mongoid/extensions/date.rb +1 -1
  52. data/lib/mongoid/extensions/date_time.rb +3 -3
  53. data/lib/mongoid/extensions/float.rb +2 -1
  54. data/lib/mongoid/extensions/hash.rb +3 -3
  55. data/lib/mongoid/extensions/integer.rb +1 -1
  56. data/lib/mongoid/extensions/object.rb +7 -7
  57. data/lib/mongoid/extensions/object_id.rb +5 -5
  58. data/lib/mongoid/extensions/range.rb +9 -3
  59. data/lib/mongoid/extensions/regexp.rb +1 -1
  60. data/lib/mongoid/extensions/set.rb +1 -1
  61. data/lib/mongoid/extensions/string.rb +6 -18
  62. data/lib/mongoid/extensions/symbol.rb +1 -1
  63. data/lib/mongoid/extensions/time.rb +3 -3
  64. data/lib/mongoid/extensions/time_with_zone.rb +1 -1
  65. data/lib/mongoid/factory.rb +8 -6
  66. data/lib/mongoid/fields.rb +41 -8
  67. data/lib/mongoid/fields/foreign_key.rb +3 -3
  68. data/lib/mongoid/fields/localized.rb +1 -1
  69. data/lib/mongoid/fields/standard.rb +5 -17
  70. data/lib/mongoid/fields/validators/macro.rb +15 -5
  71. data/lib/mongoid/{finders.rb → findable.rb} +35 -7
  72. data/lib/mongoid/{indexes.rb → indexable.rb} +50 -55
  73. data/lib/mongoid/indexable/specification.rb +104 -0
  74. data/lib/mongoid/{indexes → indexable}/validators/options.rb +2 -1
  75. data/lib/mongoid/{inspection.rb → inspectable.rb} +15 -11
  76. data/lib/mongoid/{callbacks.rb → interceptable.rb} +30 -62
  77. data/lib/mongoid/log_subscriber.rb +55 -0
  78. data/lib/mongoid/matchable.rb +152 -0
  79. data/lib/mongoid/{matchers → matchable}/all.rb +1 -1
  80. data/lib/mongoid/{matchers → matchable}/and.rb +2 -2
  81. data/lib/mongoid/{matchers → matchable}/default.rb +1 -1
  82. data/lib/mongoid/{matchers → matchable}/exists.rb +1 -1
  83. data/lib/mongoid/{matchers → matchable}/gt.rb +1 -1
  84. data/lib/mongoid/{matchers → matchable}/gte.rb +1 -1
  85. data/lib/mongoid/{matchers → matchable}/in.rb +2 -2
  86. data/lib/mongoid/{matchers → matchable}/lt.rb +1 -1
  87. data/lib/mongoid/{matchers → matchable}/lte.rb +1 -1
  88. data/lib/mongoid/{matchers → matchable}/ne.rb +2 -2
  89. data/lib/mongoid/{matchers → matchable}/nin.rb +3 -2
  90. data/lib/mongoid/{matchers → matchable}/or.rb +2 -2
  91. data/lib/mongoid/{matchers → matchable}/size.rb +1 -1
  92. data/lib/mongoid/persistable.rb +216 -0
  93. data/lib/mongoid/persistable/creatable.rb +189 -0
  94. data/lib/mongoid/persistable/deletable.rb +149 -0
  95. data/lib/mongoid/persistable/destroyable.rb +60 -0
  96. data/lib/mongoid/persistable/incrementable.rb +36 -0
  97. data/lib/mongoid/persistable/logical.rb +38 -0
  98. data/lib/mongoid/persistable/poppable.rb +39 -0
  99. data/lib/mongoid/persistable/pullable.rb +55 -0
  100. data/lib/mongoid/persistable/pushable.rb +62 -0
  101. data/lib/mongoid/persistable/renamable.rb +35 -0
  102. data/lib/mongoid/persistable/savable.rb +52 -0
  103. data/lib/mongoid/persistable/settable.rb +33 -0
  104. data/lib/mongoid/persistable/unsettable.rb +36 -0
  105. data/lib/mongoid/persistable/updatable.rb +153 -0
  106. data/lib/mongoid/persistable/upsertable.rb +55 -0
  107. data/lib/mongoid/positional.rb +71 -0
  108. data/lib/mongoid/query_cache.rb +255 -0
  109. data/lib/mongoid/railtie.rb +34 -60
  110. data/lib/mongoid/railties/database.rake +9 -25
  111. data/lib/mongoid/relations.rb +11 -25
  112. data/lib/mongoid/relations/accessors.rb +15 -51
  113. data/lib/mongoid/relations/auto_save.rb +15 -36
  114. data/lib/mongoid/relations/binding.rb +2 -25
  115. data/lib/mongoid/relations/bindings/embedded/in.rb +1 -1
  116. data/lib/mongoid/relations/bindings/embedded/many.rb +1 -3
  117. data/lib/mongoid/relations/bindings/referenced/in.rb +3 -8
  118. data/lib/mongoid/relations/bindings/referenced/many_to_many.rb +4 -2
  119. data/lib/mongoid/relations/builder.rb +1 -1
  120. data/lib/mongoid/relations/builders.rb +2 -2
  121. data/lib/mongoid/relations/builders/embedded/one.rb +1 -1
  122. data/lib/mongoid/relations/builders/nested_attributes/many.rb +10 -13
  123. data/lib/mongoid/relations/builders/nested_attributes/one.rb +5 -6
  124. data/lib/mongoid/relations/builders/referenced/in.rb +1 -1
  125. data/lib/mongoid/relations/builders/referenced/many.rb +1 -2
  126. data/lib/mongoid/relations/builders/referenced/many_to_many.rb +1 -2
  127. data/lib/mongoid/relations/builders/referenced/one.rb +1 -1
  128. data/lib/mongoid/relations/cascading.rb +3 -5
  129. data/lib/mongoid/relations/constraint.rb +1 -1
  130. data/lib/mongoid/relations/conversions.rb +1 -1
  131. data/lib/mongoid/relations/counter_cache.rb +39 -15
  132. data/lib/mongoid/relations/eager.rb +46 -0
  133. data/lib/mongoid/relations/eager/base.rb +149 -0
  134. data/lib/mongoid/relations/eager/belongs_to.rb +31 -0
  135. data/lib/mongoid/relations/eager/has_and_belongs_to_many.rb +47 -0
  136. data/lib/mongoid/relations/eager/has_many.rb +38 -0
  137. data/lib/mongoid/relations/eager/has_one.rb +30 -0
  138. data/lib/mongoid/relations/embedded/batchable.rb +4 -5
  139. data/lib/mongoid/relations/embedded/in.rb +4 -4
  140. data/lib/mongoid/relations/embedded/many.rb +14 -32
  141. data/lib/mongoid/relations/embedded/one.rb +1 -1
  142. data/lib/mongoid/relations/macros.rb +3 -4
  143. data/lib/mongoid/relations/many.rb +51 -31
  144. data/lib/mongoid/relations/marshalable.rb +3 -3
  145. data/lib/mongoid/relations/metadata.rb +14 -79
  146. data/lib/mongoid/relations/nested_builder.rb +2 -2
  147. data/lib/mongoid/relations/one.rb +1 -1
  148. data/lib/mongoid/relations/options.rb +1 -0
  149. data/lib/mongoid/relations/polymorphic.rb +0 -1
  150. data/lib/mongoid/relations/proxy.rb +21 -41
  151. data/lib/mongoid/relations/referenced/in.rb +4 -20
  152. data/lib/mongoid/relations/referenced/many.rb +22 -35
  153. data/lib/mongoid/relations/referenced/many_to_many.rb +19 -42
  154. data/lib/mongoid/relations/referenced/one.rb +6 -25
  155. data/lib/mongoid/relations/synchronization.rb +4 -4
  156. data/lib/mongoid/relations/targets/enumerable.rb +10 -10
  157. data/lib/mongoid/relations/touchable.rb +34 -1
  158. data/lib/mongoid/{reloading.rb → reloadable.rb} +7 -5
  159. data/lib/mongoid/{scoping.rb → scopable.rb} +36 -36
  160. data/lib/mongoid/selectable.rb +59 -0
  161. data/lib/mongoid/{serialization.rb → serializable.rb} +11 -2
  162. data/lib/mongoid/sessions.rb +37 -345
  163. data/lib/mongoid/sessions/factory.rb +2 -0
  164. data/lib/mongoid/sessions/options.rb +185 -0
  165. data/lib/mongoid/sessions/storage_options.rb +140 -0
  166. data/lib/mongoid/sessions/thread_options.rb +19 -0
  167. data/lib/mongoid/sessions/validators/storage.rb +16 -3
  168. data/lib/mongoid/{sharding.rb → shardable.rb} +5 -1
  169. data/lib/mongoid/{state.rb → stateful.rb} +13 -1
  170. data/lib/mongoid/support/query_counter.rb +23 -0
  171. data/lib/mongoid/tasks/database.rake +31 -0
  172. data/lib/mongoid/tasks/database.rb +107 -0
  173. data/lib/mongoid/threaded.rb +26 -172
  174. data/lib/mongoid/threaded/lifecycle.rb +0 -28
  175. data/lib/mongoid/timestamps/updated/short.rb +2 -2
  176. data/lib/mongoid/{hierarchy.rb → traversable.rb} +15 -7
  177. data/lib/mongoid/{validations.rb → validatable.rb} +23 -10
  178. data/lib/mongoid/{validations → validatable}/associated.rb +4 -2
  179. data/lib/mongoid/{validations → validatable}/format.rb +1 -1
  180. data/lib/mongoid/{validations → validatable}/length.rb +1 -1
  181. data/lib/mongoid/{validations → validatable}/localizable.rb +1 -1
  182. data/lib/mongoid/{validations → validatable}/macros.rb +4 -3
  183. data/lib/mongoid/{validations → validatable}/presence.rb +1 -1
  184. data/lib/mongoid/{validations → validatable}/queryable.rb +1 -2
  185. data/lib/mongoid/{validations → validatable}/uniqueness.rb +25 -21
  186. data/lib/mongoid/version.rb +1 -1
  187. data/lib/rails/generators/mongoid/config/templates/mongoid.yml +46 -25
  188. data/lib/rails/generators/mongoid/model/model_generator.rb +0 -1
  189. data/lib/rails/generators/mongoid/model/templates/model.rb.tt +0 -3
  190. data/lib/rails/generators/mongoid_generator.rb +3 -40
  191. data/lib/rails/mongoid.rb +0 -122
  192. data/lib/support/ruby_version.rb +1 -1
  193. data/spec/app/models/account.rb +2 -6
  194. data/spec/app/models/acolyte.rb +2 -1
  195. data/spec/app/models/actor.rb +0 -1
  196. data/spec/app/models/address.rb +8 -3
  197. data/spec/app/models/animal.rb +1 -1
  198. data/spec/app/models/appointment.rb +3 -3
  199. data/spec/app/models/article.rb +1 -4
  200. data/spec/app/models/audio.rb +5 -0
  201. data/spec/app/models/author.rb +0 -2
  202. data/spec/app/models/band.rb +3 -2
  203. data/spec/app/models/bar.rb +1 -0
  204. data/spec/app/models/book.rb +1 -0
  205. data/spec/app/models/building.rb +0 -2
  206. data/spec/app/models/building_address.rb +0 -2
  207. data/spec/app/models/bus.rb +1 -1
  208. data/spec/app/models/canvas.rb +1 -1
  209. data/spec/app/models/contextable_item.rb +5 -0
  210. data/spec/app/models/contractor.rb +0 -2
  211. data/spec/app/models/country_code.rb +1 -1
  212. data/spec/app/models/definition.rb +2 -2
  213. data/spec/app/models/dog.rb +1 -1
  214. data/spec/app/models/draft.rb +9 -0
  215. data/spec/app/models/dragon.rb +4 -0
  216. data/spec/app/models/drug.rb +1 -3
  217. data/spec/app/models/dungeon.rb +4 -0
  218. data/spec/app/models/edit.rb +5 -0
  219. data/spec/app/models/even.rb +7 -0
  220. data/spec/app/models/event.rb +1 -1
  221. data/spec/app/models/filesystem.rb +1 -0
  222. data/spec/app/models/fish.rb +0 -1
  223. data/spec/app/models/fruits.rb +6 -0
  224. data/spec/app/models/game.rb +0 -2
  225. data/spec/app/models/house.rb +1 -3
  226. data/spec/app/models/id_key.rb +6 -0
  227. data/spec/app/models/item.rb +1 -5
  228. data/spec/app/models/jar.rb +1 -1
  229. data/spec/app/models/label.rb +4 -4
  230. data/spec/app/models/line_item.rb +1 -1
  231. data/spec/app/models/login.rb +1 -1
  232. data/spec/app/models/message.rb +8 -0
  233. data/spec/app/models/movie.rb +1 -0
  234. data/spec/app/models/name.rb +3 -3
  235. data/spec/app/models/note.rb +3 -1
  236. data/spec/app/models/odd.rb +7 -0
  237. data/spec/app/models/oscar.rb +1 -1
  238. data/spec/app/models/parent_doc.rb +1 -1
  239. data/spec/app/models/person.rb +16 -10
  240. data/spec/app/models/phone.rb +1 -3
  241. data/spec/app/models/player.rb +3 -3
  242. data/spec/app/models/post.rb +5 -3
  243. data/spec/app/models/preference.rb +1 -1
  244. data/spec/app/models/quiz.rb +0 -3
  245. data/spec/app/models/record.rb +10 -5
  246. data/spec/app/models/registry.rb +1 -1
  247. data/spec/app/models/server.rb +1 -1
  248. data/spec/app/models/service.rb +3 -3
  249. data/spec/app/models/sound.rb +5 -0
  250. data/spec/app/models/symptom.rb +1 -1
  251. data/spec/app/models/template.rb +1 -1
  252. data/spec/app/models/title.rb +0 -1
  253. data/spec/app/models/track.rb +5 -5
  254. data/spec/app/models/tree.rb +3 -3
  255. data/spec/app/models/video.rb +1 -5
  256. data/spec/app/models/wiki_page.rb +2 -5
  257. data/spec/app/models/word.rb +3 -0
  258. data/spec/app/models/word_origin.rb +1 -1
  259. data/spec/config/mongoid.yml +7 -8
  260. data/spec/helpers.rb +18 -0
  261. data/spec/mongoid/#atomic_spec.rb# +365 -0
  262. data/spec/mongoid/atomic/modifiers_spec.rb +22 -22
  263. data/spec/mongoid/atomic/paths/embedded/many_spec.rb +8 -49
  264. data/spec/mongoid/atomic/paths/embedded/one_spec.rb +7 -49
  265. data/spec/mongoid/atomic/paths/root_spec.rb +3 -61
  266. data/spec/mongoid/atomic/paths_spec.rb +19 -19
  267. data/spec/mongoid/atomic_spec.rb +19 -19
  268. data/spec/mongoid/{nested_attributes_spec.rb → attributes/nested_spec.rb} +474 -592
  269. data/spec/mongoid/attributes/readonly_spec.rb +58 -18
  270. data/spec/mongoid/attributes_spec.rb +349 -434
  271. data/spec/mongoid/{dirty_spec.rb → changeable_spec.rb} +203 -153
  272. data/spec/mongoid/{components_spec.rb → composable_spec.rb} +3 -3
  273. data/spec/mongoid/config/environment_spec.rb +3 -3
  274. data/spec/mongoid/config/options_spec.rb +6 -6
  275. data/spec/mongoid/config_spec.rb +24 -48
  276. data/spec/mongoid/contextual/aggregable/memory_spec.rb +12 -12
  277. data/spec/mongoid/contextual/aggregable/mongo_spec.rb +78 -38
  278. data/spec/mongoid/contextual/atomic_spec.rb +60 -56
  279. data/spec/mongoid/contextual/find_and_modify_spec.rb +14 -14
  280. data/spec/mongoid/contextual/geo_near_spec.rb +22 -22
  281. data/spec/mongoid/contextual/map_reduce_spec.rb +27 -27
  282. data/spec/mongoid/contextual/memory_spec.rb +156 -94
  283. data/spec/mongoid/contextual/mongo_spec.rb +238 -150
  284. data/spec/mongoid/contextual/none_spec.rb +127 -0
  285. data/spec/mongoid/contextual/text_search_spec.rb +209 -0
  286. data/spec/mongoid/copyable_spec.rb +56 -68
  287. data/spec/mongoid/criteria/findable_spec.rb +991 -0
  288. data/spec/mongoid/{criterion/inspection_spec.rb → criteria/inspectable_spec.rb} +5 -5
  289. data/spec/mongoid/{criterion → criteria}/marshalable_spec.rb +2 -2
  290. data/spec/mongoid/criteria/modifiable_spec.rb +1252 -0
  291. data/spec/mongoid/{criterion/scoping_spec.rb → criteria/scopable_spec.rb} +37 -37
  292. data/spec/mongoid/criteria_spec.rb +715 -2421
  293. data/spec/mongoid/document_spec.rb +171 -121
  294. data/spec/mongoid/equality_spec.rb +22 -22
  295. data/spec/mongoid/errors/ambiguous_relationship_spec.rb +3 -3
  296. data/spec/mongoid/errors/callback_spec.rb +3 -3
  297. data/spec/mongoid/errors/delete_restriction_spec.rb +3 -3
  298. data/spec/mongoid/errors/document_not_destroyed_spec.rb +33 -0
  299. data/spec/mongoid/errors/document_not_found_spec.rb +11 -11
  300. data/spec/mongoid/errors/eager_load_spec.rb +3 -3
  301. data/spec/mongoid/errors/invalid_collection_spec.rb +3 -3
  302. data/spec/mongoid/errors/invalid_config_option_spec.rb +3 -3
  303. data/spec/mongoid/errors/invalid_field_option_spec.rb +3 -3
  304. data/spec/mongoid/errors/invalid_field_spec.rb +3 -3
  305. data/spec/mongoid/errors/invalid_find_spec.rb +3 -3
  306. data/spec/mongoid/errors/invalid_includes_spec.rb +3 -3
  307. data/spec/mongoid/errors/invalid_index_spec.rb +3 -3
  308. data/spec/mongoid/errors/invalid_options_spec.rb +3 -3
  309. data/spec/mongoid/errors/invalid_path_spec.rb +3 -3
  310. data/spec/mongoid/errors/invalid_scope_spec.rb +5 -5
  311. data/spec/mongoid/errors/invalid_set_polymorphic_relation_spec.rb +3 -3
  312. data/spec/mongoid/errors/invalid_storage_options_spec.rb +3 -3
  313. data/spec/mongoid/errors/invalid_time_spec.rb +3 -3
  314. data/spec/mongoid/errors/inverse_not_found_spec.rb +3 -3
  315. data/spec/mongoid/errors/mixed_relations_spec.rb +3 -3
  316. data/spec/mongoid/errors/mixed_session_configuration_spec.rb +3 -3
  317. data/spec/mongoid/errors/mongoid_error_spec.rb +8 -8
  318. data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +3 -3
  319. data/spec/mongoid/errors/no_environment_spec.rb +3 -3
  320. data/spec/mongoid/errors/no_map_reduce_output_spec.rb +3 -3
  321. data/spec/mongoid/errors/no_metadata_spec.rb +3 -3
  322. data/spec/mongoid/errors/no_parent_spec.rb +3 -3
  323. data/spec/mongoid/errors/no_session_config_spec.rb +3 -3
  324. data/spec/mongoid/errors/no_session_database_spec.rb +3 -3
  325. data/spec/mongoid/errors/no_session_hosts_spec.rb +3 -3
  326. data/spec/mongoid/errors/no_sessions_config_spec.rb +3 -3
  327. data/spec/mongoid/errors/readonly_attribute_spec.rb +3 -3
  328. data/spec/mongoid/errors/readonly_document_spec.rb +29 -0
  329. data/spec/mongoid/errors/scope_overwrite_spec.rb +3 -3
  330. data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +3 -3
  331. data/spec/mongoid/errors/unknown_attribute_spec.rb +5 -5
  332. data/spec/mongoid/errors/unsaved_document_spec.rb +3 -3
  333. data/spec/mongoid/errors/unsupported_javascript_spec.rb +3 -3
  334. data/spec/mongoid/errors/validations_spec.rb +7 -7
  335. data/spec/mongoid/extensions/array_spec.rb +61 -61
  336. data/spec/mongoid/extensions/big_decimal_spec.rb +11 -11
  337. data/spec/mongoid/extensions/binary_spec.rb +12 -12
  338. data/spec/mongoid/extensions/boolean_spec.rb +18 -18
  339. data/spec/mongoid/extensions/date_spec.rb +13 -13
  340. data/spec/mongoid/extensions/date_time_spec.rb +8 -8
  341. data/spec/mongoid/extensions/false_class_spec.rb +5 -5
  342. data/spec/mongoid/extensions/float_spec.rb +29 -15
  343. data/spec/mongoid/extensions/hash_spec.rb +29 -29
  344. data/spec/mongoid/extensions/integer_spec.rb +15 -15
  345. data/spec/mongoid/extensions/module_spec.rb +2 -2
  346. data/spec/mongoid/extensions/nil_class_spec.rb +1 -1
  347. data/spec/mongoid/extensions/object_id_spec.rb +134 -134
  348. data/spec/mongoid/extensions/object_spec.rb +26 -26
  349. data/spec/mongoid/extensions/range_spec.rb +61 -12
  350. data/spec/mongoid/extensions/regexp_spec.rb +4 -4
  351. data/spec/mongoid/extensions/set_spec.rb +4 -4
  352. data/spec/mongoid/extensions/string_spec.rb +35 -46
  353. data/spec/mongoid/extensions/symbol_spec.rb +9 -9
  354. data/spec/mongoid/extensions/time_spec.rb +49 -49
  355. data/spec/mongoid/extensions/time_with_zone_spec.rb +34 -34
  356. data/spec/mongoid/extensions/true_class_spec.rb +5 -5
  357. data/spec/mongoid/extensions_spec.rb +29 -0
  358. data/spec/mongoid/factory_spec.rb +15 -15
  359. data/spec/mongoid/fields/foreign_key_spec.rb +73 -66
  360. data/spec/mongoid/fields/internal/foreign_keys/array_spec.rb +15 -15
  361. data/spec/mongoid/fields/internal/foreign_keys/object_spec.rb +22 -22
  362. data/spec/mongoid/fields/localized_spec.rb +38 -23
  363. data/spec/mongoid/fields/standard_spec.rb +12 -12
  364. data/spec/mongoid/fields_spec.rb +263 -217
  365. data/spec/mongoid/findable_spec.rb +509 -0
  366. data/spec/mongoid/indexable/specification_spec.rb +102 -0
  367. data/spec/mongoid/{indexes_spec.rb → indexable_spec.rb} +171 -51
  368. data/spec/mongoid/{inspection_spec.rb → inspectable_spec.rb} +6 -14
  369. data/spec/mongoid/{callbacks_spec.rb → interceptable_spec.rb} +117 -116
  370. data/spec/mongoid/log_subscriber_spec.rb +75 -0
  371. data/spec/mongoid/loggable_spec.rb +1 -1
  372. data/spec/mongoid/{matchers → matchable}/all_spec.rb +4 -4
  373. data/spec/mongoid/{matchers → matchable}/and_spec.rb +11 -11
  374. data/spec/mongoid/{matchers → matchable}/default_spec.rb +15 -15
  375. data/spec/mongoid/{matchers → matchable}/exists_spec.rb +5 -5
  376. data/spec/mongoid/{matchers → matchable}/gt_spec.rb +9 -8
  377. data/spec/mongoid/{matchers → matchable}/gte_spec.rb +7 -7
  378. data/spec/mongoid/matchable/in_spec.rb +49 -0
  379. data/spec/mongoid/{matchers → matchable}/lt_spec.rb +7 -7
  380. data/spec/mongoid/{matchers → matchable}/lte_spec.rb +7 -7
  381. data/spec/mongoid/matchable/ne_spec.rb +46 -0
  382. data/spec/mongoid/matchable/nin_spec.rb +48 -0
  383. data/spec/mongoid/{matchers → matchable}/or_spec.rb +6 -6
  384. data/spec/mongoid/{matchers → matchable}/size_spec.rb +3 -3
  385. data/spec/mongoid/{matchers_spec.rb → matchable_spec.rb} +41 -41
  386. data/spec/mongoid/persistable/creatable_spec.rb +553 -0
  387. data/spec/mongoid/persistable/deletable_spec.rb +218 -0
  388. data/spec/mongoid/persistable/destroyable_spec.rb +192 -0
  389. data/spec/mongoid/persistable/incrementable_spec.rb +173 -0
  390. data/spec/mongoid/persistable/logical_spec.rb +143 -0
  391. data/spec/mongoid/persistable/poppable_spec.rb +115 -0
  392. data/spec/mongoid/persistable/pullable_spec.rb +228 -0
  393. data/spec/mongoid/persistable/pushable_spec.rb +258 -0
  394. data/spec/mongoid/persistable/renamable_spec.rb +135 -0
  395. data/spec/mongoid/persistable/savable_spec.rb +498 -0
  396. data/spec/mongoid/persistable/settable_spec.rb +162 -0
  397. data/spec/mongoid/persistable/unsettable_spec.rb +155 -0
  398. data/spec/mongoid/persistable/updatable_spec.rb +558 -0
  399. data/spec/mongoid/persistable/upsertable_spec.rb +106 -0
  400. data/spec/mongoid/persistable_spec.rb +206 -0
  401. data/spec/mongoid/{atomic/positionable_spec.rb → positional_spec.rb} +14 -19
  402. data/spec/mongoid/query_cache_spec.rb +263 -0
  403. data/spec/mongoid/railties/document_spec.rb +2 -2
  404. data/spec/mongoid/relations/accessors_spec.rb +53 -145
  405. data/spec/mongoid/relations/auto_save_spec.rb +37 -17
  406. data/spec/mongoid/relations/bindings/embedded/in_spec.rb +12 -12
  407. data/spec/mongoid/relations/bindings/embedded/many_spec.rb +3 -3
  408. data/spec/mongoid/relations/bindings/embedded/one_spec.rb +5 -5
  409. data/spec/mongoid/relations/bindings/referenced/in_spec.rb +26 -26
  410. data/spec/mongoid/relations/bindings/referenced/many_spec.rb +10 -10
  411. data/spec/mongoid/relations/bindings/referenced/many_to_many_spec.rb +19 -19
  412. data/spec/mongoid/relations/bindings/referenced/one_spec.rb +12 -12
  413. data/spec/mongoid/relations/builders/embedded/in_spec.rb +4 -4
  414. data/spec/mongoid/relations/builders/embedded/many_spec.rb +18 -18
  415. data/spec/mongoid/relations/builders/embedded/one_spec.rb +11 -11
  416. data/spec/mongoid/relations/builders/nested_attributes/many_spec.rb +12 -13
  417. data/spec/mongoid/relations/builders/nested_attributes/one_spec.rb +14 -14
  418. data/spec/mongoid/relations/builders/referenced/in_spec.rb +24 -35
  419. data/spec/mongoid/relations/builders/referenced/many_spec.rb +15 -15
  420. data/spec/mongoid/relations/builders/referenced/many_to_many_spec.rb +18 -18
  421. data/spec/mongoid/relations/builders/referenced/one_spec.rb +12 -25
  422. data/spec/mongoid/relations/builders_spec.rb +21 -21
  423. data/spec/mongoid/relations/cascading/delete_spec.rb +9 -9
  424. data/spec/mongoid/relations/cascading/destroy_spec.rb +6 -6
  425. data/spec/mongoid/relations/cascading/nullify_spec.rb +4 -4
  426. data/spec/mongoid/relations/cascading/restrict_spec.rb +7 -7
  427. data/spec/mongoid/relations/cascading_spec.rb +16 -16
  428. data/spec/mongoid/relations/constraint_spec.rb +8 -7
  429. data/spec/mongoid/relations/conversions_spec.rb +16 -14
  430. data/spec/mongoid/relations/counter_cache_spec.rb +85 -0
  431. data/spec/mongoid/relations/cyclic_spec.rb +18 -18
  432. data/spec/mongoid/relations/eager/belongs_to_spec.rb +154 -0
  433. data/spec/mongoid/relations/eager/has_and_belongs_to_many_spec.rb +117 -0
  434. data/spec/mongoid/relations/eager/has_many_spec.rb +207 -0
  435. data/spec/mongoid/relations/eager/has_one_spec.rb +163 -0
  436. data/spec/mongoid/relations/eager_spec.rb +228 -0
  437. data/spec/mongoid/relations/embedded/dirty_spec.rb +8 -8
  438. data/spec/mongoid/relations/embedded/in_spec.rb +56 -57
  439. data/spec/mongoid/relations/embedded/many_spec.rb +467 -372
  440. data/spec/mongoid/relations/embedded/one_spec.rb +108 -141
  441. data/spec/mongoid/relations/macros_spec.rb +108 -102
  442. data/spec/mongoid/relations/metadata_spec.rb +180 -255
  443. data/spec/mongoid/relations/options_spec.rb +1 -1
  444. data/spec/mongoid/relations/polymorphic_spec.rb +13 -17
  445. data/spec/mongoid/relations/proxy_spec.rb +2 -2
  446. data/spec/mongoid/relations/referenced/in_spec.rb +128 -303
  447. data/spec/mongoid/relations/referenced/many_spec.rb +587 -527
  448. data/spec/mongoid/relations/referenced/many_to_many_spec.rb +401 -424
  449. data/spec/mongoid/relations/referenced/one_spec.rb +149 -264
  450. data/spec/mongoid/relations/reflections_spec.rb +6 -6
  451. data/spec/mongoid/relations/synchronization_spec.rb +46 -50
  452. data/spec/mongoid/relations/targets/enumerable_spec.rb +118 -118
  453. data/spec/mongoid/relations/touchable_spec.rb +333 -0
  454. data/spec/mongoid/relations_spec.rb +16 -15
  455. data/spec/mongoid/{reloading_spec.rb → reloadable_spec.rb} +38 -55
  456. data/spec/mongoid/{scoping_spec.rb → scopable_spec.rb} +89 -164
  457. data/spec/mongoid/selectable_spec.rb +134 -0
  458. data/spec/mongoid/{serialization_spec.rb → serializable_spec.rb} +129 -82
  459. data/spec/mongoid/sessions/factory_spec.rb +49 -28
  460. data/spec/mongoid/sessions/mongo_uri_spec.rb +7 -7
  461. data/spec/mongoid/sessions/options_spec.rb +108 -0
  462. data/spec/mongoid/sessions_spec.rb +319 -178
  463. data/spec/mongoid/{sharding_spec.rb → shardable_spec.rb} +8 -8
  464. data/spec/mongoid/{state_spec.rb → stateful_spec.rb} +36 -11
  465. data/spec/mongoid/tasks/database_rake_spec.rb +285 -0
  466. data/spec/mongoid/tasks/database_spec.rb +160 -0
  467. data/spec/mongoid/threaded_spec.rb +17 -70
  468. data/spec/mongoid/timestamps/created/short_spec.rb +6 -6
  469. data/spec/mongoid/timestamps/created_spec.rb +5 -5
  470. data/spec/mongoid/timestamps/timeless_spec.rb +6 -6
  471. data/spec/mongoid/timestamps/updated/short_spec.rb +11 -11
  472. data/spec/mongoid/timestamps/updated_spec.rb +9 -13
  473. data/spec/mongoid/timestamps_spec.rb +9 -13
  474. data/spec/mongoid/{hierarchy_spec.rb → traversable_spec.rb} +19 -19
  475. data/spec/mongoid/{validations → validatable}/associated_spec.rb +45 -22
  476. data/spec/mongoid/{validations → validatable}/format_spec.rb +6 -6
  477. data/spec/mongoid/{validations → validatable}/length_spec.rb +14 -14
  478. data/spec/mongoid/{validations → validatable}/numericality_spec.rb +1 -1
  479. data/spec/mongoid/{validations → validatable}/presence_spec.rb +37 -44
  480. data/spec/mongoid/{validations → validatable}/uniqueness_spec.rb +184 -192
  481. data/spec/mongoid/{validations_spec.rb → validatable_spec.rb} +28 -28
  482. data/spec/mongoid_spec.rb +8 -8
  483. data/spec/rails/mongoid_spec.rb +19 -335
  484. data/spec/spec_helper.rb +31 -13
  485. metadata +303 -283
  486. data/lib/mongoid/atomic/positionable.rb +0 -73
  487. data/lib/mongoid/components.rb +0 -92
  488. data/lib/mongoid/config/inflections.rb +0 -6
  489. data/lib/mongoid/contextual/eager.rb +0 -158
  490. data/lib/mongoid/errors/versioning_not_on_root.rb +0 -23
  491. data/lib/mongoid/identity_map.rb +0 -163
  492. data/lib/mongoid/json.rb +0 -16
  493. data/lib/mongoid/matchers.rb +0 -32
  494. data/lib/mongoid/matchers/strategies.rb +0 -97
  495. data/lib/mongoid/multi_parameter_attributes.rb +0 -105
  496. data/lib/mongoid/nested_attributes.rb +0 -78
  497. data/lib/mongoid/observer.rb +0 -192
  498. data/lib/mongoid/paranoia.rb +0 -136
  499. data/lib/mongoid/persistence.rb +0 -357
  500. data/lib/mongoid/persistence/atomic.rb +0 -231
  501. data/lib/mongoid/persistence/atomic/add_to_set.rb +0 -47
  502. data/lib/mongoid/persistence/atomic/bit.rb +0 -35
  503. data/lib/mongoid/persistence/atomic/inc.rb +0 -45
  504. data/lib/mongoid/persistence/atomic/operation.rb +0 -154
  505. data/lib/mongoid/persistence/atomic/pop.rb +0 -32
  506. data/lib/mongoid/persistence/atomic/pull.rb +0 -32
  507. data/lib/mongoid/persistence/atomic/pull_all.rb +0 -32
  508. data/lib/mongoid/persistence/atomic/push.rb +0 -25
  509. data/lib/mongoid/persistence/atomic/push_all.rb +0 -25
  510. data/lib/mongoid/persistence/atomic/rename.rb +0 -30
  511. data/lib/mongoid/persistence/atomic/sets.rb +0 -28
  512. data/lib/mongoid/persistence/atomic/unset.rb +0 -27
  513. data/lib/mongoid/persistence/deletion.rb +0 -31
  514. data/lib/mongoid/persistence/insertion.rb +0 -38
  515. data/lib/mongoid/persistence/modification.rb +0 -35
  516. data/lib/mongoid/persistence/operations.rb +0 -214
  517. data/lib/mongoid/persistence/operations/embedded/insert.rb +0 -46
  518. data/lib/mongoid/persistence/operations/embedded/remove.rb +0 -43
  519. data/lib/mongoid/persistence/operations/insert.rb +0 -34
  520. data/lib/mongoid/persistence/operations/remove.rb +0 -33
  521. data/lib/mongoid/persistence/operations/update.rb +0 -59
  522. data/lib/mongoid/persistence/operations/upsert.rb +0 -28
  523. data/lib/mongoid/persistence/upsertion.rb +0 -31
  524. data/lib/mongoid/unit_of_work.rb +0 -61
  525. data/lib/mongoid/versioning.rb +0 -217
  526. data/lib/rack/mongoid.rb +0 -2
  527. data/lib/rack/mongoid/middleware/identity_map.rb +0 -39
  528. data/lib/rails/generators/mongoid/observer/observer_generator.rb +0 -17
  529. data/lib/rails/generators/mongoid/observer/templates/observer.rb.tt +0 -4
  530. data/spec/app/models/actor_observer.rb +0 -15
  531. data/spec/app/models/callback_recorder.rb +0 -25
  532. data/spec/app/models/paranoid_phone.rb +0 -25
  533. data/spec/app/models/paranoid_post.rb +0 -36
  534. data/spec/app/models/phone_observer.rb +0 -6
  535. data/spec/mongoid/attributes/processing_spec.rb +0 -149
  536. data/spec/mongoid/criterion/destructive_spec.rb +0 -101
  537. data/spec/mongoid/criterion/modifiable_spec.rb +0 -409
  538. data/spec/mongoid/criterion/modification_spec.rb +0 -402
  539. data/spec/mongoid/errors/versioning_not_on_root_spec.rb +0 -29
  540. data/spec/mongoid/finders_spec.rb +0 -321
  541. data/spec/mongoid/identity_map_spec.rb +0 -564
  542. data/spec/mongoid/json_spec.rb +0 -33
  543. data/spec/mongoid/matchers/in_spec.rb +0 -25
  544. data/spec/mongoid/matchers/ne_spec.rb +0 -25
  545. data/spec/mongoid/matchers/nin_spec.rb +0 -25
  546. data/spec/mongoid/multi_parameter_attributes_spec.rb +0 -128
  547. data/spec/mongoid/observer_spec.rb +0 -290
  548. data/spec/mongoid/paranoia_spec.rb +0 -759
  549. data/spec/mongoid/persistence/atomic/add_to_set_spec.rb +0 -262
  550. data/spec/mongoid/persistence/atomic/bit_spec.rb +0 -88
  551. data/spec/mongoid/persistence/atomic/inc_spec.rb +0 -133
  552. data/spec/mongoid/persistence/atomic/pop_spec.rb +0 -111
  553. data/spec/mongoid/persistence/atomic/pull_all_spec.rb +0 -77
  554. data/spec/mongoid/persistence/atomic/pull_spec.rb +0 -80
  555. data/spec/mongoid/persistence/atomic/push_all_spec.rb +0 -77
  556. data/spec/mongoid/persistence/atomic/push_spec.rb +0 -77
  557. data/spec/mongoid/persistence/atomic/rename_spec.rb +0 -42
  558. data/spec/mongoid/persistence/atomic/sets_spec.rb +0 -154
  559. data/spec/mongoid/persistence/atomic/unset_spec.rb +0 -65
  560. data/spec/mongoid/persistence/atomic_spec.rb +0 -216
  561. data/spec/mongoid/persistence/operations/embedded/insert_spec.rb +0 -191
  562. data/spec/mongoid/persistence/operations/embedded/remove_spec.rb +0 -8
  563. data/spec/mongoid/persistence/operations/insert_spec.rb +0 -149
  564. data/spec/mongoid/persistence/operations/remove_spec.rb +0 -113
  565. data/spec/mongoid/persistence/operations/update_spec.rb +0 -141
  566. data/spec/mongoid/persistence/operations/upsert_spec.rb +0 -59
  567. data/spec/mongoid/persistence/operations_spec.rb +0 -313
  568. data/spec/mongoid/persistence_spec.rb +0 -2279
  569. data/spec/mongoid/unit_of_work_spec.rb +0 -196
  570. data/spec/mongoid/versioning_spec.rb +0 -540
  571. data/spec/rack/mongoid/middleware/identity_map_spec.rb +0 -72
@@ -31,7 +31,7 @@ describe Mongoid::Contextual::GeoNear do
31
31
  end
32
32
 
33
33
  it "returns the average distance" do
34
- geo_near.average_distance.should_not be_nil
34
+ expect(geo_near.average_distance).to_not be_nil
35
35
  end
36
36
  end
37
37
 
@@ -46,7 +46,7 @@ describe Mongoid::Contextual::GeoNear do
46
46
  end
47
47
 
48
48
  it "returns 0.0" do
49
- geo_near.average_distance.should be_nil
49
+ expect(geo_near.average_distance).to be_nil
50
50
  end
51
51
  end
52
52
  end
@@ -84,7 +84,7 @@ describe Mongoid::Contextual::GeoNear do
84
84
  end
85
85
 
86
86
  it "returns all the documents" do
87
- results.should eq([ bar_one, bar_two ])
87
+ expect(results).to eq([ bar_one, bar_two ])
88
88
  end
89
89
  end
90
90
 
@@ -103,7 +103,7 @@ describe Mongoid::Contextual::GeoNear do
103
103
  end
104
104
 
105
105
  it "returns the limited documents" do
106
- results.should eq([ bar_one ])
106
+ expect(results).to eq([ bar_one ])
107
107
  end
108
108
  end
109
109
 
@@ -122,7 +122,7 @@ describe Mongoid::Contextual::GeoNear do
122
122
  end
123
123
 
124
124
  it "returns the limited documents" do
125
- results.should eq([ bar_one ])
125
+ expect(results).to eq([ bar_one ])
126
126
  end
127
127
  end
128
128
 
@@ -141,7 +141,7 @@ describe Mongoid::Contextual::GeoNear do
141
141
  end
142
142
 
143
143
  it "returns the documents" do
144
- results.should eq([ bar_one, bar_two ])
144
+ expect(results).to eq([ bar_one, bar_two ])
145
145
  end
146
146
  end
147
147
 
@@ -160,11 +160,11 @@ describe Mongoid::Contextual::GeoNear do
160
160
  end
161
161
 
162
162
  it "returns the documents" do
163
- results.should eq([ bar_one, bar_two ])
163
+ expect(results).to eq([ bar_one, bar_two ])
164
164
  end
165
165
 
166
166
  it "multiplies the distance factor" do
167
- results.first.geo_near_distance.to_i.should eq(2490)
167
+ expect(results.first.geo_near_distance.to_i).to eq(2490)
168
168
  end
169
169
  end
170
170
 
@@ -183,7 +183,7 @@ describe Mongoid::Contextual::GeoNear do
183
183
  end
184
184
 
185
185
  it "returns the documents" do
186
- results.should eq([ bar_one, bar_two ])
186
+ expect(results).to eq([ bar_one, bar_two ])
187
187
  end
188
188
  end
189
189
  end
@@ -217,7 +217,7 @@ describe Mongoid::Contextual::GeoNear do
217
217
  end
218
218
 
219
219
  it "returns false" do
220
- geo_near.should_not be_empty
220
+ expect(geo_near).to_not be_empty
221
221
  end
222
222
  end
223
223
 
@@ -228,7 +228,7 @@ describe Mongoid::Contextual::GeoNear do
228
228
  end
229
229
 
230
230
  it "returns true" do
231
- geo_near.should be_empty
231
+ expect(geo_near).to be_empty
232
232
  end
233
233
  end
234
234
  end
@@ -264,7 +264,7 @@ describe Mongoid::Contextual::GeoNear do
264
264
  end
265
265
 
266
266
  it "returns a hash" do
267
- execution_results.should be_a_kind_of(Hash)
267
+ expect(execution_results).to be_a_kind_of(Hash)
268
268
  end
269
269
  end
270
270
 
@@ -297,7 +297,7 @@ describe Mongoid::Contextual::GeoNear do
297
297
  end
298
298
 
299
299
  it "returns the max distance" do
300
- geo_near.max_distance.should_not be_nil
300
+ expect(geo_near.max_distance).to_not be_nil
301
301
  end
302
302
  end
303
303
 
@@ -312,7 +312,7 @@ describe Mongoid::Contextual::GeoNear do
312
312
  end
313
313
 
314
314
  it "returns 0.0" do
315
- geo_near.max_distance.should eq(0.0)
315
+ expect(geo_near.max_distance).to eq(0.0)
316
316
  end
317
317
  end
318
318
  end
@@ -344,31 +344,31 @@ describe Mongoid::Contextual::GeoNear do
344
344
  end
345
345
 
346
346
  it "contains the selector" do
347
- geo_near.inspect.should include("selector")
347
+ expect(geo_near.inspect).to include("selector")
348
348
  end
349
349
 
350
350
  it "contains the class" do
351
- geo_near.inspect.should include("class")
351
+ expect(geo_near.inspect).to include("class")
352
352
  end
353
353
 
354
354
  it "contains the near" do
355
- geo_near.inspect.should include("near")
355
+ expect(geo_near.inspect).to include("near")
356
356
  end
357
357
 
358
358
  it "contains the multiplier" do
359
- geo_near.inspect.should include("multiplier")
359
+ expect(geo_near.inspect).to include("multiplier")
360
360
  end
361
361
 
362
362
  it "contains the max" do
363
- geo_near.inspect.should include("max")
363
+ expect(geo_near.inspect).to include("max")
364
364
  end
365
365
 
366
366
  it "contains the unique" do
367
- geo_near.inspect.should include("unique")
367
+ expect(geo_near.inspect).to include("unique")
368
368
  end
369
369
 
370
370
  it "contains the spherical" do
371
- geo_near.inspect.should include("spherical")
371
+ expect(geo_near.inspect).to include("spherical")
372
372
  end
373
373
  end
374
374
 
@@ -399,7 +399,7 @@ describe Mongoid::Contextual::GeoNear do
399
399
  end
400
400
 
401
401
  it "returns the execution time" do
402
- geo_near.time.should_not be_nil
402
+ expect(geo_near.time).to_not be_nil
403
403
  end
404
404
  end
405
405
  end
@@ -52,7 +52,7 @@ describe Mongoid::Contextual::MapReduce do
52
52
  end
53
53
 
54
54
  it "returns the db command" do
55
- map_reduce.command.should eq(base_command)
55
+ expect(map_reduce.command).to eq(base_command)
56
56
  end
57
57
 
58
58
  context "with sort" do
@@ -61,7 +61,7 @@ describe Mongoid::Contextual::MapReduce do
61
61
  end
62
62
 
63
63
  it "returns the db command with a sort option" do
64
- map_reduce.command.should eq(base_command.merge(sort: {'name' => -1}))
64
+ expect(map_reduce.command).to eq(base_command.merge(sort: {'name' => -1}))
65
65
  end
66
66
  end
67
67
 
@@ -71,7 +71,7 @@ describe Mongoid::Contextual::MapReduce do
71
71
  end
72
72
 
73
73
  it "returns the db command with a limit option" do
74
- map_reduce.command.should eq(base_command.merge(limit: 10))
74
+ expect(map_reduce.command).to eq(base_command.merge(limit: 10))
75
75
  end
76
76
  end
77
77
  end
@@ -91,7 +91,7 @@ describe Mongoid::Contextual::MapReduce do
91
91
  end
92
92
 
93
93
  it "returns the map/reduce counts" do
94
- counts.should eq({
94
+ expect(counts).to eq({
95
95
  "input" => 2,
96
96
  "emit" => 2,
97
97
  "reduce" => 0,
@@ -117,7 +117,7 @@ describe Mongoid::Contextual::MapReduce do
117
117
  end
118
118
 
119
119
  it "iterates over the results" do
120
- results.entries.should eq([
120
+ expect(results.entries).to eq([
121
121
  { "_id" => "Depeche Mode", "value" => { "likes" => 200 }},
122
122
  { "_id" => "Tool", "value" => { "likes" => 100 }}
123
123
  ])
@@ -131,7 +131,7 @@ describe Mongoid::Contextual::MapReduce do
131
131
  end
132
132
 
133
133
  it "iterates over the results" do
134
- results.entries.should eq([
134
+ expect(results.entries).to eq([
135
135
  { "_id" => "Depeche Mode", "value" => { "likes" => 200 }},
136
136
  { "_id" => "Tool", "value" => { "likes" => 100 }}
137
137
  ])
@@ -158,7 +158,7 @@ describe Mongoid::Contextual::MapReduce do
158
158
  end
159
159
 
160
160
  it "does not raise an error" do
161
- results.entries.should be_empty
161
+ expect(results.entries).to be_empty
162
162
  end
163
163
  end
164
164
  end
@@ -178,7 +178,7 @@ describe Mongoid::Contextual::MapReduce do
178
178
  end
179
179
 
180
180
  it "returns the emitted counts" do
181
- emitted.should eq(2)
181
+ expect(emitted).to eq(2)
182
182
  end
183
183
  end
184
184
 
@@ -199,7 +199,7 @@ describe Mongoid::Contextual::MapReduce do
199
199
  end
200
200
 
201
201
  it "returns false" do
202
- results.should_not be_empty
202
+ expect(results).to_not be_empty
203
203
  end
204
204
  end
205
205
 
@@ -214,7 +214,7 @@ describe Mongoid::Contextual::MapReduce do
214
214
  end
215
215
 
216
216
  it "returns true" do
217
- results.should be_empty
217
+ expect(results).to be_empty
218
218
  end
219
219
  end
220
220
  end
@@ -234,7 +234,7 @@ describe Mongoid::Contextual::MapReduce do
234
234
  end
235
235
 
236
236
  it "sets the finalize command" do
237
- finalized.command[:finalize].should eq("testing")
237
+ expect(finalized.command[:finalize]).to eq("testing")
238
238
  end
239
239
  end
240
240
 
@@ -253,7 +253,7 @@ describe Mongoid::Contextual::MapReduce do
253
253
  end
254
254
 
255
255
  it "returns the input counts" do
256
- input.should eq(2)
256
+ expect(input).to eq(2)
257
257
  end
258
258
  end
259
259
 
@@ -272,7 +272,7 @@ describe Mongoid::Contextual::MapReduce do
272
272
  end
273
273
 
274
274
  it "adds the jsMode flag to the command" do
275
- results.command[:jsMode].should be_true
275
+ expect(results.command[:jsMode]).to be true
276
276
  end
277
277
  end
278
278
 
@@ -293,7 +293,7 @@ describe Mongoid::Contextual::MapReduce do
293
293
  end
294
294
 
295
295
  it "sets the out command" do
296
- out.command[:out].should eq(inline: 1)
296
+ expect(out.command[:out]).to eq(inline: 1)
297
297
  end
298
298
  end
299
299
 
@@ -306,7 +306,7 @@ describe Mongoid::Contextual::MapReduce do
306
306
  end
307
307
 
308
308
  it "sets the out command value to a string" do
309
- out.command[:out].should eq(replace: "test")
309
+ expect(out.command[:out]).to eq(replace: "test")
310
310
  end
311
311
  end
312
312
  end
@@ -327,7 +327,7 @@ describe Mongoid::Contextual::MapReduce do
327
327
  end
328
328
 
329
329
  it "returns the output counts" do
330
- output.should eq(2)
330
+ expect(output).to eq(2)
331
331
  end
332
332
  end
333
333
 
@@ -346,7 +346,7 @@ describe Mongoid::Contextual::MapReduce do
346
346
  end
347
347
 
348
348
  it "returns the reduce counts" do
349
- reduced.should eq(0)
349
+ expect(reduced).to eq(0)
350
350
  end
351
351
  end
352
352
 
@@ -373,7 +373,7 @@ describe Mongoid::Contextual::MapReduce do
373
373
  end
374
374
 
375
375
  it "adds the variables to the global js scope" do
376
- results.first["value"]["global"].should eq(5)
376
+ expect(results.first["value"]["global"]).to eq(5)
377
377
  end
378
378
  end
379
379
 
@@ -392,7 +392,7 @@ describe Mongoid::Contextual::MapReduce do
392
392
  end
393
393
 
394
394
  it "returns the execution time" do
395
- time.should_not be_nil
395
+ expect(time).to_not be_nil
396
396
  end
397
397
  end
398
398
 
@@ -411,7 +411,7 @@ describe Mongoid::Contextual::MapReduce do
411
411
  end
412
412
 
413
413
  it "returns a hash" do
414
- execution_results.should be_a_kind_of Hash
414
+ expect(execution_results).to be_a_kind_of Hash
415
415
  end
416
416
  end
417
417
 
@@ -434,31 +434,31 @@ describe Mongoid::Contextual::MapReduce do
434
434
  end
435
435
 
436
436
  it "returns a string" do
437
- inspection.should be_a_kind_of String
437
+ expect(inspection).to be_a_kind_of String
438
438
  end
439
439
 
440
440
  it "includes the criteria selector" do
441
- inspection.should include("selector:")
441
+ expect(inspection).to include("selector:")
442
442
  end
443
443
 
444
444
  it "includes the class" do
445
- inspection.should include("class:")
445
+ expect(inspection).to include("class:")
446
446
  end
447
447
 
448
448
  it "includes the map function" do
449
- inspection.should include("map:")
449
+ expect(inspection).to include("map:")
450
450
  end
451
451
 
452
452
  it "includes the reduce function" do
453
- inspection.should include("reduce:")
453
+ expect(inspection).to include("reduce:")
454
454
  end
455
455
 
456
456
  it "includes the finalize function" do
457
- inspection.should include("finalize:")
457
+ expect(inspection).to include("finalize:")
458
458
  end
459
459
 
460
460
  it "includes the out option" do
461
- inspection.should include("out:")
461
+ expect(inspection).to include("out:")
462
462
  end
463
463
  end
464
464
  end
@@ -27,7 +27,7 @@ describe Mongoid::Contextual::Memory do
27
27
  end
28
28
 
29
29
  it "returns false" do
30
- context.send(method).should be_false
30
+ expect(context.send(method)).to be false
31
31
  end
32
32
  end
33
33
 
@@ -44,7 +44,7 @@ describe Mongoid::Contextual::Memory do
44
44
  end
45
45
 
46
46
  it "returns true" do
47
- context.send(method).should be_true
47
+ expect(context.send(method)).to be true
48
48
  end
49
49
  end
50
50
  end
@@ -73,7 +73,7 @@ describe Mongoid::Contextual::Memory do
73
73
  context "context when no arguments are provided" do
74
74
 
75
75
  it "returns the number of matches" do
76
- context.count.should eq(1)
76
+ expect(context.count).to eq(1)
77
77
  end
78
78
  end
79
79
 
@@ -86,7 +86,7 @@ describe Mongoid::Contextual::Memory do
86
86
  end
87
87
 
88
88
  it "returns 1" do
89
- count.should eq(1)
89
+ expect(count).to eq(1)
90
90
  end
91
91
  end
92
92
 
@@ -97,7 +97,7 @@ describe Mongoid::Contextual::Memory do
97
97
  end
98
98
 
99
99
  it "returns 0" do
100
- count.should eq(0)
100
+ expect(count).to eq(0)
101
101
  end
102
102
  end
103
103
  end
@@ -113,7 +113,7 @@ describe Mongoid::Contextual::Memory do
113
113
  end
114
114
 
115
115
  it "returns 1" do
116
- count.should eq(1)
116
+ expect(count).to eq(1)
117
117
  end
118
118
  end
119
119
 
@@ -126,7 +126,7 @@ describe Mongoid::Contextual::Memory do
126
126
  end
127
127
 
128
128
  it "returns 0" do
129
- count.should eq(0)
129
+ expect(count).to eq(0)
130
130
  end
131
131
  end
132
132
  end
@@ -169,31 +169,31 @@ describe Mongoid::Contextual::Memory do
169
169
  end
170
170
 
171
171
  it "deletes the first matching document" do
172
- hobrecht.should be_destroyed
172
+ expect(hobrecht).to be_destroyed
173
173
  end
174
174
 
175
175
  it "deletes the last matching document" do
176
- friedel.should be_destroyed
176
+ expect(friedel).to be_destroyed
177
177
  end
178
178
 
179
179
  it "does not delete non matching docs" do
180
- pfluger.should_not be_destroyed
180
+ expect(pfluger).to_not be_destroyed
181
181
  end
182
182
 
183
183
  it "removes the docs from the relation" do
184
- person.addresses.should eq([ pfluger ])
184
+ expect(person.addresses).to eq([ pfluger ])
185
185
  end
186
186
 
187
187
  it "removes the docs from the context" do
188
- context.entries.should be_empty
188
+ expect(context.entries).to be_empty
189
189
  end
190
190
 
191
191
  it "persists the changes to the database" do
192
- person.reload.addresses.should eq([ pfluger ])
192
+ expect(person.reload.addresses).to eq([ pfluger ])
193
193
  end
194
194
 
195
195
  it "returns the number of deleted documents" do
196
- deleted.should eq(2)
196
+ expect(deleted).to eq(2)
197
197
  end
198
198
  end
199
199
 
@@ -222,27 +222,27 @@ describe Mongoid::Contextual::Memory do
222
222
  end
223
223
 
224
224
  it "deletes the first matching document" do
225
- work.should be_destroyed
225
+ expect(work).to be_destroyed
226
226
  end
227
227
 
228
228
  it "does not delete non matching docs" do
229
- home.should_not be_destroyed
229
+ expect(home).to_not be_destroyed
230
230
  end
231
231
 
232
232
  it "removes the docs from the relation" do
233
- person.addresses.first.locations.should eq([ home ])
233
+ expect(person.addresses.first.locations).to eq([ home ])
234
234
  end
235
235
 
236
236
  it "removes the docs from the context" do
237
- context.entries.should be_empty
237
+ expect(context.entries).to be_empty
238
238
  end
239
239
 
240
240
  it "persists the changes to the database" do
241
- person.reload.addresses.first.locations.should eq([ home ])
241
+ expect(person.reload.addresses.first.locations).to eq([ home ])
242
242
  end
243
243
 
244
244
  it "returns the number of deleted documents" do
245
- deleted.should eq(1)
245
+ expect(deleted).to eq(1)
246
246
  end
247
247
  end
248
248
  end
@@ -283,31 +283,31 @@ describe Mongoid::Contextual::Memory do
283
283
  end
284
284
 
285
285
  it "deletes the first matching document" do
286
- hobrecht.should be_destroyed
286
+ expect(hobrecht).to be_destroyed
287
287
  end
288
288
 
289
289
  it "deletes the last matching document" do
290
- friedel.should be_destroyed
290
+ expect(friedel).to be_destroyed
291
291
  end
292
292
 
293
293
  it "does not delete non matching docs" do
294
- pfluger.should_not be_destroyed
294
+ expect(pfluger).to_not be_destroyed
295
295
  end
296
296
 
297
297
  it "removes the docs from the relation" do
298
- person.addresses.should eq([ pfluger ])
298
+ expect(person.addresses).to eq([ pfluger ])
299
299
  end
300
300
 
301
301
  it "removes the docs from the context" do
302
- context.entries.should be_empty
302
+ expect(context.entries).to be_empty
303
303
  end
304
304
 
305
305
  it "persists the changes to the database" do
306
- person.reload.addresses.should eq([ pfluger ])
306
+ expect(person.reload.addresses).to eq([ pfluger ])
307
307
  end
308
308
 
309
309
  it "returns the number of destroyed documents" do
310
- destroyed.should eq(2)
310
+ expect(destroyed).to eq(2)
311
311
  end
312
312
  end
313
313
  end
@@ -335,7 +335,7 @@ describe Mongoid::Contextual::Memory do
335
335
  end
336
336
 
337
337
  it "returns the distinct field values" do
338
- context.distinct(:street).should eq([ "hobrecht" ])
338
+ expect(context.distinct(:street)).to eq([ "hobrecht" ])
339
339
  end
340
340
  end
341
341
 
@@ -352,7 +352,7 @@ describe Mongoid::Contextual::Memory do
352
352
  end
353
353
 
354
354
  it "returns the distinct field values" do
355
- context.distinct(:street).should eq([ "hobrecht", "friedel" ])
355
+ expect(context.distinct(:street)).to eq([ "hobrecht", "friedel" ])
356
356
  end
357
357
  end
358
358
  end
@@ -384,7 +384,7 @@ describe Mongoid::Contextual::Memory do
384
384
  end
385
385
 
386
386
  it "contains no documents" do
387
- context.map(&:street).should be_empty
387
+ expect(context.map(&:street)).to be_empty
388
388
  end
389
389
 
390
390
  context "when calling next on the enumerator" do
@@ -401,13 +401,13 @@ describe Mongoid::Contextual::Memory do
401
401
 
402
402
  it "yields mongoid documents to the block" do
403
403
  context.each do |doc|
404
- doc.should be_a(Mongoid::Document)
404
+ expect(doc).to be_a(Mongoid::Document)
405
405
  end
406
406
  end
407
407
 
408
408
  it "iterates over the matching documents" do
409
409
  context.each do |doc|
410
- doc.should eq(hobrecht)
410
+ expect(doc).to eq(hobrecht)
411
411
  end
412
412
  end
413
413
  end
@@ -419,7 +419,7 @@ describe Mongoid::Contextual::Memory do
419
419
  end
420
420
 
421
421
  it "returns an enumerator" do
422
- enum.should be_a(Enumerator)
422
+ expect(enum).to be_a(Enumerator)
423
423
  end
424
424
 
425
425
  context "when iterating over the enumerator" do
@@ -428,7 +428,7 @@ describe Mongoid::Contextual::Memory do
428
428
 
429
429
  it "yields mongoid documents to the block" do
430
430
  enum.each do |doc|
431
- doc.should be_a(Mongoid::Document)
431
+ expect(doc).to be_a(Mongoid::Document)
432
432
  end
433
433
  end
434
434
  end
@@ -436,7 +436,7 @@ describe Mongoid::Contextual::Memory do
436
436
  context "when iterating with next" do
437
437
 
438
438
  it "yields mongoid documents" do
439
- enum.next.should be_a(Mongoid::Document)
439
+ expect(enum.next).to be_a(Mongoid::Document)
440
440
  end
441
441
  end
442
442
  end
@@ -466,7 +466,7 @@ describe Mongoid::Contextual::Memory do
466
466
  end
467
467
 
468
468
  it "returns true" do
469
- context.should be_exists
469
+ expect(context).to be_exists
470
470
  end
471
471
  end
472
472
 
@@ -483,7 +483,7 @@ describe Mongoid::Contextual::Memory do
483
483
  end
484
484
 
485
485
  it "returns false" do
486
- context.should_not be_exists
486
+ expect(context).to_not be_exists
487
487
  end
488
488
  end
489
489
  end
@@ -511,7 +511,7 @@ describe Mongoid::Contextual::Memory do
511
511
  end
512
512
 
513
513
  it "returns the first matching document" do
514
- context.send(method).should eq(hobrecht)
514
+ expect(context.send(method)).to eq(hobrecht)
515
515
  end
516
516
  end
517
517
  end
@@ -539,15 +539,15 @@ describe Mongoid::Contextual::Memory do
539
539
  end
540
540
 
541
541
  it "sets the criteria" do
542
- context.criteria.should eq(criteria)
542
+ expect(context.criteria).to eq(criteria)
543
543
  end
544
544
 
545
545
  it "sets the klass" do
546
- context.klass.should eq(Address)
546
+ expect(context.klass).to eq(Address)
547
547
  end
548
548
 
549
549
  it "sets the matching documents" do
550
- context.documents.should eq([ hobrecht ])
550
+ expect(context.documents).to eq([ hobrecht ])
551
551
  end
552
552
  end
553
553
 
@@ -572,7 +572,7 @@ describe Mongoid::Contextual::Memory do
572
572
  end
573
573
 
574
574
  it "limits the matching documents" do
575
- context.should eq([ friedel ])
575
+ expect(context).to eq([ friedel ])
576
576
  end
577
577
  end
578
578
 
@@ -597,7 +597,7 @@ describe Mongoid::Contextual::Memory do
597
597
  end
598
598
 
599
599
  it "limits the matching documents" do
600
- context.should eq([ hobrecht ])
600
+ expect(context).to eq([ hobrecht ])
601
601
  end
602
602
  end
603
603
  end
@@ -623,7 +623,7 @@ describe Mongoid::Contextual::Memory do
623
623
  end
624
624
 
625
625
  it "returns the last matching document" do
626
- context.last.should eq(friedel)
626
+ expect(context.last).to eq(friedel)
627
627
  end
628
628
  end
629
629
 
@@ -652,7 +652,7 @@ describe Mongoid::Contextual::Memory do
652
652
  end
653
653
 
654
654
  it "returns the number of matches" do
655
- context.send(method).should eq(1)
655
+ expect(context.send(method)).to eq(1)
656
656
  end
657
657
  end
658
658
 
@@ -669,7 +669,7 @@ describe Mongoid::Contextual::Memory do
669
669
  end
670
670
 
671
671
  it "returns zero" do
672
- context.send(method).should eq(0)
672
+ expect(context.send(method)).to eq(0)
673
673
  end
674
674
  end
675
675
  end
@@ -704,7 +704,7 @@ describe Mongoid::Contextual::Memory do
704
704
  end
705
705
 
706
706
  it "returns the context" do
707
- limit.should eq(context)
707
+ expect(limit).to eq(context)
708
708
  end
709
709
 
710
710
  context "when asking for all documents" do
@@ -712,7 +712,7 @@ describe Mongoid::Contextual::Memory do
712
712
  context "when only a limit exists" do
713
713
 
714
714
  it "only returns the limited documents" do
715
- context.entries.should eq([ hobrecht, friedel ])
715
+ expect(context.entries).to eq([ hobrecht, friedel ])
716
716
  end
717
717
  end
718
718
 
@@ -723,7 +723,64 @@ describe Mongoid::Contextual::Memory do
723
723
  end
724
724
 
725
725
  it "applies the skip before the limit" do
726
- context.entries.should eq([ friedel, pfluger ])
726
+ expect(context.entries).to eq([ friedel, pfluger ])
727
+ end
728
+ end
729
+ end
730
+ end
731
+
732
+ describe "#pluck" do
733
+
734
+ let(:hobrecht) do
735
+ Address.new(street: "hobrecht")
736
+ end
737
+
738
+ let(:friedel) do
739
+ Address.new(street: "friedel")
740
+ end
741
+
742
+ let(:criteria) do
743
+ Address.all.tap do |crit|
744
+ crit.documents = [ hobrecht, friedel ]
745
+ end
746
+ end
747
+
748
+ let(:context) do
749
+ described_class.new(criteria)
750
+ end
751
+
752
+ context "when plucking" do
753
+
754
+ let!(:plucked) do
755
+ context.pluck(:street)
756
+ end
757
+
758
+ it "returns the values" do
759
+ expect(plucked).to eq([ "hobrecht", "friedel" ])
760
+ end
761
+ end
762
+
763
+ context "when plucking a field that doesnt exist" do
764
+
765
+ context "when pluck one field" do
766
+
767
+ let(:plucked) do
768
+ context.pluck(:foo)
769
+ end
770
+
771
+ it "returns a empty array" do
772
+ expect(plucked).to eq([])
773
+ end
774
+ end
775
+
776
+ context "when pluck multiple fields" do
777
+
778
+ let(:plucked) do
779
+ context.pluck(:foo, :bar)
780
+ end
781
+
782
+ it "returns a empty array" do
783
+ expect(plucked).to eq([[], []])
727
784
  end
728
785
  end
729
786
  end
@@ -758,7 +815,7 @@ describe Mongoid::Contextual::Memory do
758
815
  end
759
816
 
760
817
  it "returns the context" do
761
- skip.should eq(context)
818
+ expect(skip).to eq(context)
762
819
  end
763
820
 
764
821
  context "when asking for all documents" do
@@ -766,7 +823,7 @@ describe Mongoid::Contextual::Memory do
766
823
  context "when only a skip exists" do
767
824
 
768
825
  it "skips the correct number" do
769
- context.entries.should eq([ friedel, pfluger ])
826
+ expect(context.entries).to eq([ friedel, pfluger ])
770
827
  end
771
828
  end
772
829
 
@@ -777,7 +834,7 @@ describe Mongoid::Contextual::Memory do
777
834
  end
778
835
 
779
836
  it "applies the skip before the limit" do
780
- context.entries.should eq([ friedel ])
837
+ expect(context.entries).to eq([ friedel ])
781
838
  end
782
839
  end
783
840
  end
@@ -816,11 +873,11 @@ describe Mongoid::Contextual::Memory do
816
873
  end
817
874
 
818
875
  it "sorts the documents" do
819
- context.entries.should eq([ friedel, hobrecht, pfluger ])
876
+ expect(context.entries).to eq([ friedel, hobrecht, pfluger ])
820
877
  end
821
878
 
822
879
  it "returns the context" do
823
- sorted.should eq(context)
880
+ expect(sorted).to eq(context)
824
881
  end
825
882
  end
826
883
 
@@ -833,11 +890,11 @@ describe Mongoid::Contextual::Memory do
833
890
  end
834
891
 
835
892
  it "sorts the documents" do
836
- context.entries.should eq([ pfluger, hobrecht, friedel ])
893
+ expect(context.entries).to eq([ pfluger, hobrecht, friedel ])
837
894
  end
838
895
 
839
896
  it "returns the context" do
840
- sorted.should eq(context)
897
+ expect(sorted).to eq(context)
841
898
  end
842
899
  end
843
900
 
@@ -853,11 +910,11 @@ describe Mongoid::Contextual::Memory do
853
910
  end
854
911
 
855
912
  it "sorts the documents" do
856
- context.entries.should eq([ friedel, hobrecht, pfluger ])
913
+ expect(context.entries).to eq([ friedel, hobrecht, pfluger ])
857
914
  end
858
915
 
859
916
  it "returns the context" do
860
- sorted.should eq(context)
917
+ expect(sorted).to eq(context)
861
918
  end
862
919
  end
863
920
  end
@@ -869,8 +926,13 @@ describe Mongoid::Contextual::Memory do
869
926
  Address.new(street: "lenau", number: 5, name: "lenau")
870
927
  end
871
928
 
929
+ let(:kampuchea_krom) do
930
+ Address.new(street: "kampuchea krom", number: 5, name: "kampuchea krom")
931
+ end
932
+
872
933
  before do
873
934
  criteria.documents.unshift(lenau)
935
+ criteria.documents.unshift(kampuchea_krom)
874
936
  end
875
937
 
876
938
  context "when the sort is ascending" do
@@ -880,11 +942,11 @@ describe Mongoid::Contextual::Memory do
880
942
  end
881
943
 
882
944
  it "sorts the documents" do
883
- context.entries.should eq([ friedel, lenau, pfluger, hobrecht ])
945
+ expect(context.entries).to eq([ friedel, kampuchea_krom, lenau, pfluger, hobrecht ])
884
946
  end
885
947
 
886
948
  it "returns the context" do
887
- sorted.should eq(context)
949
+ expect(sorted).to eq(context)
888
950
  end
889
951
  end
890
952
 
@@ -895,11 +957,11 @@ describe Mongoid::Contextual::Memory do
895
957
  end
896
958
 
897
959
  it "sorts the documents" do
898
- context.entries.should eq([ hobrecht, pfluger, lenau, friedel ])
960
+ expect(context.entries).to eq([ hobrecht, pfluger, lenau, kampuchea_krom, friedel ])
899
961
  end
900
962
 
901
963
  it "returns the context" do
902
- sorted.should eq(context)
964
+ expect(sorted).to eq(context)
903
965
  end
904
966
  end
905
967
  end
@@ -911,11 +973,11 @@ describe Mongoid::Contextual::Memory do
911
973
  end
912
974
 
913
975
  it "does not sort the documents" do
914
- context.entries.should eq([ hobrecht, friedel, pfluger ])
976
+ expect(context.entries).to eq([ hobrecht, friedel, pfluger ])
915
977
  end
916
978
 
917
979
  it "returns the context" do
918
- sorted.should eq(context)
980
+ expect(sorted).to eq(context)
919
981
  end
920
982
  end
921
983
 
@@ -926,7 +988,7 @@ describe Mongoid::Contextual::Memory do
926
988
  end
927
989
 
928
990
  it "sorts the documents" do
929
- context.entries.should eq([ friedel, hobrecht, pfluger ])
991
+ expect(context.entries).to eq([ friedel, hobrecht, pfluger ])
930
992
  end
931
993
  end
932
994
  end
@@ -968,29 +1030,29 @@ describe Mongoid::Contextual::Memory do
968
1030
  end
969
1031
 
970
1032
  it "updates the first matching document" do
971
- hobrecht.number.should eq(5)
1033
+ expect(hobrecht.number).to eq(5)
972
1034
  end
973
1035
 
974
1036
  it "does not update the last matching document" do
975
- friedel.number.should be_nil
1037
+ expect(friedel.number).to be_nil
976
1038
  end
977
1039
 
978
1040
  it "does not update non matching docs" do
979
- pfluger.number.should be_nil
1041
+ expect(pfluger.number).to be_nil
980
1042
  end
981
1043
 
982
1044
  context "when reloading the embedded documents" do
983
1045
 
984
1046
  it "updates the first matching document" do
985
- hobrecht.reload.number.should eq(5)
1047
+ expect(hobrecht.reload.number).to eq(5)
986
1048
  end
987
1049
 
988
1050
  it "updates the last matching document" do
989
- friedel.reload.number.should be_nil
1051
+ expect(friedel.reload.number).to be_nil
990
1052
  end
991
1053
 
992
1054
  it "does not update non matching docs" do
993
- pfluger.reload.number.should be_nil
1055
+ expect(pfluger.reload.number).to be_nil
994
1056
  end
995
1057
  end
996
1058
  end
@@ -998,7 +1060,7 @@ describe Mongoid::Contextual::Memory do
998
1060
  context "when no attributes are provided" do
999
1061
 
1000
1062
  it "returns false" do
1001
- context.update.should be_false
1063
+ expect(context.update).to be false
1002
1064
  end
1003
1065
  end
1004
1066
  end
@@ -1030,21 +1092,21 @@ describe Mongoid::Contextual::Memory do
1030
1092
  end
1031
1093
 
1032
1094
  it "updates the first matching document" do
1033
- work.number.should eq(5)
1095
+ expect(work.number).to eq(5)
1034
1096
  end
1035
1097
 
1036
1098
  it "does not update non matching docs" do
1037
- home.number.should be_nil
1099
+ expect(home.number).to be_nil
1038
1100
  end
1039
1101
 
1040
1102
  context "when reloading the embedded documents" do
1041
1103
 
1042
1104
  it "updates the first matching document" do
1043
- work.reload.number.should eq(5)
1105
+ expect(work.reload.number).to eq(5)
1044
1106
  end
1045
1107
 
1046
1108
  it "does not update non matching docs" do
1047
- home.reload.number.should be_nil
1109
+ expect(home.reload.number).to be_nil
1048
1110
  end
1049
1111
  end
1050
1112
  end
@@ -1052,7 +1114,7 @@ describe Mongoid::Contextual::Memory do
1052
1114
  context "when no attributes are provided" do
1053
1115
 
1054
1116
  it "returns false" do
1055
- context.update.should be_false
1117
+ expect(context.update).to be false
1056
1118
  end
1057
1119
  end
1058
1120
  end
@@ -1091,7 +1153,7 @@ describe Mongoid::Contextual::Memory do
1091
1153
  end
1092
1154
 
1093
1155
  it "returns false" do
1094
- context.update_all({}).should be_false
1156
+ expect(context.update_all({})).to be false
1095
1157
  end
1096
1158
  end
1097
1159
 
@@ -1114,15 +1176,15 @@ describe Mongoid::Contextual::Memory do
1114
1176
  end
1115
1177
 
1116
1178
  it "updates the first matching document" do
1117
- hobrecht.suite.should eq("10B")
1179
+ expect(hobrecht.suite).to eq("10B")
1118
1180
  end
1119
1181
 
1120
1182
  it "updates the last matching document" do
1121
- friedel.suite.should eq("10B")
1183
+ expect(friedel.suite).to eq("10B")
1122
1184
  end
1123
1185
 
1124
1186
  it "does not update non matching docs" do
1125
- pfluger.suite.should be_nil
1187
+ expect(pfluger.suite).to be_nil
1126
1188
  end
1127
1189
  end
1128
1190
 
@@ -1133,29 +1195,29 @@ describe Mongoid::Contextual::Memory do
1133
1195
  end
1134
1196
 
1135
1197
  it "updates the first matching document" do
1136
- hobrecht.number.should eq(5)
1198
+ expect(hobrecht.number).to eq(5)
1137
1199
  end
1138
1200
 
1139
1201
  it "updates the last matching document" do
1140
- friedel.number.should eq(5)
1202
+ expect(friedel.number).to eq(5)
1141
1203
  end
1142
1204
 
1143
1205
  it "does not update non matching docs" do
1144
- pfluger.number.should be_nil
1206
+ expect(pfluger.number).to be_nil
1145
1207
  end
1146
1208
 
1147
1209
  context "when reloading the embedded documents" do
1148
1210
 
1149
1211
  it "updates the first matching document" do
1150
- hobrecht.reload.number.should eq(5)
1212
+ expect(hobrecht.reload.number).to eq(5)
1151
1213
  end
1152
1214
 
1153
1215
  it "updates the last matching document" do
1154
- friedel.reload.number.should eq(5)
1216
+ expect(friedel.reload.number).to eq(5)
1155
1217
  end
1156
1218
 
1157
1219
  it "does not update non matching docs" do
1158
- pfluger.reload.number.should be_nil
1220
+ expect(pfluger.reload.number).to be_nil
1159
1221
  end
1160
1222
  end
1161
1223
 
@@ -1166,7 +1228,7 @@ describe Mongoid::Contextual::Memory do
1166
1228
  end
1167
1229
 
1168
1230
  it "does not error on the update" do
1169
- hobrecht.number.should eq(5)
1231
+ expect(hobrecht.number).to eq(5)
1170
1232
  end
1171
1233
  end
1172
1234
  end
@@ -1174,7 +1236,7 @@ describe Mongoid::Contextual::Memory do
1174
1236
  context "when no attributes are provided" do
1175
1237
 
1176
1238
  it "returns false" do
1177
- context.update_all.should be_false
1239
+ expect(context.update_all).to be false
1178
1240
  end
1179
1241
  end
1180
1242
  end
@@ -1206,21 +1268,21 @@ describe Mongoid::Contextual::Memory do
1206
1268
  end
1207
1269
 
1208
1270
  it "updates the first matching document" do
1209
- work.number.should eq(5)
1271
+ expect(work.number).to eq(5)
1210
1272
  end
1211
1273
 
1212
1274
  it "does not update non matching docs" do
1213
- home.number.should be_nil
1275
+ expect(home.number).to be_nil
1214
1276
  end
1215
1277
 
1216
1278
  context "when reloading the embedded documents" do
1217
1279
 
1218
1280
  it "updates the first matching document" do
1219
- work.reload.number.should eq(5)
1281
+ expect(work.reload.number).to eq(5)
1220
1282
  end
1221
1283
 
1222
1284
  it "does not update non matching docs" do
1223
- home.reload.number.should be_nil
1285
+ expect(home.reload.number).to be_nil
1224
1286
  end
1225
1287
  end
1226
1288
  end
@@ -1228,7 +1290,7 @@ describe Mongoid::Contextual::Memory do
1228
1290
  context "when no attributes are provided" do
1229
1291
 
1230
1292
  it "returns false" do
1231
- context.update_all.should be_false
1293
+ expect(context.update_all).to be false
1232
1294
  end
1233
1295
  end
1234
1296
  end