mongoid 3.1.6 → 4.0.0

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