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
@@ -17,7 +17,7 @@ describe Mongoid::Relations::Accessors do
17
17
  end
18
18
 
19
19
  it "returns true" do
20
- person.should have_game
20
+ expect(person).to have_game
21
21
  end
22
22
  end
23
23
 
@@ -26,14 +26,14 @@ describe Mongoid::Relations::Accessors do
26
26
  context "when not autobuilding" do
27
27
 
28
28
  it "returns false" do
29
- person.should_not have_game
29
+ expect(person).to_not have_game
30
30
  end
31
31
  end
32
32
 
33
33
  context "when autobuilding" do
34
34
 
35
35
  it "returns false" do
36
- person.should_not have_book
36
+ expect(person).to_not have_book
37
37
  end
38
38
  end
39
39
  end
@@ -48,14 +48,14 @@ describe Mongoid::Relations::Accessors do
48
48
  end
49
49
 
50
50
  it "returns true" do
51
- person.should have_posts
51
+ expect(person).to have_posts
52
52
  end
53
53
  end
54
54
 
55
55
  context "when the relation does not have documents" do
56
56
 
57
57
  it "returns false" do
58
- person.should_not have_posts
58
+ expect(person).to_not have_posts
59
59
  end
60
60
  end
61
61
  end
@@ -69,14 +69,14 @@ describe Mongoid::Relations::Accessors do
69
69
  end
70
70
 
71
71
  it "returns true" do
72
- person.should have_preferences
72
+ expect(person).to have_preferences
73
73
  end
74
74
  end
75
75
 
76
76
  context "when the relation does not have documents" do
77
77
 
78
78
  it "returns false" do
79
- person.should_not have_preferences
79
+ expect(person).to_not have_preferences
80
80
  end
81
81
  end
82
82
  end
@@ -90,7 +90,7 @@ describe Mongoid::Relations::Accessors do
90
90
  end
91
91
 
92
92
  it "allows the existence check" do
93
- user.should_not have_next
93
+ expect(user).to_not have_next
94
94
  end
95
95
  end
96
96
 
@@ -101,7 +101,7 @@ describe Mongoid::Relations::Accessors do
101
101
  end
102
102
 
103
103
  it "returns true" do
104
- game.should have_person
104
+ expect(game).to have_person
105
105
  end
106
106
  end
107
107
 
@@ -114,7 +114,7 @@ describe Mongoid::Relations::Accessors do
114
114
  end
115
115
 
116
116
  it "returns false" do
117
- game.should_not have_person
117
+ expect(game).to_not have_person
118
118
  end
119
119
  end
120
120
 
@@ -125,7 +125,7 @@ describe Mongoid::Relations::Accessors do
125
125
  end
126
126
 
127
127
  it "returns false" do
128
- book.should_not have_person
128
+ expect(book).to_not have_person
129
129
  end
130
130
  end
131
131
  end
@@ -140,7 +140,7 @@ describe Mongoid::Relations::Accessors do
140
140
  end
141
141
 
142
142
  it "returns true" do
143
- person.should have_name
143
+ expect(person).to have_name
144
144
  end
145
145
  end
146
146
 
@@ -149,7 +149,7 @@ describe Mongoid::Relations::Accessors do
149
149
  context "when the relation does not autobuild" do
150
150
 
151
151
  it "returns false" do
152
- person.should_not have_name
152
+ expect(person).to_not have_name
153
153
  end
154
154
  end
155
155
 
@@ -160,7 +160,7 @@ describe Mongoid::Relations::Accessors do
160
160
  end
161
161
 
162
162
  it "returns false" do
163
- person.should_not have_passport
163
+ expect(person).to_not have_passport
164
164
  end
165
165
  end
166
166
  end
@@ -175,14 +175,14 @@ describe Mongoid::Relations::Accessors do
175
175
  end
176
176
 
177
177
  it "returns true" do
178
- person.should have_addresses
178
+ expect(person).to have_addresses
179
179
  end
180
180
  end
181
181
 
182
182
  context "when the relation does not have documents" do
183
183
 
184
184
  it "returns false" do
185
- person.should_not have_addresses
185
+ expect(person).to_not have_addresses
186
186
  end
187
187
  end
188
188
  end
@@ -196,7 +196,7 @@ describe Mongoid::Relations::Accessors do
196
196
  end
197
197
 
198
198
  it "returns true" do
199
- name.should have_namable
199
+ expect(name).to have_namable
200
200
  end
201
201
  end
202
202
 
