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
@@ -3,17 +3,17 @@ require "spec_helper"
3
3
  describe Mongoid::Relations::Builders::Referenced::Many do
4
4
 
5
5
  let(:base) do
6
- stub
6
+ double
7
7
  end
8
8
 
9
9
  describe "#build" do
10
10
 
11
11
  let(:criteria) do
12
- stub(klass: Post, selector: { "person_id" => "" }, selector_with_type_selection: { "person_id" => "" })
12
+ double(klass: Post, selector: { "person_id" => "" }, selector_with_type_selection: { "person_id" => "" })
13
13
  end
14
14
 
15
15
  let(:metadata) do
16
- stub(
16
+ double(
17
17
  klass: Post,
18
18
  name: :posts,
19
19
  foreign_key: "person_id",
@@ -29,7 +29,7 @@ describe Mongoid::Relations::Builders::Referenced::Many do
29
29
  context "when provided an id" do
30
30
 
31
31
  let(:object_id) do
32
- Moped::BSON::ObjectId.new
32
+ BSON::ObjectId.new
33
33
  end
34
34
 
35
35
  let(:object) do
@@ -37,7 +37,7 @@ describe Mongoid::Relations::Builders::Referenced::Many do
37
37
  end
38
38
 
39
39
  let(:post) do
40
- stub
40
+ double
41
41
  end
42
42
 
43
43
  let(:documents) do
@@ -45,14 +45,14 @@ describe Mongoid::Relations::Builders::Referenced::Many do
45
45
  end
46
46
 
47
47
  it "sets the documents" do
48
- documents.should eq(criteria)
48
+ expect(documents).to eq(criteria)
49
49
  end
50
50
  end
51
51
 
52
52
  context "when order specified" do
53
53
 
54
54
  let(:metadata) do
55
- stub(
55
+ double(
56
56
  klass: Post,
57
57
  name: :posts,
58
58
  foreign_key: "person_id",
@@ -63,7 +63,7 @@ describe Mongoid::Relations::Builders::Referenced::Many do
63
63
  end
64
64
 
65
65
  let(:object_id) do
66
- Moped::BSON::ObjectId.new
66
+ BSON::ObjectId.new
67
67
  end
68
68
 
69
69
  let(:object) do
@@ -71,7 +71,7 @@ describe Mongoid::Relations::Builders::Referenced::Many do
71
71
  end
72
72
 
73
73
  let(:post) do
74
- stub
74
+ double
75
75
  end
76
76
 
77
77
  let(:documents) do
@@ -79,14 +79,14 @@ describe Mongoid::Relations::Builders::Referenced::Many do
79
79
  end
80
80
 
81
81
  it "ordered by specified filed" do
82
- documents.should eq(criteria)
82
+ expect(documents).to eq(criteria)
83
83
  end
84
84
  end
85
85
 
86
86
  context "when provided a object" do
87
87
 
88
88
  let(:metadata) do
89
- stub(
89
+ double(
90
90
  klass: Post,
91
91
  name: :posts,
92
92
  foreign_key: "person_id",
@@ -103,7 +103,7 @@ describe Mongoid::Relations::Builders::Referenced::Many do
103
103
  end
104
104
 
105
105
  it "returns the object" do
106
- documents.should eq(object)
106
+ expect(documents).to eq(object)
107
107
  end
108
108
  end
109
109
  end
@@ -119,15 +119,15 @@ describe Mongoid::Relations::Builders::Referenced::Many do
119
119
  context "when the ids are empty" do
120
120
 
121
121
  it "returns an empty array" do
122
- person.posts.should be_empty
122
+ expect(person.posts).to be_empty
123
123
  end
124
124
 
125
125
  context "during initialization" do
126
126
 
127
127
  it "returns an empty array" do
128
128
  Person.new do |p|
129
- p.posts.should be_empty
130
- p.posts.metadata.should_not be_nil
129
+ expect(p.posts).to be_empty
130
+ expect(p.posts.__metadata).to_not be_nil
131
131
  end
132
132
  end
133
133
  end
@@ -7,17 +7,17 @@ describe Mongoid::Relations::Builders::Referenced::ManyToMany do
7
7
  end
8
8
 
9
9
  let(:base) do
10
- stub
10
+ double
11
11
  end
12
12
 
13
13
  describe "#build" do
14
14
 
15
15
  let(:criteria) do
16
- stub(klass: Preference, selector: { "_id" => { "$in" => [] }})
16
+ double(klass: Preference, selector: { "_id" => { "$in" => [] }})
17
17
  end
18
18
 
19
19
  let(:metadata) do
20
- stub(
20
+ double(
21
21
  klass: Preference,
22
22
  name: :preferences,
23
23
  foreign_key: "preference_ids",
@@ -32,7 +32,7 @@ describe Mongoid::Relations::Builders::Referenced::ManyToMany do
32
32
  context "when provided ids" do
33
33
 
34
34
  let(:object_id) do
35
- Moped::BSON::ObjectId.new
35
+ BSON::ObjectId.new
36
36
  end
37
37
 
38
38
  let(:object) do
@@ -40,7 +40,7 @@ describe Mongoid::Relations::Builders::Referenced::ManyToMany do
40
40
  end
41
41
 
42
42
  let(:preference) do
43
- stub
43
+ double
44
44
  end
45
45
 
46
46
  let(:documents) do
@@ -48,14 +48,14 @@ describe Mongoid::Relations::Builders::Referenced::ManyToMany do
48
48
  end
49
49
 
50
50
  it "sets the documents" do
51
- documents.should eq(criteria)
51
+ expect(documents).to eq(criteria)
52
52
  end
53
53
  end
54
54
 
55
55
  context "when order specified" do
56
56
 
57
57
  let(:metadata) do
58
- stub(
58
+ double(
59
59
  klass: Post,
60
60
  name: :preferences,
61
61
  foreign_key: "person_id",
@@ -66,7 +66,7 @@ describe Mongoid::Relations::Builders::Referenced::ManyToMany do
66
66
  end
67
67
 
68
68
  let(:object_id) do
69
- Moped::BSON::ObjectId.new
69
+ BSON::ObjectId.new
70
70
  end
71
71
 
72
72
  let(:object) do
@@ -74,7 +74,7 @@ describe Mongoid::Relations::Builders::Referenced::ManyToMany do
74
74
  end
75
75
 
76
76
  let(:preference) do
77
- stub
77
+ double
78
78
  end
79
79
 
80
80
  let(:documents) do
@@ -82,7 +82,7 @@ describe Mongoid::Relations::Builders::Referenced::ManyToMany do
82
82
  end
83
83
 
84
84
  it "ordered by specified filed" do
85
- documents.should eq(criteria)
85
+ expect(documents).to eq(criteria)
86
86
  end
87
87
  end
88
88
 
@@ -95,7 +95,7 @@ describe Mongoid::Relations::Builders::Referenced::ManyToMany do
95
95
  end
96
96
 
97
97
  let(:preference) do
98
- stub
98
+ double
99
99
  end
100
100
 
101
101
  let!(:documents) do
@@ -103,14 +103,14 @@ describe Mongoid::Relations::Builders::Referenced::ManyToMany do
103
103
  end
104
104
 
105
105
  it "returns the objects" do
106
- documents.should eq(object)
106
+ expect(documents).to eq(object)
107
107
  end
108
108
  end
109
109
 
110
110
  context "when the object is nil" do
111
111
 
112
112
  let(:metadata) do
113
- stub(
113
+ double(
114
114
  klass: Post,
115
115
  name: :preferences,
116
116
  foreign_key: "preference_ids",
@@ -127,7 +127,7 @@ describe Mongoid::Relations::Builders::Referenced::ManyToMany do
127
127
  end
128
128
 
129
129
  it "returns the object" do
130
- documents.should eq(criteria)
130
+ expect(documents).to eq(criteria)
131
131
  end
132
132
  end
133
133
  end
@@ -144,18 +144,18 @@ describe Mongoid::Relations::Builders::Referenced::ManyToMany do
144
144
  context "when the ids are empty" do
145
145
 
146
146
  it "returns an empty array" do
147
- person.preferences.should be_empty
147
+ expect(person.preferences).to be_empty
148
148
  end
149
149
  end
150
150
 
151
151
  context "when the ids are incorrect" do
152
152
 
153
153
  before do
154
- person.preference_ids = [ Moped::BSON::ObjectId.new ]
154
+ person.preference_ids = [ BSON::ObjectId.new ]
155
155
  end
156
156
 
157
157
  it "returns an empty array" do
158
- person.preferences.should be_empty
158
+ expect(person.preferences).to be_empty
159
159
  end
160
160
  end
161
161
  end
@@ -172,7 +172,7 @@ describe Mongoid::Relations::Builders::Referenced::ManyToMany do
172
172
  end
173
173
 
174
174
  it "returns the criteria" do
175
- criteria.should be_empty
175
+ expect(criteria).to be_empty
176
176
  end
177
177
  end
178
178
  end
@@ -3,7 +3,7 @@ require "spec_helper"
3
3
  describe Mongoid::Relations::Builders::Referenced::One do
4
4
 
5
5
  let(:base) do
6
- stub(new_record?: false)
6
+ double(new_record?: false)
7
7
  end
8
8
 
9
9
  describe "#build" do
@@ -13,7 +13,7 @@ describe Mongoid::Relations::Builders::Referenced::One do
13
13
  end
14
14
 
15
15
  let(:metadata) do
16
- stub(
16
+ double(
17
17
  klass: Post,
18
18
  name: :post,
19
19
  foreign_key: "person_id",
@@ -29,7 +29,7 @@ describe Mongoid::Relations::Builders::Referenced::One do
29
29
  context "when provided an id" do
30
30
 
31
31
  let(:object_id) do
32
- Moped::BSON::ObjectId.new
32
+ BSON::ObjectId.new
33
33
  end
34
34
 
35
35
  let(:object) do
@@ -37,11 +37,11 @@ describe Mongoid::Relations::Builders::Referenced::One do
37
37
  end
38
38
 
39
39
  let(:post) do
40
- stub
40
+ double
41
41
  end
42
42
 
43
43
  before do
44
- criteria.should_receive(:first).and_return(post)
44
+ expect(criteria).to receive(:first).and_return(post)
45
45
  end
46
46
 
47
47
  let!(:documents) do
@@ -49,7 +49,7 @@ describe Mongoid::Relations::Builders::Referenced::One do
49
49
  end
50
50
 
51
51
  it "sets the document" do
52
- documents.should eq(post)
52
+ expect(documents).to eq(post)
53
53
  end
54
54
  end
55
55
 
@@ -64,7 +64,7 @@ describe Mongoid::Relations::Builders::Referenced::One do
64
64
  end
65
65
 
66
66
  it "returns the object" do
67
- document.should eq(object)
67
+ expect(document).to eq(object)
68
68
  end
69
69
  end
70
70
  end
@@ -78,31 +78,18 @@ describe Mongoid::Relations::Builders::Referenced::One do
78
78
  context "when the document is not found" do
79
79
 
80
80
  it "returns nil" do
81
- person.game.should be_nil
81
+ expect(person.game).to be_nil
82
82
  end
83
83
  end
84
84
 
85
85
  context "when the document is persisted" do
86
86
 
87
- before do
88
- Mongoid.identity_map_enabled = true
89
- person.save
90
- end
91
-
92
- after do
93
- Mongoid.identity_map_enabled = false
94
- end
95
-
96
87
  let!(:game) do
97
- Game.create(person_id: person.id)
88
+ Game.create(person: person)
98
89
  end
99
90
 
100
91
  it "returns the document" do
101
- person.game.should eq(game)
102
- end
103
-
104
- it "pulls the document from the identity map" do
105
- person.game.should equal(game)
92
+ expect(person.game).to eq(game)
106
93
  end
107
94
  end
108
95
 
@@ -113,11 +100,11 @@ describe Mongoid::Relations::Builders::Referenced::One do
113
100
  end
114
101
 
115
102
  let!(:cat) do
116
- Cat.create(person_id: person.username)
103
+ Cat.create(person: person)
117
104
  end
118
105
 
119
106
  it "returns the document" do
120
- person.cat.should eq(cat)
107
+ expect(person.cat).to eq(cat)
121
108
  end
122
109
  end
123
110
  end
@@ -17,7 +17,7 @@ describe Mongoid::Relations::Builders do
17
17
  end
18
18
 
19
19
  it "does not set a binding attribute" do
20
- name[:binding].should be_nil
20
+ expect(name[:binding]).to be_nil
21
21
  end
22
22
  end
23
23
 
@@ -28,7 +28,7 @@ describe Mongoid::Relations::Builders do
28
28
  end
29
29
 
30
30
  it "does not set a binding attribute" do
31
- game[:binding].should be_nil
31
+ expect(game[:binding]).to be_nil
32
32
  end
33
33
  end
34
34
 
@@ -45,15 +45,15 @@ describe Mongoid::Relations::Builders do
45
45
  end
46
46
 
47
47
  it "builds the document" do
48
- post.person.should eq(person)
48
+ expect(post.person).to eq(person)
49
49
  end
50
50
 
51
51
  it "sets the inverse" do
52
- person.posts.should eq([ post ])
52
+ expect(person.posts).to eq([ post ])
53
53
  end
54
54
 
55
55
  it "does not save the document" do
56
- person.should_not be_persisted
56
+ expect(person).to_not be_persisted
57
57
  end
58
58
  end
59
59
 
@@ -68,15 +68,15 @@ describe Mongoid::Relations::Builders do
68
68
  end
69
69
 
70
70
  it "builds the document" do
71
- game.person.should eq(person)
71
+ expect(game.person).to eq(person)
72
72
  end
73
73
 
74
74
  it "sets the inverse" do
75
- person.game.should eq(game)
75
+ expect(person.game).to eq(game)
76
76
  end
77
77
 
78
78
  it "does not save the document" do
79
- person.should_not be_persisted
79
+ expect(person).to_not be_persisted
80
80
  end
81
81
  end
82
82
  end
@@ -98,7 +98,7 @@ describe Mongoid::Relations::Builders do
98
98
  end
99
99
 
100
100
  it "does not set a binding attribute" do
101
- name[:binding].should be_nil
101
+ expect(name[:binding]).to be_nil
102
102
  end
103
103
  end
104
104
 
@@ -109,7 +109,7 @@ describe Mongoid::Relations::Builders do
109
109
  end
110
110
 
111
111
  it "does not set a binding attribute" do
112
- game[:binding].should be_nil
112
+ expect(game[:binding]).to be_nil
113
113
  end
114
114
  end
115
115
 
@@ -126,19 +126,19 @@ describe Mongoid::Relations::Builders do
126
126
  end
127
127
 
128
128
  it "builds the document" do
129
- post.person.should eq(person)
129
+ expect(post.person).to eq(person)
130
130
  end
131
131
 
132
132
  it "sets the inverse" do
133
- person.posts.should eq([ post ])
133
+ expect(person.posts).to eq([ post ])
134
134
  end
135
135
 
136
136
  it "saves the document" do
137
- person.should be_persisted
137
+ expect(person).to be_persisted
138
138
  end
139
139
 
140
140
  it "saves the child" do
141
- post.should be_persisted
141
+ expect(post).to be_persisted
142
142
  end
143
143
  end
144
144
 
@@ -153,19 +153,19 @@ describe Mongoid::Relations::Builders do
153
153
  end
154
154
 
155
155
  it "builds the document" do
156
- game.person.should eq(person)
156
+ expect(game.person).to eq(person)
157
157
  end
158
158
 
159
159
  it "sets the inverse" do
160
- person.game.should eq(game)
160
+ expect(person.game).to eq(game)
161
161
  end
162
162
 
163
163
  it "saves the document" do
164
- person.should be_persisted
164
+ expect(person).to be_persisted
165
165
  end
166
166
 
167
167
  it "saves the child" do
168
- game.should be_persisted
168
+ expect(game).to be_persisted
169
169
  end
170
170
  end
171
171
  end
@@ -190,15 +190,15 @@ describe Mongoid::Relations::Builders do
190
190
  end
191
191
 
192
192
  it "replaces the existing document" do
193
- person.game.should eq(game_two)
193
+ expect(person.game).to eq(game_two)
194
194
  end
195
195
 
196
196
  it "persists the change" do
197
- person.game(true).should eq(game_two)
197
+ expect(person.game(true)).to eq(game_two)
198
198
  end
199
199
 
200
200
  it "removes the old document from the database" do
201
- Game.collection.find.count.should eq(1)
201
+ expect(Game.collection.find.count).to eq(1)
202
202
  end
203
203
  end
204
204
  end
@@ -21,7 +21,7 @@ describe Mongoid::Relations::Cascading::Delete do
21
21
  end
22
22
 
23
23
  it "deletes the relation" do
24
- home.should be_destroyed
24
+ expect(home).to be_destroyed
25
25
  end
26
26
 
27
27
  it "persists the deletion" do
@@ -38,7 +38,7 @@ describe Mongoid::Relations::Cascading::Delete do
38
38
  end
39
39
 
40
40
  it "deletes the base document" do
41
- person.should be_destroyed
41
+ expect(person).to be_destroyed
42
42
  end
43
43
  end
44
44
  end
@@ -59,29 +59,29 @@ describe Mongoid::Relations::Cascading::Delete do
59
59
  context "when the documents are in memory" do
60
60
 
61
61
  before do
62
- post_one.should_receive(:delete).never
63
- post_two.should_receive(:delete).never
62
+ expect(post_one).to receive(:delete).never
63
+ expect(post_two).to receive(:delete).never
64
64
  person.delete
65
65
  end
66
66
 
67
67
  it "deletes the first document" do
68
- post_one.should be_destroyed
68
+ expect(post_one).to be_destroyed
69
69
  end
70
70
 
71
71
  it "deletes the second document" do
72
- post_two.should be_destroyed
72
+ expect(post_two).to be_destroyed
73
73
  end
74
74
 
75
75
  it "unbinds the first document" do
76
- post_one.person.should be_nil
76
+ expect(post_one.person).to be_nil
77
77
  end
78
78
 
79
79
  it "unbinds the second document" do
80
- post_two.person.should be_nil
80
+ expect(post_two.person).to be_nil
81
81
  end
82
82
 
83
83
  it "removes the documents from the relation" do
84
- person.posts.should be_empty
84
+ expect(person.posts).to be_empty
85
85
  end
86
86
 
87
87
  it "persists the first deletion" do
@@ -7,7 +7,7 @@ describe Mongoid::Relations::Cascading::Destroy do
7
7
  end
8
8
 
9
9
  let(:metadata) do
10
- stub(name: :posts)
10
+ double(name: :posts)
11
11
  end
12
12
 
13
13
  let(:strategy) do
@@ -17,17 +17,17 @@ describe Mongoid::Relations::Cascading::Destroy do
17
17
  describe "#cascade" do
18
18
 
19
19
  let(:post) do
20
- stub
20
+ double
21
21
  end
22
22
 
23
23
  context "when the documents exist" do
24
24
 
25
25
  before do
26
- person.should_receive(:posts).and_return([ post ])
26
+ expect(person).to receive(:posts).and_return([ post ])
27
27
  end
28
28
 
29
29
  it "destroys all documents in the relation" do
30
- post.should_receive(:destroy)
30
+ expect(post).to receive(:destroy)
31
31
  strategy.cascade
32
32
  end
33
33
  end
@@ -35,11 +35,11 @@ describe Mongoid::Relations::Cascading::Destroy do
35
35
  context "when no documents exist" do
36
36
 
37
37
  before do
38
- person.should_receive(:posts).and_return([])
38
+ expect(person).to receive(:posts).and_return([])
39
39
  end
40
40
 
41
41
  it "does not destroy anything" do
42
- post.should_receive(:destroy).never
42
+ expect(post).to receive(:destroy).never
43
43
  strategy.cascade
44
44
  end
45
45
  end
@@ -9,11 +9,11 @@ describe Mongoid::Relations::Cascading::Nullify do
9
9
  describe "#cascade" do
10
10
 
11
11
  let(:relation) do
12
- stub
12
+ double
13
13
  end
14
14
 
15
15
  let(:metadata) do
16
- stub(name: :posts)
16
+ double(name: :posts)
17
17
  end
18
18
 
19
19
  let(:strategy) do
@@ -21,11 +21,11 @@ describe Mongoid::Relations::Cascading::Nullify do
21
21
  end
22
22
 
23
23
  before do
24
- person.should_receive(:posts).and_return(relation)
24
+ expect(person).to receive(:posts).and_return(relation)
25
25
  end
26
26
 
27
27
  it "nullifies the relation" do
28
- relation.should_receive(:nullify)
28
+ expect(relation).to receive(:nullify)
29
29
  strategy.cascade
30
30
  end
31
31
  end
@@ -16,7 +16,7 @@ describe Mongoid::Relations::Cascading::Restrict do
16
16
  end
17
17
 
18
18
  let(:metadata) do
19
- stub(name: :drugs)
19
+ double(name: :drugs)
20
20
  end
21
21
 
22
22
  let(:strategy) do
@@ -26,7 +26,7 @@ describe Mongoid::Relations::Cascading::Restrict do
26
26
  describe "#cascade" do
27
27
 
28
28
  let(:drug) do
29
- stub
29
+ double
30
30
  end
31
31
 
32
32
  context "when the document exists" do
@@ -34,18 +34,18 @@ describe Mongoid::Relations::Cascading::Restrict do
34
34
  context "when person has no drugs" do
35
35
 
36
36
  before do
37
- person.should_receive(:drugs).and_return([ ])
37
+ expect(person).to receive(:drugs).and_return([ ])
38
38
  end
39
39
 
40
40
  it "deletes the person" do
41
- expect { strategy.cascade }.to_not raise_error(Mongoid::Errors::DeleteRestriction)
41
+ expect { strategy.cascade }.to_not raise_error
42
42
  end
43
43
  end
44
44
 
45
45
  context "when person has drugs" do
46
46
 
47
47
  before do
48
- person.should_receive(:drugs).and_return([ drug ])
48
+ expect(person).to receive(:drugs).and_return([ drug ])
49
49
  end
50
50
 
51
51
  it "it raises an error" do
@@ -56,11 +56,11 @@ describe Mongoid::Relations::Cascading::Restrict do
56
56
 
57
57
  context "when no document exists" do
58
58
  before do
59
- person.should_receive(:drugs).and_return([])
59
+ expect(person).to receive(:drugs).and_return([])
60
60
  end
61
61
 
62
62
  it "doesn't delete anything" do
63
- drug.should_receive(:delete).never
63
+ expect(drug).to receive(:delete).never
64
64
  strategy.cascade
65
65
  end
66
66
  end