mongoid 3.1.7 → 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 (567) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +470 -9
  3. data/README.md +10 -7
  4. data/lib/config/locales/en.yml +34 -20
  5. data/lib/mongoid/atomic/paths/embedded/many.rb +1 -1
  6. data/lib/mongoid/atomic/paths/embedded/one.rb +1 -1
  7. data/lib/mongoid/atomic/paths/embedded.rb +0 -30
  8. data/lib/mongoid/atomic/paths/root.rb +0 -13
  9. data/lib/mongoid/atomic.rb +3 -14
  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/attributes.rb +63 -99
  14. data/lib/mongoid/{dirty.rb → changeable.rb} +32 -2
  15. data/lib/mongoid/composable.rb +105 -0
  16. data/lib/mongoid/config/options.rb +1 -1
  17. data/lib/mongoid/config.rb +3 -9
  18. data/lib/mongoid/contextual/aggregable/memory.rb +2 -2
  19. data/lib/mongoid/contextual/aggregable/mongo.rb +5 -9
  20. data/lib/mongoid/contextual/atomic.rb +53 -53
  21. data/lib/mongoid/contextual/geo_near.rb +1 -1
  22. data/lib/mongoid/contextual/map_reduce.rb +4 -2
  23. data/lib/mongoid/contextual/memory.rb +23 -11
  24. data/lib/mongoid/contextual/mongo.rb +75 -57
  25. data/lib/mongoid/contextual/none.rb +90 -0
  26. data/lib/mongoid/contextual/text_search.rb +178 -0
  27. data/lib/mongoid/contextual.rb +2 -0
  28. data/lib/mongoid/copyable.rb +2 -3
  29. data/lib/mongoid/{criterion → criteria}/findable.rb +7 -47
  30. data/lib/mongoid/{criterion/inspection.rb → criteria/inspectable.rb} +2 -2
  31. data/lib/mongoid/{criterion → criteria}/marshalable.rb +3 -1
  32. data/lib/mongoid/{criterion → criteria}/modifiable.rb +28 -8
  33. data/lib/mongoid/criteria/permission.rb +70 -0
  34. data/lib/mongoid/{criterion/scoping.rb → criteria/scopable.rb} +2 -2
  35. data/lib/mongoid/criteria.rb +39 -34
  36. data/lib/mongoid/document.rb +39 -24
  37. data/lib/mongoid/errors/document_not_destroyed.rb +25 -0
  38. data/lib/mongoid/errors/document_not_found.rb +2 -1
  39. data/lib/mongoid/errors/invalid_storage_options.rb +1 -1
  40. data/lib/mongoid/errors/invalid_storage_parent.rb +26 -0
  41. data/lib/mongoid/errors/invalid_value.rb +16 -0
  42. data/lib/mongoid/errors/mongoid_error.rb +1 -1
  43. data/lib/mongoid/errors/readonly_document.rb +24 -0
  44. data/lib/mongoid/errors.rb +4 -1
  45. data/lib/mongoid/extensions/array.rb +3 -3
  46. data/lib/mongoid/extensions/big_decimal.rb +1 -1
  47. data/lib/mongoid/extensions/boolean.rb +15 -17
  48. data/lib/mongoid/extensions/date.rb +1 -1
  49. data/lib/mongoid/extensions/date_time.rb +3 -3
  50. data/lib/mongoid/extensions/float.rb +2 -1
  51. data/lib/mongoid/extensions/hash.rb +3 -3
  52. data/lib/mongoid/extensions/integer.rb +1 -1
  53. data/lib/mongoid/extensions/object.rb +7 -7
  54. data/lib/mongoid/extensions/object_id.rb +5 -5
  55. data/lib/mongoid/extensions/range.rb +9 -3
  56. data/lib/mongoid/extensions/regexp.rb +1 -1
  57. data/lib/mongoid/extensions/set.rb +1 -1
  58. data/lib/mongoid/extensions/string.rb +6 -18
  59. data/lib/mongoid/extensions/symbol.rb +1 -1
  60. data/lib/mongoid/extensions/time.rb +3 -3
  61. data/lib/mongoid/extensions/time_with_zone.rb +1 -1
  62. data/lib/mongoid/extensions.rb +15 -7
  63. data/lib/mongoid/factory.rb +8 -6
  64. data/lib/mongoid/fields/foreign_key.rb +3 -3
  65. data/lib/mongoid/fields/localized.rb +1 -1
  66. data/lib/mongoid/fields/standard.rb +5 -17
  67. data/lib/mongoid/fields/validators/macro.rb +15 -5
  68. data/lib/mongoid/fields.rb +41 -8
  69. data/lib/mongoid/{finders.rb → findable.rb} +35 -7
  70. data/lib/mongoid/indexable/specification.rb +104 -0
  71. data/lib/mongoid/{indexes → indexable}/validators/options.rb +2 -1
  72. data/lib/mongoid/{indexes.rb → indexable.rb} +50 -55
  73. data/lib/mongoid/{inspection.rb → inspectable.rb} +15 -11
  74. data/lib/mongoid/{callbacks.rb → interceptable.rb} +30 -62
  75. data/lib/mongoid/log_subscriber.rb +55 -0
  76. data/lib/mongoid/{matchers → matchable}/all.rb +1 -1
  77. data/lib/mongoid/{matchers → matchable}/and.rb +2 -2
  78. data/lib/mongoid/{matchers → matchable}/default.rb +1 -1
  79. data/lib/mongoid/{matchers → matchable}/exists.rb +1 -1
  80. data/lib/mongoid/{matchers → matchable}/gt.rb +1 -1
  81. data/lib/mongoid/{matchers → matchable}/gte.rb +1 -1
  82. data/lib/mongoid/{matchers → matchable}/in.rb +2 -2
  83. data/lib/mongoid/{matchers → matchable}/lt.rb +1 -1
  84. data/lib/mongoid/{matchers → matchable}/lte.rb +1 -1
  85. data/lib/mongoid/{matchers → matchable}/ne.rb +1 -1
  86. data/lib/mongoid/{matchers → matchable}/nin.rb +3 -2
  87. data/lib/mongoid/{matchers → matchable}/or.rb +2 -2
  88. data/lib/mongoid/{matchers → matchable}/size.rb +1 -1
  89. data/lib/mongoid/matchable.rb +152 -0
  90. data/lib/mongoid/persistable/creatable.rb +189 -0
  91. data/lib/mongoid/persistable/deletable.rb +149 -0
  92. data/lib/mongoid/persistable/destroyable.rb +60 -0
  93. data/lib/mongoid/persistable/incrementable.rb +36 -0
  94. data/lib/mongoid/persistable/logical.rb +38 -0
  95. data/lib/mongoid/persistable/poppable.rb +39 -0
  96. data/lib/mongoid/persistable/pullable.rb +55 -0
  97. data/lib/mongoid/persistable/pushable.rb +62 -0
  98. data/lib/mongoid/persistable/renamable.rb +35 -0
  99. data/lib/mongoid/persistable/savable.rb +52 -0
  100. data/lib/mongoid/persistable/settable.rb +33 -0
  101. data/lib/mongoid/persistable/unsettable.rb +36 -0
  102. data/lib/mongoid/persistable/updatable.rb +153 -0
  103. data/lib/mongoid/persistable/upsertable.rb +55 -0
  104. data/lib/mongoid/persistable.rb +216 -0
  105. data/lib/mongoid/positional.rb +71 -0
  106. data/lib/mongoid/query_cache.rb +255 -0
  107. data/lib/mongoid/railtie.rb +34 -60
  108. data/lib/mongoid/railties/database.rake +9 -25
  109. data/lib/mongoid/relations/accessors.rb +15 -51
  110. data/lib/mongoid/relations/auto_save.rb +15 -36
  111. data/lib/mongoid/relations/binding.rb +2 -25
  112. data/lib/mongoid/relations/bindings/embedded/in.rb +1 -1
  113. data/lib/mongoid/relations/bindings/embedded/many.rb +1 -3
  114. data/lib/mongoid/relations/bindings/referenced/in.rb +3 -8
  115. data/lib/mongoid/relations/bindings/referenced/many_to_many.rb +4 -2
  116. data/lib/mongoid/relations/builder.rb +1 -1
  117. data/lib/mongoid/relations/builders/embedded/one.rb +1 -1
  118. data/lib/mongoid/relations/builders/nested_attributes/many.rb +10 -13
  119. data/lib/mongoid/relations/builders/nested_attributes/one.rb +5 -6
  120. data/lib/mongoid/relations/builders/referenced/in.rb +1 -1
  121. data/lib/mongoid/relations/builders/referenced/many.rb +1 -2
  122. data/lib/mongoid/relations/builders/referenced/many_to_many.rb +1 -2
  123. data/lib/mongoid/relations/builders/referenced/one.rb +1 -1
  124. data/lib/mongoid/relations/builders.rb +2 -2
  125. data/lib/mongoid/relations/cascading.rb +3 -5
  126. data/lib/mongoid/relations/constraint.rb +1 -1
  127. data/lib/mongoid/relations/conversions.rb +1 -1
  128. data/lib/mongoid/relations/counter_cache.rb +39 -15
  129. data/lib/mongoid/relations/eager/base.rb +149 -0
  130. data/lib/mongoid/relations/eager/belongs_to.rb +31 -0
  131. data/lib/mongoid/relations/eager/has_and_belongs_to_many.rb +47 -0
  132. data/lib/mongoid/relations/eager/has_many.rb +38 -0
  133. data/lib/mongoid/relations/eager/has_one.rb +30 -0
  134. data/lib/mongoid/relations/eager.rb +46 -0
  135. data/lib/mongoid/relations/embedded/batchable.rb +4 -5
  136. data/lib/mongoid/relations/embedded/in.rb +4 -4
  137. data/lib/mongoid/relations/embedded/many.rb +14 -32
  138. data/lib/mongoid/relations/embedded/one.rb +1 -1
  139. data/lib/mongoid/relations/macros.rb +3 -4
  140. data/lib/mongoid/relations/many.rb +51 -31
  141. data/lib/mongoid/relations/marshalable.rb +3 -3
  142. data/lib/mongoid/relations/metadata.rb +14 -79
  143. data/lib/mongoid/relations/nested_builder.rb +2 -2
  144. data/lib/mongoid/relations/one.rb +1 -1
  145. data/lib/mongoid/relations/options.rb +1 -0
  146. data/lib/mongoid/relations/polymorphic.rb +0 -1
  147. data/lib/mongoid/relations/proxy.rb +21 -41
  148. data/lib/mongoid/relations/referenced/in.rb +4 -20
  149. data/lib/mongoid/relations/referenced/many.rb +22 -35
  150. data/lib/mongoid/relations/referenced/many_to_many.rb +19 -42
  151. data/lib/mongoid/relations/referenced/one.rb +6 -25
  152. data/lib/mongoid/relations/synchronization.rb +4 -4
  153. data/lib/mongoid/relations/targets/enumerable.rb +10 -10
  154. data/lib/mongoid/relations/touchable.rb +34 -1
  155. data/lib/mongoid/relations.rb +11 -25
  156. data/lib/mongoid/{reloading.rb → reloadable.rb} +7 -5
  157. data/lib/mongoid/{scoping.rb → scopable.rb} +36 -36
  158. data/lib/mongoid/selectable.rb +59 -0
  159. data/lib/mongoid/{serialization.rb → serializable.rb} +11 -2
  160. data/lib/mongoid/sessions/factory.rb +2 -0
  161. data/lib/mongoid/sessions/options.rb +185 -0
  162. data/lib/mongoid/sessions/storage_options.rb +140 -0
  163. data/lib/mongoid/sessions/thread_options.rb +19 -0
  164. data/lib/mongoid/sessions/validators/storage.rb +16 -3
  165. data/lib/mongoid/sessions.rb +37 -345
  166. data/lib/mongoid/{sharding.rb → shardable.rb} +5 -1
  167. data/lib/mongoid/{state.rb → stateful.rb} +13 -1
  168. data/lib/mongoid/support/query_counter.rb +23 -0
  169. data/lib/mongoid/tasks/database.rake +31 -0
  170. data/lib/mongoid/tasks/database.rb +107 -0
  171. data/lib/mongoid/threaded/lifecycle.rb +0 -28
  172. data/lib/mongoid/threaded.rb +26 -172
  173. data/lib/mongoid/timestamps/updated/short.rb +2 -2
  174. data/lib/mongoid/{hierarchy.rb → traversable.rb} +15 -7
  175. data/lib/mongoid/{validations → validatable}/associated.rb +4 -2
  176. data/lib/mongoid/{validations → validatable}/format.rb +1 -1
  177. data/lib/mongoid/{validations → validatable}/length.rb +1 -1
  178. data/lib/mongoid/{validations → validatable}/localizable.rb +1 -1
  179. data/lib/mongoid/{validations → validatable}/macros.rb +4 -3
  180. data/lib/mongoid/{validations → validatable}/presence.rb +1 -1
  181. data/lib/mongoid/{validations → validatable}/queryable.rb +1 -2
  182. data/lib/mongoid/{validations → validatable}/uniqueness.rb +25 -21
  183. data/lib/mongoid/{validations.rb → validatable.rb} +23 -10
  184. data/lib/mongoid/version.rb +1 -1
  185. data/lib/mongoid.rb +10 -76
  186. data/lib/rails/generators/mongoid/config/templates/mongoid.yml +46 -25
  187. data/lib/rails/generators/mongoid/model/model_generator.rb +0 -1
  188. data/lib/rails/generators/mongoid/model/templates/model.rb.tt +0 -3
  189. data/lib/rails/generators/mongoid_generator.rb +3 -40
  190. data/lib/rails/mongoid.rb +0 -122
  191. data/lib/support/ruby_version.rb +1 -1
  192. data/spec/app/models/account.rb +2 -6
  193. data/spec/app/models/acolyte.rb +2 -1
  194. data/spec/app/models/actor.rb +0 -1
  195. data/spec/app/models/address.rb +8 -3
  196. data/spec/app/models/animal.rb +1 -1
  197. data/spec/app/models/appointment.rb +3 -3
  198. data/spec/app/models/article.rb +1 -4
  199. data/spec/app/models/audio.rb +5 -0
  200. data/spec/app/models/author.rb +0 -2
  201. data/spec/app/models/band.rb +3 -2
  202. data/spec/app/models/bar.rb +1 -0
  203. data/spec/app/models/book.rb +1 -0
  204. data/spec/app/models/building.rb +0 -2
  205. data/spec/app/models/building_address.rb +0 -2
  206. data/spec/app/models/bus.rb +1 -1
  207. data/spec/app/models/canvas.rb +1 -1
  208. data/spec/app/models/contextable_item.rb +5 -0
  209. data/spec/app/models/contractor.rb +0 -2
  210. data/spec/app/models/country_code.rb +1 -1
  211. data/spec/app/models/definition.rb +2 -2
  212. data/spec/app/models/dog.rb +1 -1
  213. data/spec/app/models/dragon.rb +4 -0
  214. data/spec/app/models/drug.rb +1 -3
  215. data/spec/app/models/dungeon.rb +4 -0
  216. data/spec/app/models/edit.rb +5 -0
  217. data/spec/app/models/even.rb +7 -0
  218. data/spec/app/models/event.rb +1 -1
  219. data/spec/app/models/filesystem.rb +1 -0
  220. data/spec/app/models/fish.rb +0 -1
  221. data/spec/app/models/fruits.rb +6 -0
  222. data/spec/app/models/game.rb +0 -2
  223. data/spec/app/models/house.rb +1 -3
  224. data/spec/app/models/id_key.rb +6 -0
  225. data/spec/app/models/item.rb +1 -5
  226. data/spec/app/models/jar.rb +1 -1
  227. data/spec/app/models/label.rb +4 -4
  228. data/spec/app/models/line_item.rb +1 -1
  229. data/spec/app/models/login.rb +1 -1
  230. data/spec/app/models/message.rb +8 -0
  231. data/spec/app/models/movie.rb +1 -0
  232. data/spec/app/models/name.rb +3 -3
  233. data/spec/app/models/note.rb +3 -1
  234. data/spec/app/models/odd.rb +7 -0
  235. data/spec/app/models/oscar.rb +1 -1
  236. data/spec/app/models/parent_doc.rb +1 -1
  237. data/spec/app/models/person.rb +16 -10
  238. data/spec/app/models/phone.rb +1 -3
  239. data/spec/app/models/player.rb +3 -3
  240. data/spec/app/models/post.rb +5 -3
  241. data/spec/app/models/preference.rb +1 -1
  242. data/spec/app/models/quiz.rb +0 -3
  243. data/spec/app/models/record.rb +10 -5
  244. data/spec/app/models/registry.rb +1 -1
  245. data/spec/app/models/server.rb +1 -1
  246. data/spec/app/models/service.rb +3 -3
  247. data/spec/app/models/sound.rb +5 -0
  248. data/spec/app/models/symptom.rb +1 -1
  249. data/spec/app/models/template.rb +1 -1
  250. data/spec/app/models/title.rb +0 -1
  251. data/spec/app/models/track.rb +5 -5
  252. data/spec/app/models/tree.rb +3 -3
  253. data/spec/app/models/video.rb +1 -5
  254. data/spec/app/models/wiki_page.rb +2 -5
  255. data/spec/app/models/word.rb +3 -0
  256. data/spec/app/models/word_origin.rb +1 -1
  257. data/spec/config/mongoid.yml +7 -8
  258. data/spec/helpers.rb +18 -0
  259. data/spec/mongoid/atomic/modifiers_spec.rb +22 -22
  260. data/spec/mongoid/atomic/paths/embedded/many_spec.rb +8 -49
  261. data/spec/mongoid/atomic/paths/embedded/one_spec.rb +7 -49
  262. data/spec/mongoid/atomic/paths/root_spec.rb +3 -61
  263. data/spec/mongoid/atomic/paths_spec.rb +19 -19
  264. data/spec/mongoid/atomic_spec.rb +19 -19
  265. data/spec/mongoid/{nested_attributes_spec.rb → attributes/nested_spec.rb} +474 -592
  266. data/spec/mongoid/attributes/readonly_spec.rb +58 -18
  267. data/spec/mongoid/attributes_spec.rb +334 -434
  268. data/spec/mongoid/{dirty_spec.rb → changeable_spec.rb} +203 -153
  269. data/spec/mongoid/{components_spec.rb → composable_spec.rb} +3 -3
  270. data/spec/mongoid/config/environment_spec.rb +3 -3
  271. data/spec/mongoid/config/options_spec.rb +6 -6
  272. data/spec/mongoid/config_spec.rb +24 -48
  273. data/spec/mongoid/contextual/aggregable/memory_spec.rb +12 -12
  274. data/spec/mongoid/contextual/aggregable/mongo_spec.rb +46 -38
  275. data/spec/mongoid/contextual/atomic_spec.rb +59 -55
  276. data/spec/mongoid/contextual/find_and_modify_spec.rb +14 -14
  277. data/spec/mongoid/contextual/geo_near_spec.rb +22 -22
  278. data/spec/mongoid/contextual/map_reduce_spec.rb +27 -27
  279. data/spec/mongoid/contextual/memory_spec.rb +156 -94
  280. data/spec/mongoid/contextual/mongo_spec.rb +238 -150
  281. data/spec/mongoid/contextual/none_spec.rb +127 -0
  282. data/spec/mongoid/contextual/text_search_spec.rb +209 -0
  283. data/spec/mongoid/copyable_spec.rb +56 -68
  284. data/spec/mongoid/criteria/findable_spec.rb +991 -0
  285. data/spec/mongoid/{criterion/inspection_spec.rb → criteria/inspectable_spec.rb} +5 -5
  286. data/spec/mongoid/{criterion → criteria}/marshalable_spec.rb +2 -2
  287. data/spec/mongoid/criteria/modifiable_spec.rb +1252 -0
  288. data/spec/mongoid/{criterion/scoping_spec.rb → criteria/scopable_spec.rb} +37 -37
  289. data/spec/mongoid/criteria_spec.rb +713 -2419
  290. data/spec/mongoid/document_spec.rb +171 -121
  291. data/spec/mongoid/equality_spec.rb +22 -22
  292. data/spec/mongoid/errors/ambiguous_relationship_spec.rb +3 -3
  293. data/spec/mongoid/errors/callback_spec.rb +3 -3
  294. data/spec/mongoid/errors/delete_restriction_spec.rb +3 -3
  295. data/spec/mongoid/errors/document_not_destroyed_spec.rb +33 -0
  296. data/spec/mongoid/errors/document_not_found_spec.rb +11 -11
  297. data/spec/mongoid/errors/eager_load_spec.rb +3 -3
  298. data/spec/mongoid/errors/invalid_collection_spec.rb +3 -3
  299. data/spec/mongoid/errors/invalid_config_option_spec.rb +3 -3
  300. data/spec/mongoid/errors/invalid_field_option_spec.rb +3 -3
  301. data/spec/mongoid/errors/invalid_field_spec.rb +3 -3
  302. data/spec/mongoid/errors/invalid_find_spec.rb +3 -3
  303. data/spec/mongoid/errors/invalid_includes_spec.rb +3 -3
  304. data/spec/mongoid/errors/invalid_index_spec.rb +3 -3
  305. data/spec/mongoid/errors/invalid_options_spec.rb +3 -3
  306. data/spec/mongoid/errors/invalid_path_spec.rb +3 -3
  307. data/spec/mongoid/errors/invalid_scope_spec.rb +5 -5
  308. data/spec/mongoid/errors/invalid_set_polymorphic_relation_spec.rb +3 -3
  309. data/spec/mongoid/errors/invalid_storage_options_spec.rb +3 -3
  310. data/spec/mongoid/errors/invalid_time_spec.rb +3 -3
  311. data/spec/mongoid/errors/inverse_not_found_spec.rb +3 -3
  312. data/spec/mongoid/errors/mixed_relations_spec.rb +3 -3
  313. data/spec/mongoid/errors/mixed_session_configuration_spec.rb +3 -3
  314. data/spec/mongoid/errors/mongoid_error_spec.rb +8 -8
  315. data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +3 -3
  316. data/spec/mongoid/errors/no_environment_spec.rb +3 -3
  317. data/spec/mongoid/errors/no_map_reduce_output_spec.rb +3 -3
  318. data/spec/mongoid/errors/no_metadata_spec.rb +3 -3
  319. data/spec/mongoid/errors/no_parent_spec.rb +3 -3
  320. data/spec/mongoid/errors/no_session_config_spec.rb +3 -3
  321. data/spec/mongoid/errors/no_session_database_spec.rb +3 -3
  322. data/spec/mongoid/errors/no_session_hosts_spec.rb +3 -3
  323. data/spec/mongoid/errors/no_sessions_config_spec.rb +3 -3
  324. data/spec/mongoid/errors/readonly_attribute_spec.rb +3 -3
  325. data/spec/mongoid/errors/readonly_document_spec.rb +29 -0
  326. data/spec/mongoid/errors/scope_overwrite_spec.rb +3 -3
  327. data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +3 -3
  328. data/spec/mongoid/errors/unknown_attribute_spec.rb +5 -5
  329. data/spec/mongoid/errors/unsaved_document_spec.rb +3 -3
  330. data/spec/mongoid/errors/unsupported_javascript_spec.rb +3 -3
  331. data/spec/mongoid/errors/validations_spec.rb +7 -7
  332. data/spec/mongoid/extensions/array_spec.rb +61 -61
  333. data/spec/mongoid/extensions/big_decimal_spec.rb +11 -11
  334. data/spec/mongoid/extensions/binary_spec.rb +12 -12
  335. data/spec/mongoid/extensions/boolean_spec.rb +18 -18
  336. data/spec/mongoid/extensions/date_spec.rb +13 -13
  337. data/spec/mongoid/extensions/date_time_spec.rb +8 -8
  338. data/spec/mongoid/extensions/false_class_spec.rb +5 -5
  339. data/spec/mongoid/extensions/float_spec.rb +29 -15
  340. data/spec/mongoid/extensions/hash_spec.rb +29 -29
  341. data/spec/mongoid/extensions/integer_spec.rb +15 -15
  342. data/spec/mongoid/extensions/module_spec.rb +2 -2
  343. data/spec/mongoid/extensions/nil_class_spec.rb +1 -1
  344. data/spec/mongoid/extensions/object_id_spec.rb +134 -134
  345. data/spec/mongoid/extensions/object_spec.rb +26 -26
  346. data/spec/mongoid/extensions/range_spec.rb +61 -12
  347. data/spec/mongoid/extensions/regexp_spec.rb +4 -4
  348. data/spec/mongoid/extensions/set_spec.rb +4 -4
  349. data/spec/mongoid/extensions/string_spec.rb +35 -46
  350. data/spec/mongoid/extensions/symbol_spec.rb +9 -9
  351. data/spec/mongoid/extensions/time_spec.rb +49 -49
  352. data/spec/mongoid/extensions/time_with_zone_spec.rb +34 -34
  353. data/spec/mongoid/extensions/true_class_spec.rb +5 -5
  354. data/spec/mongoid/extensions_spec.rb +29 -0
  355. data/spec/mongoid/factory_spec.rb +15 -15
  356. data/spec/mongoid/fields/foreign_key_spec.rb +73 -66
  357. data/spec/mongoid/fields/internal/foreign_keys/array_spec.rb +15 -15
  358. data/spec/mongoid/fields/internal/foreign_keys/object_spec.rb +22 -22
  359. data/spec/mongoid/fields/localized_spec.rb +38 -23
  360. data/spec/mongoid/fields/standard_spec.rb +12 -12
  361. data/spec/mongoid/fields_spec.rb +263 -217
  362. data/spec/mongoid/findable_spec.rb +509 -0
  363. data/spec/mongoid/indexable/specification_spec.rb +102 -0
  364. data/spec/mongoid/{indexes_spec.rb → indexable_spec.rb} +171 -51
  365. data/spec/mongoid/{inspection_spec.rb → inspectable_spec.rb} +6 -14
  366. data/spec/mongoid/{callbacks_spec.rb → interceptable_spec.rb} +117 -116
  367. data/spec/mongoid/log_subscriber_spec.rb +75 -0
  368. data/spec/mongoid/loggable_spec.rb +1 -1
  369. data/spec/mongoid/{matchers → matchable}/all_spec.rb +4 -4
  370. data/spec/mongoid/{matchers → matchable}/and_spec.rb +11 -11
  371. data/spec/mongoid/{matchers → matchable}/default_spec.rb +15 -15
  372. data/spec/mongoid/{matchers → matchable}/exists_spec.rb +5 -5
  373. data/spec/mongoid/{matchers → matchable}/gt_spec.rb +9 -8
  374. data/spec/mongoid/{matchers → matchable}/gte_spec.rb +7 -7
  375. data/spec/mongoid/matchable/in_spec.rb +49 -0
  376. data/spec/mongoid/{matchers → matchable}/lt_spec.rb +7 -7
  377. data/spec/mongoid/{matchers → matchable}/lte_spec.rb +7 -7
  378. data/spec/mongoid/{matchers → matchable}/ne_spec.rb +3 -3
  379. data/spec/mongoid/matchable/nin_spec.rb +48 -0
  380. data/spec/mongoid/{matchers → matchable}/or_spec.rb +6 -6
  381. data/spec/mongoid/{matchers → matchable}/size_spec.rb +3 -3
  382. data/spec/mongoid/{matchers_spec.rb → matchable_spec.rb} +41 -41
  383. data/spec/mongoid/persistable/creatable_spec.rb +553 -0
  384. data/spec/mongoid/persistable/deletable_spec.rb +218 -0
  385. data/spec/mongoid/persistable/destroyable_spec.rb +192 -0
  386. data/spec/mongoid/persistable/incrementable_spec.rb +173 -0
  387. data/spec/mongoid/persistable/logical_spec.rb +143 -0
  388. data/spec/mongoid/persistable/poppable_spec.rb +115 -0
  389. data/spec/mongoid/persistable/pullable_spec.rb +228 -0
  390. data/spec/mongoid/persistable/pushable_spec.rb +258 -0
  391. data/spec/mongoid/persistable/renamable_spec.rb +135 -0
  392. data/spec/mongoid/persistable/savable_spec.rb +498 -0
  393. data/spec/mongoid/persistable/settable_spec.rb +162 -0
  394. data/spec/mongoid/persistable/unsettable_spec.rb +155 -0
  395. data/spec/mongoid/persistable/updatable_spec.rb +558 -0
  396. data/spec/mongoid/persistable/upsertable_spec.rb +106 -0
  397. data/spec/mongoid/persistable_spec.rb +206 -0
  398. data/spec/mongoid/{atomic/positionable_spec.rb → positional_spec.rb} +9 -9
  399. data/spec/mongoid/query_cache_spec.rb +263 -0
  400. data/spec/mongoid/railties/document_spec.rb +2 -2
  401. data/spec/mongoid/relations/accessors_spec.rb +53 -145
  402. data/spec/mongoid/relations/auto_save_spec.rb +37 -17
  403. data/spec/mongoid/relations/bindings/embedded/in_spec.rb +12 -12
  404. data/spec/mongoid/relations/bindings/embedded/many_spec.rb +3 -3
  405. data/spec/mongoid/relations/bindings/embedded/one_spec.rb +5 -5
  406. data/spec/mongoid/relations/bindings/referenced/in_spec.rb +26 -26
  407. data/spec/mongoid/relations/bindings/referenced/many_spec.rb +10 -10
  408. data/spec/mongoid/relations/bindings/referenced/many_to_many_spec.rb +19 -19
  409. data/spec/mongoid/relations/bindings/referenced/one_spec.rb +12 -12
  410. data/spec/mongoid/relations/builders/embedded/in_spec.rb +4 -4
  411. data/spec/mongoid/relations/builders/embedded/many_spec.rb +18 -18
  412. data/spec/mongoid/relations/builders/embedded/one_spec.rb +11 -11
  413. data/spec/mongoid/relations/builders/nested_attributes/many_spec.rb +12 -13
  414. data/spec/mongoid/relations/builders/nested_attributes/one_spec.rb +14 -14
  415. data/spec/mongoid/relations/builders/referenced/in_spec.rb +24 -35
  416. data/spec/mongoid/relations/builders/referenced/many_spec.rb +15 -15
  417. data/spec/mongoid/relations/builders/referenced/many_to_many_spec.rb +18 -18
  418. data/spec/mongoid/relations/builders/referenced/one_spec.rb +12 -25
  419. data/spec/mongoid/relations/builders_spec.rb +21 -21
  420. data/spec/mongoid/relations/cascading/delete_spec.rb +9 -9
  421. data/spec/mongoid/relations/cascading/destroy_spec.rb +6 -6
  422. data/spec/mongoid/relations/cascading/nullify_spec.rb +4 -4
  423. data/spec/mongoid/relations/cascading/restrict_spec.rb +7 -7
  424. data/spec/mongoid/relations/cascading_spec.rb +16 -16
  425. data/spec/mongoid/relations/constraint_spec.rb +8 -7
  426. data/spec/mongoid/relations/conversions_spec.rb +16 -14
  427. data/spec/mongoid/relations/counter_cache_spec.rb +85 -0
  428. data/spec/mongoid/relations/cyclic_spec.rb +18 -18
  429. data/spec/mongoid/relations/eager/belongs_to_spec.rb +154 -0
  430. data/spec/mongoid/relations/eager/has_and_belongs_to_many_spec.rb +117 -0
  431. data/spec/mongoid/relations/eager/has_many_spec.rb +207 -0
  432. data/spec/mongoid/relations/eager/has_one_spec.rb +163 -0
  433. data/spec/mongoid/relations/eager_spec.rb +228 -0
  434. data/spec/mongoid/relations/embedded/dirty_spec.rb +8 -8
  435. data/spec/mongoid/relations/embedded/in_spec.rb +56 -57
  436. data/spec/mongoid/relations/embedded/many_spec.rb +467 -372
  437. data/spec/mongoid/relations/embedded/one_spec.rb +108 -141
  438. data/spec/mongoid/relations/macros_spec.rb +108 -102
  439. data/spec/mongoid/relations/metadata_spec.rb +180 -255
  440. data/spec/mongoid/relations/options_spec.rb +1 -1
  441. data/spec/mongoid/relations/polymorphic_spec.rb +13 -17
  442. data/spec/mongoid/relations/proxy_spec.rb +2 -2
  443. data/spec/mongoid/relations/referenced/in_spec.rb +128 -303
  444. data/spec/mongoid/relations/referenced/many_spec.rb +587 -527
  445. data/spec/mongoid/relations/referenced/many_to_many_spec.rb +401 -424
  446. data/spec/mongoid/relations/referenced/one_spec.rb +149 -264
  447. data/spec/mongoid/relations/reflections_spec.rb +6 -6
  448. data/spec/mongoid/relations/synchronization_spec.rb +46 -50
  449. data/spec/mongoid/relations/targets/enumerable_spec.rb +118 -118
  450. data/spec/mongoid/relations/touchable_spec.rb +333 -0
  451. data/spec/mongoid/relations_spec.rb +16 -15
  452. data/spec/mongoid/{reloading_spec.rb → reloadable_spec.rb} +38 -55
  453. data/spec/mongoid/{scoping_spec.rb → scopable_spec.rb} +89 -164
  454. data/spec/mongoid/selectable_spec.rb +134 -0
  455. data/spec/mongoid/{serialization_spec.rb → serializable_spec.rb} +129 -82
  456. data/spec/mongoid/sessions/factory_spec.rb +49 -28
  457. data/spec/mongoid/sessions/mongo_uri_spec.rb +7 -7
  458. data/spec/mongoid/sessions/options_spec.rb +108 -0
  459. data/spec/mongoid/sessions_spec.rb +319 -178
  460. data/spec/mongoid/{sharding_spec.rb → shardable_spec.rb} +8 -8
  461. data/spec/mongoid/{state_spec.rb → stateful_spec.rb} +36 -11
  462. data/spec/mongoid/tasks/database_rake_spec.rb +285 -0
  463. data/spec/mongoid/tasks/database_spec.rb +160 -0
  464. data/spec/mongoid/threaded_spec.rb +17 -70
  465. data/spec/mongoid/timestamps/created/short_spec.rb +6 -6
  466. data/spec/mongoid/timestamps/created_spec.rb +5 -5
  467. data/spec/mongoid/timestamps/timeless_spec.rb +6 -6
  468. data/spec/mongoid/timestamps/updated/short_spec.rb +11 -11
  469. data/spec/mongoid/timestamps/updated_spec.rb +9 -13
  470. data/spec/mongoid/timestamps_spec.rb +9 -13
  471. data/spec/mongoid/{hierarchy_spec.rb → traversable_spec.rb} +19 -19
  472. data/spec/mongoid/{validations → validatable}/associated_spec.rb +45 -22
  473. data/spec/mongoid/{validations → validatable}/format_spec.rb +6 -6
  474. data/spec/mongoid/{validations → validatable}/length_spec.rb +14 -14
  475. data/spec/mongoid/{validations → validatable}/numericality_spec.rb +1 -1
  476. data/spec/mongoid/{validations → validatable}/presence_spec.rb +37 -44
  477. data/spec/mongoid/{validations → validatable}/uniqueness_spec.rb +184 -192
  478. data/spec/mongoid/{validations_spec.rb → validatable_spec.rb} +28 -28
  479. data/spec/mongoid_spec.rb +8 -8
  480. data/spec/rails/mongoid_spec.rb +19 -350
  481. data/spec/spec_helper.rb +26 -15
  482. metadata +262 -247
  483. data/lib/mongoid/atomic/positionable.rb +0 -73
  484. data/lib/mongoid/components.rb +0 -92
  485. data/lib/mongoid/config/inflections.rb +0 -6
  486. data/lib/mongoid/contextual/eager.rb +0 -158
  487. data/lib/mongoid/errors/versioning_not_on_root.rb +0 -23
  488. data/lib/mongoid/identity_map.rb +0 -163
  489. data/lib/mongoid/json.rb +0 -16
  490. data/lib/mongoid/matchers/strategies.rb +0 -97
  491. data/lib/mongoid/matchers.rb +0 -32
  492. data/lib/mongoid/multi_parameter_attributes.rb +0 -105
  493. data/lib/mongoid/nested_attributes.rb +0 -78
  494. data/lib/mongoid/observer.rb +0 -192
  495. data/lib/mongoid/paranoia.rb +0 -136
  496. data/lib/mongoid/persistence/atomic/add_to_set.rb +0 -47
  497. data/lib/mongoid/persistence/atomic/bit.rb +0 -35
  498. data/lib/mongoid/persistence/atomic/inc.rb +0 -45
  499. data/lib/mongoid/persistence/atomic/operation.rb +0 -154
  500. data/lib/mongoid/persistence/atomic/pop.rb +0 -32
  501. data/lib/mongoid/persistence/atomic/pull.rb +0 -32
  502. data/lib/mongoid/persistence/atomic/pull_all.rb +0 -32
  503. data/lib/mongoid/persistence/atomic/push.rb +0 -25
  504. data/lib/mongoid/persistence/atomic/push_all.rb +0 -25
  505. data/lib/mongoid/persistence/atomic/rename.rb +0 -30
  506. data/lib/mongoid/persistence/atomic/sets.rb +0 -28
  507. data/lib/mongoid/persistence/atomic/unset.rb +0 -27
  508. data/lib/mongoid/persistence/atomic.rb +0 -231
  509. data/lib/mongoid/persistence/deletion.rb +0 -31
  510. data/lib/mongoid/persistence/insertion.rb +0 -38
  511. data/lib/mongoid/persistence/modification.rb +0 -35
  512. data/lib/mongoid/persistence/operations/embedded/insert.rb +0 -46
  513. data/lib/mongoid/persistence/operations/embedded/remove.rb +0 -43
  514. data/lib/mongoid/persistence/operations/insert.rb +0 -34
  515. data/lib/mongoid/persistence/operations/remove.rb +0 -33
  516. data/lib/mongoid/persistence/operations/update.rb +0 -59
  517. data/lib/mongoid/persistence/operations/upsert.rb +0 -28
  518. data/lib/mongoid/persistence/operations.rb +0 -214
  519. data/lib/mongoid/persistence/upsertion.rb +0 -31
  520. data/lib/mongoid/persistence.rb +0 -357
  521. data/lib/mongoid/unit_of_work.rb +0 -61
  522. data/lib/mongoid/versioning.rb +0 -217
  523. data/lib/rack/mongoid/middleware/identity_map.rb +0 -39
  524. data/lib/rack/mongoid.rb +0 -2
  525. data/lib/rails/generators/mongoid/observer/observer_generator.rb +0 -17
  526. data/lib/rails/generators/mongoid/observer/templates/observer.rb.tt +0 -4
  527. data/spec/app/models/actor_observer.rb +0 -15
  528. data/spec/app/models/callback_recorder.rb +0 -25
  529. data/spec/app/models/paranoid_phone.rb +0 -25
  530. data/spec/app/models/paranoid_post.rb +0 -36
  531. data/spec/app/models/phone_observer.rb +0 -6
  532. data/spec/mongoid/attributes/processing_spec.rb +0 -149
  533. data/spec/mongoid/criterion/destructive_spec.rb +0 -101
  534. data/spec/mongoid/criterion/modifiable_spec.rb +0 -409
  535. data/spec/mongoid/criterion/modification_spec.rb +0 -402
  536. data/spec/mongoid/errors/versioning_not_on_root_spec.rb +0 -29
  537. data/spec/mongoid/finders_spec.rb +0 -321
  538. data/spec/mongoid/identity_map_spec.rb +0 -564
  539. data/spec/mongoid/json_spec.rb +0 -33
  540. data/spec/mongoid/matchers/in_spec.rb +0 -25
  541. data/spec/mongoid/matchers/nin_spec.rb +0 -25
  542. data/spec/mongoid/multi_parameter_attributes_spec.rb +0 -128
  543. data/spec/mongoid/observer_spec.rb +0 -290
  544. data/spec/mongoid/paranoia_spec.rb +0 -759
  545. data/spec/mongoid/persistence/atomic/add_to_set_spec.rb +0 -262
  546. data/spec/mongoid/persistence/atomic/bit_spec.rb +0 -88
  547. data/spec/mongoid/persistence/atomic/inc_spec.rb +0 -133
  548. data/spec/mongoid/persistence/atomic/pop_spec.rb +0 -111
  549. data/spec/mongoid/persistence/atomic/pull_all_spec.rb +0 -77
  550. data/spec/mongoid/persistence/atomic/pull_spec.rb +0 -80
  551. data/spec/mongoid/persistence/atomic/push_all_spec.rb +0 -77
  552. data/spec/mongoid/persistence/atomic/push_spec.rb +0 -77
  553. data/spec/mongoid/persistence/atomic/rename_spec.rb +0 -42
  554. data/spec/mongoid/persistence/atomic/sets_spec.rb +0 -154
  555. data/spec/mongoid/persistence/atomic/unset_spec.rb +0 -65
  556. data/spec/mongoid/persistence/atomic_spec.rb +0 -216
  557. data/spec/mongoid/persistence/operations/embedded/insert_spec.rb +0 -191
  558. data/spec/mongoid/persistence/operations/embedded/remove_spec.rb +0 -8
  559. data/spec/mongoid/persistence/operations/insert_spec.rb +0 -149
  560. data/spec/mongoid/persistence/operations/remove_spec.rb +0 -113
  561. data/spec/mongoid/persistence/operations/update_spec.rb +0 -141
  562. data/spec/mongoid/persistence/operations/upsert_spec.rb +0 -59
  563. data/spec/mongoid/persistence/operations_spec.rb +0 -313
  564. data/spec/mongoid/persistence_spec.rb +0 -2279
  565. data/spec/mongoid/unit_of_work_spec.rb +0 -196
  566. data/spec/mongoid/versioning_spec.rb +0 -540
  567. data/spec/rack/mongoid/middleware/identity_map_spec.rb +0 -72
