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
@@ -41,11 +41,11 @@ describe Mongoid::Relations::Bindings::Embedded::In do
41
41
  end
42
42
 
43
43
  it "parentizes the documents" do
44
- name._parent.should eq(person)
44
+ expect(name._parent).to eq(person)
45
45
  end
46
46
 
47
47
  it "sets the inverse relation" do
48
- person.name.should eq(name)
48
+ expect(person.name).to eq(name)
49
49
  end
50
50
  end
51
51
 
@@ -56,7 +56,7 @@ describe Mongoid::Relations::Bindings::Embedded::In do
56
56
  end
57
57
 
58
58
  it "does nothing" do
59
- name.should_receive(:namable=).never
59
+ expect(name).to receive(:namable=).never
60
60
  binding.bind_one
61
61
  end
62
62
  end
@@ -77,22 +77,22 @@ describe Mongoid::Relations::Bindings::Embedded::In do
77
77
  end
78
78
 
79
79
  it "parentizes the documents" do
80
- address._parent.should eq(person)
80
+ expect(address._parent).to eq(person)
81
81
  end
82
82
 
83
83
  it "sets the inverse relation" do
84
- person.addresses.should include(address)
84
+ expect(person.addresses).to include(address)
85
85
  end
86
86
  end
87
87
 
88
88
  context "when the base has metadata" do
89
89
 
90
90
  before do
91
- address.metadata = person_metadata
91
+ address.__metadata = person_metadata
92
92
  end
93
93
 
94
94
  it "does not overwrite the existing metadata" do
95
- address.should_receive(:metadata=).never
95
+ expect(address).to receive(:__metadata=).never
96
96
  binding.bind_one
97
97
  end
98
98
  end
@@ -105,7 +105,7 @@ describe Mongoid::Relations::Bindings::Embedded::In do
105
105
  end
106
106
 
107
107
  it "does nothing" do
108
- address.should_receive(:addressable=).never
108
+ expect(address).to receive(:addressable=).never
109
109
  binding.bind_one
110
110
  end
111
111
  end
@@ -128,14 +128,14 @@ describe Mongoid::Relations::Bindings::Embedded::In do
128
128
  end
129
129
 
130
130
  it "removes the inverse relation" do
131
- person.name.should be_nil
131
+ expect(person.name).to be_nil
132
132
  end
133
133
  end
134
134
 
135
135
  context "when the document is not unbindable" do
136
136
 
137
137
  it "does nothing" do
138
- name.should_receive(:namable=).never
138
+ expect(name).to receive(:namable=).never
139
139
  binding.unbind_one
140
140
  end
141
141
  end
@@ -155,14 +155,14 @@ describe Mongoid::Relations::Bindings::Embedded::In do
155
155
  end
156
156
 
157
157
  it "removes the inverse relation" do
158
- person.addresses.should be_empty
158
+ expect(person.addresses).to be_empty
159
159
  end
160
160
  end
161
161
 
162
162
  context "when the document is not unbindable" do
163
163
 
164
164
  it "does nothing" do
165
- address.should_receive(:addressable=).never
165
+ expect(address).to receive(:addressable=).never
166
166
  binding.unbind_one
167
167
  end
168
168
  end
@@ -35,18 +35,18 @@ describe Mongoid::Relations::Bindings::Embedded::Many do
35
35
  end
36
36
 
37
37
  it "parentizes the document" do
38
- address_two._parent.should eq(person)
38
+ expect(address_two._parent).to eq(person)
39
39
  end
40
40
 
41
41
  it "sets the inverse relation" do
42
- address_two.addressable.should eq(person)
42
+ expect(address_two.addressable).to eq(person)
43
43
  end
44
44
  end
45
45
 
46
46
  context "when the document is not bindable" do
47
47
 
48
48
  it "does nothing" do
49
- person.addresses.should_receive(:<<).never
49
+ expect(person.addresses).to receive(:<<).never
50
50
  binding.bind_one(address)
51
51
  end
52
52
  end
@@ -27,11 +27,11 @@ describe Mongoid::Relations::Bindings::Embedded::One do
27
27
  end
28
28
 
29
29
  it "parentizes the documents" do
30
- target._parent.should eq(person)
30
+ expect(target._parent).to eq(person)
31
31
  end
32
32
 
33
33
  it "sets the inverse relation" do
34
- target.namable.should eq(person)
34
+ expect(target.namable).to eq(person)
35
35
  end
