mongoid 3.1.6 → 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 (571) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +479 -8
  3. data/README.md +10 -7
  4. data/lib/config/locales/en.yml +34 -20
  5. data/lib/mongoid.rb +10 -76
  6. data/lib/mongoid/atomic.rb +3 -14
  7. data/lib/mongoid/atomic/paths/embedded.rb +0 -30
  8. data/lib/mongoid/atomic/paths/embedded/many.rb +1 -1
  9. data/lib/mongoid/atomic/paths/embedded/one.rb +1 -1
  10. data/lib/mongoid/atomic/paths/root.rb +0 -13
  11. data/lib/mongoid/attributes.rb +65 -101
  12. data/lib/mongoid/attributes/dynamic.rb +154 -0
  13. data/lib/mongoid/attributes/nested.rb +82 -0
  14. data/lib/mongoid/attributes/processing.rb +13 -66
  15. data/lib/mongoid/{dirty.rb → changeable.rb} +32 -2
  16. data/lib/mongoid/composable.rb +105 -0
  17. data/lib/mongoid/config.rb +3 -9
  18. data/lib/mongoid/config/options.rb +1 -1
  19. data/lib/mongoid/contextual.rb +2 -0
  20. data/lib/mongoid/contextual/aggregable/memory.rb +2 -2
  21. data/lib/mongoid/contextual/aggregable/mongo.rb +7 -9
  22. data/lib/mongoid/contextual/atomic.rb +53 -53
  23. data/lib/mongoid/contextual/geo_near.rb +1 -1
  24. data/lib/mongoid/contextual/map_reduce.rb +4 -2
  25. data/lib/mongoid/contextual/memory.rb +23 -11
  26. data/lib/mongoid/contextual/mongo.rb +75 -57
  27. data/lib/mongoid/contextual/none.rb +90 -0
  28. data/lib/mongoid/contextual/text_search.rb +178 -0
  29. data/lib/mongoid/copyable.rb +2 -3
  30. data/lib/mongoid/criteria.rb +39 -34
  31. data/lib/mongoid/criteria/#findable.rb# +141 -0
  32. data/lib/mongoid/{criterion → criteria}/findable.rb +7 -47
  33. data/lib/mongoid/{criterion/inspection.rb → criteria/inspectable.rb} +2 -2
  34. data/lib/mongoid/{criterion → criteria}/marshalable.rb +3 -1
  35. data/lib/mongoid/{criterion → criteria}/modifiable.rb +28 -8
  36. data/lib/mongoid/criteria/permission.rb +70 -0
  37. data/lib/mongoid/{criterion/scoping.rb → criteria/scopable.rb} +2 -2
  38. data/lib/mongoid/document.rb +39 -24
  39. data/lib/mongoid/errors.rb +4 -1
  40. data/lib/mongoid/errors/document_not_destroyed.rb +25 -0
  41. data/lib/mongoid/errors/document_not_found.rb +2 -1
  42. data/lib/mongoid/errors/invalid_storage_options.rb +1 -1
  43. data/lib/mongoid/errors/invalid_storage_parent.rb +26 -0
  44. data/lib/mongoid/errors/invalid_value.rb +16 -0
  45. data/lib/mongoid/errors/mongoid_error.rb +1 -1
  46. data/lib/mongoid/errors/readonly_document.rb +24 -0
  47. data/lib/mongoid/extensions.rb +15 -7
  48. data/lib/mongoid/extensions/array.rb +3 -3
  49. data/lib/mongoid/extensions/big_decimal.rb +1 -1
  50. data/lib/mongoid/extensions/boolean.rb +15 -17
  51. data/lib/mongoid/extensions/date.rb +1 -1
  52. data/lib/mongoid/extensions/date_time.rb +3 -3
  53. data/lib/mongoid/extensions/float.rb +2 -1
  54. data/lib/mongoid/extensions/hash.rb +3 -3
  55. data/lib/mongoid/extensions/integer.rb +1 -1
  56. data/lib/mongoid/extensions/object.rb +7 -7
  57. data/lib/mongoid/extensions/object_id.rb +5 -5
  58. data/lib/mongoid/extensions/range.rb +9 -3
  59. data/lib/mongoid/extensions/regexp.rb +1 -1
  60. data/lib/mongoid/extensions/set.rb +1 -1
  61. data/lib/mongoid/extensions/string.rb +6 -18
  62. data/lib/mongoid/extensions/symbol.rb +1 -1
  63. data/lib/mongoid/extensions/time.rb +3 -3
  64. data/lib/mongoid/extensions/time_with_zone.rb +1 -1
  65. data/lib/mongoid/factory.rb +8 -6
  66. data/lib/mongoid/fields.rb +41 -8
  67. data/lib/mongoid/fields/foreign_key.rb +3 -3
  68. data/lib/mongoid/fields/localized.rb +1 -1
  69. data/lib/mongoid/fields/standard.rb +5 -17
  70. data/lib/mongoid/fields/validators/macro.rb +15 -5
  71. data/lib/mongoid/{finders.rb → findable.rb} +35 -7
  72. data/lib/mongoid/{indexes.rb → indexable.rb} +50 -55
  73. data/lib/mongoid/indexable/specification.rb +104 -0
  74. data/lib/mongoid/{indexes → indexable}/validators/options.rb +2 -1
  75. data/lib/mongoid/{inspection.rb → inspectable.rb} +15 -11
  76. data/lib/mongoid/{callbacks.rb → interceptable.rb} +30 -62
  77. data/lib/mongoid/log_subscriber.rb +55 -0
  78. data/lib/mongoid/matchable.rb +152 -0
  79. data/lib/mongoid/{matchers → matchable}/all.rb +1 -1
  80. data/lib/mongoid/{matchers → matchable}/and.rb +2 -2
  81. data/lib/mongoid/{matchers → matchable}/default.rb +1 -1
  82. data/lib/mongoid/{matchers → matchable}/exists.rb +1 -1
  83. data/lib/mongoid/{matchers → matchable}/gt.rb +1 -1
  84. data/lib/mongoid/{matchers → matchable}/gte.rb +1 -1
  85. data/lib/mongoid/{matchers → matchable}/in.rb +2 -2
  86. data/lib/mongoid/{matchers → matchable}/lt.rb +1 -1
  87. data/lib/mongoid/{matchers → matchable}/lte.rb +1 -1
  88. data/lib/mongoid/{matchers → matchable}/ne.rb +2 -2
  89. data/lib/mongoid/{matchers → matchable}/nin.rb +3 -2
  90. data/lib/mongoid/{matchers → matchable}/or.rb +2 -2
  91. data/lib/mongoid/{matchers → matchable}/size.rb +1 -1
  92. data/lib/mongoid/persistable.rb +216 -0
  93. data/lib/mongoid/persistable/creatable.rb +189 -0
  94. data/lib/mongoid/persistable/deletable.rb +149 -0
  95. data/lib/mongoid/persistable/destroyable.rb +60 -0
  96. data/lib/mongoid/persistable/incrementable.rb +36 -0
  97. data/lib/mongoid/persistable/logical.rb +38 -0
  98. data/lib/mongoid/persistable/poppable.rb +39 -0
  99. data/lib/mongoid/persistable/pullable.rb +55 -0
  100. data/lib/mongoid/persistable/pushable.rb +62 -0
  101. data/lib/mongoid/persistable/renamable.rb +35 -0
  102. data/lib/mongoid/persistable/savable.rb +52 -0
  103. data/lib/mongoid/persistable/settable.rb +33 -0
  104. data/lib/mongoid/persistable/unsettable.rb +36 -0
  105. data/lib/mongoid/persistable/updatable.rb +153 -0
  106. data/lib/mongoid/persistable/upsertable.rb +55 -0
  107. data/lib/mongoid/positional.rb +71 -0
  108. data/lib/mongoid/query_cache.rb +255 -0
  109. data/lib/mongoid/railtie.rb +34 -60
  110. data/lib/mongoid/railties/database.rake +9 -25
  111. data/lib/mongoid/relations.rb +11 -25
  112. data/lib/mongoid/relations/accessors.rb +15 -51
  113. data/lib/mongoid/relations/auto_save.rb +15 -36
  114. data/lib/mongoid/relations/binding.rb +2 -25
  115. data/lib/mongoid/relations/bindings/embedded/in.rb +1 -1
  116. data/lib/mongoid/relations/bindings/embedded/many.rb +1 -3
  117. data/lib/mongoid/relations/bindings/referenced/in.rb +3 -8
  118. data/lib/mongoid/relations/bindings/referenced/many_to_many.rb +4 -2
  119. data/lib/mongoid/relations/builder.rb +1 -1
  120. data/lib/mongoid/relations/builders.rb +2 -2
  121. data/lib/mongoid/relations/builders/embedded/one.rb +1 -1
  122. data/lib/mongoid/relations/builders/nested_attributes/many.rb +10 -13
  123. data/lib/mongoid/relations/builders/nested_attributes/one.rb +5 -6
  124. data/lib/mongoid/relations/builders/referenced/in.rb +1 -1
  125. data/lib/mongoid/relations/builders/referenced/many.rb +1 -2
  126. data/lib/mongoid/relations/builders/referenced/many_to_many.rb +1 -2
  127. data/lib/mongoid/relations/builders/referenced/one.rb +1 -1
  128. data/lib/mongoid/relations/cascading.rb +3 -5
  129. data/lib/mongoid/relations/constraint.rb +1 -1
  130. data/lib/mongoid/relations/conversions.rb +1 -1
  131. data/lib/mongoid/relations/counter_cache.rb +39 -15
  132. data/lib/mongoid/relations/eager.rb +46 -0
  133. data/lib/mongoid/relations/eager/base.rb +149 -0
  134. data/lib/mongoid/relations/eager/belongs_to.rb +31 -0
  135. data/lib/mongoid/relations/eager/has_and_belongs_to_many.rb +47 -0
  136. data/lib/mongoid/relations/eager/has_many.rb +38 -0
  137. data/lib/mongoid/relations/eager/has_one.rb +30 -0
  138. data/lib/mongoid/relations/embedded/batchable.rb +4 -5
  139. data/lib/mongoid/relations/embedded/in.rb +4 -4
  140. data/lib/mongoid/relations/embedded/many.rb +14 -32
  141. data/lib/mongoid/relations/embedded/one.rb +1 -1
  142. data/lib/mongoid/relations/macros.rb +3 -4
  143. data/lib/mongoid/relations/many.rb +51 -31
  144. data/lib/mongoid/relations/marshalable.rb +3 -3
  145. data/lib/mongoid/relations/metadata.rb +14 -79
  146. data/lib/mongoid/relations/nested_builder.rb +2 -2
  147. data/lib/mongoid/relations/one.rb +1 -1
  148. data/lib/mongoid/relations/options.rb +1 -0
  149. data/lib/mongoid/relations/polymorphic.rb +0 -1
  150. data/lib/mongoid/relations/proxy.rb +21 -41
  151. data/lib/mongoid/relations/referenced/in.rb +4 -20
  152. data/lib/mongoid/relations/referenced/many.rb +22 -35
  153. data/lib/mongoid/relations/referenced/many_to_many.rb +19 -42
  154. data/lib/mongoid/relations/referenced/one.rb +6 -25
  155. data/lib/mongoid/relations/synchronization.rb +4 -4
  156. data/lib/mongoid/relations/targets/enumerable.rb +10 -10
  157. data/lib/mongoid/relations/touchable.rb +34 -1
  158. data/lib/mongoid/{reloading.rb → reloadable.rb} +7 -5
  159. data/lib/mongoid/{scoping.rb → scopable.rb} +36 -36
  160. data/lib/mongoid/selectable.rb +59 -0
  161. data/lib/mongoid/{serialization.rb → serializable.rb} +11 -2
  162. data/lib/mongoid/sessions.rb +37 -345
  163. data/lib/mongoid/sessions/factory.rb +2 -0
  164. data/lib/mongoid/sessions/options.rb +185 -0
  165. data/lib/mongoid/sessions/storage_options.rb +140 -0
  166. data/lib/mongoid/sessions/thread_options.rb +19 -0
  167. data/lib/mongoid/sessions/validators/storage.rb +16 -3
  168. data/lib/mongoid/{sharding.rb → shardable.rb} +5 -1
  169. data/lib/mongoid/{state.rb → stateful.rb} +13 -1
  170. data/lib/mongoid/support/query_counter.rb +23 -0
  171. data/lib/mongoid/tasks/database.rake +31 -0
  172. data/lib/mongoid/tasks/database.rb +107 -0
  173. data/lib/mongoid/threaded.rb +26 -172
  174. data/lib/mongoid/threaded/lifecycle.rb +0 -28
  175. data/lib/mongoid/timestamps/updated/short.rb +2 -2
  176. data/lib/mongoid/{hierarchy.rb → traversable.rb} +15 -7
  177. data/lib/mongoid/{validations.rb → validatable.rb} +23 -10
  178. data/lib/mongoid/{validations → validatable}/associated.rb +4 -2
  179. data/lib/mongoid/{validations → validatable}/format.rb +1 -1
  180. data/lib/mongoid/{validations → validatable}/length.rb +1 -1
  181. data/lib/mongoid/{validations → validatable}/localizable.rb +1 -1
  182. data/lib/mongoid/{validations → validatable}/macros.rb +4 -3
  183. data/lib/mongoid/{validations → validatable}/presence.rb +1 -1
  184. data/lib/mongoid/{validations → validatable}/queryable.rb +1 -2
  185. data/lib/mongoid/{validations → validatable}/uniqueness.rb +25 -21
  186. data/lib/mongoid/version.rb +1 -1
  187. data/lib/rails/generators/mongoid/config/templates/mongoid.yml +46 -25
  188. data/lib/rails/generators/mongoid/model/model_generator.rb +0 -1
  189. data/lib/rails/generators/mongoid/model/templates/model.rb.tt +0 -3
  190. data/lib/rails/generators/mongoid_generator.rb +3 -40
  191. data/lib/rails/mongoid.rb +0 -122
  192. data/lib/support/ruby_version.rb +1 -1
  193. data/spec/app/models/account.rb +2 -6
  194. data/spec/app/models/acolyte.rb +2 -1
  195. data/spec/app/models/actor.rb +0 -1
  196. data/spec/app/models/address.rb +8 -3
  197. data/spec/app/models/animal.rb +1 -1
  198. data/spec/app/models/appointment.rb +3 -3
  199. data/spec/app/models/article.rb +1 -4
  200. data/spec/app/models/audio.rb +5 -0
  201. data/spec/app/models/author.rb +0 -2
  202. data/spec/app/models/band.rb +3 -2
  203. data/spec/app/models/bar.rb +1 -0
  204. data/spec/app/models/book.rb +1 -0
  205. data/spec/app/models/building.rb +0 -2
  206. data/spec/app/models/building_address.rb +0 -2
  207. data/spec/app/models/bus.rb +1 -1
  208. data/spec/app/models/canvas.rb +1 -1
  209. data/spec/app/models/contextable_item.rb +5 -0
  210. data/spec/app/models/contractor.rb +0 -2
  211. data/spec/app/models/country_code.rb +1 -1
  212. data/spec/app/models/definition.rb +2 -2
  213. data/spec/app/models/dog.rb +1 -1
  214. data/spec/app/models/draft.rb +9 -0
  215. data/spec/app/models/dragon.rb +4 -0
  216. data/spec/app/models/drug.rb +1 -3
  217. data/spec/app/models/dungeon.rb +4 -0
  218. data/spec/app/models/edit.rb +5 -0
  219. data/spec/app/models/even.rb +7 -0
  220. data/spec/app/models/event.rb +1 -1
  221. data/spec/app/models/filesystem.rb +1 -0
  222. data/spec/app/models/fish.rb +0 -1
  223. data/spec/app/models/fruits.rb +6 -0
  224. data/spec/app/models/game.rb +0 -2
  225. data/spec/app/models/house.rb +1 -3
  226. data/spec/app/models/id_key.rb +6 -0
  227. data/spec/app/models/item.rb +1 -5
  228. data/spec/app/models/jar.rb +1 -1
  229. data/spec/app/models/label.rb +4 -4
  230. data/spec/app/models/line_item.rb +1 -1
  231. data/spec/app/models/login.rb +1 -1
  232. data/spec/app/models/message.rb +8 -0
  233. data/spec/app/models/movie.rb +1 -0
  234. data/spec/app/models/name.rb +3 -3
  235. data/spec/app/models/note.rb +3 -1
  236. data/spec/app/models/odd.rb +7 -0
  237. data/spec/app/models/oscar.rb +1 -1
  238. data/spec/app/models/parent_doc.rb +1 -1
  239. data/spec/app/models/person.rb +16 -10
  240. data/spec/app/models/phone.rb +1 -3
  241. data/spec/app/models/player.rb +3 -3
  242. data/spec/app/models/post.rb +5 -3
  243. data/spec/app/models/preference.rb +1 -1
  244. data/spec/app/models/quiz.rb +0 -3
  245. data/spec/app/models/record.rb +10 -5
  246. data/spec/app/models/registry.rb +1 -1
  247. data/spec/app/models/server.rb +1 -1
  248. data/spec/app/models/service.rb +3 -3
  249. data/spec/app/models/sound.rb +5 -0
  250. data/spec/app/models/symptom.rb +1 -1
  251. data/spec/app/models/template.rb +1 -1
  252. data/spec/app/models/title.rb +0 -1
  253. data/spec/app/models/track.rb +5 -5
  254. data/spec/app/models/tree.rb +3 -3
  255. data/spec/app/models/video.rb +1 -5
  256. data/spec/app/models/wiki_page.rb +2 -5
  257. data/spec/app/models/word.rb +3 -0
  258. data/spec/app/models/word_origin.rb +1 -1
  259. data/spec/config/mongoid.yml +7 -8
  260. data/spec/helpers.rb +18 -0
  261. data/spec/mongoid/#atomic_spec.rb# +365 -0
  262. data/spec/mongoid/atomic/modifiers_spec.rb +22 -22
  263. data/spec/mongoid/atomic/paths/embedded/many_spec.rb +8 -49
  264. data/spec/mongoid/atomic/paths/embedded/one_spec.rb +7 -49
  265. data/spec/mongoid/atomic/paths/root_spec.rb +3 -61
  266. data/spec/mongoid/atomic/paths_spec.rb +19 -19
  267. data/spec/mongoid/atomic_spec.rb +19 -19
  268. data/spec/mongoid/{nested_attributes_spec.rb → attributes/nested_spec.rb} +474 -592
  269. data/spec/mongoid/attributes/readonly_spec.rb +58 -18
  270. data/spec/mongoid/attributes_spec.rb +349 -434
  271. data/spec/mongoid/{dirty_spec.rb → changeable_spec.rb} +203 -153
  272. data/spec/mongoid/{components_spec.rb → composable_spec.rb} +3 -3
  273. data/spec/mongoid/config/environment_spec.rb +3 -3
  274. data/spec/mongoid/config/options_spec.rb +6 -6
  275. data/spec/mongoid/config_spec.rb +24 -48
  276. data/spec/mongoid/contextual/aggregable/memory_spec.rb +12 -12
  277. data/spec/mongoid/contextual/aggregable/mongo_spec.rb +78 -38
  278. data/spec/mongoid/contextual/atomic_spec.rb +60 -56
  279. data/spec/mongoid/contextual/find_and_modify_spec.rb +14 -14
  280. data/spec/mongoid/contextual/geo_near_spec.rb +22 -22
  281. data/spec/mongoid/contextual/map_reduce_spec.rb +27 -27
  282. data/spec/mongoid/contextual/memory_spec.rb +156 -94
  283. data/spec/mongoid/contextual/mongo_spec.rb +238 -150
  284. data/spec/mongoid/contextual/none_spec.rb +127 -0
  285. data/spec/mongoid/contextual/text_search_spec.rb +209 -0
  286. data/spec/mongoid/copyable_spec.rb +56 -68
  287. data/spec/mongoid/criteria/findable_spec.rb +991 -0
  288. data/spec/mongoid/{criterion/inspection_spec.rb → criteria/inspectable_spec.rb} +5 -5
  289. data/spec/mongoid/{criterion → criteria}/marshalable_spec.rb +2 -2
  290. data/spec/mongoid/criteria/modifiable_spec.rb +1252 -0
  291. data/spec/mongoid/{criterion/scoping_spec.rb → criteria/scopable_spec.rb} +37 -37
  292. data/spec/mongoid/criteria_spec.rb +715 -2421
  293. data/spec/mongoid/document_spec.rb +171 -121
  294. data/spec/mongoid/equality_spec.rb +22 -22
  295. data/spec/mongoid/errors/ambiguous_relationship_spec.rb +3 -3
  296. data/spec/mongoid/errors/callback_spec.rb +3 -3
  297. data/spec/mongoid/errors/delete_restriction_spec.rb +3 -3
  298. data/spec/mongoid/errors/document_not_destroyed_spec.rb +33 -0
  299. data/spec/mongoid/errors/document_not_found_spec.rb +11 -11
  300. data/spec/mongoid/errors/eager_load_spec.rb +3 -3
  301. data/spec/mongoid/errors/invalid_collection_spec.rb +3 -3
  302. data/spec/mongoid/errors/invalid_config_option_spec.rb +3 -3
  303. data/spec/mongoid/errors/invalid_field_option_spec.rb +3 -3
  304. data/spec/mongoid/errors/invalid_field_spec.rb +3 -3
  305. data/spec/mongoid/errors/invalid_find_spec.rb +3 -3
  306. data/spec/mongoid/errors/invalid_includes_spec.rb +3 -3
  307. data/spec/mongoid/errors/invalid_index_spec.rb +3 -3
  308. data/spec/mongoid/errors/invalid_options_spec.rb +3 -3
  309. data/spec/mongoid/errors/invalid_path_spec.rb +3 -3
  310. data/spec/mongoid/errors/invalid_scope_spec.rb +5 -5
  311. data/spec/mongoid/errors/invalid_set_polymorphic_relation_spec.rb +3 -3
  312. data/spec/mongoid/errors/invalid_storage_options_spec.rb +3 -3
  313. data/spec/mongoid/errors/invalid_time_spec.rb +3 -3
  314. data/spec/mongoid/errors/inverse_not_found_spec.rb +3 -3
  315. data/spec/mongoid/errors/mixed_relations_spec.rb +3 -3
  316. data/spec/mongoid/errors/mixed_session_configuration_spec.rb +3 -3
  317. data/spec/mongoid/errors/mongoid_error_spec.rb +8 -8
  318. data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +3 -3
  319. data/spec/mongoid/errors/no_environment_spec.rb +3 -3
  320. data/spec/mongoid/errors/no_map_reduce_output_spec.rb +3 -3
  321. data/spec/mongoid/errors/no_metadata_spec.rb +3 -3
  322. data/spec/mongoid/errors/no_parent_spec.rb +3 -3
  323. data/spec/mongoid/errors/no_session_config_spec.rb +3 -3
  324. data/spec/mongoid/errors/no_session_database_spec.rb +3 -3
  325. data/spec/mongoid/errors/no_session_hosts_spec.rb +3 -3
  326. data/spec/mongoid/errors/no_sessions_config_spec.rb +3 -3
  327. data/spec/mongoid/errors/readonly_attribute_spec.rb +3 -3
  328. data/spec/mongoid/errors/readonly_document_spec.rb +29 -0
  329. data/spec/mongoid/errors/scope_overwrite_spec.rb +3 -3
  330. data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +3 -3
  331. data/spec/mongoid/errors/unknown_attribute_spec.rb +5 -5
  332. data/spec/mongoid/errors/unsaved_document_spec.rb +3 -3
  333. data/spec/mongoid/errors/unsupported_javascript_spec.rb +3 -3
  334. data/spec/mongoid/errors/validations_spec.rb +7 -7
  335. data/spec/mongoid/extensions/array_spec.rb +61 -61
  336. data/spec/mongoid/extensions/big_decimal_spec.rb +11 -11
  337. data/spec/mongoid/extensions/binary_spec.rb +12 -12
  338. data/spec/mongoid/extensions/boolean_spec.rb +18 -18
  339. data/spec/mongoid/extensions/date_spec.rb +13 -13
  340. data/spec/mongoid/extensions/date_time_spec.rb +8 -8
  341. data/spec/mongoid/extensions/false_class_spec.rb +5 -5
  342. data/spec/mongoid/extensions/float_spec.rb +29 -15
  343. data/spec/mongoid/extensions/hash_spec.rb +29 -29
  344. data/spec/mongoid/extensions/integer_spec.rb +15 -15
  345. data/spec/mongoid/extensions/module_spec.rb +2 -2
  346. data/spec/mongoid/extensions/nil_class_spec.rb +1 -1
  347. data/spec/mongoid/extensions/object_id_spec.rb +134 -134
  348. data/spec/mongoid/extensions/object_spec.rb +26 -26
  349. data/spec/mongoid/extensions/range_spec.rb +61 -12
  350. data/spec/mongoid/extensions/regexp_spec.rb +4 -4
  351. data/spec/mongoid/extensions/set_spec.rb +4 -4
  352. data/spec/mongoid/extensions/string_spec.rb +35 -46
  353. data/spec/mongoid/extensions/symbol_spec.rb +9 -9
  354. data/spec/mongoid/extensions/time_spec.rb +49 -49
  355. data/spec/mongoid/extensions/time_with_zone_spec.rb +34 -34
  356. data/spec/mongoid/extensions/true_class_spec.rb +5 -5
  357. data/spec/mongoid/extensions_spec.rb +29 -0
  358. data/spec/mongoid/factory_spec.rb +15 -15
  359. data/spec/mongoid/fields/foreign_key_spec.rb +73 -66
  360. data/spec/mongoid/fields/internal/foreign_keys/array_spec.rb +15 -15
  361. data/spec/mongoid/fields/internal/foreign_keys/object_spec.rb +22 -22
  362. data/spec/mongoid/fields/localized_spec.rb +38 -23
  363. data/spec/mongoid/fields/standard_spec.rb +12 -12
  364. data/spec/mongoid/fields_spec.rb +263 -217
  365. data/spec/mongoid/findable_spec.rb +509 -0
  366. data/spec/mongoid/indexable/specification_spec.rb +102 -0
  367. data/spec/mongoid/{indexes_spec.rb → indexable_spec.rb} +171 -51
  368. data/spec/mongoid/{inspection_spec.rb → inspectable_spec.rb} +6 -14
  369. data/spec/mongoid/{callbacks_spec.rb → interceptable_spec.rb} +117 -116
  370. data/spec/mongoid/log_subscriber_spec.rb +75 -0
  371. data/spec/mongoid/loggable_spec.rb +1 -1
  372. data/spec/mongoid/{matchers → matchable}/all_spec.rb +4 -4
  373. data/spec/mongoid/{matchers → matchable}/and_spec.rb +11 -11
  374. data/spec/mongoid/{matchers → matchable}/default_spec.rb +15 -15
  375. data/spec/mongoid/{matchers → matchable}/exists_spec.rb +5 -5
  376. data/spec/mongoid/{matchers → matchable}/gt_spec.rb +9 -8
  377. data/spec/mongoid/{matchers → matchable}/gte_spec.rb +7 -7
  378. data/spec/mongoid/matchable/in_spec.rb +49 -0
  379. data/spec/mongoid/{matchers → matchable}/lt_spec.rb +7 -7
  380. data/spec/mongoid/{matchers → matchable}/lte_spec.rb +7 -7
  381. data/spec/mongoid/matchable/ne_spec.rb +46 -0
  382. data/spec/mongoid/matchable/nin_spec.rb +48 -0
  383. data/spec/mongoid/{matchers → matchable}/or_spec.rb +6 -6
  384. data/spec/mongoid/{matchers → matchable}/size_spec.rb +3 -3
  385. data/spec/mongoid/{matchers_spec.rb → matchable_spec.rb} +41 -41
  386. data/spec/mongoid/persistable/creatable_spec.rb +553 -0
  387. data/spec/mongoid/persistable/deletable_spec.rb +218 -0
  388. data/spec/mongoid/persistable/destroyable_spec.rb +192 -0
  389. data/spec/mongoid/persistable/incrementable_spec.rb +173 -0
  390. data/spec/mongoid/persistable/logical_spec.rb +143 -0
  391. data/spec/mongoid/persistable/poppable_spec.rb +115 -0
  392. data/spec/mongoid/persistable/pullable_spec.rb +228 -0
  393. data/spec/mongoid/persistable/pushable_spec.rb +258 -0
  394. data/spec/mongoid/persistable/renamable_spec.rb +135 -0
  395. data/spec/mongoid/persistable/savable_spec.rb +498 -0
  396. data/spec/mongoid/persistable/settable_spec.rb +162 -0
  397. data/spec/mongoid/persistable/unsettable_spec.rb +155 -0
  398. data/spec/mongoid/persistable/updatable_spec.rb +558 -0
  399. data/spec/mongoid/persistable/upsertable_spec.rb +106 -0
  400. data/spec/mongoid/persistable_spec.rb +206 -0
  401. data/spec/mongoid/{atomic/positionable_spec.rb → positional_spec.rb} +14 -19
  402. data/spec/mongoid/query_cache_spec.rb +263 -0
  403. data/spec/mongoid/railties/document_spec.rb +2 -2
  404. data/spec/mongoid/relations/accessors_spec.rb +53 -145
  405. data/spec/mongoid/relations/auto_save_spec.rb +37 -17
  406. data/spec/mongoid/relations/bindings/embedded/in_spec.rb +12 -12
  407. data/spec/mongoid/relations/bindings/embedded/many_spec.rb +3 -3
  408. data/spec/mongoid/relations/bindings/embedded/one_spec.rb +5 -5
  409. data/spec/mongoid/relations/bindings/referenced/in_spec.rb +26 -26
  410. data/spec/mongoid/relations/bindings/referenced/many_spec.rb +10 -10
  411. data/spec/mongoid/relations/bindings/referenced/many_to_many_spec.rb +19 -19
  412. data/spec/mongoid/relations/bindings/referenced/one_spec.rb +12 -12
  413. data/spec/mongoid/relations/builders/embedded/in_spec.rb +4 -4
  414. data/spec/mongoid/relations/builders/embedded/many_spec.rb +18 -18
  415. data/spec/mongoid/relations/builders/embedded/one_spec.rb +11 -11
  416. data/spec/mongoid/relations/builders/nested_attributes/many_spec.rb +12 -13
  417. data/spec/mongoid/relations/builders/nested_attributes/one_spec.rb +14 -14
  418. data/spec/mongoid/relations/builders/referenced/in_spec.rb +24 -35
  419. data/spec/mongoid/relations/builders/referenced/many_spec.rb +15 -15
  420. data/spec/mongoid/relations/builders/referenced/many_to_many_spec.rb +18 -18
  421. data/spec/mongoid/relations/builders/referenced/one_spec.rb +12 -25
  422. data/spec/mongoid/relations/builders_spec.rb +21 -21
  423. data/spec/mongoid/relations/cascading/delete_spec.rb +9 -9
  424. data/spec/mongoid/relations/cascading/destroy_spec.rb +6 -6
  425. data/spec/mongoid/relations/cascading/nullify_spec.rb +4 -4
  426. data/spec/mongoid/relations/cascading/restrict_spec.rb +7 -7
  427. data/spec/mongoid/relations/cascading_spec.rb +16 -16
  428. data/spec/mongoid/relations/constraint_spec.rb +8 -7
  429. data/spec/mongoid/relations/conversions_spec.rb +16 -14
  430. data/spec/mongoid/relations/counter_cache_spec.rb +85 -0
  431. data/spec/mongoid/relations/cyclic_spec.rb +18 -18
  432. data/spec/mongoid/relations/eager/belongs_to_spec.rb +154 -0
  433. data/spec/mongoid/relations/eager/has_and_belongs_to_many_spec.rb +117 -0
  434. data/spec/mongoid/relations/eager/has_many_spec.rb +207 -0
  435. data/spec/mongoid/relations/eager/has_one_spec.rb +163 -0
  436. data/spec/mongoid/relations/eager_spec.rb +228 -0
  437. data/spec/mongoid/relations/embedded/dirty_spec.rb +8 -8
  438. data/spec/mongoid/relations/embedded/in_spec.rb +56 -57
  439. data/spec/mongoid/relations/embedded/many_spec.rb +467 -372
  440. data/spec/mongoid/relations/embedded/one_spec.rb +108 -141
  441. data/spec/mongoid/relations/macros_spec.rb +108 -102
  442. data/spec/mongoid/relations/metadata_spec.rb +180 -255
  443. data/spec/mongoid/relations/options_spec.rb +1 -1
  444. data/spec/mongoid/relations/polymorphic_spec.rb +13 -17
  445. data/spec/mongoid/relations/proxy_spec.rb +2 -2
  446. data/spec/mongoid/relations/referenced/in_spec.rb +128 -303
  447. data/spec/mongoid/relations/referenced/many_spec.rb +587 -527
  448. data/spec/mongoid/relations/referenced/many_to_many_spec.rb +401 -424
  449. data/spec/mongoid/relations/referenced/one_spec.rb +149 -264
  450. data/spec/mongoid/relations/reflections_spec.rb +6 -6
  451. data/spec/mongoid/relations/synchronization_spec.rb +46 -50
  452. data/spec/mongoid/relations/targets/enumerable_spec.rb +118 -118
  453. data/spec/mongoid/relations/touchable_spec.rb +333 -0
  454. data/spec/mongoid/relations_spec.rb +16 -15
  455. data/spec/mongoid/{reloading_spec.rb → reloadable_spec.rb} +38 -55
  456. data/spec/mongoid/{scoping_spec.rb → scopable_spec.rb} +89 -164
  457. data/spec/mongoid/selectable_spec.rb +134 -0
  458. data/spec/mongoid/{serialization_spec.rb → serializable_spec.rb} +129 -82
  459. data/spec/mongoid/sessions/factory_spec.rb +49 -28
  460. data/spec/mongoid/sessions/mongo_uri_spec.rb +7 -7
  461. data/spec/mongoid/sessions/options_spec.rb +108 -0
  462. data/spec/mongoid/sessions_spec.rb +319 -178
  463. data/spec/mongoid/{sharding_spec.rb → shardable_spec.rb} +8 -8
  464. data/spec/mongoid/{state_spec.rb → stateful_spec.rb} +36 -11
  465. data/spec/mongoid/tasks/database_rake_spec.rb +285 -0
  466. data/spec/mongoid/tasks/database_spec.rb +160 -0
  467. data/spec/mongoid/threaded_spec.rb +17 -70
  468. data/spec/mongoid/timestamps/created/short_spec.rb +6 -6
  469. data/spec/mongoid/timestamps/created_spec.rb +5 -5
  470. data/spec/mongoid/timestamps/timeless_spec.rb +6 -6
  471. data/spec/mongoid/timestamps/updated/short_spec.rb +11 -11
  472. data/spec/mongoid/timestamps/updated_spec.rb +9 -13
  473. data/spec/mongoid/timestamps_spec.rb +9 -13
  474. data/spec/mongoid/{hierarchy_spec.rb → traversable_spec.rb} +19 -19
  475. data/spec/mongoid/{validations → validatable}/associated_spec.rb +45 -22
  476. data/spec/mongoid/{validations → validatable}/format_spec.rb +6 -6
  477. data/spec/mongoid/{validations → validatable}/length_spec.rb +14 -14
  478. data/spec/mongoid/{validations → validatable}/numericality_spec.rb +1 -1
  479. data/spec/mongoid/{validations → validatable}/presence_spec.rb +37 -44
  480. data/spec/mongoid/{validations → validatable}/uniqueness_spec.rb +184 -192
  481. data/spec/mongoid/{validations_spec.rb → validatable_spec.rb} +28 -28
  482. data/spec/mongoid_spec.rb +8 -8
  483. data/spec/rails/mongoid_spec.rb +19 -335
  484. data/spec/spec_helper.rb +31 -13
  485. metadata +303 -283
  486. data/lib/mongoid/atomic/positionable.rb +0 -73
  487. data/lib/mongoid/components.rb +0 -92
  488. data/lib/mongoid/config/inflections.rb +0 -6
  489. data/lib/mongoid/contextual/eager.rb +0 -158
  490. data/lib/mongoid/errors/versioning_not_on_root.rb +0 -23
  491. data/lib/mongoid/identity_map.rb +0 -163
  492. data/lib/mongoid/json.rb +0 -16
  493. data/lib/mongoid/matchers.rb +0 -32
  494. data/lib/mongoid/matchers/strategies.rb +0 -97
  495. data/lib/mongoid/multi_parameter_attributes.rb +0 -105
  496. data/lib/mongoid/nested_attributes.rb +0 -78
  497. data/lib/mongoid/observer.rb +0 -192
  498. data/lib/mongoid/paranoia.rb +0 -136
  499. data/lib/mongoid/persistence.rb +0 -357
  500. data/lib/mongoid/persistence/atomic.rb +0 -231
  501. data/lib/mongoid/persistence/atomic/add_to_set.rb +0 -47
  502. data/lib/mongoid/persistence/atomic/bit.rb +0 -35
  503. data/lib/mongoid/persistence/atomic/inc.rb +0 -45
  504. data/lib/mongoid/persistence/atomic/operation.rb +0 -154
  505. data/lib/mongoid/persistence/atomic/pop.rb +0 -32
  506. data/lib/mongoid/persistence/atomic/pull.rb +0 -32
  507. data/lib/mongoid/persistence/atomic/pull_all.rb +0 -32
  508. data/lib/mongoid/persistence/atomic/push.rb +0 -25
  509. data/lib/mongoid/persistence/atomic/push_all.rb +0 -25
  510. data/lib/mongoid/persistence/atomic/rename.rb +0 -30
  511. data/lib/mongoid/persistence/atomic/sets.rb +0 -28
  512. data/lib/mongoid/persistence/atomic/unset.rb +0 -27
  513. data/lib/mongoid/persistence/deletion.rb +0 -31
  514. data/lib/mongoid/persistence/insertion.rb +0 -38
  515. data/lib/mongoid/persistence/modification.rb +0 -35
  516. data/lib/mongoid/persistence/operations.rb +0 -214
  517. data/lib/mongoid/persistence/operations/embedded/insert.rb +0 -46
  518. data/lib/mongoid/persistence/operations/embedded/remove.rb +0 -43
  519. data/lib/mongoid/persistence/operations/insert.rb +0 -34
  520. data/lib/mongoid/persistence/operations/remove.rb +0 -33
  521. data/lib/mongoid/persistence/operations/update.rb +0 -59
  522. data/lib/mongoid/persistence/operations/upsert.rb +0 -28
  523. data/lib/mongoid/persistence/upsertion.rb +0 -31
  524. data/lib/mongoid/unit_of_work.rb +0 -61
  525. data/lib/mongoid/versioning.rb +0 -217
  526. data/lib/rack/mongoid.rb +0 -2
  527. data/lib/rack/mongoid/middleware/identity_map.rb +0 -39
  528. data/lib/rails/generators/mongoid/observer/observer_generator.rb +0 -17
  529. data/lib/rails/generators/mongoid/observer/templates/observer.rb.tt +0 -4
  530. data/spec/app/models/actor_observer.rb +0 -15
  531. data/spec/app/models/callback_recorder.rb +0 -25
  532. data/spec/app/models/paranoid_phone.rb +0 -25
  533. data/spec/app/models/paranoid_post.rb +0 -36
  534. data/spec/app/models/phone_observer.rb +0 -6
  535. data/spec/mongoid/attributes/processing_spec.rb +0 -149
  536. data/spec/mongoid/criterion/destructive_spec.rb +0 -101
  537. data/spec/mongoid/criterion/modifiable_spec.rb +0 -409
  538. data/spec/mongoid/criterion/modification_spec.rb +0 -402
  539. data/spec/mongoid/errors/versioning_not_on_root_spec.rb +0 -29
  540. data/spec/mongoid/finders_spec.rb +0 -321
  541. data/spec/mongoid/identity_map_spec.rb +0 -564
  542. data/spec/mongoid/json_spec.rb +0 -33
  543. data/spec/mongoid/matchers/in_spec.rb +0 -25
  544. data/spec/mongoid/matchers/ne_spec.rb +0 -25
  545. data/spec/mongoid/matchers/nin_spec.rb +0 -25
  546. data/spec/mongoid/multi_parameter_attributes_spec.rb +0 -128
  547. data/spec/mongoid/observer_spec.rb +0 -290
  548. data/spec/mongoid/paranoia_spec.rb +0 -759
  549. data/spec/mongoid/persistence/atomic/add_to_set_spec.rb +0 -262
  550. data/spec/mongoid/persistence/atomic/bit_spec.rb +0 -88
  551. data/spec/mongoid/persistence/atomic/inc_spec.rb +0 -133
  552. data/spec/mongoid/persistence/atomic/pop_spec.rb +0 -111
  553. data/spec/mongoid/persistence/atomic/pull_all_spec.rb +0 -77
  554. data/spec/mongoid/persistence/atomic/pull_spec.rb +0 -80
  555. data/spec/mongoid/persistence/atomic/push_all_spec.rb +0 -77
  556. data/spec/mongoid/persistence/atomic/push_spec.rb +0 -77
  557. data/spec/mongoid/persistence/atomic/rename_spec.rb +0 -42
  558. data/spec/mongoid/persistence/atomic/sets_spec.rb +0 -154
  559. data/spec/mongoid/persistence/atomic/unset_spec.rb +0 -65
  560. data/spec/mongoid/persistence/atomic_spec.rb +0 -216
  561. data/spec/mongoid/persistence/operations/embedded/insert_spec.rb +0 -191
  562. data/spec/mongoid/persistence/operations/embedded/remove_spec.rb +0 -8
  563. data/spec/mongoid/persistence/operations/insert_spec.rb +0 -149
  564. data/spec/mongoid/persistence/operations/remove_spec.rb +0 -113
  565. data/spec/mongoid/persistence/operations/update_spec.rb +0 -141
  566. data/spec/mongoid/persistence/operations/upsert_spec.rb +0 -59
  567. data/spec/mongoid/persistence/operations_spec.rb +0 -313
  568. data/spec/mongoid/persistence_spec.rb +0 -2279
  569. data/spec/mongoid/unit_of_work_spec.rb +0 -196
  570. data/spec/mongoid/versioning_spec.rb +0 -540
  571. data/spec/rack/mongoid/middleware/identity_map_spec.rb +0 -72