@@ -27,19 +27,19 @@ describe Mongoid::Contextual::Atomic do
27
27
  end
28
28
 
29
29
  before do
30
- context.add_to_set(:members, "Dave")
30
+ context.add_to_set(members: "Dave")
31
31
  end
32
32
 
33
33
  it "does not add duplicates" do
34
- depeche_mode.reload.members.should eq([ "Dave" ])
34
+ expect(depeche_mode.reload.members).to eq([ "Dave" ])
35
35
  end
36
36
 
37
37
  it "adds unique values" do
38
- new_order.reload.members.should eq([ "Peter", "Dave" ])
38
+ expect(new_order.reload.members).to eq([ "Peter", "Dave" ])
39
39
  end
40
40
 
41
41
  it "adds to non initialized fields" do
42
- smiths.reload.members.should eq([ "Dave" ])
42
+ expect(smiths.reload.members).to eq([ "Dave" ])
43
43
  end
44
44
  end
45
45
 
@@ -54,19 +54,23 @@ describe Mongoid::Contextual::Atomic do
54
54
  end
55
55
 
56
56
  before do
57
- context.add_to_set(:members, "Dave")
57
+ context.add_to_set(members: "Dave", genres: "Electro")
58
58
  end
59
59
 
60
60
  it "does not add duplicates" do