36
36
  end
37
37
 
@@ -42,7 +42,7 @@ describe Mongoid::Relations::Bindings::Embedded::One do
42
42
  end
43
43
 
44
44
  it "does nothing" do
45
- person.should_receive(:name=).never
45
+ expect(person).to receive(:name=).never
46
46
  binding.bind_one
47
47
  end
48
48
  end
@@ -62,14 +62,14 @@ describe Mongoid::Relations::Bindings::Embedded::One do
62
62
  end
63
63
 
64
64
  it "removes the inverse relation" do
65
- target.namable.should be_nil
65
+ expect(target.namable).to be_nil
66
66
  end
67
67
  end
68
68
 
69
69
  context "when the document is not unbindable" do
70
70
 
71
71
  it "does nothing" do
72
- person.should_receive(:name=).never
72
+ expect(person).to receive(:name=).never
73
73
  binding.unbind_one
74
74
  end
75
75
  end
@@ -33,17 +33,17 @@ describe Mongoid::Relations::Bindings::Referenced::In do
33
33
  context "when the document is bindable with default pk" do
34
34
 
35
35
  before do
36
- person.should_receive(:save).never
37
- game.should_receive(:save).never
36
+ expect(person).to receive(:save).never
37
+ expect(game).to receive(:save).never
38
38
  binding.bind_one
39
39
  end
40
40
 
41
41
  it "sets the inverse relation" do
42
- person.game.should eq(game)
42
+ expect(person.game).to eq(game)
43
43
  end
44
44
 
45
45
  it "sets the foreign key" do
46
- game.person_id.should eq(person.id)
46
+ expect(game.person_id).to eq(person.id)
47
47
  end
48
48
  end
49
49
 
@@ -52,8 +52,8 @@ describe Mongoid::Relations::Bindings::Referenced::In do
52
52
  before do
53
53
  Game.belongs_to :person, index: true, validate: true, primary_key: :username
54
54
 
55
- person.should_receive(:save).never
56
- game.should_receive(:save).never
55
+ expect(person).to receive(:save).never
56
+ expect(game).to receive(:save).never
57
57
  binding.bind_one
58
58
  end
59
59
 
@@ -62,7 +62,7 @@ describe Mongoid::Relations::Bindings::Referenced::In do
62
62
  end
63
63
 
64
64
  it "sets the inverse relation" do
65
- person.game.should eq(game)
65
+ expect(person.game).to eq(game)
66
66
  end
67
67
 
68
68
  let(:person) do
@@ -70,7 +70,7 @@ describe Mongoid::Relations::Bindings::Referenced::In do
70
70
  end
71
71
 
72
72
  it "sets the fk with username field" do
73
- game.person_id.should eq(person.username)
73
+ expect(game.person_id).to eq(person.username)
74
74
  end
75
75
  end
76
76
 
@@ -81,7 +81,7 @@ describe Mongoid::Relations::Bindings::Referenced::In do
81
81
  end
82
82
 
83
83
  it "does nothing" do
84
- game.should_receive(:person=).never
84
+ expect(game).to receive(:person=).never
85
85
  binding.bind_one
86
86
  end
87
87
  end
@@ -96,17 +96,17 @@ describe Mongoid::Relations::Bindings::Referenced::In do
96
96
  context "when the document is bindable" do
97
97
 
98
98
  before do
99
- person.should_receive(:save).never
100
- post.should_receive(:save).never
99
+ expect(person).to receive(:save).never
100
+ expect(post).to receive(:save).never
101
101
  binding.bind_one
102
102
  end
103
103
 
104
104
  it "sets the inverse relation" do
105
- person.posts.should include(post)
105
+ expect(person.posts).to include(post)
106
106
  end
107
107
 
108
108
  it "sets the foreign key" do
109
- post.person_id.should eq(person.id)
109
+ expect(post.person_id).to eq(person.id)
110
110
  end
111
111
  end
112
112
 
@@ -117,7 +117,7 @@ describe Mongoid::Relations::Bindings::Referenced::In do
117
117
  end
118
118
 
119
119
  it "does nothing" do
120
- post.should_receive(:person=).never
120
+ expect(post).to receive(:person=).never
121
121
  binding.bind_one
122
122
  end
123
123
  end
@@ -136,24 +136,24 @@ describe Mongoid::Relations::Bindings::Referenced::In do
136
136
 
137
137
  before do