@@ -209,7 +209,7 @@ describe Mongoid::Relations::Accessors do
209
209
  end
210
210
 
211
211
  it "returns false" do
212
- name.should_not have_namable
212
+ expect(name).to_not have_namable
213
213
  end
214
214
  end
215
215
 
@@ -220,7 +220,7 @@ describe Mongoid::Relations::Accessors do
220
220
  end
221
221
 
222
222
  it "returns false" do
223
- passport.should_not have_person
223
+ expect(passport).to_not have_person
224
224
  end
225
225
  end
226
226
  end
@@ -244,11 +244,11 @@ describe Mongoid::Relations::Accessors do
244
244
  end
245
245
 
246
246
  it "builds the new document" do
247
- passport.should be_a(Passport)
247
+ expect(passport).to be_a(Passport)
248
248
  end
249
249
 
250
250
  it "stores in the altered attribute" do
251
- person.as_document["pass"].should eq(passport.attributes)
251
+ expect(person.as_document["pass"]).to eq(passport.attributes)
252
252
  end
253
253
  end
254
254
 
@@ -259,7 +259,7 @@ describe Mongoid::Relations::Accessors do
259
259
  end
260
260
 
261
261
  it "does not build a new document" do
262
- person.passport.should eq(passport)
262
+ expect(person.passport).to eq(passport)
263
263
  end
264
264
  end
265
265
  end
@@ -277,7 +277,7 @@ describe Mongoid::Relations::Accessors do
277
277
  end
278
278
 
279
279
  it "builds the new document" do
280
- person.should be_a(Person)
280
+ expect(person).to be_a(Person)
281
281
  end
282
282
  end
283
283
 
@@ -288,7 +288,7 @@ describe Mongoid::Relations::Accessors do
288
288
  end
289
289
 
290
290
  it "does not build a new document" do
291
- passport.person.should eq(person)
291
+ expect(passport.person).to eq(person)
292
292
  end
293
293
  end
294
294
  end
@@ -302,7 +302,7 @@ describe Mongoid::Relations::Accessors do
302
302
  end
303
303
 
304
304
  it "builds the new document" do
305
- book.should be_a(Book)
305
+ expect(book).to be_a(Book)
306
306
  end
307
307
  end
308
308
 
@@ -313,7 +313,7 @@ describe Mongoid::Relations::Accessors do
313
313
  end
314
314
 
315
315
  it "does not build a new document" do
316
- person.book.should eq(book)
316
+ expect(person.book).to eq(book)
317
317
  end
318
318
  end
319
319
  end
@@ -331,7 +331,7 @@ describe Mongoid::Relations::Accessors do
331
331
  end
332
332
 
333
333
  it "builds the new document" do
334
- person.should be_a(Person)
334
+ expect(person).to be_a(Person)
335
335
  end
336
336
  end
337
337
 
@@ -342,7 +342,7 @@ describe Mongoid::Relations::Accessors do
342
342
  end
343
343
 
344
344
  it "does not build a new document" do
345
- book.person.should eq(person)
345
+ expect(book.person).to eq(person)
346
346
  end
347
347
  end
348
348
  end
@@ -371,11 +371,11 @@ describe Mongoid::Relations::Accessors do
371
371
  end
372
372
 
373
373
  it "reloads the correct documents" do
374
- preferences.should eq([ preference ])
374
+ expect(preferences).to eq([ preference ])
375
375
  end
376
376
 
377
377
  it "reloads a new instance" do
378
- preferences.first.should_not equal(preference)
378
+ expect(preferences.first).to_not equal(preference)
379
379
  end
380
380
  end
381
381
 
@@ -386,11 +386,11 @@ describe Mongoid::Relations::Accessors do
386
386
  end
387
387
 
388
388
  it "reloads the correct documents" do
389
- preferences.should eq([ preference ])
389
+ expect(preferences).to eq([ preference ])
390
390
  end
391
391
 
392
392
  it "reloads a new instance" do
393
- preferences.first.should_not equal(preference)
393
+ expect(preferences.first).to_not equal(preference)
394
394
  end
395
395
  end
396
396
 
@@ -401,7 +401,7 @@ describe Mongoid::Relations::Accessors do
401
401
  end
402
402
 
403
403
  it "reloads the correct documents" do
404
- preferences.should eq([ preference ])
404
+ expect(preferences).to eq([ preference ])
405
405
  end
406
406
  end
407
407
  end
@@ -423,11 +423,11 @@ describe Mongoid::Relations::Accessors do
423
423
  end