61
- depeche_mode.reload.members.should eq([ "Dave" ])
61
+ expect(depeche_mode.reload.members).to eq([ "Dave" ])
62
+ end
63
+
64
+ it "adds multiple operations" do
65
+ expect(depeche_mode.reload.genres).to eq([ "Electro" ])
62
66
  end
63
67
 
64
68
  it "adds unique values" do
65
- new_order.reload.members.should eq([ "Peter", "Dave" ])
69
+ expect(new_order.reload.members).to eq([ "Peter", "Dave" ])
66
70
  end
67
71
 
68
72
  it "adds to non initialized fields" do
69
- smiths.reload.members.should eq([ "Dave" ])
73
+ expect(smiths.reload.members).to eq([ "Dave" ])
70
74
  end
71
75
  end
72
76
  end
@@ -92,45 +96,45 @@ describe Mongoid::Contextual::Atomic do
92
96
  context "when performing a bitwise and" do
93
97
 
94
98
  before do
95
- context.bit(:likes, { and: 13 })
99
+ context.bit(likes: { and: 13 })
96
100
  end
97
101
 
98
102
  it "performs the bitwise operation on initialized fields" do
99
- depeche_mode.reload.likes.should eq(12)
103
+ expect(depeche_mode.reload.likes).to eq(12)
100
104
  end