138
138
  binding.bind_one
139
- person.should_receive(:delete).never
140
- game.should_receive(:delete).never
139
+ expect(person).to receive(:delete).never
140
+ expect(game).to receive(:delete).never
141
141
  binding.unbind_one
142
142
  end
143
143
 
144
144
  it "removes the inverse relation" do
145
- person.game.should be_nil
145
+ expect(person.game).to be_nil
146
146
  end
147
147
 
148
148
  it "removed the foreign key" do
149
- game.person_id.should be_nil
149
+ expect(game.person_id).to be_nil
150
150
  end
151
151
  end
152
152
 
153
153
  context "when the document is not unbindable" do
154
154
 
155
155
  it "does nothing" do
156
- game.should_receive(:person=).never
156
+ expect(game).to receive(:person=).never
157
157
  binding.unbind_one
158
158
  end
159
159
  end
@@ -169,24 +169,24 @@ describe Mongoid::Relations::Bindings::Referenced::In do
169
169
 
170
170
  before do
171
171
  binding.bind_one
172
- person.should_receive(:delete).never
173
- post.should_receive(:delete).never
172
+ expect(person).to receive(:delete).never
173
+ expect(post).to receive(:delete).never
174
174
  binding.unbind_one
175
175
  end
176
176
 
177
177
  it "removes the inverse relation" do
178
- person.posts.should be_empty
178
+ expect(person.posts).to be_empty
179
179
  end
180
180
 
181
181
  it "removes the foreign key" do
182
- post.person_id.should be_nil
182
+ expect(post.person_id).to be_nil
183
183
  end
184
184
  end
185
185
 
186
186
  context "when the document is not unbindable" do
187
187
 
188
188
  it "does nothing" do
189
- post.should_receive(:person=).never
189
+ expect(post).to receive(:person=).never
190
190
  binding.unbind_one
191
191
  end
192
192
  end
@@ -210,7 +210,7 @@ describe Mongoid::Relations::Bindings::Referenced::In do
210
210
  end
211
211
 
212
212
  it "does not set the foreign key" do
213
- game.person_id.should be_nil
213
+ expect(game.person_id).to be_nil
214
214
  end
215
215
  end
216
216
  end
@@ -234,7 +234,7 @@ describe Mongoid::Relations::Bindings::Referenced::In do
234
234
  end
235
235
 
236
236
  it "does not unset the foreign key" do
237
- game.person_id.should eq(person.id)
237
+ expect(game.person_id).to eq(person.id)
238
238
  end
239
239
  end
240
240
  end
@@ -35,18 +35,18 @@ describe Mongoid::Relations::Bindings::Referenced::Many do
35
35
  end
36
36
 
37
37
  it "sets the inverse relation" do
38
- post_two.person.should eq(person)
38
+ expect(post_two.person).to eq(person)
39
39
  end
40
40
 
41
41
  it "sets the foreign key" do
42
- post_two.person_id.should eq(person.id)
42
+ expect(post_two.person_id).to eq(person.id)
43
43
  end
44
44
  end
45
45
 
46
46
  context "when the document is not bindable" do
47
47
 
48
48
  it "does nothing" do
49
- person.posts.should_receive(:<<).never
49
+ expect(person.posts).to receive(:<<).never
50
50
  binding.bind_one(post)
51
51
  end
52
52
  end
@@ -62,24 +62,24 @@ describe Mongoid::Relations::Bindings::Referenced::Many do
62
62
 
63
63
  before do
64
64
  binding.bind_one(target.first)
65
- person.should_receive(:delete).never
66
- post.should_receive(:delete).never
65
+ expect(person).to receive(:delete).never
66
+ expect(post).to receive(:delete).never
67
67
  binding.unbind_one(target.first)
68
68
  end
69
69
 
70
70
  it "removes the inverse relation" do
71
- post.person.should be_nil
71
+ expect(post.person).to be_nil
72
72
  end
73
73
 
74
74
  it "removes the foreign keys" do
75
- post.person_id.should be_nil
75
+ expect(post.person_id).to be_nil
76
76
  end
77
77
  end
78
78
 
79
79
  context "when the documents are not unbindable" do
80
80
 
81
81
  it "does nothing" do
82
- person.should_receive(:posts=).never
82
+ expect(person).to receive(:posts=).never
83
83
  binding.unbind_one(target.first)
84
84
  end
85
85
  end