@@ -15,7 +15,7 @@ describe Mongoid::Relations::Options do
15
15
  end
16
16
 
17
17
  it "returns true" do
18
- described_class.validate!(options).should be_true
18
+ expect(described_class.validate!(options)).to be true
19
19
  end
20
20
  end
21
21
 
@@ -25,19 +25,15 @@ describe Mongoid::Relations::Polymorphic do
25
25
  end
26
26
 
27
27
  it "sets polymorphic to true" do
28
- klass.should be_polymorphic
28
+ expect(klass).to be_polymorphic
29
29
  end
30
30
 
31
31
  it "adds the foreign key type field" do
32
- klass.fields["ratable_type"].should_not be_nil
33
- end
34
-
35
- it "adds the foreign key inverse field field" do
36
- klass.fields["ratable_field"].should_not be_nil
32
+ expect(klass.fields["ratable_type"]).to_not be_nil
37
33
  end
38
34
 
39
35
  it "returns self" do
40
- polymorphed.should eq(klass)
36
+ expect(polymorphed).to eq(klass)
41
37
  end
42
38
  end
43
39
 
@@ -56,15 +52,15 @@ describe Mongoid::Relations::Polymorphic do
56
52
  end
57
53
 
58
54
  it "sets polymorphic to true" do
59
- klass.should be_polymorphic
55
+ expect(klass).to be_polymorphic
60
56
  end