101
105
 
102
106
  it "does not error on non initialized fields" do
103
- smiths.reload.likes.should eq(0)
107
+ expect(smiths.reload.likes).to eq(0)
104
108
  end
105
109
  end
106
110
 
107
111
  context "when performing a bitwise or" do
108
112
 
109
113
  before do
110
- context.bit(:likes, { or: 13 })
114
+ context.bit(likes: { or: 13 })
111
115
  end
112
116
 
113
117
  it "performs the bitwise operation on initialized fields" do
114
- depeche_mode.reload.likes.should eq(61)
118
+ expect(depeche_mode.reload.likes).to eq(61)
115
119
  end
116
120
 
117
121
  it "does not error on non initialized fields" do
118
- smiths.reload.likes.should eq(13)
122
+ expect(smiths.reload.likes).to eq(13)
119
123
  end
120
124
  end
121
125
 
122
126
  context "when chaining bitwise operations" do
123
127
 
124
128
  before do
125
- context.bit(:likes, { and: 13, or: 10 })
129
+ context.bit(likes: { and: 13, or: 10 })
126
130
  end
127
131
 
128
132
  it "performs the bitwise operation on initialized fields" do
129
- depeche_mode.reload.likes.should eq(14)
133
+ expect(depeche_mode.reload.likes).to eq(14)
130
134
  end