424
424
 
425
425
  it "reloads the correct documents" do
426
- posts.should eq([ post ])
426
+ expect(posts).to eq([ post ])
427
427
  end
428
428
 
429
429
  it "reloads a new instance" do
430
- posts.first.should_not equal(post)
430
+ expect(posts.first).to_not equal(post)
431
431
  end
432
432
  end
433
433
 
@@ -438,11 +438,11 @@ describe Mongoid::Relations::Accessors do
438
438
  end
439
439
 
440
440
  it "reloads the correct documents" do
441
- posts.should eq([ post ])
441
+ expect(posts).to eq([ post ])
442
442
  end
443
443
 
444
444
  it "reloads a new instance" do
445
- posts.first.should_not equal(post)
445
+ expect(posts.first).to_not equal(post)
446
446
  end
447
447
  end
448
448
 
@@ -453,7 +453,7 @@ describe Mongoid::Relations::Accessors do
453
453
  end
454
454
 
455
455
  it "reloads the correct documents" do
456
- posts.should eq([ post ])
456
+ expect(posts).to eq([ post ])
457
457
  end
458
458
  end
459
459
  end
@@ -475,11 +475,11 @@ describe Mongoid::Relations::Accessors do
475
475
  end
476
476
 
477
477
  it "reloads the correct documents" do
478
- reloaded_game.should eq(game)
478
+ expect(reloaded_game).to eq(game)
479
479
  end
480
480
 
481
481
  it "reloads a new instance" do
482
- reloaded_game.should_not equal(game)
482
+ expect(reloaded_game).to_not equal(game)
483
483
  end
484
484
  end
485
485
 
@@ -490,11 +490,11 @@ describe Mongoid::Relations::Accessors do
490
490
  end
491
491
 
492
492
  it "reloads the correct documents" do
493
- reloaded_game.should eq(game)
493
+ expect(reloaded_game).to eq(game)
494
494
  end
495
495
 
496
496
  it "reloads a new instance" do
497
- reloaded_game.should_not equal(game)
497
+ expect(reloaded_game).to_not equal(game)
498
498
  end
499
499
  end
500
500
 
@@ -505,7 +505,7 @@ describe Mongoid::Relations::Accessors do
505
505
  end
506
506
 
507
507
  it "reloads the correct documents" do
508
- reloaded_game.should eq(game)
508
+ expect(reloaded_game).to eq(game)
509
509
  end
510
510
  end
511
511
  end
@@ -538,7 +538,7 @@ describe Mongoid::Relations::Accessors do
538
538
  end
539
539
 
540
540
  it "returns the correct document" do
541
- rating.ratable.should eq(movie)
541
+ expect(rating.ratable).to eq(movie)
542
542
  end
543
543
  end
544
544
 
@@ -549,7 +549,7 @@ describe Mongoid::Relations::Accessors do
549
549
  end
550
550
 
551
551
  it "returns the correct documents" do
552
- ratings.should eq([ movie_rating ])
552
+ expect(ratings).to eq([ movie_rating ])
553
553
  end
554
554
  end
555
555
 
@@ -560,99 +560,7 @@ describe Mongoid::Relations::Accessors do
560
560
  end
561
561
 
562
562
  it "returns the correct document" do