@@ -102,7 +102,7 @@ describe Mongoid::Relations::Bindings::Referenced::Many do
102
102
  end
103
103
 
104
104
  it "does not set the foreign key" do
105
- post.person_id.should be_nil
105
+ expect(post.person_id).to be_nil
106
106
  end
107
107
  end
108
108
  end
@@ -126,7 +126,7 @@ describe Mongoid::Relations::Bindings::Referenced::Many do
126
126
  end
127
127
 
128
128
  it "does not unset the foreign key" do
129
- post.person_id.should eq(person.id)
129
+ expect(post.person_id).to eq(person.id)
130
130
  end
131
131
  end
132
132
  end
@@ -35,19 +35,19 @@ describe Mongoid::Relations::Bindings::Referenced::ManyToMany do
35
35
  end
36
36
 
37
37
  it "sets the inverse foreign key" do
38
- preference_two.person_ids.should eq([ person.id ])
38
+ expect(preference_two.person_ids).to eq([ person.id ])
39
39
  end
40
40
 
41
41
  it "passes the binding options through to the inverse" do
42
- person.should_receive(:save).never
42
+ expect(person).to receive(:save).never
43
43
  end
44
44
 
45
45
  it "syncs the base" do
46
- person.should be_synced("preference_ids")
46
+ expect(person).to be_synced("preference_ids")
47
47
  end
48
48
 
49
49
  it "syncs the inverse" do
50
- preference_two.should be_synced("person_ids")
50
+ expect(preference_two).to be_synced("person_ids")
51
51
  end
52
52
  end
53
53
 
@@ -60,7 +60,7 @@ describe Mongoid::Relations::Bindings::Referenced::ManyToMany do
60
60
  end
61
61
 
62
62
  it "does not save the parent on bind" do
63
- person.should_receive(:save).never
63
+ expect(person).to receive(:save).never
64
64
  binding.bind_one(preference_two)
65
65
  end
66
66
  end
@@ -68,7 +68,7 @@ describe Mongoid::Relations::Bindings::Referenced::ManyToMany do
68
68
  context "when the document is not bindable" do
69
69
 
70
70
  it "does nothing" do
71
- person.preferences.should_receive(:<<).never
71
+ expect(person.preferences).to receive(:<<).never
72
72
  binding.bind_one(preference)
73
73
  end
74
74
  end
@@ -84,25 +84,25 @@ describe Mongoid::Relations::Bindings::Referenced::ManyToMany do
84
84
 
85
85
  before do
86
86
  binding.bind_one(target.first)
87
- person.should_receive(:delete).never
88
- preference.should_receive(:delete).never
87
+ expect(person).to receive(:delete).never
88
+ expect(preference).to receive(:delete).never
89
89
  binding.unbind_one(target.first)
90
90
  end
91
91
 
92
92
  it "removes the inverse relation" do
93
- preference.people.should be_empty
93
+ expect(preference.people).to be_empty
94
94
  end
95
95
 
96
96
  it "removed the foreign keys" do
97
- preference.person_ids.should be_empty
97
+ expect(preference.person_ids).to be_empty
98
98
  end
99
99
 
100
100
  it "syncs the base" do
101
- person.should be_synced("preference_ids")
101
+ expect(person).to be_synced("preference_ids")
102
102
  end
103
103
 
104
104
  it "syncs the inverse" do
105
- preference.should be_synced("person_ids")
105
+ expect(preference).to be_synced("person_ids")
106
106
  end
107
107
  end
108
108
 
@@ -113,10 +113,10 @@ describe Mongoid::Relations::Bindings::Referenced::ManyToMany do
113
113
  end
114
114
 
115
115
  it "never performs a persistance operation" do
116
- person.should_receive(:delete).never
117
- person.should_receive(:save).never
118
- preference.should_receive(:delete).never
119
- preference.should_receive(:save).never
116
+ expect(person).to receive(:delete).never
117
+ expect(person).to receive(:save).never
118
+ expect(preference).to receive(:delete).never
119
+ expect(preference).to receive(:save).never
120
120
  binding.unbind_one(target.first)
121
121
  end
122
122
  end
@@ -124,7 +124,7 @@ describe Mongoid::Relations::Bindings::Referenced::ManyToMany do
124
124
  context "when the documents are not unbindable" do
125
125
 
126
126
  it "does nothing" do
127
- person.should_receive(:preferences=).never
127
+ expect(person).to receive(:preferences=).never
128
128
  binding.unbind_one(target.first)