131
135
 
132
136
  it "does not error on non initialized fields" do
133
- smiths.reload.likes.should eq(10)
137
+ expect(smiths.reload.likes).to eq(10)
134
138
  end
135
139
  end
136
140
  end if mongodb_version > "2.5"
@@ -158,35 +162,35 @@ describe Mongoid::Contextual::Atomic do
158
162
  end
159
163
 
160
164
  before do
161
- context.inc(:likes, 10)
165
+ context.inc(likes: 10)
162
166
  end
163
167
 
164
168
  context "when the field exists" do
165
169
 
166
170
  it "incs the value" do
167
- depeche_mode.reload.likes.should eq(70)
171
+ expect(depeche_mode.reload.likes).to eq(70)
168
172
  end
169
173
  end
170
174
 
171
175
  context "when the field does not exist" do
172
176
 
173
177
  it "does not error on the inc" do
174
- smiths.likes.should be_nil
178
+ expect(smiths.likes).to be_nil
175
179
  end
176
180
  end
177
181
 
178
182
  context "when using the alias" do
179
183
 
180
184
  before do
181
- context.inc(:years, 1)
185
+ context.inc(years: 1)
182
186
  end
183
187
 
184
188
  it "incs the value and read from alias" do
185
- beatles.reload.years.should eq(3)
189
+ expect(beatles.reload.years).to eq(3)
186
190
  end