61
57
 
62
58
  it "does not add the foreign key type field" do
63
- klass.fields["ratable_type"].should be_nil
59
+ expect(klass.fields["ratable_type"]).to be_nil
64
60
  end
65
61
 
66
62
  it "does not add the foreign key inverse field field" do
67
- klass.fields["ratable_field"].should be_nil
63
+ expect(klass.fields["ratable_field"]).to be_nil
68
64
  end
69
65
  end
70
66
  end
@@ -83,15 +79,15 @@ describe Mongoid::Relations::Polymorphic do
83
79
  end
84
80
 
85
81
  it "sets polymorphic to false" do
86
- klass.should_not be_polymorphic
82
+ expect(klass).to_not be_polymorphic
87
83
  end
88
84
 
89
85
  it "does not add the foreign key type field" do
90
- klass.fields["ratable_type"].should be_nil
86
+ expect(klass.fields["ratable_type"]).to be_nil
91
87
  end
92
88
 
93
89
  it "does not add the foreign key inverse field field" do
94
- klass.fields["ratable_field"].should be_nil
90
+ expect(klass.fields["ratable_field"]).to be_nil
95
91
  end
96
92
  end
97
93
  end
@@ -101,14 +97,14 @@ describe Mongoid::Relations::Polymorphic do
101
97
  context "when the document is in a polymorphic relation" do