563
- rating.should eq(book_rating)
564
- end
565
- end
566
- end
567
-
568
- context "when there are multiple references many/one" do
569
-
570
- let(:face) do
571
- Face.create
572
- end
573
-
574
- let(:eye_bowl) do
575
- EyeBowl.create
576
- end
577
-
578
- let!(:face_left_eye) do
579
- face.create_left_eye(pupil_dilation: 10)
580
- end
581
-
582
- let!(:face_right_eye) do
583
- face.create_right_eye(pupil_dilation: 5)
584
- end
585
-
586
- let!(:eye_bowl_blue_eye) do
587
- eye_bowl.blue_eyes.create(pupil_dilation: 2)
588
- end
589
-
590
- let!(:eye_bowl_brown_eye) do
591
- eye_bowl.brown_eyes.create(pupil_dilation: 1)
592
- end
593
-
594
- context "when accessing a referenced in" do
595
-
596
- let(:eye) do
597
- Eye.where(pupil_dilation: 10).first
598
- end
599
-
600
- it "returns the correct type" do
601
- eye.eyeable.should be_a(Face)
602
- end
603
-
604
- it "returns the correct document" do
605
- eye.eyeable.should eq(face)
606
- end
607
- end
608
-
609
- context "when accessing a references many" do
610
-
611
- context "first references many" do
612
-
613
- let(:eyes) do
614
- EyeBowl.first.blue_eyes
615
- end
616
-
617
- it "returns the correct documents" do
618
- eyes.should eq([ eye_bowl_blue_eye ])
619
- end
620
- end
621
-
622
- context "second references many" do
623
-
624
- let(:eyes) do
625
- EyeBowl.first.brown_eyes
626
- end
627
-
628
- it "returns the correct documents" do
629
- eyes.should eq([ eye_bowl_brown_eye ])
630
- end
631
- end
632
- end
633
-
634
- context "when accessing a references one" do
635
-
636
- context "first references one" do
637
-
638
- let(:eye) do
639
- Face.first.left_eye
640
- end
641
-
642
- it "returns the correct document" do
643
- eye.should eq(face_left_eye)
644
- end
645
- end
646
-
647
- context "second references one" do
648
-
649
- let(:eye) do
650
- Face.first.right_eye
651
- end
652
-
653
- it "returns the correct document" do
654
- eye.should eq(face_right_eye)
655
- end
563
+ expect(rating).to eq(book_rating)
656
564
  end
657
565
  end
658
566
  end
@@ -674,7 +582,7 @@ describe Mongoid::Relations::Accessors do
674
582
  end
675
583
 
676
584
  it "converts them to nil" do
677
- post.person.should be_nil
585
+ expect(post.person).to be_nil
678
586
  end
679
587
  end
680
588
 
@@ -685,7 +593,7 @@ describe Mongoid::Relations::Accessors do
685
593
  end
686
594
 
687
595
  it "converts it to nil" do
688
- post.person_id.should be_nil
596
+ expect(post.person_id).to be_nil
689
597
  end
690
598
  end
691
599
  end
@@ -703,7 +611,7 @@ describe Mongoid::Relations::Accessors do
703
611
  end
704
612
 
705
613
  it "converts them to nil" do
706
- person.game.should be_nil
614
+ expect(person.game).to be_nil
707
615
  end
708
616
  end
709
617
 
@@ -718,7 +626,7 @@ describe Mongoid::Relations::Accessors do
718
626
  end
719
627
 
720
628
  it "converts it to nil" do
721
- game.person_id.should be_nil
629
+ expect(game.person_id).to be_nil
722
630
  end
723
631
  end
724
632
  end
@@ -740,7 +648,7 @@ describe Mongoid::Relations::Accessors do
740
648
  end
741
649
 
742
650
  it "converts it to nil" do
743
- post.person.should be_nil
651
+ expect(post.person).to be_nil
744
652
  end
745
653
  end
746
654
 
@@ -755,7 +663,7 @@ describe Mongoid::Relations::Accessors do
755
663
  end
756
664
 
757
665
  it "ignore blank values" do
758
- person.post_ids.should be_empty
666
+ expect(person.post_ids).to be_empty
759
667
  end
760
668
  end
761
669
  end
@@ -773,7 +681,7 @@ describe Mongoid::Relations::Accessors do
773
681
  end
774
682
 
775
683
  it "does not add them" do
776
- person.preference_ids.should be_empty
684
+ expect(person.preference_ids).to be_empty
777
685
  end
778
686
  end
779
687
  end
@@ -5,7 +5,6 @@ describe Mongoid::Relations::AutoSave do
5
5
  describe ".auto_save" do
6
6
 
7
7
  before(:all) do
8
- Person.autosaved_relations.delete_one(:account)
9
8
  Person.autosave(Person.relations["account"].merge!(autosave: true))
10
9
  end
11
10
 
@@ -34,7 +33,7 @@ describe Mongoid::Relations::AutoSave do
34
33
  end
35
34
 
36
35
  it "does not save the relation" do
37
- game.should_not be_persisted
36
+ expect(game).to_not be_persisted
38
37
  end
39
38
  end
40
39
  end
@@ -48,7 +47,6 @@ describe Mongoid::Relations::AutoSave do
48
47
  end
49
48
 
50
49
  before do
51
- Person.autosaved_relations.delete_one(:drugs)
52
50
  Person.autosave(metadata)
53
51
  Person.autosave(metadata)
54
52
  end
@@ -58,7 +56,7 @@ describe Mongoid::Relations::AutoSave do
58
56
  end
59
57
 
60
58
  it "does not add the autosave callback twice" do