187
191
 
188
192
  it "incs the value and read from field" do
189
- beatles.reload.y.should eq(3)
193
+ expect(beatles.reload.y).to eq(3)
190
194
  end
191
195
  end
192
196
  end
@@ -212,30 +216,30 @@ describe Mongoid::Contextual::Atomic do
212
216
  context "when popping from the front" do
213
217
 
214
218
  before do
215
- context.pop(:members, -1)
219
+ context.pop(members: -1)
216
220
  end
217
221
 
218
222
  it "pops the first element off the array" do
219
- depeche_mode.reload.members.should eq([ "Martin" ])
223
+ expect(depeche_mode.reload.members).to eq([ "Martin" ])
220
224
  end
221
225
 
222
226
  it "does not error on uninitialized fields" do
223
- smiths.reload.members.should be_nil
227
+ expect(smiths.reload.members).to be_nil
224
228
  end
225
229
  end
226
230
 
227
231
  context "when popping from the rear" do
228
232
 
229
233
  before do
230
- context.pop(:members, 1)
234
+ context.pop(members: 1)
231
235
  end
232
236
 
233
237
  it "pops the last element off the array" do
234
- depeche_mode.reload.members.should eq([ "Dave" ])
238
+ expect(depeche_mode.reload.members).to eq([ "Dave" ])
235
239
  end