102
98
 
103
99
  it "returns true" do
104
- Movie.should be_polymorphic
100
+ expect(Movie).to be_polymorphic
105
101
  end
106
102
  end
107
103
 
108
104
  context "when the document is not in a polymorphic relation" do
109
105
 
110
106
  it "returns false" do
111
- Survey.should_not be_polymorphic
107
+ expect(Survey).to_not be_polymorphic
112
108
  end
113
109
  end
114
110
  end
@@ -118,14 +114,14 @@ describe Mongoid::Relations::Polymorphic do
118
114
  context "when the document is in a polymorphic relation" do
119
115
 
120
116
  it "returns true" do
121
- Movie.new.should be_polymorphic
117
+ expect(Movie.new).to be_polymorphic
122
118
  end
123
119
  end
124
120
 
125
121
  context "when the document is not in a polymorphic relation" do
126
122
 
127
123
  it "returns false" do
128
- Survey.new.should_not be_polymorphic
124
+ expect(Survey.new).to_not be_polymorphic
129
125
  end
130
126
  end
131
127
  end
@@ -27,7 +27,7 @@ describe Mongoid::Relations::Proxy do
27
27
  end
28
28
 
29
29
  it "extends the proxied object" do
30
- person.should be_a(Testable)
30
+ expect(person).to be_a(Testable)
31
31
  end