61
- drug.should_receive(:save).once
59
+ expect(drug).to receive(:save).once
62
60
  person.drugs.push(drug)
63
61
  person.save
64
62
  end
@@ -78,7 +76,7 @@ describe Mongoid::Relations::AutoSave do
78
76
  end
79
77
 
80
78
  it "saves the relation" do
81
- drug.should be_persisted
79
+ expect(drug).to be_persisted
82
80
  end
83
81
  end
84
82
 
@@ -91,7 +89,7 @@ describe Mongoid::Relations::AutoSave do
91
89
  end
92
90
 
93
91
  it "saves the relation" do
94
- drug.should be_persisted
92
+ expect(drug).to be_persisted
95
93
  end
96
94
  end
97
95
 
@@ -108,7 +106,7 @@ describe Mongoid::Relations::AutoSave do
108
106
 
109
107
  it 'does not load the association' do
110
108
  from_db.save
111
- from_db.ivar(:drugs).should be_false
109
+ expect(from_db.ivar(:drugs)).to be false
112
110
  end
113
111
  end
114
112
  end
@@ -127,7 +125,11 @@ describe Mongoid::Relations::AutoSave do
127
125
  end
128
126
 
129
127
  it "saves the relation" do
130
- account.should be_persisted
128
+ expect(account).to be_persisted
129
+ end
130
+
131
+ it "persists on the database" do
132
+ expect(account.reload).to_not be_nil
131
133
  end
132
134
  end
133
135
 
@@ -140,7 +142,26 @@ describe Mongoid::Relations::AutoSave do
140
142
  end
141
143
 
142
144
  it "saves the relation" do
143
- account.should be_persisted
145
+ expect(account).to be_persisted
146
+ end
147
+
148
+ it "persists on the database" do
149
+ expect(account.reload).to_not be_nil
150
+ end
151
+ end
152
+
153
+ context "when updating the child" do
154
+
155
+ before do
156
+ person.account = account
157
+ person.save
158
+ end
159
+
160
+ it "sends one insert" do
161
+ account.name = "account"
162
+ expect_query(1) do
163
+ person.with(write: {w:0}).save
164
+ end
144
165
  end
145
166
  end
146
167
 
@@ -157,7 +178,7 @@ describe Mongoid::Relations::AutoSave do
157
178
 
158
179
  it 'does not load the association' do
159
180
  from_db.save
160
- from_db.ivar(:account).should be_false
181
+ expect(from_db.ivar(:account)).to be false
161
182
  end
162
183
  end
163
184
  end
@@ -180,7 +201,7 @@ describe Mongoid::Relations::AutoSave do
180
201
  end
181
202
 
182
203
  it "saves the relation" do
183
- movie.should be_persisted
204
+ expect(movie).to be_persisted
184
205
  end
185
206
  end
186
207
 
@@ -193,7 +214,7 @@ describe Mongoid::Relations::AutoSave do
193
214
  end
194
215
 
195
216
  it "saves the relation" do
196
- movie.should be_persisted
217
+ expect(movie).to be_persisted
197
218
  end
198
219
  end
199
220
  end
@@ -201,7 +222,6 @@ describe Mongoid::Relations::AutoSave do
201
222
  context "when it has two ralations with autosaves" do
202
223
 
203
224
  before do
204
- Person.autosaved_relations.delete_one(:drugs)
205
225
  Person.autosave(Person.relations["drugs"].merge!(autosave: true))
206
226
  end
207
227
 
@@ -233,11 +253,11 @@ describe Mongoid::Relations::AutoSave do
233
253
  end
234
254
 
235
255
  it 'loads the updated association' do
236
- from_db.ivar(:drugs).should be_true
256
+ expect(from_db.ivar(:drugs)).to eq([placebo])
237
257
  end
238
258
 
239
259
  it 'doest not load the other association' do
240
- from_db.ivar(:account).should be_false
260
+ expect(from_db.ivar(:account)).to be false
241
261
  end
242
262
  end
243
263
 
@@ -248,11 +268,11 @@ describe Mongoid::Relations::AutoSave do
248
268
  end
249
269
 
250
270
  it 'doest not load drugs association' do
251
- from_db.ivar(:drugs).should be_false
271
+ expect(from_db.ivar(:drugs)).to be false
252
272
  end
253
273
 
254
274
  it 'doest not load account association' do
255
- from_db.ivar(:account).should be_false
275
+ expect(from_db.ivar(:account)).to be false
256
276
  end
257
277
  end
258
278
  end