mongoid 3.1.7 → 4.0.0.alpha1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (521) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +317 -11
  3. data/README.md +4 -5
  4. data/lib/config/locales/en.yml +9 -12
  5. data/lib/mongoid.rb +6 -75
  6. data/lib/mongoid/atomic.rb +0 -11
  7. data/lib/mongoid/atomic/paths/embedded.rb +0 -30
  8. data/lib/mongoid/atomic/paths/root.rb +0 -13
  9. data/lib/mongoid/attributes.rb +30 -108
  10. data/lib/mongoid/attributes/dynamic.rb +154 -0
  11. data/lib/mongoid/attributes/nested.rb +82 -0
  12. data/lib/mongoid/attributes/processing.rb +13 -66
  13. data/lib/mongoid/{dirty.rb → changeable.rb} +5 -2
  14. data/lib/mongoid/composable.rb +104 -0
  15. data/lib/mongoid/config.rb +3 -9
  16. data/lib/mongoid/config/options.rb +1 -1
  17. data/lib/mongoid/contextual/aggregable/mongo.rb +5 -9
  18. data/lib/mongoid/contextual/atomic.rb +53 -53
  19. data/lib/mongoid/contextual/command.rb +26 -0
  20. data/lib/mongoid/contextual/map_reduce.rb +1 -1
  21. data/lib/mongoid/contextual/memory.rb +6 -5
  22. data/lib/mongoid/contextual/mongo.rb +59 -28
  23. data/lib/mongoid/contextual/text_search.rb +180 -0
  24. data/lib/mongoid/copyable.rb +2 -3
  25. data/lib/mongoid/criteria.rb +13 -33
  26. data/lib/mongoid/criteria/{#findable.rb# → findable.rb} +0 -2
  27. data/lib/mongoid/{criterion/inspection.rb → criteria/inspectable.rb} +2 -2
  28. data/lib/mongoid/{criterion → criteria}/marshalable.rb +3 -1
  29. data/lib/mongoid/{criterion → criteria}/modifiable.rb +1 -1
  30. data/lib/mongoid/{criterion/scoping.rb → criteria/scopable.rb} +2 -2
  31. data/lib/mongoid/document.rb +28 -12
  32. data/lib/mongoid/errors.rb +1 -1
  33. data/lib/mongoid/errors/document_not_found.rb +2 -1
  34. data/lib/mongoid/errors/invalid_value.rb +16 -0
  35. data/lib/mongoid/errors/mongoid_error.rb +1 -1
  36. data/lib/mongoid/extensions.rb +2 -7
  37. data/lib/mongoid/extensions/array.rb +2 -2
  38. data/lib/mongoid/extensions/boolean.rb +14 -17
  39. data/lib/mongoid/extensions/float.rb +1 -0
  40. data/lib/mongoid/extensions/hash.rb +1 -1
  41. data/lib/mongoid/extensions/object.rb +4 -4
  42. data/lib/mongoid/extensions/object_id.rb +5 -5
  43. data/lib/mongoid/extensions/range.rb +8 -2
  44. data/lib/mongoid/extensions/string.rb +5 -17
  45. data/lib/mongoid/extensions/time.rb +2 -2
  46. data/lib/mongoid/factory.rb +3 -3
  47. data/lib/mongoid/fields.rb +9 -8
  48. data/lib/mongoid/fields/foreign_key.rb +3 -3
  49. data/lib/mongoid/fields/standard.rb +4 -16
  50. data/lib/mongoid/fields/validators/macro.rb +11 -3
  51. data/lib/mongoid/{finders.rb → findable.rb} +6 -2
  52. data/lib/mongoid/{indexes.rb → indexable.rb} +50 -55
  53. data/lib/mongoid/indexable/specification.rb +104 -0
  54. data/lib/mongoid/{indexes → indexable}/validators/options.rb +2 -1
  55. data/lib/mongoid/{inspection.rb → inspectable.rb} +15 -11
  56. data/lib/mongoid/{callbacks.rb → interceptable.rb} +3 -52
  57. data/lib/mongoid/log_subscriber.rb +22 -0
  58. data/lib/mongoid/matchable.rb +152 -0
  59. data/lib/mongoid/{matchers → matchable}/all.rb +1 -1
  60. data/lib/mongoid/{matchers → matchable}/and.rb +2 -2
  61. data/lib/mongoid/{matchers → matchable}/default.rb +1 -1
  62. data/lib/mongoid/{matchers → matchable}/exists.rb +1 -1
  63. data/lib/mongoid/{matchers → matchable}/gt.rb +1 -1
  64. data/lib/mongoid/{matchers → matchable}/gte.rb +1 -1
  65. data/lib/mongoid/{matchers → matchable}/in.rb +2 -2
  66. data/lib/mongoid/{matchers → matchable}/lt.rb +1 -1
  67. data/lib/mongoid/{matchers → matchable}/lte.rb +1 -1
  68. data/lib/mongoid/{matchers → matchable}/ne.rb +1 -1
  69. data/lib/mongoid/{matchers → matchable}/nin.rb +3 -2
  70. data/lib/mongoid/{matchers → matchable}/or.rb +2 -2
  71. data/lib/mongoid/{matchers → matchable}/size.rb +1 -1
  72. data/lib/mongoid/persistable.rb +212 -0
  73. data/lib/mongoid/persistable/creatable.rb +188 -0
  74. data/lib/mongoid/persistable/deletable.rb +148 -0
  75. data/lib/mongoid/persistable/destroyable.rb +55 -0
  76. data/lib/mongoid/persistable/incrementable.rb +36 -0
  77. data/lib/mongoid/persistable/logical.rb +38 -0
  78. data/lib/mongoid/persistable/poppable.rb +39 -0
  79. data/lib/mongoid/persistable/pullable.rb +55 -0
  80. data/lib/mongoid/persistable/pushable.rb +62 -0
  81. data/lib/mongoid/persistable/renamable.rb +35 -0
  82. data/lib/mongoid/persistable/savable.rb +52 -0
  83. data/lib/mongoid/persistable/settable.rb +33 -0
  84. data/lib/mongoid/persistable/unsettable.rb +36 -0
  85. data/lib/mongoid/persistable/updatable.rb +151 -0
  86. data/lib/mongoid/persistable/upsertable.rb +55 -0
  87. data/lib/mongoid/positional.rb +71 -0
  88. data/lib/mongoid/railtie.rb +32 -45
  89. data/lib/mongoid/railties/database.rake +12 -6
  90. data/lib/mongoid/relations.rb +3 -3
  91. data/lib/mongoid/relations/accessors.rb +13 -46
  92. data/lib/mongoid/relations/auto_save.rb +15 -36
  93. data/lib/mongoid/relations/binding.rb +0 -23
  94. data/lib/mongoid/relations/bindings/embedded/many.rb +1 -3
  95. data/lib/mongoid/relations/bindings/referenced/in.rb +3 -8
  96. data/lib/mongoid/relations/bindings/referenced/many_to_many.rb +3 -1
  97. data/lib/mongoid/relations/builder.rb +1 -1
  98. data/lib/mongoid/relations/builders.rb +2 -2
  99. data/lib/mongoid/relations/builders/nested_attributes/many.rb +10 -13
  100. data/lib/mongoid/relations/builders/nested_attributes/one.rb +4 -5
  101. data/lib/mongoid/relations/builders/referenced/in.rb +1 -1
  102. data/lib/mongoid/relations/builders/referenced/many.rb +1 -2
  103. data/lib/mongoid/relations/builders/referenced/many_to_many.rb +1 -2
  104. data/lib/mongoid/relations/builders/referenced/one.rb +1 -1
  105. data/lib/mongoid/relations/cascading.rb +3 -5
  106. data/lib/mongoid/relations/constraint.rb +1 -1
  107. data/lib/mongoid/relations/conversions.rb +1 -1
  108. data/lib/mongoid/relations/counter_cache.rb +39 -15
  109. data/lib/mongoid/relations/eager.rb +47 -0
  110. data/lib/mongoid/relations/eager/base.rb +57 -0
  111. data/lib/mongoid/relations/eager/belongs_to.rb +30 -0
  112. data/lib/mongoid/relations/eager/has_and_belongs_to_many.rb +40 -0
  113. data/lib/mongoid/relations/eager/has_many.rb +37 -0
  114. data/lib/mongoid/relations/eager/has_one.rb +29 -0
  115. data/lib/mongoid/relations/embedded/batchable.rb +3 -4
  116. data/lib/mongoid/relations/embedded/many.rb +7 -27
  117. data/lib/mongoid/relations/macros.rb +2 -4
  118. data/lib/mongoid/relations/many.rb +30 -31
  119. data/lib/mongoid/relations/metadata.rb +6 -75
  120. data/lib/mongoid/relations/nested_builder.rb +2 -2
  121. data/lib/mongoid/relations/options.rb +1 -0
  122. data/lib/mongoid/relations/polymorphic.rb +0 -1
  123. data/lib/mongoid/relations/proxy.rb +10 -32
  124. data/lib/mongoid/relations/referenced/in.rb +2 -18
  125. data/lib/mongoid/relations/referenced/many.rb +9 -22
  126. data/lib/mongoid/relations/referenced/many_to_many.rb +10 -33
  127. data/lib/mongoid/relations/referenced/one.rb +2 -21
  128. data/lib/mongoid/relations/synchronization.rb +3 -3
  129. data/lib/mongoid/relations/touchable.rb +33 -0
  130. data/lib/mongoid/{reloading.rb → reloadable.rb} +6 -4
  131. data/lib/mongoid/{scoping.rb → scopable.rb} +26 -3
  132. data/lib/mongoid/selectable.rb +59 -0
  133. data/lib/mongoid/{serialization.rb → serializable.rb} +10 -1
  134. data/lib/mongoid/sessions.rb +37 -345
  135. data/lib/mongoid/sessions/factory.rb +2 -0
  136. data/lib/mongoid/sessions/options.rb +176 -0
  137. data/lib/mongoid/sessions/storage_options.rb +140 -0
  138. data/lib/mongoid/sessions/thread_options.rb +19 -0
  139. data/lib/mongoid/sessions/validators/storage.rb +15 -1
  140. data/lib/mongoid/{sharding.rb → shardable.rb} +5 -1
  141. data/lib/mongoid/support/query_counter.rb +23 -0
  142. data/lib/mongoid/threaded.rb +0 -110
  143. data/lib/mongoid/threaded/lifecycle.rb +0 -28
  144. data/lib/mongoid/timestamps/updated/short.rb +2 -2
  145. data/lib/mongoid/{hierarchy.rb → traversable.rb} +9 -5
  146. data/lib/mongoid/{validations.rb → validatable.rb} +23 -9
  147. data/lib/mongoid/{validations → validatable}/associated.rb +3 -1
  148. data/lib/mongoid/{validations → validatable}/format.rb +1 -1
  149. data/lib/mongoid/{validations → validatable}/length.rb +1 -1
  150. data/lib/mongoid/{validations → validatable}/localizable.rb +1 -1
  151. data/lib/mongoid/{validations → validatable}/macros.rb +4 -3
  152. data/lib/mongoid/{validations → validatable}/presence.rb +1 -1
  153. data/lib/mongoid/{validations → validatable}/queryable.rb +1 -2
  154. data/lib/mongoid/{validations → validatable}/uniqueness.rb +3 -3
  155. data/lib/mongoid/version.rb +1 -1
  156. data/lib/rails/generators/mongoid/config/templates/mongoid.yml +9 -13
  157. data/lib/rails/generators/mongoid/model/model_generator.rb +0 -1
  158. data/lib/rails/generators/mongoid/model/templates/model.rb.tt +0 -3
  159. data/lib/rails/generators/mongoid_generator.rb +3 -40
  160. data/lib/rails/mongoid.rb +59 -57
  161. data/lib/support/ruby_version.rb +1 -1
  162. data/spec/app/models/account.rb +2 -6
  163. data/spec/app/models/acolyte.rb +1 -0
  164. data/spec/app/models/actor.rb +0 -1
  165. data/spec/app/models/address.rb +6 -1
  166. data/spec/app/models/animal.rb +1 -1
  167. data/spec/app/models/appointment.rb +2 -2
  168. data/spec/app/models/article.rb +1 -4
  169. data/spec/app/models/audio.rb +5 -0
  170. data/spec/app/models/author.rb +0 -2
  171. data/spec/app/models/band.rb +3 -2
  172. data/spec/app/models/bar.rb +1 -0
  173. data/spec/app/models/book.rb +1 -0
  174. data/spec/app/models/building.rb +0 -2
  175. data/spec/app/models/building_address.rb +0 -2
  176. data/spec/app/models/bus.rb +1 -1
  177. data/spec/app/models/canvas.rb +1 -1
  178. data/spec/app/models/contractor.rb +0 -2
  179. data/spec/app/models/country_code.rb +1 -1
  180. data/spec/app/models/definition.rb +2 -2
  181. data/spec/app/models/dragon.rb +4 -0
  182. data/spec/app/models/drug.rb +1 -3
  183. data/spec/app/models/dungeon.rb +4 -0
  184. data/spec/app/models/filesystem.rb +1 -0
  185. data/spec/app/models/fish.rb +0 -1
  186. data/spec/app/models/fruits.rb +6 -0
  187. data/spec/app/models/game.rb +0 -2
  188. data/spec/app/models/house.rb +0 -2
  189. data/spec/app/models/item.rb +1 -5
  190. data/spec/app/models/jar.rb +1 -1
  191. data/spec/app/models/label.rb +4 -4
  192. data/spec/app/models/login.rb +1 -1
  193. data/spec/app/models/movie.rb +1 -0
  194. data/spec/app/models/name.rb +3 -3
  195. data/spec/app/models/note.rb +1 -1
  196. data/spec/app/models/oscar.rb +1 -1
  197. data/spec/app/models/parent_doc.rb +1 -1
  198. data/spec/app/models/person.rb +13 -8
  199. data/spec/app/models/phone.rb +1 -3
  200. data/spec/app/models/player.rb +1 -1
  201. data/spec/app/models/post.rb +2 -1
  202. data/spec/app/models/quiz.rb +0 -3
  203. data/spec/app/models/record.rb +5 -5
  204. data/spec/app/models/registry.rb +1 -1
  205. data/spec/app/models/server.rb +1 -1
  206. data/spec/app/models/service.rb +3 -3
  207. data/spec/app/models/sound.rb +5 -0
  208. data/spec/app/models/template.rb +1 -1
  209. data/spec/app/models/title.rb +0 -1
  210. data/spec/app/models/track.rb +5 -5
  211. data/spec/app/models/tree.rb +1 -1
  212. data/spec/app/models/video.rb +0 -4
  213. data/spec/app/models/wiki_page.rb +1 -4
  214. data/spec/app/models/word.rb +3 -0
  215. data/spec/app/models/word_origin.rb +1 -1
  216. data/spec/config/mongoid.yml +7 -8
  217. data/spec/helpers.rb +18 -0
  218. data/spec/mongoid/atomic/modifiers_spec.rb +22 -22
  219. data/spec/mongoid/atomic/paths/embedded/many_spec.rb +8 -49
  220. data/spec/mongoid/atomic/paths/embedded/one_spec.rb +7 -49
  221. data/spec/mongoid/atomic/paths/root_spec.rb +3 -61
  222. data/spec/mongoid/atomic/paths_spec.rb +19 -19
  223. data/spec/mongoid/atomic_spec.rb +19 -19
  224. data/spec/mongoid/{nested_attributes_spec.rb → attributes/nested_spec.rb} +335 -448
  225. data/spec/mongoid/attributes/readonly_spec.rb +16 -16
  226. data/spec/mongoid/attributes_spec.rb +188 -434
  227. data/spec/mongoid/{dirty_spec.rb → changeable_spec.rb} +117 -148
  228. data/spec/mongoid/{components_spec.rb → composable_spec.rb} +3 -3
  229. data/spec/mongoid/config/environment_spec.rb +3 -3
  230. data/spec/mongoid/config/options_spec.rb +6 -6
  231. data/spec/mongoid/config_spec.rb +24 -48
  232. data/spec/mongoid/contextual/aggregable/memory_spec.rb +12 -12
  233. data/spec/mongoid/contextual/aggregable/mongo_spec.rb +46 -38
  234. data/spec/mongoid/contextual/atomic_spec.rb +60 -56
  235. data/spec/mongoid/contextual/find_and_modify_spec.rb +14 -14
  236. data/spec/mongoid/contextual/geo_near_spec.rb +22 -22
  237. data/spec/mongoid/contextual/map_reduce_spec.rb +27 -27
  238. data/spec/mongoid/contextual/memory_spec.rb +94 -94
  239. data/spec/mongoid/contextual/mongo_spec.rb +225 -139
  240. data/spec/mongoid/contextual/text_search_spec.rb +207 -0
  241. data/spec/mongoid/copyable_spec.rb +56 -68
  242. data/spec/mongoid/criteria/findable_spec.rb +991 -0
  243. data/spec/mongoid/{criterion/inspection_spec.rb → criteria/inspectable_spec.rb} +5 -5
  244. data/spec/mongoid/{criterion → criteria}/marshalable_spec.rb +2 -2
  245. data/spec/mongoid/criteria/modifiable_spec.rb +1063 -0
  246. data/spec/mongoid/{criterion/scoping_spec.rb → criteria/scopable_spec.rb} +31 -31
  247. data/spec/mongoid/criteria_spec.rb +530 -2207
  248. data/spec/mongoid/document_spec.rb +166 -120
  249. data/spec/mongoid/equality_spec.rb +22 -22
  250. data/spec/mongoid/errors/ambiguous_relationship_spec.rb +3 -3
  251. data/spec/mongoid/errors/callback_spec.rb +3 -3
  252. data/spec/mongoid/errors/delete_restriction_spec.rb +3 -3
  253. data/spec/mongoid/errors/document_not_found_spec.rb +11 -11
  254. data/spec/mongoid/errors/eager_load_spec.rb +3 -3
  255. data/spec/mongoid/errors/invalid_collection_spec.rb +3 -3
  256. data/spec/mongoid/errors/invalid_config_option_spec.rb +3 -3
  257. data/spec/mongoid/errors/invalid_field_option_spec.rb +3 -3
  258. data/spec/mongoid/errors/invalid_field_spec.rb +3 -3
  259. data/spec/mongoid/errors/invalid_find_spec.rb +3 -3
  260. data/spec/mongoid/errors/invalid_includes_spec.rb +3 -3
  261. data/spec/mongoid/errors/invalid_index_spec.rb +3 -3
  262. data/spec/mongoid/errors/invalid_options_spec.rb +3 -3
  263. data/spec/mongoid/errors/invalid_path_spec.rb +3 -3
  264. data/spec/mongoid/errors/invalid_scope_spec.rb +3 -3
  265. data/spec/mongoid/errors/invalid_set_polymorphic_relation_spec.rb +3 -3
  266. data/spec/mongoid/errors/invalid_storage_options_spec.rb +3 -3
  267. data/spec/mongoid/errors/invalid_time_spec.rb +3 -3
  268. data/spec/mongoid/errors/inverse_not_found_spec.rb +3 -3
  269. data/spec/mongoid/errors/mixed_relations_spec.rb +3 -3
  270. data/spec/mongoid/errors/mixed_session_configuration_spec.rb +3 -3
  271. data/spec/mongoid/errors/mongoid_error_spec.rb +7 -7
  272. data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +3 -3
  273. data/spec/mongoid/errors/no_environment_spec.rb +3 -3
  274. data/spec/mongoid/errors/no_map_reduce_output_spec.rb +3 -3
  275. data/spec/mongoid/errors/no_metadata_spec.rb +3 -3
  276. data/spec/mongoid/errors/no_parent_spec.rb +3 -3
  277. data/spec/mongoid/errors/no_session_config_spec.rb +3 -3
  278. data/spec/mongoid/errors/no_session_database_spec.rb +3 -3
  279. data/spec/mongoid/errors/no_session_hosts_spec.rb +3 -3
  280. data/spec/mongoid/errors/no_sessions_config_spec.rb +3 -3
  281. data/spec/mongoid/errors/readonly_attribute_spec.rb +3 -3
  282. data/spec/mongoid/errors/scope_overwrite_spec.rb +3 -3
  283. data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +3 -3
  284. data/spec/mongoid/errors/unknown_attribute_spec.rb +5 -5
  285. data/spec/mongoid/errors/unsaved_document_spec.rb +3 -3
  286. data/spec/mongoid/errors/unsupported_javascript_spec.rb +3 -3
  287. data/spec/mongoid/errors/validations_spec.rb +7 -7
  288. data/spec/mongoid/extensions/array_spec.rb +61 -61
  289. data/spec/mongoid/extensions/big_decimal_spec.rb +11 -11
  290. data/spec/mongoid/extensions/binary_spec.rb +12 -12
  291. data/spec/mongoid/extensions/boolean_spec.rb +18 -18
  292. data/spec/mongoid/extensions/date_spec.rb +13 -13
  293. data/spec/mongoid/extensions/date_time_spec.rb +9 -9
  294. data/spec/mongoid/extensions/false_class_spec.rb +5 -5
  295. data/spec/mongoid/extensions/float_spec.rb +29 -15
  296. data/spec/mongoid/extensions/hash_spec.rb +29 -29
  297. data/spec/mongoid/extensions/integer_spec.rb +15 -15
  298. data/spec/mongoid/extensions/module_spec.rb +2 -2
  299. data/spec/mongoid/extensions/nil_class_spec.rb +1 -1
  300. data/spec/mongoid/extensions/object_id_spec.rb +134 -134
  301. data/spec/mongoid/extensions/object_spec.rb +26 -26
  302. data/spec/mongoid/extensions/range_spec.rb +61 -12
  303. data/spec/mongoid/extensions/regexp_spec.rb +4 -4
  304. data/spec/mongoid/extensions/set_spec.rb +4 -4
  305. data/spec/mongoid/extensions/string_spec.rb +35 -46
  306. data/spec/mongoid/extensions/symbol_spec.rb +9 -9
  307. data/spec/mongoid/extensions/time_spec.rb +49 -49
  308. data/spec/mongoid/extensions/time_with_zone_spec.rb +34 -34
  309. data/spec/mongoid/extensions/true_class_spec.rb +5 -5
  310. data/spec/mongoid/extensions_spec.rb +15 -0
  311. data/spec/mongoid/factory_spec.rb +15 -15
  312. data/spec/mongoid/fields/foreign_key_spec.rb +73 -66
  313. data/spec/mongoid/fields/internal/foreign_keys/array_spec.rb +15 -15
  314. data/spec/mongoid/fields/internal/foreign_keys/object_spec.rb +22 -22
  315. data/spec/mongoid/fields/localized_spec.rb +23 -23
  316. data/spec/mongoid/fields/standard_spec.rb +12 -12
  317. data/spec/mongoid/fields_spec.rb +168 -209
  318. data/spec/mongoid/{finders_spec.rb → findable_spec.rb} +62 -27
  319. data/spec/mongoid/indexable/specification_spec.rb +102 -0
  320. data/spec/mongoid/{indexes_spec.rb → indexable_spec.rb} +171 -51
  321. data/spec/mongoid/{inspection_spec.rb → inspectable_spec.rb} +6 -14
  322. data/spec/mongoid/{callbacks_spec.rb → interceptable_spec.rb} +105 -105
  323. data/spec/mongoid/log_subscriber_spec.rb +74 -0
  324. data/spec/mongoid/loggable_spec.rb +1 -1
  325. data/spec/mongoid/{matchers → matchable}/all_spec.rb +4 -4
  326. data/spec/mongoid/{matchers → matchable}/and_spec.rb +11 -11
  327. data/spec/mongoid/{matchers → matchable}/default_spec.rb +15 -15
  328. data/spec/mongoid/{matchers → matchable}/exists_spec.rb +5 -5
  329. data/spec/mongoid/{matchers → matchable}/gt_spec.rb +9 -8
  330. data/spec/mongoid/{matchers → matchable}/gte_spec.rb +7 -7
  331. data/spec/mongoid/matchable/in_spec.rb +49 -0
  332. data/spec/mongoid/{matchers → matchable}/lt_spec.rb +7 -7
  333. data/spec/mongoid/{matchers → matchable}/lte_spec.rb +7 -7
  334. data/spec/mongoid/{matchers → matchable}/ne_spec.rb +3 -3
  335. data/spec/mongoid/matchable/nin_spec.rb +48 -0
  336. data/spec/mongoid/{matchers → matchable}/or_spec.rb +6 -6
  337. data/spec/mongoid/{matchers → matchable}/size_spec.rb +3 -3
  338. data/spec/mongoid/{matchers_spec.rb → matchable_spec.rb} +41 -41
  339. data/spec/mongoid/persistable/creatable_spec.rb +512 -0
  340. data/spec/mongoid/persistable/deletable_spec.rb +205 -0
  341. data/spec/mongoid/persistable/destroyable_spec.rb +148 -0
  342. data/spec/mongoid/persistable/incrementable_spec.rb +173 -0
  343. data/spec/mongoid/persistable/logical_spec.rb +143 -0
  344. data/spec/mongoid/persistable/poppable_spec.rb +115 -0
  345. data/spec/mongoid/persistable/pullable_spec.rb +228 -0
  346. data/spec/mongoid/persistable/pushable_spec.rb +258 -0
  347. data/spec/mongoid/persistable/renamable_spec.rb +135 -0
  348. data/spec/mongoid/persistable/savable_spec.rb +432 -0
  349. data/spec/mongoid/persistable/settable_spec.rb +139 -0
  350. data/spec/mongoid/persistable/unsettable_spec.rb +155 -0
  351. data/spec/mongoid/persistable/updatable_spec.rb +558 -0
  352. data/spec/mongoid/persistable/upsertable_spec.rb +106 -0
  353. data/spec/mongoid/persistable_spec.rb +206 -0
  354. data/spec/mongoid/{atomic/positionable_spec.rb → positional_spec.rb} +19 -14
  355. data/spec/mongoid/railties/document_spec.rb +2 -2
  356. data/spec/mongoid/relations/accessors_spec.rb +53 -145
  357. data/spec/mongoid/relations/auto_save_spec.rb +36 -16
  358. data/spec/mongoid/relations/bindings/embedded/in_spec.rb +6 -6
  359. data/spec/mongoid/relations/bindings/embedded/many_spec.rb +2 -2
  360. data/spec/mongoid/relations/bindings/embedded/one_spec.rb +3 -3
  361. data/spec/mongoid/relations/bindings/referenced/in_spec.rb +12 -12
  362. data/spec/mongoid/relations/bindings/referenced/many_spec.rb +6 -6
  363. data/spec/mongoid/relations/bindings/referenced/many_to_many_spec.rb +9 -9
  364. data/spec/mongoid/relations/bindings/referenced/one_spec.rb +6 -6
  365. data/spec/mongoid/relations/builders/embedded/in_spec.rb +4 -4
  366. data/spec/mongoid/relations/builders/embedded/many_spec.rb +18 -18
  367. data/spec/mongoid/relations/builders/embedded/one_spec.rb +11 -11
  368. data/spec/mongoid/relations/builders/nested_attributes/many_spec.rb +12 -13
  369. data/spec/mongoid/relations/builders/nested_attributes/one_spec.rb +14 -14
  370. data/spec/mongoid/relations/builders/referenced/in_spec.rb +22 -33
  371. data/spec/mongoid/relations/builders/referenced/many_spec.rb +15 -15
  372. data/spec/mongoid/relations/builders/referenced/many_to_many_spec.rb +18 -18
  373. data/spec/mongoid/relations/builders/referenced/one_spec.rb +11 -24
  374. data/spec/mongoid/relations/builders_spec.rb +21 -21
  375. data/spec/mongoid/relations/cascading/delete_spec.rb +7 -7
  376. data/spec/mongoid/relations/cascading/destroy_spec.rb +2 -2
  377. data/spec/mongoid/relations/cascading/nullify_spec.rb +2 -2
  378. data/spec/mongoid/relations/cascading/restrict_spec.rb +3 -3
  379. data/spec/mongoid/relations/cascading_spec.rb +16 -16
  380. data/spec/mongoid/relations/constraint_spec.rb +8 -7
  381. data/spec/mongoid/relations/conversions_spec.rb +16 -14
  382. data/spec/mongoid/relations/counter_cache_spec.rb +85 -0
  383. data/spec/mongoid/relations/cyclic_spec.rb +18 -18
  384. data/spec/mongoid/relations/eager/belongs_to_spec.rb +154 -0
  385. data/spec/mongoid/relations/eager/has_and_belongs_to_many_spec.rb +143 -0
  386. data/spec/mongoid/relations/eager/has_many_spec.rb +207 -0
  387. data/spec/mongoid/relations/eager/has_one_spec.rb +163 -0
  388. data/spec/mongoid/relations/eager_spec.rb +228 -0
  389. data/spec/mongoid/relations/embedded/dirty_spec.rb +8 -8
  390. data/spec/mongoid/relations/embedded/in_spec.rb +55 -56
  391. data/spec/mongoid/relations/embedded/many_spec.rb +357 -367
  392. data/spec/mongoid/relations/embedded/one_spec.rb +98 -139
  393. data/spec/mongoid/relations/macros_spec.rb +108 -102
  394. data/spec/mongoid/relations/metadata_spec.rb +147 -241
  395. data/spec/mongoid/relations/options_spec.rb +1 -1
  396. data/spec/mongoid/relations/polymorphic_spec.rb +13 -17
  397. data/spec/mongoid/relations/proxy_spec.rb +2 -2
  398. data/spec/mongoid/relations/referenced/in_spec.rb +128 -303
  399. data/spec/mongoid/relations/referenced/many_spec.rb +379 -522
  400. data/spec/mongoid/relations/referenced/many_to_many_spec.rb +345 -417
  401. data/spec/mongoid/relations/referenced/one_spec.rb +148 -263
  402. data/spec/mongoid/relations/reflections_spec.rb +6 -6
  403. data/spec/mongoid/relations/synchronization_spec.rb +46 -50
  404. data/spec/mongoid/relations/targets/enumerable_spec.rb +116 -116
  405. data/spec/mongoid/relations/touchable_spec.rb +296 -0
  406. data/spec/mongoid/relations_spec.rb +16 -15
  407. data/spec/mongoid/{reloading_spec.rb → reloadable_spec.rb} +20 -60
  408. data/spec/mongoid/{scoping_spec.rb → scopable_spec.rb} +74 -126
  409. data/spec/mongoid/selectable_spec.rb +134 -0
  410. data/spec/mongoid/{serialization_spec.rb → serializable_spec.rb} +111 -82
  411. data/spec/mongoid/sessions/factory_spec.rb +49 -28
  412. data/spec/mongoid/sessions/mongo_uri_spec.rb +7 -7
  413. data/spec/mongoid/sessions/options_spec.rb +92 -0
  414. data/spec/mongoid/sessions_spec.rb +288 -177
  415. data/spec/mongoid/{sharding_spec.rb → shardable_spec.rb} +8 -8
  416. data/spec/mongoid/state_spec.rb +10 -10
  417. data/spec/mongoid/threaded_spec.rb +17 -70
  418. data/spec/mongoid/timestamps/created/short_spec.rb +6 -6
  419. data/spec/mongoid/timestamps/created_spec.rb +5 -5
  420. data/spec/mongoid/timestamps/updated/short_spec.rb +10 -10
  421. data/spec/mongoid/timestamps/updated_spec.rb +8 -12
  422. data/spec/mongoid/timestamps_spec.rb +7 -11
  423. data/spec/mongoid/{hierarchy_spec.rb → traversable_spec.rb} +19 -19
  424. data/spec/mongoid/{validations → validatable}/associated_spec.rb +18 -18
  425. data/spec/mongoid/{validations → validatable}/format_spec.rb +6 -6
  426. data/spec/mongoid/{validations → validatable}/length_spec.rb +7 -7
  427. data/spec/mongoid/{validations → validatable}/numericality_spec.rb +1 -1
  428. data/spec/mongoid/{validations → validatable}/presence_spec.rb +31 -38
  429. data/spec/mongoid/{validations → validatable}/uniqueness_spec.rb +126 -183
  430. data/spec/mongoid/{validations_spec.rb → validatable_spec.rb} +28 -28
  431. data/spec/mongoid_spec.rb +8 -8
  432. data/spec/rails/mongoid_spec.rb +72 -87
  433. data/spec/spec_helper.rb +19 -17
  434. metadata +261 -283
  435. data/lib/mongoid/atomic/positionable.rb +0 -73
  436. data/lib/mongoid/components.rb +0 -92
  437. data/lib/mongoid/config/inflections.rb +0 -6
  438. data/lib/mongoid/contextual/eager.rb +0 -158
  439. data/lib/mongoid/criterion/findable.rb +0 -179
  440. data/lib/mongoid/errors/versioning_not_on_root.rb +0 -23
  441. data/lib/mongoid/identity_map.rb +0 -163
  442. data/lib/mongoid/json.rb +0 -16
  443. data/lib/mongoid/matchers.rb +0 -32
  444. data/lib/mongoid/matchers/strategies.rb +0 -97
  445. data/lib/mongoid/multi_parameter_attributes.rb +0 -105
  446. data/lib/mongoid/nested_attributes.rb +0 -78
  447. data/lib/mongoid/observer.rb +0 -192
  448. data/lib/mongoid/paranoia.rb +0 -136
  449. data/lib/mongoid/persistence.rb +0 -357
  450. data/lib/mongoid/persistence/atomic.rb +0 -231
  451. data/lib/mongoid/persistence/atomic/add_to_set.rb +0 -47
  452. data/lib/mongoid/persistence/atomic/bit.rb +0 -35
  453. data/lib/mongoid/persistence/atomic/inc.rb +0 -45
  454. data/lib/mongoid/persistence/atomic/operation.rb +0 -154
  455. data/lib/mongoid/persistence/atomic/pop.rb +0 -32
  456. data/lib/mongoid/persistence/atomic/pull.rb +0 -32
  457. data/lib/mongoid/persistence/atomic/pull_all.rb +0 -32
  458. data/lib/mongoid/persistence/atomic/push.rb +0 -25
  459. data/lib/mongoid/persistence/atomic/push_all.rb +0 -25
  460. data/lib/mongoid/persistence/atomic/rename.rb +0 -30
  461. data/lib/mongoid/persistence/atomic/sets.rb +0 -28
  462. data/lib/mongoid/persistence/atomic/unset.rb +0 -27
  463. data/lib/mongoid/persistence/deletion.rb +0 -31
  464. data/lib/mongoid/persistence/insertion.rb +0 -38
  465. data/lib/mongoid/persistence/modification.rb +0 -35
  466. data/lib/mongoid/persistence/operations.rb +0 -214
  467. data/lib/mongoid/persistence/operations/embedded/insert.rb +0 -46
  468. data/lib/mongoid/persistence/operations/embedded/remove.rb +0 -43
  469. data/lib/mongoid/persistence/operations/insert.rb +0 -34
  470. data/lib/mongoid/persistence/operations/remove.rb +0 -33
  471. data/lib/mongoid/persistence/operations/update.rb +0 -59
  472. data/lib/mongoid/persistence/operations/upsert.rb +0 -28
  473. data/lib/mongoid/persistence/upsertion.rb +0 -31
  474. data/lib/mongoid/unit_of_work.rb +0 -61
  475. data/lib/mongoid/versioning.rb +0 -217
  476. data/lib/rack/mongoid.rb +0 -2
  477. data/lib/rack/mongoid/middleware/identity_map.rb +0 -39
  478. data/lib/rails/generators/mongoid/observer/observer_generator.rb +0 -17
  479. data/lib/rails/generators/mongoid/observer/templates/observer.rb.tt +0 -4
  480. data/spec/app/models/actor_observer.rb +0 -15
  481. data/spec/app/models/callback_recorder.rb +0 -25
  482. data/spec/app/models/draft.rb +0 -9
  483. data/spec/app/models/paranoid_phone.rb +0 -25
  484. data/spec/app/models/paranoid_post.rb +0 -36
  485. data/spec/app/models/phone_observer.rb +0 -6
  486. data/spec/mongoid/#atomic_spec.rb# +0 -365
  487. data/spec/mongoid/attributes/processing_spec.rb +0 -149
  488. data/spec/mongoid/criterion/destructive_spec.rb +0 -101
  489. data/spec/mongoid/criterion/modifiable_spec.rb +0 -409
  490. data/spec/mongoid/criterion/modification_spec.rb +0 -402
  491. data/spec/mongoid/errors/versioning_not_on_root_spec.rb +0 -29
  492. data/spec/mongoid/identity_map_spec.rb +0 -564
  493. data/spec/mongoid/json_spec.rb +0 -33
  494. data/spec/mongoid/matchers/in_spec.rb +0 -25
  495. data/spec/mongoid/matchers/nin_spec.rb +0 -25
  496. data/spec/mongoid/multi_parameter_attributes_spec.rb +0 -128
  497. data/spec/mongoid/observer_spec.rb +0 -290
  498. data/spec/mongoid/paranoia_spec.rb +0 -759
  499. data/spec/mongoid/persistence/atomic/add_to_set_spec.rb +0 -262
  500. data/spec/mongoid/persistence/atomic/bit_spec.rb +0 -88
  501. data/spec/mongoid/persistence/atomic/inc_spec.rb +0 -133
  502. data/spec/mongoid/persistence/atomic/pop_spec.rb +0 -111
  503. data/spec/mongoid/persistence/atomic/pull_all_spec.rb +0 -77
  504. data/spec/mongoid/persistence/atomic/pull_spec.rb +0 -80
  505. data/spec/mongoid/persistence/atomic/push_all_spec.rb +0 -77
  506. data/spec/mongoid/persistence/atomic/push_spec.rb +0 -77
  507. data/spec/mongoid/persistence/atomic/rename_spec.rb +0 -42
  508. data/spec/mongoid/persistence/atomic/sets_spec.rb +0 -154
  509. data/spec/mongoid/persistence/atomic/unset_spec.rb +0 -65
  510. data/spec/mongoid/persistence/atomic_spec.rb +0 -216
  511. data/spec/mongoid/persistence/operations/embedded/insert_spec.rb +0 -191
  512. data/spec/mongoid/persistence/operations/embedded/remove_spec.rb +0 -8
  513. data/spec/mongoid/persistence/operations/insert_spec.rb +0 -149
  514. data/spec/mongoid/persistence/operations/remove_spec.rb +0 -113
  515. data/spec/mongoid/persistence/operations/update_spec.rb +0 -141
  516. data/spec/mongoid/persistence/operations/upsert_spec.rb +0 -59
  517. data/spec/mongoid/persistence/operations_spec.rb +0 -313
  518. data/spec/mongoid/persistence_spec.rb +0 -2279
  519. data/spec/mongoid/unit_of_work_spec.rb +0 -196
  520. data/spec/mongoid/versioning_spec.rb +0 -540
  521. data/spec/rack/mongoid/middleware/identity_map_spec.rb +0 -72
@@ -21,7 +21,7 @@ describe Mongoid::Contextual::Mongo do
21
21
  end
22
22
 
23
23
  it "returns true" do
24
- context.send(method).should be_true
24
+ expect(context.send(method)).to be true
25
25
  end
26
26
  end
27
27
 
@@ -36,7 +36,7 @@ describe Mongoid::Contextual::Mongo do
36
36
  end
37
37
 
38
38
  it "returns false" do
39
- context.send(method).should be_false
39
+ expect(context.send(method)).to be false
40
40
  end
41
41
  end
42
42
  end
@@ -55,7 +55,7 @@ describe Mongoid::Contextual::Mongo do
55
55
  end
56
56
 
57
57
  it "returns true" do
58
- context.should be_cached
58
+ expect(context).to be_cached
59
59
  end
60
60
  end
61
61
 
@@ -70,7 +70,7 @@ describe Mongoid::Contextual::Mongo do
70
70
  end
71
71
 
72
72
  it "returns false" do
73
- context.should_not be_cached
73
+ expect(context).to_not be_cached
74
74
  end
75
75
  end
76
76
  end
@@ -96,7 +96,7 @@ describe Mongoid::Contextual::Mongo do
96
96
  end
97
97
 
98
98
  it "returns the number of documents that match" do
99
- context.count.should eq(1)
99
+ expect(context.count).to eq(1)
100
100
  end
101
101
  end
102
102
 
@@ -111,7 +111,7 @@ describe Mongoid::Contextual::Mongo do
111
111
  end
112
112
 
113
113
  it "returns the count cached value after first call" do
114
- 2.times { context.count.should eq(1) }
114
+ 2.times { expect(context.count).to eq(1) }
115
115
  end
116
116
  end
117
117
 
@@ -126,7 +126,7 @@ describe Mongoid::Contextual::Mongo do
126
126
  end
127
127
 
128
128
  it "returns the number of documents that match" do
129
- count.should eq(1)
129
+ expect(count).to eq(1)
130
130
  end
131
131
  end
132
132
 
@@ -143,7 +143,7 @@ describe Mongoid::Contextual::Mongo do
143
143
  end
144
144
 
145
145
  it "returns the number of documents that match" do
146
- count.should eq(1)
146
+ expect(count).to eq(1)
147
147
  end
148
148
 
149
149
  context "and a limit true" do
@@ -159,7 +159,7 @@ describe Mongoid::Contextual::Mongo do
159
159
  end
160
160
 
161
161
  it "returns the number of documents that match" do
162
- count.should eq(1)
162
+ expect(count).to eq(1)
163
163
  end
164
164
  end
165
165
  end
@@ -179,7 +179,7 @@ describe Mongoid::Contextual::Mongo do
179
179
  end
180
180
 
181
181
  it "returns the number of documents that match" do
182
- count.should eq(2)
182
+ expect(count).to eq(2)
183
183
  end
184
184
  end
185
185
  end
@@ -211,15 +211,15 @@ describe Mongoid::Contextual::Mongo do
211
211
  end
212
212
 
213
213
  it "deletes the matching documents" do
214
- Band.find(new_order.id).should eq(new_order)
214
+ expect(Band.find(new_order.id)).to eq(new_order)
215
215
  end
216
216
 
217
217
  it "deletes the correct number of documents" do
218
- Band.count.should eq(1)
218
+ expect(Band.count).to eq(1)
219
219
  end
220
220
 
221
221
  it "returns the number of documents deleted" do
222
- deleted.should eq(1)
222
+ expect(deleted).to eq(1)
223
223
  end
224
224
  end
225
225
 
@@ -238,7 +238,7 @@ describe Mongoid::Contextual::Mongo do
238
238
  end
239
239
 
240
240
  it "deletes all the documents" do
241
- Band.count.should eq(0)
241
+ expect(Band.count).to eq(0)
242
242
  end
243
243
  end
244
244
  end
@@ -271,15 +271,15 @@ describe Mongoid::Contextual::Mongo do
271
271
  end
272
272
 
273
273
  it "destroys the matching documents" do
274
- Band.find(new_order.id).should eq(new_order)
274
+ expect(Band.find(new_order.id)).to eq(new_order)
275
275
  end
276
276
 
277
277
  it "destroys the correct number of documents" do
278
- Band.count.should eq(1)
278
+ expect(Band.count).to eq(1)
279
279
  end
280
280
 
281
281
  it "returns the number of documents destroyed" do
282
- destroyed.should eq(1)
282
+ expect(destroyed).to eq(1)
283
283
  end
284
284
  end
285
285
 
@@ -298,7 +298,7 @@ describe Mongoid::Contextual::Mongo do
298
298
  end
299
299
 
300
300
  it "destroys all the documents" do
301
- Band.count.should eq(0)
301
+ expect(Band.count).to eq(0)
302
302
  end
303
303
  end
304
304
  end
@@ -322,7 +322,7 @@ describe Mongoid::Contextual::Mongo do
322
322
  end
323
323
 
324
324
  it "returns the distinct matching fields" do
325
- context.distinct(:name).should eq([ "Depeche Mode" ])
325
+ expect(context.distinct(:name)).to eq([ "Depeche Mode" ])
326
326
  end
327
327
  end
328
328
 
@@ -337,7 +337,7 @@ describe Mongoid::Contextual::Mongo do
337
337
  end
338
338
 
339
339
  it "returns the distinct field values" do
340
- context.distinct(:name).should eq([ "Depeche Mode", "New Order" ])
340
+ expect(context.distinct(:name)).to eq([ "Depeche Mode", "New Order" ])
341
341
  end
342
342
  end
343
343
 
@@ -352,7 +352,7 @@ describe Mongoid::Contextual::Mongo do
352
352
  end
353
353
 
354
354
  it "returns the distinct field values" do
355
- context.distinct(:years).should eq([ 30, 25 ])
355
+ expect(context.distinct(:years)).to eq([ 30, 25 ])
356
356
  end
357
357
  end
358
358
  end
@@ -375,18 +375,18 @@ describe Mongoid::Contextual::Mongo do
375
375
 
376
376
  it "yields mongoid documents to the block" do
377
377
  context.each do |doc|
378
- doc.should be_a(Mongoid::Document)
378
+ expect(doc).to be_a(Mongoid::Document)
379
379
  end
380
380
  end
381
381
 
382
382
  it "iterates over the matching documents" do
383
383
  context.each do |doc|
384
- doc.name.should eq("Depeche Mode")
384
+ expect(doc.name).to eq("Depeche Mode")
385
385
  end
386
386
  end
387
387
 
388
388
  it "returns self" do
389
- context.each{}.should be(context)
389
+ expect(context.each{}).to be(context)
390
390
  end
391
391
  end
392
392
 
@@ -397,7 +397,7 @@ describe Mongoid::Contextual::Mongo do
397
397
  end
398
398
 
399
399
  it "returns an enumerator" do
400
- enum.should be_a(Enumerator)
400
+ expect(enum).to be_a(Enumerator)
401
401
  end
402
402
 
403
403
  context "when iterating over the enumerator" do
@@ -406,7 +406,7 @@ describe Mongoid::Contextual::Mongo do
406
406
 
407
407
  it "yields mongoid documents to the block" do
408
408
  enum.each do |doc|
409
- doc.should be_a(Mongoid::Document)
409
+ expect(doc).to be_a(Mongoid::Document)
410
410
  end
411
411
  end
412
412
  end
@@ -414,7 +414,7 @@ describe Mongoid::Contextual::Mongo do
414
414
  context "when iterating with next" do
415
415
 
416
416
  it "yields mongoid documents" do
417
- enum.next.should be_a(Mongoid::Document)
417
+ expect(enum.next).to be_a(Mongoid::Document)
418
418
  end
419
419
  end
420
420
  end
@@ -461,7 +461,7 @@ describe Mongoid::Contextual::Mongo do
461
461
  end
462
462
 
463
463
  it "returns false" do
464
- context.should_not be_exists
464
+ expect(context).to_not be_exists
465
465
  end
466
466
  end
467
467
 
@@ -476,7 +476,30 @@ describe Mongoid::Contextual::Mongo do
476
476
  end
477
477
 
478
478
  it "returns true" do
479
- context.should be_exists
479
+ expect(context).to be_exists
480
+ end
481
+ end
482
+
483
+ context "when caching is not enabled" do
484
+
485
+ let(:criteria) do
486
+ Band.where(name: "Depeche Mode")
487
+ end
488
+
489
+ let(:context) do
490
+ described_class.new(criteria)
491
+ end
492
+
493
+ context "when exists? already called" do
494
+
495
+ before do
496
+ context.exists?
497
+ end
498
+
499
+ it "hits the database again" do
500
+ context.should_receive(:query).once.and_call_original
501
+ context.should be_exists
502
+ end
480
503
  end
481
504
  end
482
505
 
@@ -498,7 +521,7 @@ describe Mongoid::Contextual::Mongo do
498
521
 
499
522
  it "does not hit the database" do
500
523
  context.should_receive(:query).never
501
- context.should be_exists
524
+ expect(context).to be_exists
502
525
  end
503
526
  end
504
527
 
@@ -512,7 +535,7 @@ describe Mongoid::Contextual::Mongo do
512
535
 
513
536
  it "does not hit the database" do
514
537
  context.should_receive(:query).never
515
- context.should be_exists
538
+ expect(context).to be_exists
516
539
  end
517
540
  end
518
541
  end
@@ -530,7 +553,7 @@ describe Mongoid::Contextual::Mongo do
530
553
  end
531
554
 
532
555
  it "returns the criteria explain path" do
533
- context.explain["cursor"].should eq("BasicCursor")
556
+ expect(context.explain["cursor"]).to eq("BasicCursor")
534
557
  end
535
558
  end
536
559
 
@@ -561,11 +584,11 @@ describe Mongoid::Contextual::Mongo do
561
584
  end
562
585
 
563
586
  it "returns the first matching document" do
564
- result.should eq(depeche)
587
+ expect(result).to eq(depeche)
565
588
  end
566
589
 
567
590
  it "updates the document in the database" do
568
- depeche.reload.likes.should eq(1)
591
+ expect(depeche.reload.likes).to eq(1)
569
592
  end
570
593
  end
571
594
 
@@ -584,11 +607,11 @@ describe Mongoid::Contextual::Mongo do
584
607
  end
585
608
 
586
609
  it "returns the first matching document" do
587
- result.should eq(tool)
610
+ expect(result).to eq(tool)
588
611
  end
589
612
 
590
613
  it "updates the document in the database" do
591
- tool.reload.likes.should eq(1)
614
+ expect(tool.reload.likes).to eq(1)
592
615
  end
593
616
  end
594
617
 
@@ -607,15 +630,15 @@ describe Mongoid::Contextual::Mongo do
607
630
  end
608
631
 
609
632
  it "returns the first matching document" do
610
- result.should eq(depeche)
633
+ expect(result).to eq(depeche)
611
634
  end
612
635
 
613
636
  it "limits the returned fields" do
614
- result.name.should be_nil
637
+ expect(result.name).to be_nil
615
638
  end
616
639
 
617
640
  it "updates the document in the database" do
618
- depeche.reload.likes.should eq(1)
641
+ expect(depeche.reload.likes).to eq(1)
619
642
  end
620
643
  end
621
644
 
@@ -634,11 +657,11 @@ describe Mongoid::Contextual::Mongo do
634
657
  end
635
658
 
636
659
  it "returns the first matching document" do
637
- result.should eq(depeche)
660
+ expect(result).to eq(depeche)
638
661
  end
639
662
 
640
663
  it "returns the updated document" do
641
- result.likes.should eq(1)
664
+ expect(result.likes).to eq(1)
642
665
  end
643
666
  end
644
667
 
@@ -657,7 +680,7 @@ describe Mongoid::Contextual::Mongo do
657
680
  end
658
681
 
659
682
  it "returns the first matching document" do
660
- result.should eq(depeche)
683
+ expect(result).to eq(depeche)
661
684
  end
662
685
 
663
686
  it "deletes the document from the database" do
@@ -683,7 +706,7 @@ describe Mongoid::Contextual::Mongo do
683
706
  end
684
707
 
685
708
  it "returns nil" do
686
- result.should be_nil
709
+ expect(result).to be_nil
687
710
  end
688
711
  end
689
712
  end
@@ -711,7 +734,7 @@ describe Mongoid::Contextual::Mongo do
711
734
  end
712
735
 
713
736
  it "returns the first matching document" do
714
- context.send(method).should eq(depeche_mode)
737
+ expect(context.send(method)).to eq(depeche_mode)
715
738
  end
716
739
  end
717
740
 
@@ -728,15 +751,15 @@ describe Mongoid::Contextual::Mongo do
728
751
  context "when there is sort on the context" do
729
752
 
730
753
  it "follows the main sort" do
731
- context.send(method).should eq(new_order)
754
+ expect(context.send(method)).to eq(new_order)
732
755
  end
733
756
  end
734
757
 
735
758
  context "when subsequently calling #last" do
736
759
 
737
760
  it "returns the correnct document" do
738
- context.send(method).should eq(new_order)
739
- context.last.should eq(depeche_mode)
761
+ expect(context.send(method)).to eq(new_order)
762
+ expect(context.last).to eq(depeche_mode)
740
763
  end
741
764
  end
742
765
  end
@@ -754,15 +777,15 @@ describe Mongoid::Contextual::Mongo do
754
777
  context "when there is sort on the context" do
755
778
 
756
779
  it "follows the main sort" do
757
- context.send(method).should eq(new_order)
780
+ expect(context.send(method)).to eq(new_order)
758
781
  end
759
782
  end
760
783
 
761
784
  context "when subsequently calling #last" do
762
785
 
763
786
  it "returns the correnct document" do
764
- context.send(method).should eq(new_order)
765
- context.last.should eq(depeche_mode)
787
+ expect(context.send(method)).to eq(new_order)
788
+ expect(context.last).to eq(depeche_mode)
766
789
  end
767
790
  end
768
791
  end
@@ -783,6 +806,18 @@ describe Mongoid::Contextual::Mongo do
783
806
  context.to_a
784
807
  end
785
808
 
809
+ it "returns the first document without touching the database" do
810
+ context.should_receive(:query).never
811
+ expect(context.send(method)).to eq(depeche_mode)
812
+ end
813
+ end
814
+
815
+ context "when first method was called before" do
816
+
817
+ before do
818
+ context.first
819
+ end
820
+
786
821
  it "returns the first document without touching the database" do
787
822
  context.should_receive(:query).never
788
823
  context.send(method).should eq(depeche_mode)
@@ -803,23 +838,23 @@ describe Mongoid::Contextual::Mongo do
803
838
  end
804
839
 
805
840
  it "sets the criteria" do
806
- context.criteria.should eq(criteria)
841
+ expect(context.criteria).to eq(criteria)
807
842
  end
808
843
 
809
844
  it "sets the klass" do
810
- context.klass.should eq(Band)
845
+ expect(context.klass).to eq(Band)
811
846
  end
812
847
 
813
848
  it "sets the query" do
814
- context.query.should be_a(Moped::Query)
849
+ expect(context.query).to be_a(Moped::Query)
815
850
  end
816
851
 
817
852
  it "sets the query selector" do
818
- context.query.selector.should eq({ "name" => "Depeche Mode" })
853
+ expect(context.query.selector).to eq({ "name" => "Depeche Mode" })
819
854
  end
820
855
 
821
856
  it "sets timeout options" do
822
- context.query.operation.flags.should eq([ :no_cursor_timeout ])
857
+ expect(context.query.operation.flags).to eq([ :no_cursor_timeout ])
823
858
  end
824
859
  end
825
860
 
@@ -844,7 +879,7 @@ describe Mongoid::Contextual::Mongo do
844
879
  end
845
880
 
846
881
  it "returns the last matching document" do
847
- context.last.should eq(new_order)
882
+ expect(context.last).to eq(new_order)
848
883
  end
849
884
  end
850
885
 
@@ -867,7 +902,7 @@ describe Mongoid::Contextual::Mongo do
867
902
  end
868
903
 
869
904
  it "respects default scope" do
870
- context.last.should eq(palm)
905
+ expect(context.last).to eq(palm)
871
906
  end
872
907
  end
873
908
 
@@ -890,8 +925,8 @@ describe Mongoid::Contextual::Mongo do
890
925
  end
891
926
 
892
927
  it "returns the correnct document" do
893
- context.last.should eq(new_order)
894
- context.first.should eq(depeche_mode)
928
+ expect(context.last).to eq(new_order)
929
+ expect(context.first).to eq(depeche_mode)
895
930
  end
896
931
  end
897
932
  end
@@ -916,7 +951,7 @@ describe Mongoid::Contextual::Mongo do
916
951
  end
917
952
 
918
953
  it "returns the number of documents that match" do
919
- context.send(method).should eq(2)
954
+ expect(context.send(method)).to eq(2)
920
955
  end
921
956
 
922
957
  context "when calling more than once" do
@@ -926,7 +961,7 @@ describe Mongoid::Contextual::Mongo do
926
961
  end
927
962
 
928
963
  it "returns the cached value for subsequent calls" do
929
- 2.times { context.send(method).should eq(2) }
964
+ 2.times { expect(context.send(method)).to eq(2) }
930
965
  end
931
966
  end
932
967
 
@@ -938,7 +973,7 @@ describe Mongoid::Contextual::Mongo do
938
973
  end
939
974
 
940
975
  it "returns the cached value for all calls" do
941
- context.send(method).should eq(2)
976
+ expect(context.send(method)).to eq(2)
942
977
  end
943
978
 
944
979
  context "when the results have been iterated over multiple times" do
@@ -948,7 +983,7 @@ describe Mongoid::Contextual::Mongo do
948
983
  end
949
984
 
950
985
  it "resets the length on each full iteration" do
951
- context.should have(2).items
986
+ expect(context.size).to eq(2)
952
987
  end
953
988
  end
954
989
  end
@@ -965,7 +1000,7 @@ describe Mongoid::Contextual::Mongo do
965
1000
  end
966
1001
 
967
1002
  it "returns the number of documents that match" do
968
- context.send(method).should eq(1)
1003
+ expect(context.send(method)).to eq(1)
969
1004
  end
970
1005
 
971
1006
  context "when calling more than once" do
@@ -975,7 +1010,7 @@ describe Mongoid::Contextual::Mongo do
975
1010
  end
976
1011
 
977
1012
  it "returns the cached value for subsequent calls" do
978
- 2.times { context.send(method).should eq(1) }
1013
+ 2.times { expect(context.send(method)).to eq(1) }
979
1014
  end
980
1015
  end
981
1016
 
@@ -987,7 +1022,7 @@ describe Mongoid::Contextual::Mongo do
987
1022
  end
988
1023
 
989
1024
  it "returns the cached value for all calls" do
990
- context.send(method).should eq(1)
1025
+ expect(context.send(method)).to eq(1)
991
1026
  end
992
1027
 
993
1028
  context "when the results have been iterated over multiple times" do
@@ -997,7 +1032,7 @@ describe Mongoid::Contextual::Mongo do
997
1032
  end
998
1033
 
999
1034
  it "resets the length on each full iteration" do
1000
- context.should have(1).item
1035
+ expect(context.size).to eq(1)
1001
1036
  end
1002
1037
  end
1003
1038
  end
@@ -1024,7 +1059,7 @@ describe Mongoid::Contextual::Mongo do
1024
1059
  end
1025
1060
 
1026
1061
  it "limits the results" do
1027
- context.limit(1).entries.should eq([ depeche_mode ])
1062
+ expect(context.limit(1).entries).to eq([ depeche_mode ])
1028
1063
  end
1029
1064
  end
1030
1065
 
@@ -1051,14 +1086,14 @@ describe Mongoid::Contextual::Mongo do
1051
1086
  end
1052
1087
 
1053
1088
  it "performs mapping" do
1054
- context.map(:name).should eq ["Depeche Mode", "New Order"]
1089
+ expect(context.map(:name)).to eq ["Depeche Mode", "New Order"]
1055
1090
  end
1056
1091
  end
1057
1092
 
1058
1093
  context "when passed a block" do
1059
1094
 
1060
1095
  it "performs mapping" do
1061
- context.map(&:name).should eq ["Depeche Mode", "New Order"]
1096
+ expect(context.map(&:name)).to eq ["Depeche Mode", "New Order"]
1062
1097
  end
1063
1098
  end
1064
1099
  end
@@ -1106,52 +1141,52 @@ describe Mongoid::Contextual::Mongo do
1106
1141
  end
1107
1142
 
1108
1143
  it "returns the first aggregate result" do
1109
- results.should include(
1144
+ expect(results).to include(
1110
1145
  { "_id" => "Depeche Mode", "value" => { "likes" => 200 }}
1111
1146
  )
1112
1147
  end
1113
1148
 
1114
1149
  it "returns the second aggregate result" do
1115
- results.should include(
1150
+ expect(results).to include(
1116
1151
  { "_id" => "Tool", "value" => { "likes" => 100 }}
1117
1152
  )
1118
1153
  end
1119
1154
 
1120
1155
  it "returns the correct number of documents" do
1121
- results.count.should eq(2)
1156
+ expect(results.count).to eq(2)
1122
1157
  end
1123
1158
 
1124
1159
  it "contains the entire raw results" do
1125
- results["results"].should eq([
1160
+ expect(results["results"]).to eq([
1126
1161
  { "_id" => "Depeche Mode", "value" => { "likes" => 200 }},
1127
1162
  { "_id" => "Tool", "value" => { "likes" => 100 }}
1128
1163
  ])
1129
1164
  end
1130
1165
 
1131
1166
  it "contains the execution time" do
1132
- results.time.should_not be_nil
1167
+ expect(results.time).to_not be_nil
1133
1168
  end
1134
1169
 
1135
1170
  it "contains the count statistics" do
1136
- results["counts"].should eq({
1171
+ expect(results["counts"]).to eq({
1137
1172
  "input" => 2, "emit" => 2, "reduce" => 0, "output" => 2
1138
1173
  })
1139
1174
  end
1140
1175
 
1141
1176
  it "contains the input count" do
1142
- results.input.should eq(2)
1177
+ expect(results.input).to eq(2)
1143
1178
  end
1144
1179
 
1145
1180
  it "contains the emitted count" do
1146
- results.emitted.should eq(2)
1181
+ expect(results.emitted).to eq(2)
1147
1182
  end
1148
1183
 
1149
1184
  it "contains the reduced count" do
1150
- results.reduced.should eq(0)
1185
+ expect(results.reduced).to eq(0)
1151
1186
  end
1152
1187
 
1153
1188
  it "contains the output count" do
1154
- results.output.should eq(2)
1189
+ expect(results.output).to eq(2)
1155
1190
  end
1156
1191
  end
1157
1192
 
@@ -1170,45 +1205,45 @@ describe Mongoid::Contextual::Mongo do
1170
1205
  end
1171
1206
 
1172
1207
  it "includes the aggregate result" do
1173
- results.should include(
1208
+ expect(results).to include(
1174
1209
  { "_id" => "Depeche Mode", "value" => { "likes" => 200 }}
1175
1210
  )
1176
1211
  end
1177
1212
 
1178
1213
  it "returns the correct number of documents" do
1179
- results.count.should eq(1)
1214
+ expect(results.count).to eq(1)
1180
1215
  end
1181
1216
 
1182
1217
  it "contains the entire raw results" do
1183
- results["results"].should eq([
1218
+ expect(results["results"]).to eq([
1184
1219
  { "_id" => "Depeche Mode", "value" => { "likes" => 200 }}
1185
1220
  ])
1186
1221
  end
1187
1222
 
1188
1223
  it "contains the execution time" do
1189
- results.time.should_not be_nil
1224
+ expect(results.time).to_not be_nil
1190
1225
  end
1191
1226
 
1192
1227
  it "contains the count statistics" do
1193
- results["counts"].should eq({
1228
+ expect(results["counts"]).to eq({
1194
1229
  "input" => 1, "emit" => 1, "reduce" => 0, "output" => 1
1195
1230
  })
1196
1231
  end
1197
1232
 
1198
1233
  it "contains the input count" do
1199
- results.input.should eq(1)
1234
+ expect(results.input).to eq(1)
1200
1235
  end
1201
1236
 
1202
1237
  it "contains the emitted count" do
1203
- results.emitted.should eq(1)
1238
+ expect(results.emitted).to eq(1)
1204
1239
  end
1205
1240
 
1206
1241
  it "contains the reduced count" do
1207
- results.reduced.should eq(0)
1242
+ expect(results.reduced).to eq(0)
1208
1243
  end
1209
1244
 
1210
1245
  it "contains the output count" do
1211
- results.output.should eq(1)
1246
+ expect(results.output).to eq(1)
1212
1247
  end
1213
1248
  end
1214
1249
 
@@ -1232,23 +1267,23 @@ describe Mongoid::Contextual::Mongo do
1232
1267
  end
1233
1268
 
1234
1269
  it "returns the first aggregate result" do
1235
- results.should include(
1270
+ expect(results).to include(
1236
1271
  { "_id" => "Tool", "value" => { "likes" => 100 }}
1237
1272
  )
1238
1273
  end
1239
1274
 
1240
1275
  it "returns the second aggregate result" do
1241
- results.should include(
1276
+ expect(results).to include(
1242
1277
  { "_id" => "Depeche Mode", "value" => { "likes" => 200 }}
1243
1278
  )
1244
1279
  end
1245
1280
 
1246
1281
  it "returns the correct number of documents" do
1247
- results.count.should eq(2)
1282
+ expect(results.count).to eq(2)
1248
1283
  end
1249
1284
 
1250
1285
  it "contains the entire raw results" do
1251
- results["results"].should eq([
1286
+ expect(results["results"]).to eq([
1252
1287
  { "_id" => "Depeche Mode", "value" => { "likes" => 200 }},
1253
1288
  { "_id" => "Tool", "value" => { "likes" => 100 }}
1254
1289
  ])
@@ -1270,17 +1305,17 @@ describe Mongoid::Contextual::Mongo do
1270
1305
  end
1271
1306
 
1272
1307
  it "returns the first aggregate result" do
1273
- results.should include(
1308
+ expect(results).to include(
1274
1309
  { "_id" => "Depeche Mode", "value" => { "likes" => 200 }}
1275
1310
  )
1276
1311
  end
1277
1312
 
1278
1313
  it "returns the correct number of documents" do
1279
- results.count.should eq(1)
1314
+ expect(results.count).to eq(1)
1280
1315
  end
1281
1316
 
1282
1317
  it "contains the entire raw results" do
1283
- results["results"].should eq([
1318
+ expect(results["results"]).to eq([
1284
1319
  { "_id" => "Depeche Mode", "value" => { "likes" => 200 }}
1285
1320
  ])
1286
1321
  end
@@ -1301,11 +1336,11 @@ describe Mongoid::Contextual::Mongo do
1301
1336
  end
1302
1337
 
1303
1338
  it "returns the correct number of documents" do
1304
- results.count.should eq(1)
1339
+ expect(results.count).to eq(1)
1305
1340
  end
1306
1341
 
1307
1342
  it "contains the entire results" do
1308
- results.should eq([
1343
+ expect(results).to eq([
1309
1344
  { "_id" => "Depeche Mode", "value" => { "likes" => 200 }}
1310
1345
  ])
1311
1346
  end
@@ -1326,11 +1361,11 @@ describe Mongoid::Contextual::Mongo do
1326
1361
  end
1327
1362
 
1328
1363
  it "returns the correct number of documents" do
1329
- results.count.should eq(1)
1364
+ expect(results.count).to eq(1)
1330
1365
  end
1331
1366
 
1332
1367
  it "contains the entire results" do
1333
- results.should eq([
1368
+ expect(results).to eq([
1334
1369
  { "_id" => "Depeche Mode", "value" => { "likes" => 200 }}
1335
1370
  ])
1336
1371
  end
@@ -1351,11 +1386,11 @@ describe Mongoid::Contextual::Mongo do
1351
1386
  end
1352
1387
 
1353
1388
  it "returns the correct number of documents" do
1354
- results.count.should eq(1)
1389
+ expect(results.count).to eq(1)
1355
1390
  end
1356
1391
 
1357
1392
  it "contains the entire results" do
1358
- results.should eq([
1393
+ expect(results).to eq([
1359
1394
  { "_id" => "Depeche Mode", "value" => { "likes" => 200 }}
1360
1395
  ])
1361
1396
  end
@@ -1405,11 +1440,11 @@ describe Mongoid::Contextual::Mongo do
1405
1440
  end
1406
1441
 
1407
1442
  it "returns the correct number of documents" do
1408
- results.count.should eq(1)
1443
+ expect(results.count).to eq(1)
1409
1444
  end
1410
1445
 
1411
1446
  it "contains the entire results" do
1412
- results.should eq([
1447
+ expect(results).to eq([
1413
1448
  { "_id" => "Depeche Mode", "value" => { "likes" => 200, "extra" => true }}
1414
1449
  ])
1415
1450
  end
@@ -1435,7 +1470,7 @@ describe Mongoid::Contextual::Mongo do
1435
1470
  end
1436
1471
 
1437
1472
  it "limits the results" do
1438
- context.skip(1).entries.should eq([ new_order ])
1473
+ expect(context.skip(1).entries).to eq([ new_order ])
1439
1474
  end
1440
1475
  end
1441
1476
 
@@ -1460,11 +1495,11 @@ describe Mongoid::Contextual::Mongo do
1460
1495
  context "when providing a spec" do
1461
1496
 
1462
1497
  it "sorts the results" do
1463
- context.sort(name: -1).entries.should eq([ new_order, depeche_mode ])
1498
+ expect(context.sort(name: -1).entries).to eq([ new_order, depeche_mode ])
1464
1499
  end
1465
1500
 
1466
1501
  it "returns the context" do
1467
- context.sort(name: 1).should eq(context)
1502
+ expect(context.sort(name: 1)).to eq(context)
1468
1503
  end
1469
1504
  end
1470
1505
 
@@ -1477,7 +1512,58 @@ describe Mongoid::Contextual::Mongo do
1477
1512
  end
1478
1513
 
1479
1514
  it "sorts the results in memory" do
1480
- sorted.should eq([ new_order, depeche_mode ])
1515
+ expect(sorted).to eq([ new_order, depeche_mode ])
1516
+ end
1517
+ end
1518
+ end
1519
+
1520
+ describe "#text_search" do
1521
+
1522
+ let(:criteria) do
1523
+ Word.all
1524
+ end
1525
+
1526
+ let(:context) do
1527
+ described_class.new(criteria)
1528
+ end
1529
+
1530
+ before do
1531
+ Word.with(database: "admin").mongo_session.command(setParameter: 1, textSearchEnabled: true)
1532
+ Word.create_indexes
1533
+ Word.create!(name: "phase", origin: "latin")
1534
+ end
1535
+
1536
+ after(:all) do
1537
+ Word.remove_indexes
1538
+ end
1539
+
1540
+ context "when the search is projecting" do
1541
+
1542
+ let(:search) do
1543
+ context.text_search("phase").project(name: 1)
1544
+ end
1545
+
1546
+ let(:documents) do
1547
+ search.entries
1548
+ end
1549
+
1550
+ it "limits the fields to the projection" do
1551
+ expect(documents.first.origin).to be_nil
1552
+ end
1553
+ end
1554
+
1555
+ context "when the search is not projecting" do
1556
+
1557
+ let(:search) do
1558
+ context.text_search("phase")
1559
+ end
1560
+
1561
+ let(:documents) do
1562
+ search.entries
1563
+ end
1564
+
1565
+ it "returns all fields" do
1566
+ expect(documents.first.origin).to eq("latin")
1481
1567
  end
1482
1568
  end
1483
1569
  end
@@ -1529,11 +1615,11 @@ describe Mongoid::Contextual::Mongo do
1529
1615
  end
1530
1616
 
1531
1617
  it "updates only the first matching document" do
1532
- depeche_mode.reload.name.should eq("Smiths")
1618
+ expect(depeche_mode.reload.name).to eq("Smiths")
1533
1619
  end
1534
1620
 
1535
1621
  it "does not update the last matching document" do
1536
- new_order.reload.name.should eq("New Order")
1622
+ expect(new_order.reload.name).to eq("New Order")
1537
1623
  end
1538
1624
  end
1539
1625
 
@@ -1546,11 +1632,11 @@ describe Mongoid::Contextual::Mongo do
1546
1632
  end
1547
1633
 
1548
1634
  it "updates the first matching document" do
1549
- depeche_mode.reload.member_count.should eq(1)
1635
+ expect(depeche_mode.reload.member_count).to eq(1)
1550
1636
  end
1551
1637
 
1552
1638
  it "does not update the last matching document" do
1553
- new_order.reload.member_count.should be_nil
1639
+ expect(new_order.reload.member_count).to be_nil
1554
1640
  end
1555
1641
  end
1556
1642
 
@@ -1561,11 +1647,11 @@ describe Mongoid::Contextual::Mongo do
1561
1647
  end
1562
1648
 
1563
1649
  it "updates the first matching document" do
1564
- depeche_mode.reload.founded.should eq(Date.new(1979, 1, 1))
1650
+ expect(depeche_mode.reload.founded).to eq(Date.new(1979, 1, 1))
1565
1651
  end
1566
1652
 
1567
1653
  it "does not update the last matching document" do
1568
- new_order.reload.founded.should be_nil
1654
+ expect(new_order.reload.founded).to be_nil
1569
1655
  end
1570
1656
  end
1571
1657
  end
@@ -1582,11 +1668,11 @@ describe Mongoid::Contextual::Mongo do
1582
1668
  end
1583
1669
 
1584
1670
  it "updates the first matching document" do
1585
- depeche_mode.reload.name.should eq("Smiths")
1671
+ expect(depeche_mode.reload.name).to eq("Smiths")
1586
1672
  end
1587
1673
 
1588
1674
  it "does not update the last matching document" do
1589
- new_order.reload.name.should eq("New Order")
1675
+ expect(new_order.reload.name).to eq("New Order")
1590
1676
  end
1591
1677
  end
1592
1678
 
@@ -1597,11 +1683,11 @@ describe Mongoid::Contextual::Mongo do
1597
1683
  end
1598
1684
 
1599
1685
  it "updates the first matching document" do
1600
- depeche_mode.reload.member_count.should eq(1)
1686
+ expect(depeche_mode.reload.member_count).to eq(1)
1601
1687
  end
1602
1688
 
1603
1689
  it "does not update the last matching document" do
1604
- new_order.reload.member_count.should be_nil
1690
+ expect(new_order.reload.member_count).to be_nil
1605
1691
  end
1606
1692
  end
1607
1693
  end
@@ -1613,19 +1699,19 @@ describe Mongoid::Contextual::Mongo do
1613
1699
  end
1614
1700
 
1615
1701
  it "updates the first matching document's set" do
1616
- depeche_mode.reload.name.should eq("Smiths")
1702
+ expect(depeche_mode.reload.name).to eq("Smiths")
1617
1703
  end
1618
1704
 
1619
1705
  it "updates the first matching document's updates" do
1620
- depeche_mode.reload.likes.should eq(100)
1706
+ expect(depeche_mode.reload.likes).to eq(100)
1621
1707
  end
1622
1708
 
1623
1709
  it "does not update the last matching document's set" do
1624
- new_order.reload.name.should eq("New Order")
1710
+ expect(new_order.reload.name).to eq("New Order")
1625
1711
  end
1626
1712
 
1627
1713
  it "does not update the last matching document's updates" do
1628
- new_order.reload.likes.should be_nil
1714
+ expect(new_order.reload.likes).to be_nil
1629
1715
  end
1630
1716
  end
1631
1717
  end
@@ -1633,7 +1719,7 @@ describe Mongoid::Contextual::Mongo do
1633
1719
  context "when providing no attributes" do
1634
1720
 
1635
1721
  it "returns false" do
1636
- context.update.should be_false
1722
+ expect(context.update).to be false
1637
1723
  end
1638
1724
  end
1639
1725
  end
@@ -1665,15 +1751,15 @@ describe Mongoid::Contextual::Mongo do
1665
1751
  end
1666
1752
 
1667
1753
  it "updates the first matching document" do
1668
- depeche_mode.reload.name.should eq("Smiths")
1754
+ expect(depeche_mode.reload.name).to eq("Smiths")
1669
1755
  end
1670
1756
 
1671
1757
  it "does not clear out other attributes" do
1672
- depeche_mode.reload.origin.should eq("Essex")
1758
+ expect(depeche_mode.reload.origin).to eq("Essex")
1673
1759
  end
1674
1760
 
1675
1761
  it "updates the last matching document" do
1676
- new_order.reload.name.should eq("Smiths")
1762
+ expect(new_order.reload.name).to eq("Smiths")
1677
1763
  end
1678
1764
  end
1679
1765
 
@@ -1684,11 +1770,11 @@ describe Mongoid::Contextual::Mongo do
1684
1770
  end
1685
1771
 
1686
1772
  it "updates the first matching document" do
1687
- depeche_mode.reload.member_count.should eq(1)
1773
+ expect(depeche_mode.reload.member_count).to eq(1)
1688
1774
  end
1689
1775
 
1690
1776
  it "updates the last matching document" do
1691
- new_order.reload.member_count.should eq(1)
1777
+ expect(new_order.reload.member_count).to eq(1)
1692
1778
  end
1693
1779
  end
1694
1780
 
@@ -1699,11 +1785,11 @@ describe Mongoid::Contextual::Mongo do
1699
1785
  end
1700
1786
 
1701
1787
  it "updates the first matching document" do
1702
- depeche_mode.reload.years.should eq(100)
1788
+ expect(depeche_mode.reload.years).to eq(100)
1703
1789
  end
1704
1790
 
1705
1791
  it "updates the last matching document" do
1706
- new_order.reload.years.should eq(100)
1792
+ expect(new_order.reload.years).to eq(100)
1707
1793
  end
1708
1794
  end
1709
1795
  end
@@ -1719,11 +1805,11 @@ describe Mongoid::Contextual::Mongo do
1719
1805
  end
1720
1806
 
1721
1807
  it "updates the first matching document" do
1722
- depeche_mode.reload.name.should eq("Smiths")
1808
+ expect(depeche_mode.reload.name).to eq("Smiths")
1723
1809
  end
1724
1810
 
1725
1811
  it "updates the last matching document" do
1726
- new_order.reload.name.should eq("Smiths")
1812
+ expect(new_order.reload.name).to eq("Smiths")
1727
1813
  end
1728
1814
  end
1729
1815
 
@@ -1734,11 +1820,11 @@ describe Mongoid::Contextual::Mongo do
1734
1820
  end
1735
1821
 
1736
1822
  it "updates the first matching document" do
1737
- depeche_mode.reload.member_count.should eq(1)
1823
+ expect(depeche_mode.reload.member_count).to eq(1)
1738
1824
  end
1739
1825
 
1740
1826
  it "updates the last matching document" do
1741
- new_order.reload.member_count.should eq(1)
1827
+ expect(new_order.reload.member_count).to eq(1)
1742
1828
  end
1743
1829
  end
1744
1830
  end
@@ -1750,19 +1836,19 @@ describe Mongoid::Contextual::Mongo do
1750
1836
  end
1751
1837
 
1752
1838
  it "updates the first matching document's set" do
1753
- depeche_mode.reload.name.should eq("Smiths")
1839
+ expect(depeche_mode.reload.name).to eq("Smiths")
1754
1840
  end
1755
1841
 
1756
1842
  it "updates the first matching document's updates" do
1757
- depeche_mode.reload.likes.should eq(100)
1843
+ expect(depeche_mode.reload.likes).to eq(100)
1758
1844
  end
1759
1845
 
1760
1846
  it "updates the last matching document's set" do
1761
- new_order.reload.name.should eq("Smiths")
1847
+ expect(new_order.reload.name).to eq("Smiths")
1762
1848
  end
1763
1849
 
1764
1850
  it "updates the last matching document's updates" do
1765
- new_order.reload.likes.should eq(100)
1851
+ expect(new_order.reload.likes).to eq(100)
1766
1852
  end
1767
1853
  end
1768
1854
  end
@@ -1770,7 +1856,7 @@ describe Mongoid::Contextual::Mongo do
1770
1856
  context "when providing no attributes" do
1771
1857
 
1772
1858
  it "returns false" do
1773
- context.update_all.should be_false
1859
+ expect(context.update_all).to be false
1774
1860
  end
1775
1861
  end
1776
1862
  end