32
32
 
33
33
  context "when extending from the relation definition" do
@@ -41,7 +41,7 @@ describe Mongoid::Relations::Proxy do
41
41
  end
42
42
 
43
43
  it "extends the proxy" do
44
- found.should eq(address)
44
+ expect(found).to eq(address)
45
45
  end
46
46
  end
47
47
  end
@@ -27,7 +27,7 @@ describe Mongoid::Relations::Referenced::In do
27
27
  end
28
28
 
29
29
  it "sets the target relation" do
30
- service.target.should eq(target)
30
+ expect(service.target).to eq(target)
31
31
  end
32
32
  end
33
33
  end
@@ -48,11 +48,11 @@ describe Mongoid::Relations::Referenced::In do
48
48
  end
49
49
 
50
50
  it "sets the relation" do
51
- agent.game.should eq(game)
51
+ expect(agent.game).to eq(game)
52
52
  end
53
53
 
54
54
  it "sets the foreign_key" do
55
- agent.game_id.should eq(game.id)
55
+ expect(agent.game_id).to eq(game.id)
56
56
  end
57
57
  end
58
58
 
@@ -75,15 +75,15 @@ describe Mongoid::Relations::Referenced::In do
75
75
  end
76
76
 
77
77
  it "sets the relation" do
78
- address.account.should eq(account)
78
+ expect(address.account).to eq(account)
79
79
  end
80
80
 
81
81
  it "does not erase the metadata" do
82
- address.metadata.should_not be_nil
82
+ expect(address.__metadata).to_not be_nil
83
83
  end
84
84
 
85
85
  it "allows saving of the embedded document" do
86
- address.save.should be_true
86
+ expect(address.save).to be true
87
87
  end
88
88
  end
89
89
 
@@ -106,23 +106,23 @@ describe Mongoid::Relations::Referenced::In do
106
106
  end
107
107
 
108
108
  it "sets the target of the relation" do
109
- game.person.target.should eq(person)
109
+ expect(game.person.target).to eq(person)
110
110
  end
111
111
 
112
112
  it "sets the foreign key on the relation" do
113
- game.person_id.should eq(person.id)
113
+ expect(game.person_id).to eq(person.id)
114
114
  end
115
115
 
116
116
  it "sets the base on the inverse relation" do
117
- person.game.should eq(game)
117
+ expect(person.game).to eq(game)
118
118
  end