129
129
  end
130
130
  end
@@ -147,7 +147,7 @@ describe Mongoid::Relations::Bindings::Referenced::ManyToMany do
147
147
  end
148
148
 
149
149
  it "does not set the foreign key" do
150
- preference.person_ids.should be_nil
150
+ expect(preference.person_ids).to be_nil
151
151
  end
152
152
  end
153
153
  end
@@ -171,7 +171,7 @@ describe Mongoid::Relations::Bindings::Referenced::ManyToMany do
171
171
  end
172
172
 
173
173
  it "does not unset the foreign key" do
174
- preference.person_ids.should eq([ person.id ])
174
+ expect(preference.person_ids).to eq([ person.id ])
175
175
  end
176
176
  end
177
177
  end
@@ -23,17 +23,17 @@ describe Mongoid::Relations::Bindings::Referenced::One do
23
23
  context "when the document is bindable" do
24
24
 
25
25
  before do
26
- person.should_receive(:save).never
27
- game.should_receive(:save).never
26
+ expect(person).to receive(:save).never
27
+ expect(game).to receive(:save).never
28
28
  binding.bind_one
29
29
  end
30
30
 
31
31
  it "sets the inverse relation" do
32
- game.person.should eq(person)
32
+ expect(game.person).to eq(person)
33
33
  end
34
34
 
35
35
  it "sets the foreign key" do
36
- game.person_id.should eq(person.id)
36
+ expect(game.person_id).to eq(person.id)
37
37
  end
38
38
  end
39
39
 
@@ -44,7 +44,7 @@ describe Mongoid::Relations::Bindings::Referenced::One do
44
44
  end
45
45
 
46
46
  it "does nothing" do
47
- person.should_receive(:game=).never
47
+ expect(person).to receive(:game=).never
48
48
  binding.bind_one
49
49
  end
50
50
  end
@@ -60,24 +60,24 @@ describe Mongoid::Relations::Bindings::Referenced::One do
60
60
 
61
61
  before do
62
62
  binding.bind_one
63
- person.should_receive(:delete).never
64
- game.should_receive(:delete).never
63
+ expect(person).to receive(:delete).never
64
+ expect(game).to receive(:delete).never
65
65
  binding.unbind_one
66
66
  end
67
67
 
68
68
  it "removes the inverse relation" do
69
- game.person.should be_nil
69
+ expect(game.person).to be_nil
70
70
  end
71
71
 
72
72
  it "removed the foreign key" do
73
- game.person_id.should be_nil
73
+ expect(game.person_id).to be_nil
74
74
  end
75
75
  end
76
76
 
77
77
  context "when the document is not unbindable" do
78
78
 
79
79
  it "does nothing" do
80
- person.should_receive(:game=).never
80
+ expect(person).to receive(:game=).never
81
81
  binding.unbind_one
82
82
  end
83
83
  end
@@ -100,7 +100,7 @@ describe Mongoid::Relations::Bindings::Referenced::One do
100
100
  end
101
101
 
102
102
  it "does not set the foreign key" do
103
- game.person_id.should be_nil
103
+ expect(game.person_id).to be_nil
104
104
  end
105
105
  end
106
106
  end
@@ -124,7 +124,7 @@ describe Mongoid::Relations::Bindings::Referenced::One do
124
124
  end
125
125
 
126
126
  it "does not unset the foreign key" do
127
- game.person_id.should eq(person.id)
127
+ expect(game.person_id).to eq(person.id)
128
128
  end
129
129
  end
130
130
  end
@@ -5,15 +5,15 @@ describe Mongoid::Relations::Builders::Embedded::In do
5
5
  describe "#build" do
6
6
 
7
7
  let(:object) do
8
- stub
8
+ double
9
9
  end
10
10
 
11
11
  let(:base) do
12
- stub
12
+ double
13
13
  end
14
14
 
15
15
  let(:metadata) do
16
- stub(klass: Person, name: :person)
16
+ double(klass: Person, name: :person)
17
17
  end
18
18
 
19
19
  context "when a document is provided" do
@@ -27,7 +27,7 @@ describe Mongoid::Relations::Builders::Embedded::In do
27
27
  end
28
28
 
29
29
  it "returns the document" do
30
- document.should eq(object)
30
+ expect(document).to eq(object)
31
31
  end
32
32
  end
33
33
  end