236
240
 
237
241
  it "does not error on uninitialized fields" do
238
- smiths.reload.members.should be_nil
242
+ expect(smiths.reload.members).to be_nil
239
243
  end
240
244
  end
241
245
  end
@@ -259,15 +263,15 @@ describe Mongoid::Contextual::Atomic do
259
263
  end
260
264
 
261
265
  before do
262
- context.pull(:members, "Alan")
266
+ context.pull(members: "Alan")
263
267
  end
264
268
 
265
269
  it "pulls when the value is found" do
266
- depeche_mode.reload.members.should eq([ "Dave" ])
270
+ expect(depeche_mode.reload.members).to eq([ "Dave" ])
267
271
  end
268
272
 
269
273
  it "does not error on non existant fields" do
270
- smiths.reload.members.should be_nil
274
+ expect(smiths.reload.members).to be_nil
271
275
  end
272
276
  end
273
277
 
@@ -290,15 +294,15 @@ describe Mongoid::Contextual::Atomic do
290
294
  end
291
295
 
292
296
  before do
293
- context.pull_all(:members, [ "Alan", "Dave" ])
297
+ context.pull_all(members: [ "Alan", "Dave" ])
294
298
  end
295
299
 
296
300
  it "pulls when the values are found" do
297
- depeche_mode.reload.members.should eq([ "Fletch" ])
301
+ expect(depeche_mode.reload.members).to eq([ "Fletch" ])
298
302
  end
299
303
 
300
304
  it "does not error on non existant fields" do
301
- smiths.reload.members.should be_nil
305
+ expect(smiths.reload.members).to be_nil
302
306
  end
303
307
  end
304
308
 
@@ -321,15 +325,15 @@ describe Mongoid::Contextual::Atomic do
321
325
  end
322
326
 
323
327
  before do
324
- context.push(:members, "Alan")
328
+ context.push(members: "Alan")
325
329
  end
326
330
 
327
331
  it "pushes the value to existing arrays" do
328
- depeche_mode.reload.members.should eq([ "Dave", "Alan" ])
332
+ expect(depeche_mode.reload.members).to eq([ "Dave", "Alan" ])
329
333
  end
330
334
 
331
335
  it "pushes to non existant fields" do
332
- smiths.reload.members.should eq([ "Alan" ])
336
+ expect(smiths.reload.members).to eq([ "Alan" ])
333
337
  end
334
338
  end
335
339
 
@@ -352,15 +356,15 @@ describe Mongoid::Contextual::Atomic do
352
356
  end
353
357
 
354
358
  before do
355
- context.push_all(:members, [ "Alan", "Fletch" ])
359
+ context.push_all(members: [ "Alan", "Fletch" ])
356
360
  end
357
361
 
358
362
  it "pushes the values to existing arrays" do
359
- depeche_mode.reload.members.should eq([ "Dave", "Alan", "Fletch" ])
363
+ expect(depeche_mode.reload.members).to eq([ "Dave", "Alan", "Fletch" ])
360
364
  end