119
119
 
120
120
  it "sets the same instance on the inverse relation" do
121
- person.game.should eql(game)
121
+ expect(person.game).to eql(game)
122
122
  end
123
123
 
124
124
  it "does not save the target" do
125
- person.should_not be_persisted
125
+ expect(person).to_not be_persisted
126
126
  end
127
127
  end
128
128
 
@@ -141,23 +141,23 @@ describe Mongoid::Relations::Referenced::In do
141
141
  end
142
142
 
143
143
  it "sets the target of the relation" do
144
- game.person.target.should eq(person)
144
+ expect(game.person.target).to eq(person)
145
145
  end
146
146
 
147
147
  it "sets the foreign key of the relation" do
148
- game.person_id.should eq(person.id)
148
+ expect(game.person_id).to eq(person.id)
149
149
  end
150
150
 
151
151
  it "sets the base on the inverse relation" do
152
- person.game.should eq(game)
152
+ expect(person.game).to eq(game)
153
153
  end
154
154
 
155
155
  it "sets the same instance on the inverse relation" do
156
- person.game.should eql(game)
156
+ expect(person.game).to eql(game)
157
157
  end
158
158
 
159
159
  it "does not saves the target" do
160
- person.should_not be_persisted
160
+ expect(person).to_not be_persisted
161
161
  end
162
162
  end
163
163
  end
@@ -180,11 +180,11 @@ describe Mongoid::Relations::Referenced::In do
180
180
  end
181
181
 
182
182
  it "sets the correct value in the type field" do
183
- comment.commentable_type.should eq("Canvas::Test")
183
+ expect(comment.commentable_type).to eq("Canvas::Test")
184
184
  end
185
185
 
186
186
  it "can retrieve the document from the database" do
187
- comment.reload.commentable.should eq(canvas)
187
+ expect(comment.reload.commentable).to eq(canvas)
188
188
  end
189
189
  end
190
190
 
@@ -203,27 +203,23 @@ describe Mongoid::Relations::Referenced::In do
203
203
  end
204
204
 
205
205
  it "sets the target of the relation" do
206
- rating.ratable.target.should eq(bar)
206
+ expect(rating.ratable.target).to eq(bar)
207
207
  end
208
208
 
209
209
  it "sets the foreign key on the relation" do
210
- rating.ratable_id.should eq(bar.id)
211
- end
212
-
213
- it "does not set the inverse of field on the relation" do
214
- rating.ratable_field.should be_nil
210
+ expect(rating.ratable_id).to eq(bar.id)
215
211
  end
216
212
 
217
213
  it "sets the base on the inverse relation" do
218
- bar.rating.should eq(rating)
214
+ expect(bar.rating).to eq(rating)
219
215
  end
220
216
 
221
217
  it "sets the same instance on the inverse relation" do
222
- bar.rating.should eql(rating)
218
+ expect(bar.rating).to eql(rating)
223
219
  end
224
220
 
225
221
  it "does not save the target" do
226
- bar.should_not be_persisted
222
+ expect(bar).to_not be_persisted
227
223
  end
228
224
  end
229
225
 
@@ -242,27 +238,23 @@ describe Mongoid::Relations::Referenced::In do
242
238
  end
243
239
 
244
240
  it "sets the target of the relation" do
245
- rating.ratable.target.should eq(bar)
241
+ expect(rating.ratable.target).to eq(bar)
246
242
  end
247
243
 
248
244
  it "sets the foreign key of the relation" do
249
- rating.ratable_id.should eq(bar.id)
250
- end
251
-
252
- it "does not set the inverse of field on the relation" do
253
- rating.ratable_field.should be_nil
245
+ expect(rating.ratable_id).to eq(bar.id)
254
246
  end
255
247
 
256
248
  it "sets the base on the inverse relation" do
257
- bar.rating.should eq(rating)
249
+ expect(bar.rating).to eq(rating)
258
250
  end
259
251
 
260
252
  it "sets the same instance on the inverse relation" do
261
- bar.rating.should eql(rating)
253
+ expect(bar.rating).to eql(rating)
262
254
  end
263
255
 
264
256
  it "does not saves the target" do
265
- bar.should_not be_persisted
257
+ expect(bar).to_not be_persisted
266
258
  end
267
259
  end
268
260
  end
@@ -287,15 +279,15 @@ describe Mongoid::Relations::Referenced::In do
287
279
  end
288
280
 
289
281
  it "sets the target of the relation" do
290
- post.person.target.should eq(person)
282
+ expect(post.person.target).to eq(person)
291
283
  end
292
284
 
293
285
  it "sets the foreign key on the relation" do
294
- post.person_id.should eq(person.id)
286
+ expect(post.person_id).to eq(person.id)
295
287
  end
296
288
 
297
289
  it "does not save the target" do
298
- person.should_not be_persisted
290
+ expect(person).to_not be_persisted
299
291
  end
300
292
  end
301
293
 
@@ -314,15 +306,15 @@ describe Mongoid::Relations::Referenced::In do
314
306
  end
315
307
 
316
308
  it "sets the target of the relation" do
317
- post.person.target.should eq(person)
309
+ expect(post.person.target).to eq(person)
318
310
  end
319
311
 
320
312
  it "sets the foreign key of the relation" do
321
- post.person_id.should eq(person.id)
313
+ expect(post.person_id).to eq(person.id)
322
314
  end
323
315
 
324
316
  it "does not saves the target" do
325
- person.should_not be_persisted
317
+ expect(person).to_not be_persisted
326
318
  end
327
319
  end
328
320
  end
@@ -358,7 +350,7 @@ describe Mongoid::Relations::Referenced::In do
358
350
 
359
351
  it "should assign as expected" do
360
352
  eye.suspended_in = eye_bowl
361
- eye.suspended_in.target.should eq(eye_bowl)
353
+ expect(eye.suspended_in.target).to eq(eye_bowl)
362
354
  end
363
355
  end
364
356
 
@@ -379,15 +371,15 @@ describe Mongoid::Relations::Referenced::In do
379
371
  end
380
372
 
381
373
  it "sets the target of the relation" do
382
- rating.ratable.target.should eq(movie)
374
+ expect(rating.ratable.target).to eq(movie)
383
375
  end
384
376
 
385
377
  it "sets the foreign key on the relation" do
386
- rating.ratable_id.should eq(movie.id)
378
+ expect(rating.ratable_id).to eq(movie.id)
387
379
  end
388
380
 
389
381
  it "does not save the target" do
390
- movie.should_not be_persisted
382
+ expect(movie).to_not be_persisted
391
383
  end
392
384
  end
393
385
 
@@ -406,15 +398,15 @@ describe Mongoid::Relations::Referenced::In do
406
398
  end
407
399
 
408
400
  it "sets the target of the relation" do
409
- rating.ratable.target.should eq(movie)
401
+ expect(rating.ratable.target).to eq(movie)
410
402
  end
411
403
 
412
404
  it "sets the foreign key of the relation" do
413
- rating.ratable_id.should eq(movie.id)
405
+ expect(rating.ratable_id).to eq(movie.id)
414
406
  end
415
407
 
416
408
  it "does not saves the target" do
417
- movie.should_not be_persisted
409
+ expect(movie).to_not be_persisted
418
410
  end
419
411
  end
420
412
  end
@@ -427,15 +419,15 @@ describe Mongoid::Relations::Referenced::In do
427
419
  context "when dependent is destroy" do
428
420
 
429
421
  let(:account) do
430
- Account.create
422
+ Account.create!(name: 'checkings')
431
423
  end
432
424
 
433
425
  let(:drug) do
434
- Drug.create
426
+ Drug.create!
435
427
  end
436
428
 
437
429
  let(:person) do
438
- Person.create
430
+ Person.create!
439
431
  end
440
432
 
441
433
  context "when relation is has_one" do
@@ -454,6 +446,17 @@ describe Mongoid::Relations::Referenced::In do
454
446
 
455
447
  context "when parent exists" do
456
448
 
449
+ context "when child touch the parent" do
450
+
451
+ let!(:account_from_db) { account.reload }
452
+
453
+ it "queries only the parent" do
454
+ expect_query(1) do
455
+ expect(account_from_db.person.id).to eq(person.id)
456
+ end
457
+ end
458
+ end
459
+
457
460
  context "when child is destroyed" do
458
461
 
459
462
  before do
@@ -461,11 +464,11 @@ describe Mongoid::Relations::Referenced::In do
461
464
  end
462
465
 
463
466
  it "deletes child" do
464
- account.should be_destroyed
467
+ expect(account).to be_destroyed
465
468
  end
466
469
 
467
470
  it "deletes parent" do
468
- person.should be_destroyed
471
+ expect(person).to be_destroyed
469
472
  end
470
473
  end
471
474
  end
@@ -494,11 +497,11 @@ describe Mongoid::Relations::Referenced::In do
494
497
  end
495
498
 
496
499
  it "deletes child" do
497
- drug.should be_destroyed
500
+ expect(drug).to be_destroyed
498
501
  end
499
502
 
500
503
  it "deletes parent" do
501
- person.should be_destroyed
504
+ expect(person).to be_destroyed
502
505
  end
503
506
  end
504
507
  end
@@ -542,11 +545,11 @@ describe Mongoid::Relations::Referenced::In do
542
545
  end
543
546
 
544
547
  it "deletes child" do
545
- account.should be_destroyed
548
+ expect(account).to be_destroyed
546
549
  end
547
550
 
548
551
  it "deletes parent" do
549
- person.should be_destroyed
552
+ expect(person).to be_destroyed
550
553
  end
551
554
  end
552
555
  end
@@ -575,11 +578,11 @@ describe Mongoid::Relations::Referenced::In do
575
578
  end
576
579
 
577
580
  it "deletes child" do
578
- drug.should be_destroyed
581
+ expect(drug).to be_destroyed
579
582
  end
580
583
 
581
584
  it "deletes parent" do
582
- person.should be_destroyed
585
+ expect(person).to be_destroyed
583
586
  end
584
587
  end
585
588
  end
@@ -618,15 +621,15 @@ describe Mongoid::Relations::Referenced::In do
618
621
  end
619
622
 
620
623
  it "deletes child" do
621
- account.should be_destroyed
624
+ expect(account).to be_destroyed
622
625
  end
623
626
 
624
627
  it "doesn't delete parent" do
625
- person.should_not be_destroyed
628
+ expect(person).to_not be_destroyed
626
629
  end
627
630
 
628
631
  it "removes the link" do
629
- person.account.should be_nil
632
+ expect(person.account).to be_nil
630
633
  end
631
634
  end
632
635
  end
@@ -650,15 +653,15 @@ describe Mongoid::Relations::Referenced::In do
650
653
  end
651
654
 
652
655
  it "deletes child" do
653
- drug.should be_destroyed
656
+ expect(drug).to be_destroyed
654
657
  end
655
658
 
656
659
  it "doesn't deletes parent" do
657
- person.should_not be_destroyed
660
+ expect(person).to_not be_destroyed
658
661
  end
659
662
 
660
663
  it "removes the link" do
661
- person.drugs.should eq([])
664
+ expect(person.drugs).to eq([])
662
665
  end
663
666
  end
664
667
  end
@@ -681,11 +684,11 @@ describe Mongoid::Relations::Referenced::In do
681
684
  end
682
685
 
683
686
  it "removes the relation" do
684
- agent.game.should be_nil
687
+ expect(agent.game).to be_nil
685
688
  end
686
689
 
687
690
  it "removes the foreign_key" do
688
- agent.game_id.should be_nil
691
+ expect(agent.game_id).to be_nil
689
692
  end
690
693
  end
691
694
 
@@ -709,15 +712,15 @@ describe Mongoid::Relations::Referenced::In do
709
712
  end
710
713
 
711
714
  it "sets the relation to nil" do
712
- game.person.should be_nil
715
+ expect(game.person).to be_nil
713
716
  end
714
717
 
715
718
  it "removed the inverse relation" do
716
- person.game.should be_nil
719
+ expect(person.game).to be_nil
717
720
  end
718
721
 
719
722
  it "removes the foreign key value" do
720
- game.person_id.should be_nil
723
+ expect(game.person_id).to be_nil
721
724
  end
722
725
  end
723
726
 
@@ -737,84 +740,25 @@ describe Mongoid::Relations::Referenced::In do
737
740
  end
738
741
 
739
742
  it "sets the relation to nil" do
740
- game.person.should be_nil
743
+ expect(game.person).to be_nil
741
744
  end
742
745
 
743
746
  it "removed the inverse relation" do
744
- person.game.should be_nil
747
+ expect(person.game).to be_nil
745
748
  end
746
749
 
747
750
  it "removes the foreign key value" do
748
- game.person_id.should be_nil
751
+ expect(game.person_id).to be_nil
749
752
  end
750
753
 
751
754
  it "does not delete the child" do
752
- game.should_not be_destroyed
755
+ expect(game).to_not be_destroyed
753
756
  end
754
757
  end
755
758
  end
756
759
 
757
760
  context "when the relation is polymorphic" do
758
761
 
759
- context "when multiple relations against the same class exist" do
760
-
761
- context "when the parent is a new record" do
762
-
763
- let(:face) do
764
- Face.new
765
- end
766
-
767
- let(:eye) do
768
- Eye.new
769
- end
770
-
771
- before do
772
- face.left_eye = eye
773
- eye.eyeable = nil
774
- end
775
-
776
- it "sets the relation to nil" do
777
- eye.eyeable.should be_nil
778
- end
779
-
780
- it "removed the inverse relation" do
781
- face.left_eye.should be_nil
782
- end
783
-
784
- it "removes the foreign key value" do
785
- eye.eyeable_id.should be_nil
786
- end
787
- end
788
-
789
- context "when the parent is not a new record" do
790
-
791
- let(:face) do
792
- Face.new
793
- end
794
-
795
- let(:eye) do
796
- Eye.create
797
- end
798
-
799
- before do
800
- face.left_eye = eye
801
- eye.eyeable = nil
802
- end
803
-
804
- it "sets the relation to nil" do
805
- eye.eyeable.should be_nil
806
- end
807
-
808
- it "removed the inverse relation" do
809
- face.left_eye.should be_nil
810
- end
811
-
812
- it "removes the foreign key value" do
813
- eye.eyeable_id.should be_nil
814
- end
815
- end
816
- end
817
-
818
762
  context "when one relation against the same class exists" do
819
763
 
820
764
  context "when the parent is a new record" do
@@ -833,15 +777,15 @@ describe Mongoid::Relations::Referenced::In do
833
777
  end
834
778
 
835
779
  it "sets the relation to nil" do
836
- rating.ratable.should be_nil
780
+ expect(rating.ratable).to be_nil
837
781
  end
838
782
 
839
783
  it "removed the inverse relation" do
840
- bar.rating.should be_nil
784
+ expect(bar.rating).to be_nil
841
785
  end
842
786
 
843
787
  it "removes the foreign key value" do
844
- rating.ratable_id.should be_nil
788
+ expect(rating.ratable_id).to be_nil
845
789
  end
846
790
  end
847
791
 
@@ -861,15 +805,15 @@ describe Mongoid::Relations::Referenced::In do
861
805
  end
862
806
 
863
807
  it "sets the relation to nil" do
864
- rating.ratable.should be_nil
808
+ expect(rating.ratable).to be_nil
865
809
  end
866
810
 
867
811
  it "removed the inverse relation" do
868
- bar.rating.should be_nil
812
+ expect(bar.rating).to be_nil
869
813
  end
870
814
 
871
815
  it "removes the foreign key value" do
872
- rating.ratable_id.should be_nil
816
+ expect(rating.ratable_id).to be_nil
873
817
  end
874
818
  end
875
819
  end
@@ -896,15 +840,15 @@ describe Mongoid::Relations::Referenced::In do
896
840
  end
897
841
 
898
842
  it "sets the relation to nil" do
899
- post.person.should be_nil
843
+ expect(post.person).to be_nil
900
844
  end
901
845
 
902
846
  it "removed the inverse relation" do
903
- person.posts.should be_empty
847
+ expect(person.posts).to be_empty
904
848
  end
905
849
 
906
850
  it "removes the foreign key value" do
907
- post.person_id.should be_nil
851
+ expect(post.person_id).to be_nil
908
852
  end
909
853
  end
910
854
 
@@ -924,15 +868,15 @@ describe Mongoid::Relations::Referenced::In do
924
868
  end
925
869
 
926
870
  it "sets the relation to nil" do
927
- post.person.should be_nil
871
+ expect(post.person).to be_nil
928
872
  end
929
873
 
930
874
  it "removed the inverse relation" do
931
- person.posts.should be_empty
875
+ expect(person.posts).to be_empty
932
876
  end
933
877
 
934
878
  it "removes the foreign key value" do
935
- post.person_id.should be_nil
879
+ expect(post.person_id).to be_nil
936
880
  end
937
881
  end
938
882
  end
@@ -955,15 +899,15 @@ describe Mongoid::Relations::Referenced::In do
955
899
  end
956
900
 
957
901
  it "sets the relation to nil" do
958
- rating.ratable.should be_nil
902
+ expect(rating.ratable).to be_nil
959
903
  end
960
904
 
961
905
  it "removed the inverse relation" do
962
- movie.ratings.should be_empty
906
+ expect(movie.ratings).to be_empty
963
907
  end
964
908
 
965
909
  it "removes the foreign key value" do
966
- rating.ratable_id.should be_nil
910
+ expect(rating.ratable_id).to be_nil
967
911
  end
968
912
  end
969
913
 
@@ -983,15 +927,15 @@ describe Mongoid::Relations::Referenced::In do
983
927
  end
984
928
 
985
929
  it "sets the relation to nil" do
986
- rating.ratable.should be_nil
930
+ expect(rating.ratable).to be_nil
987
931
  end
988
932
 
989
933
  it "removed the inverse relation" do
990
- movie.ratings.should be_empty
934
+ expect(movie.ratings).to be_empty
991
935
  end
992
936
 
993
937
  it "removes the foreign key value" do
994
- rating.ratable_id.should be_nil
938
+ expect(rating.ratable_id).to be_nil
995
939
  end
996
940
  end
997
941
  end
@@ -1005,112 +949,38 @@ describe Mongoid::Relations::Referenced::In do
1005
949
  end
1006
950
 
1007
951
  let(:document) do
1008
- stub
952
+ double
1009
953
  end
1010
954
 
1011
955
  let(:metadata) do
1012
- stub(extension?: false)
956
+ double(extension?: false)
1013
957
  end
1014
958
 
1015
959
  it "returns the embedded in builder" do