361
365
 
362
366
  it "pushes to non existant fields" do
363
- smiths.reload.members.should eq([ "Alan", "Fletch" ])
367
+ expect(smiths.reload.members).to eq([ "Alan", "Fletch" ])
364
368
  end
365
369
  end
366
370
 
@@ -383,15 +387,15 @@ describe Mongoid::Contextual::Atomic do
383
387
  end
384
388
 
385
389
  before do
386
- context.rename(:members, :artists)
390
+ context.rename(members: :artists)
387
391
  end
388
392
 
389
393
  it "renames existing fields" do
390
- depeche_mode.reload.artists.should eq([ "Dave" ])
394
+ expect(depeche_mode.reload.artists).to eq([ "Dave" ])
391
395
  end
392
396
 
393
397
  it "does not rename non existant fields" do
394
- smiths.reload.should_not respond_to(:artists)
398
+ expect(smiths.reload).to_not respond_to(:artists)
395
399
  end
396
400
  end
397
401
 
@@ -414,15 +418,15 @@ describe Mongoid::Contextual::Atomic do
414
418
  end
415
419
 
416
420
  before do
417
- context.set(:name, "Recoil")
421
+ context.set(name: "Recoil")
418
422
  end
419
423
 
420
424
  it "sets existing fields" do
421
- depeche_mode.reload.name.should eq("Recoil")
425
+ expect(depeche_mode.reload.name).to eq("Recoil")
422
426
  end
423
427
 
424
428
  it "sets non existant fields" do
425
- smiths.reload.name.should eq("Recoil")
429
+ expect(smiths.reload.name).to eq("Recoil")
426
430
  end
427
431
  end
428
432
 
@@ -453,11 +457,11 @@ describe Mongoid::Contextual::Atomic do
453
457
  end
454
458
 
455
459
  it "unsets the first existing field" do
456
- depeche_mode.reload.name.should be_nil
460
+ expect(depeche_mode.reload.name).to be_nil
457
461
  end
458
462
 
459
463
  it "unsets the last existing field" do
460
- new_order.reload.name.should be_nil
464
+ expect(new_order.reload.name).to be_nil
461
465
  end
462
466
  end
463
467
 
@@ -468,11 +472,11 @@ describe Mongoid::Contextual::Atomic do
468
472
  end
469
473
 
470
474
  it "unsets the first existing field" do
471
- depeche_mode.reload.years.should be_nil
475
+ expect(depeche_mode.reload.years).to be_nil
472
476
  end
473
477
 
474
478
  it "unsets the last existing field" do
475
- new_order.reload.years.should be_nil
479
+ expect(new_order.reload.years).to be_nil
476
480
  end
477
481
  end
478
482
  end
@@ -498,11 +502,11 @@ describe Mongoid::Contextual::Atomic do
498
502
  end
499
503
 
500
504
  it "unsets name field" do
501
- new_order.reload.name.should be_nil
505
+ expect(new_order.reload.name).to be_nil
502
506
  end
503
507
 
504
508
  it "unsets genres field" do
505
- new_order.reload.genres.should be_nil
509
+ expect(new_order.reload.genres).to be_nil
506
510
  end
507
511
  end
508
512
 
@@ -513,11 +517,11 @@ describe Mongoid::Contextual::Atomic do
513
517
  end
514
518
 
515
519
  it "unsets the unaliased field" do
516
- new_order.reload.name.should be_nil
520
+ expect(new_order.reload.name).to be_nil
517
521
  end
518
522
 
519
523
  it "unsets the aliased field" do
520
- new_order.reload.years.should be_nil
524
+ expect(new_order.reload.years).to be_nil
521
525
  end
522
526
  end
523
527
  end
@@ -33,11 +33,11 @@ describe Mongoid::Contextual::FindAndModify do
33
33
  end
34
34
 
35
35
  it "returns the first matching document" do
36
- result["name"].should eq("Depeche Mode")
36
+ expect(result["name"]).to eq("Depeche Mode")
37
37
  end
38
38
 
39
39
  it "updates the document in the database" do
40
- depeche.reload.likes.should eq(1)
40
+ expect(depeche.reload.likes).to eq(1)
41
41
  end
42
42
  end
43
43
 
@@ -60,11 +60,11 @@ describe Mongoid::Contextual::FindAndModify do
60
60
  end
61
61
 
62
62
  it "returns the first matching document" do
63
- result["name"].should eq("Depeche Mode")
63
+ expect(result["name"]).to eq("Depeche Mode")
64
64
  end
65
65
 
66
66
  it "updates the document in the database" do
67
- depeche.reload.created.should eq(date_time)
67
+ expect(depeche.reload.created).to eq(date_time)
68
68
  end
69
69
  end
70
70
 
@@ -83,11 +83,11 @@ describe Mongoid::Contextual::FindAndModify do
83
83
  end
84
84
 
85
85
  it "returns the first matching document" do
86
- result["name"].should eq("Tool")
86
+ expect(result["name"]).to eq("Tool")
87
87
  end
88
88
 
89
89
  it "updates the document in the database" do
90
- tool.reload.likes.should eq(1)
90
+ expect(tool.reload.likes).to eq(1)
91
91
  end
92
92
  end
93
93
 
@@ -106,15 +106,15 @@ describe Mongoid::Contextual::FindAndModify do
106
106
  end
107
107
 
108
108
  it "returns the first matching document" do
109
- result["_id"].should eq(depeche.id)
109
+ expect(result["_id"]).to eq(depeche.id)
110
110
  end
111
111
 
112
112
  it "limits the returned fields" do
113
- result["name"].should be_nil
113
+ expect(result["name"]).to be_nil
114
114
  end
115
115
 
116
116
  it "updates the document in the database" do
117
- depeche.reload.likes.should eq(1)
117
+ expect(depeche.reload.likes).to eq(1)
118
118
  end
119
119
  end
120
120
 
@@ -133,11 +133,11 @@ describe Mongoid::Contextual::FindAndModify do
133
133
  end
134
134
 
135
135
  it "returns the first matching document" do
136
- result["name"].should eq("Depeche Mode")
136
+ expect(result["name"]).to eq("Depeche Mode")
137
137
  end
138
138
 
139
139
  it "returns the updated document" do
140
- result["likes"].should eq(1)
140
+ expect(result["likes"]).to eq(1)
141
141
  end
142
142
  end
143
143
 
@@ -156,7 +156,7 @@ describe Mongoid::Contextual::FindAndModify do
156
156
  end
157
157
 
158
158
  it "returns the first matching document" do
159
- result["name"].should eq("Depeche Mode")
159
+ expect(result["name"]).to eq("Depeche Mode")
160
160
  end
161
161
 
162
162
  it "deletes the document from the database" do
@@ -193,7 +193,7 @@ describe Mongoid::Contextual::FindAndModify do
193
193
  result
194
194
  }.to_not change{Band.where(name: "The Mars Volta").count}
195
195
 
196
- the_mars_volta.reload.likes.should eq(1)
196
+ expect(the_mars_volta.reload.likes).to eq(1)
197
197
  end
198
198
  end
199
199
  end
@@ -213,7 +213,7 @@ describe Mongoid::Contextual::FindAndModify do
213
213
  end
214
214
 
215
215
  it "returns nil" do
216
- result.should be_nil
216
+ expect(result).to be_nil
217
217
  end
218
218
  end
219
219
  end
@@ -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