1016
- described_class.builder(nil, metadata, document).should
1017
- be_a_kind_of(builder_klass)
1018
- end
1019
- end
1020
-
1021
- describe ".eager_load" do
1022
-
1023
- before do
1024
- Mongoid.identity_map_enabled = true
1025
- end
1026
-
1027
- after do
1028
- Mongoid.identity_map_enabled = false
1029
- end
1030
-
1031
- context "when the relation is not polymorphic" do
1032
-
1033
- let!(:person) do
1034
- Person.create
1035
- end
1036
-
1037
- let!(:post) do
1038
- person.posts.create(title: "testing")
1039
- end
1040
-
1041
- let(:metadata) do
1042
- Post.relations["person"]
1043
- end
1044
-
1045
- let(:eager) do
1046
- described_class.eager_load(metadata, Post.all)
1047
- end
1048
-
1049
- let!(:map) do
1050
- Mongoid::IdentityMap.get(Person, person.id)
1051
- end
1052
-
1053
- it "puts the document in the identity map" do
1054
- map.should eq(person)
1055
- end
1056
- end
1057
-
1058
- context "when the relation is polymorphic" do
1059
-
1060
- let(:metadata) do
1061
- Rating.relations["ratable"]
1062
- end
1063
-
1064
- it "raises an error" do
1065
- expect {
1066
- described_class.eager_load(metadata, Rating.all)
1067
- }.to raise_error(Mongoid::Errors::EagerLoad)
1068
- end
1069
- end
1070
-
1071
- context "when the ids has been duplicated" do
1072
-
1073
- let!(:person) do
1074
- Person.create
1075
- end
1076
-
1077
- let!(:posts) do
1078
- 2.times {|i| person.posts.create(title: "testing#{i}") }
1079
- person.posts
1080
- end
1081
-
1082
- let(:metadata) do
1083
- Post.relations["person"]
1084
- end
1085
-
1086
- let(:eager) do
1087
- described_class.eager_load(metadata, posts.map(&:person_id))
1088
- end
1089
-
1090
- it "duplication should be removed" do
1091
- eager.count.should eq(1)
1092
- end
960
+ expect(
961
+ described_class.builder(nil, metadata, document)
962
+ ).to be_a_kind_of(builder_klass)
1093
963
  end
1094
964
  end
1095
965
 
1096
966
  describe ".embedded?" do
1097
967
 
1098
968
  it "returns false" do
1099
- described_class.should_not be_embedded
969
+ expect(described_class).to_not be_embedded
1100
970
  end
1101
971
  end
1102
972
 
1103
973
  describe ".foreign_key_suffix" do
1104
974
 
1105
975
  it "returns _id" do
1106
- described_class.foreign_key_suffix.should eq("_id")
976
+ expect(described_class.foreign_key_suffix).to eq("_id")
1107
977
  end
1108
978
  end
1109
979
 
1110
980
  describe ".macro" do
1111
981
 
1112
982
  it "returns belongs_to" do
1113
- described_class.macro.should eq(:belongs_to)
983
+ expect(described_class.macro).to eq(:belongs_to)
1114
984
  end
1115
985
  end
1116
986
 
@@ -1133,7 +1003,7 @@ describe Mongoid::Relations::Referenced::In do
1133
1003
  context "when checking #{method}" do
1134
1004
 
1135
1005
  it "returns true" do
1136
- document.respond_to?(method).should be_true
1006
+ expect(document.respond_to?(method)).to be true
1137
1007
  end
1138
1008
  end
1139
1009
  end
@@ -1142,14 +1012,14 @@ describe Mongoid::Relations::Referenced::In do
1142
1012
  describe ".stores_foreign_key?" do
1143
1013
 
1144
1014
  it "returns true" do
1145
- described_class.stores_foreign_key?.should be_true
1015
+ expect(described_class.stores_foreign_key?).to be true
1146
1016
  end
1147
1017
  end
1148
1018
 
1149
1019
  describe ".valid_options" do
1150
1020
 
1151
1021
  it "returns the valid options" do
1152
- described_class.valid_options.should eq(
1022
+ expect(described_class.valid_options).to eq(
1153
1023
  [
1154
1024
  :autobuild,
1155
1025
  :autosave,
@@ -1167,7 +1037,7 @@ describe Mongoid::Relations::Referenced::In do
1167
1037
  describe ".validation_default" do
1168
1038
 
1169
1039
  it "returns false" do
1170
- described_class.validation_default.should be_false
1040
+ expect(described_class.validation_default).to be false
1171
1041
  end
1172
1042
  end
1173
1043
 
@@ -1188,11 +1058,11 @@ describe Mongoid::Relations::Referenced::In do
1188
1058
  end
1189
1059
 
1190
1060
  it "sets the parent" do
1191
- game_one.parent.should eq(game_two)
1061
+ expect(game_one.parent).to eq(game_two)
1192
1062
  end
1193
1063
 
1194
1064
  it "does not set the parent recursively" do
1195
- game_two.parent.should be_nil
1065
+ expect(game_two.parent).to be_nil
1196
1066
  end
1197
1067
  end
1198
1068
  end
@@ -1254,7 +1124,7 @@ describe Mongoid::Relations::Referenced::In do
1254
1124
  end
1255
1125
 
1256
1126
  it "allows the reset of the has one" do
1257
- b.c.should eq(c)
1127
+ expect(b.c).to eq(c)
1258
1128
  end
1259
1129
  end
1260
1130
  end
@@ -1281,19 +1151,19 @@ describe Mongoid::Relations::Referenced::In do
1281
1151
  end
1282
1152
 
1283
1153
  it "clones the relation" do
1284
- post.person.should eq(person)
1154
+ expect(post.person).to eq(person)
1285
1155
  end
1286
1156
 
1287
1157
  it "sets the foreign key" do
1288
- post.person_id.should eq(person.id)
1158
+ expect(post.person_id).to eq(person.id)
1289
1159
  end
1290
1160
 
1291
1161
  it "does not remove the previous relation" do
1292
- game.person.should eq(person)
1162
+ expect(game.person).to eq(person)
1293
1163
  end
1294
1164
 
1295
1165
  it "does not remove the previous foreign key" do
1296
- game.person_id.should eq(person.id)
1166
+ expect(game.person_id).to eq(person.id)
1297
1167
  end
1298
1168
 
1299
1169
  context "when reloading" do
@@ -1304,19 +1174,19 @@ describe Mongoid::Relations::Referenced::In do
1304
1174
  end
1305
1175
 
1306
1176
  it "persists the relation" do
1307
- post.reload.person.should eq(person)
1177
+ expect(post.reload.person).to eq(person)
1308
1178
  end
1309
1179
 
1310
1180
  it "persists the foreign key" do
1311
- post.reload.person_id.should eq(game.person_id)
1181
+ expect(post.reload.person_id).to eq(game.person_id)
1312
1182
  end
1313
1183
 
1314
1184
  it "does not remove the previous relation" do
1315
- game.person.should eq(person)
1185
+ expect(game.person).to eq(person)
1316
1186
  end
1317
1187
 
1318
1188
  it "does not remove the previous foreign key" do
1319
- game.person_id.should eq(person.id)
1189
+ expect(game.person_id).to eq(person.id)
1320
1190
  end
1321
1191
  end
1322
1192
  end
@@ -1338,11 +1208,11 @@ describe Mongoid::Relations::Referenced::In do
1338
1208
  end
1339
1209
 
1340
1210
  it "sets the correct has one" do
1341
- comment.account.should eq(account)
1211
+ expect(comment.account).to eq(account)
1342
1212
  end
1343
1213
 
1344
1214
  it "sets the correct has many" do
1345
- comment.movie.should eq(movie)
1215
+ expect(comment.movie).to eq(movie)
1346
1216
  end
1347
1217
  end
1348
1218
  end
@@ -1378,11 +1248,11 @@ describe Mongoid::Relations::Referenced::In do
1378
1248
  end
1379
1249
 
1380
1250
  it "reloads the document from the database" do
1381
- reloaded.title.should eq("Madam")
1251
+ expect(reloaded.title).to eq("Madam")
1382
1252
  end
1383
1253
 
1384
1254
  it "sets a new document instance" do
1385
- reloaded.should_not equal(person_one)
1255
+ expect(reloaded).to_not equal(person_one)
1386
1256
  end
1387
1257
  end
1388
1258
 
@@ -1398,56 +1268,11 @@ describe Mongoid::Relations::Referenced::In do
1398
1268
  end
1399
1269
 
1400
1270
  it "reloads the new document from the database" do
1401
- reloaded.title.should eq("Sir")
1271
+ expect(reloaded.title).to eq("Sir")
1402
1272
  end
1403
1273
 
1404
1274
  it "sets a new document instance" do
1405
- reloaded.should_not equal(person_one)
1406
- end
1407
- end
1408
- end
1409
-
1410
- context "when the parent and child are persisted" do
1411
-
1412
- context "when the identity map is enabled" do
1413
-
1414
- before do
1415
- Mongoid.identity_map_enabled = true
1416
- end
1417
-
1418
- after do
1419
- Mongoid.identity_map_enabled = false
1420
- end
1421
-
1422
- let(:series) do
1423
- Series.create
1424
- end
1425
-
1426
- let!(:book_one) do
1427
- series.books.create
1428
- end
1429
-
1430
- let!(:book_two) do
1431
- series.books.create
1432
- end
1433
-
1434
- let(:id) do
1435
- Book.first.id
1436
- end
1437
-
1438
- context "when asking for the inverse multiple times" do
1439
-
1440
- before do
1441
- Book.find(id).series.books.to_a
1442
- end
1443
-
1444
- it "does not append and save duplicate docs" do
1445
- Book.find(id).series.books.to_a.length.should eq(2)
1446
- end
1447
-
1448
- it "returns the same documents from the map" do
1449
- Book.find(id).should equal(Book.find(id))
1450
- end
1275
+ expect(reloaded).to_not equal(person_one)
1451
1276
  end
1452
1277
  end
1453
1278
  end
@@ -1465,11 +1290,11 @@ describe Mongoid::Relations::Referenced::In do
1465
1290
  end
1466
1291
 
1467
1292
  it "allows strings to be passed as the id" do
1468
- cookie.jar.should eq(jar)
1293
+ expect(cookie.jar).to eq(jar)
1469
1294
  end
1470
1295
 
1471
1296
  it "persists the relation" do
1472
- cookie.reload.jar.should eq(jar)
1297
+ expect(cookie.reload.jar).to eq(jar)
1473
1298
  end
1474
1299
  end
1475
1300
 
@@ -1494,7 +1319,7 @@ describe Mongoid::Relations::Referenced::In do
1494
1319
  end
1495
1320
 
1496
1321
  it "sets the new document on the relation" do
1497
- game.person.should eq(person_two)
1322
+ expect(game.person).to eq(person_two)
1498
1323
  end
1499
1324
  end
1500
1325
  end