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
@@ -5,7 +5,7 @@ describe Mongoid::Extensions::TrueClass do
5
5
  describe "#__sortable__" do
6
6
 
7
7
  it "returns 1" do
8
- true.__sortable__.should eq(1)
8
+ expect(true.__sortable__).to eq(1)
9
9
  end
10
10
  end
11
11
 
@@ -14,28 +14,28 @@ describe Mongoid::Extensions::TrueClass do
14
14
  context "when provided a Boolean" do
15
15
 
16
16
  it "returns true" do
17
- true.is_a?(Boolean).should be_true
17
+ expect(true.is_a?(Boolean)).to be true
18
18
  end
19
19
  end
20
20
 
21
21
  context "when provided a FalseClass" do
22
22
 
23
23
  it "returns false" do
24
- true.is_a?(FalseClass).should be_false
24
+ expect(true.is_a?(FalseClass)).to be false
25
25
  end
26
26
  end
27
27
 
28
28
  context "when provided a TrueClass" do
29
29
 
30
30
  it "returns true" do
31
- true.is_a?(TrueClass).should be_true
31
+ expect(true.is_a?(TrueClass)).to be true
32
32
  end
33
33
  end
34
34
 
35
35
  context "when provided an invalid class" do
36
36
 
37
37
  it "returns false" do
38
- false.is_a?(String).should be_false
38
+ expect(false.is_a?(String)).to be false
39
39
  end
40
40
  end
41
41
  end
@@ -0,0 +1,29 @@
1
+ require "spec_helper"
2
+
3
+ describe BSON::ObjectId do
4
+
5
+ describe "#as_json" do
6
+
7
+ let(:object_id) do
8
+ described_class.new
9
+ end
10
+
11
+ it "returns the $oid plus string" do
12
+ expect(object_id.as_json).to eq("$oid" => object_id.to_s)
13
+ end
14
+ end
15
+ end
16
+
17
+ describe BSON::Document do
18
+
19
+ describe "#symbolize_keys" do
20
+
21
+ let(:doc) do
22
+ described_class.new("foo" => "bar")
23
+ end
24
+
25
+ it "returns key as symbol" do
26
+ expect(doc.symbolize_keys.keys).to eq [:foo]
27
+ end
28
+ end
29
+ end
@@ -17,7 +17,7 @@ describe Mongoid::Factory do
17
17
  end
18
18
 
19
19
  it "instantiates based on the type" do
20
- person.title.should eq("Sir")
20
+ expect(person.title).to eq("Sir")
21
21
  end
22
22
  end
23
23
 
@@ -28,7 +28,7 @@ describe Mongoid::Factory do
28
28
  end
29
29
 
30
30
  it "instantiates the provided class" do
31
- person.class.should eq(Person)
31
+ expect(person.class).to eq(Person)
32
32
  end
33
33
  end
34
34
 
@@ -39,7 +39,7 @@ describe Mongoid::Factory do
39
39
  end
40
40
 
41
41
  it "instantiates the subclass" do
42
- person.class.should eq(Doctor)
42
+ expect(person.class).to eq(Doctor)
43
43
  end
44
44
  end
45
45
 
@@ -54,7 +54,7 @@ describe Mongoid::Factory do
54
54
  end
55
55
 
56
56
  it "instantiates based on the type" do
57
- person.title.should eq("Sir")
57
+ expect(person.title).to eq("Sir")
58
58
  end
59
59
  end
60
60
 
@@ -69,7 +69,7 @@ describe Mongoid::Factory do
69
69
  end
70
70
 
71
71
  it "instantiates based on the type" do
72
- person.title.should eq("Sir")
72
+ expect(person.title).to eq("Sir")
73
73
  end
74
74
  end
75
75
  end
@@ -85,7 +85,7 @@ describe Mongoid::Factory do
85
85
  end
86
86
 
87
87
  it "instantiates based on the provided class" do
88
- person.title.should eq("Sir")
88
+ expect(person.title).to eq("Sir")
89
89
  end
90
90
  end
91
91
  end
@@ -99,11 +99,11 @@ describe Mongoid::Factory do
99
99
  end
100
100
 
101
101
  it "generates based on the provided class" do
102
- document.should be_a(Address)
102
+ expect(document).to be_a(Address)
103
103
  end
104
104
 
105
105
  it "sets the attributes to empty" do
106
- document.attributes.should be_empty
106
+ expect(document.attributes).to be_empty
107
107
  end
108
108
  end
109
109
 
@@ -120,11 +120,11 @@ describe Mongoid::Factory do
120
120
  end
121
121
 
122
122
  it "generates based on the type" do
123
- document.should be_a(Person)
123
+ expect(document).to be_a(Person)
124
124
  end
125
125
 
126
126
  it "sets the attributes" do
127
- document.title.should eq("Sir")
127
+ expect(document.title).to eq("Sir")
128
128
  end
129
129
  end
130
130
 
@@ -139,11 +139,11 @@ describe Mongoid::Factory do
139
139
  end
140
140
 
141
141
  it "generates based on the provided class" do
142
- document.should be_a(Person)
142
+ expect(document).to be_a(Person)
143
143
  end
144
144
 
145
145
  it "sets the attributes" do
146
- document.title.should eq("Sir")
146
+ expect(document.title).to eq("Sir")
147
147
  end
148
148
  end
149
149
 
@@ -158,7 +158,7 @@ describe Mongoid::Factory do
158
158
  end
159
159
 
160
160
  it "instantiates based on the type" do
161
- person.title.should eq("Sir")
161
+ expect(person.title).to eq("Sir")
162
162
  end
163
163
  end
164
164
  end
@@ -174,11 +174,11 @@ describe Mongoid::Factory do
174
174
  end
175
175
 
176
176
  it "generates based on the provided class" do
177
- document.should be_a(Person)
177
+ expect(document).to be_a(Person)
178
178
  end
179
179
 
180
180
  it "sets the attributes" do
181
- document.title.should eq("Sir")
181
+ expect(document.title).to eq("Sir")
182
182
  end
183
183
  end
184
184
  end
@@ -52,7 +52,7 @@ describe Mongoid::Fields::ForeignKey do
52
52
  end
53
53
 
54
54
  it "adds the current to the modifications" do
55
- mods["preference_ids"].should eq(
55
+ expect(mods["preference_ids"]).to eq(
56
56
  [ preference_one.id, preference_three.id ]
57
57
  )
58
58
  end
@@ -62,7 +62,7 @@ describe Mongoid::Fields::ForeignKey do
62
62
  describe "#eval_default" do
63
63
 
64
64
  let(:default) do
65
- [ Moped::BSON::ObjectId.new ]
65
+ [ BSON::ObjectId.new ]
66
66
  end
67
67
 
68
68
  let(:field) do
@@ -76,11 +76,11 @@ describe Mongoid::Fields::ForeignKey do
76
76
  end
77
77
 
78
78
  it "dups the default value" do
79
- field.eval_default(Person.new).should_not equal(default)
79
+ expect(field.eval_default(Person.new)).to_not equal(default)
80
80
  end
81
81
 
82
82
  it "returns the correct value" do
83
- field.eval_default(Person.new).should eq(default)
83
+ expect(field.eval_default(Person.new)).to eq(default)
84
84
  end
85
85
  end
86
86
 
@@ -97,7 +97,7 @@ describe Mongoid::Fields::ForeignKey do
97
97
  end
98
98
 
99
99
  it "returns true" do
100
- field.should be_foreign_key
100
+ expect(field).to be_foreign_key
101
101
  end
102
102
  end
103
103
 
@@ -122,7 +122,7 @@ describe Mongoid::Fields::ForeignKey do
122
122
  end
123
123
 
124
124
  it "returns the id for the document" do
125
- evolved.should eq(game.id)
125
+ expect(evolved).to eq(game.id)
126
126
  end
127
127
  end
128
128
 
@@ -137,7 +137,7 @@ describe Mongoid::Fields::ForeignKey do
137
137
  context "when the value is an id string" do
138
138
 
139
139
  let(:id) do
140
- Moped::BSON::ObjectId.new
140
+ BSON::ObjectId.new
141
141
  end
142
142
 
143
143
  let(:evolved) do
@@ -145,7 +145,7 @@ describe Mongoid::Fields::ForeignKey do
145
145
  end
146
146
 
147
147
  it "converts the value to an object id" do
148
- evolved.should eq(id)
148
+ expect(evolved).to eq(id)
149
149
  end
150
150
  end
151
151
 
@@ -156,7 +156,7 @@ describe Mongoid::Fields::ForeignKey do
156
156
  end
157
157
 
158
158
  it "does not convert the value" do
159
- evolved.should eq("testing")
159
+ expect(evolved).to eq("testing")
160
160
  end
161
161
  end
162
162
 
@@ -167,7 +167,7 @@ describe Mongoid::Fields::ForeignKey do
167
167
  end
168
168
 
169
169
  it "does not convert the value" do
170
- evolved.should be_empty
170
+ expect(evolved).to be_empty
171
171
  end
172
172
  end
173
173
  end
@@ -179,11 +179,11 @@ describe Mongoid::Fields::ForeignKey do
179
179
  context "when the relation stores ids as object ids" do
180
180
 
181
181
  let(:id_one) do
182
- Moped::BSON::ObjectId.new
182
+ BSON::ObjectId.new
183
183
  end
184
184
 
185
185
  let(:id_two) do
186
- Moped::BSON::ObjectId.new
186
+ BSON::ObjectId.new
187
187
  end
188
188
 
189
189
  let(:evolved) do
@@ -191,7 +191,7 @@ describe Mongoid::Fields::ForeignKey do
191
191
  end
192
192
 
193
193
  it "converts the value to an object id" do
194
- evolved.should eq([ id_one, id_two ])
194
+ expect(evolved).to eq([ id_one, id_two ])
195
195
  end
196
196
  end
197
197
 
@@ -206,11 +206,11 @@ describe Mongoid::Fields::ForeignKey do
206
206
  end
207
207
 
208
208
  let(:id_one) do
209
- Moped::BSON::ObjectId.new.to_s
209
+ BSON::ObjectId.new.to_s
210
210
  end
211
211
 
212
212
  let(:id_two) do
213
- Moped::BSON::ObjectId.new.to_s
213
+ BSON::ObjectId.new.to_s
214
214
  end
215
215
 
216
216
  let(:evolved) do
@@ -218,7 +218,7 @@ describe Mongoid::Fields::ForeignKey do
218
218
  end
219
219
 
220
220
  it "does not convert the values to object ids" do
221
- evolved.should eq([ id_one, id_two ])
221
+ expect(evolved).to eq([ id_one, id_two ])
222
222
  end
223
223
  end
224
224
  end
@@ -230,7 +230,7 @@ describe Mongoid::Fields::ForeignKey do
230
230
  end
231
231
 
232
232
  it "does not convert the value" do
233
- evolved.should eq([ "testing" ])
233
+ expect(evolved).to eq([ "testing" ])
234
234
  end
235
235
  end
236
236
 
@@ -241,7 +241,7 @@ describe Mongoid::Fields::ForeignKey do
241
241
  end
242
242
 
243
243
  it "does not convert the value" do
244
- evolved.should eq([ "" ])
244
+ expect(evolved).to eq([ "" ])
245
245
  end
246
246
  end
247
247
 
@@ -252,7 +252,7 @@ describe Mongoid::Fields::ForeignKey do
252
252
  end
253
253
 
254
254
  it "does not convert the value" do
255
- evolved.should eq([ nil ])
255
+ expect(evolved).to eq([ nil ])
256
256
  end
257
257
  end
258
258
  end
@@ -275,7 +275,7 @@ describe Mongoid::Fields::ForeignKey do
275
275
  context "when the value is an id string" do
276
276
 
277
277
  let(:id) do
278
- Moped::BSON::ObjectId.new
278
+ BSON::ObjectId.new
279
279
  end
280
280
 
281
281
  let(:evolved) do
@@ -283,7 +283,7 @@ describe Mongoid::Fields::ForeignKey do
283
283
  end
284
284
 
285
285
  it "converts the value to an object id" do
286
- evolved.should eq(id)
286
+ expect(evolved).to eq(id)
287
287
  end
288
288
  end
289
289
 
@@ -294,7 +294,7 @@ describe Mongoid::Fields::ForeignKey do
294
294
  end
295
295
 
296
296
  it "does not convert the value" do
297
- evolved.should eq("testing")
297
+ expect(evolved).to eq("testing")
298
298
  end
299
299
  end
300
300
 
@@ -305,7 +305,7 @@ describe Mongoid::Fields::ForeignKey do
305
305
  end
306
306
 
307
307
  it "does not convert the value" do
308
- evolved.should be_empty
308
+ expect(evolved).to be_empty
309
309
  end
310
310
  end
311
311
  end
@@ -323,7 +323,7 @@ describe Mongoid::Fields::ForeignKey do
323
323
  context "when the value is an id string" do
324
324
 
325
325
  let(:id) do
326
- Moped::BSON::ObjectId.new
326
+ BSON::ObjectId.new
327
327
  end
328
328
 
329
329
  let(:evolved) do
@@ -331,7 +331,7 @@ describe Mongoid::Fields::ForeignKey do
331
331
  end
332
332
 
333
333
  it "does not convert the value to an object id" do
334
- evolved.should eq(id.to_s)
334
+ expect(evolved).to eq(id.to_s)
335
335
  end
336
336
  end
337
337
 
@@ -342,7 +342,7 @@ describe Mongoid::Fields::ForeignKey do
342
342
  end
343
343
 
344
344
  it "does not convert the value" do
345
- evolved.should eq("testing")
345
+ expect(evolved).to eq("testing")
346
346
  end
347
347
  end
348
348
 
@@ -353,7 +353,7 @@ describe Mongoid::Fields::ForeignKey do
353
353
  end
354
354
 
355
355
  it "does not convert the value" do
356
- evolved.should be_empty
356
+ expect(evolved).to be_empty
357
357
  end
358
358
  end
359
359
  end
@@ -366,11 +366,11 @@ describe Mongoid::Fields::ForeignKey do
366
366
  context "when the relation stores ids as object ids" do
367
367
 
368
368
  let(:id_one) do
369
- Moped::BSON::ObjectId.new
369
+ BSON::ObjectId.new
370
370
  end
371
371
 
372
372
  let(:id_two) do
373
- Moped::BSON::ObjectId.new
373
+ BSON::ObjectId.new
374
374
  end
375
375
 
376
376
  let(:evolved) do
@@ -378,7 +378,7 @@ describe Mongoid::Fields::ForeignKey do
378
378
  end
379
379
 
380
380
  it "converts the value to an object id" do
381
- evolved.should eq([ id_one, id_two ])
381
+ expect(evolved).to eq([ id_one, id_two ])
382
382
  end
383
383
  end
384
384
 
@@ -393,11 +393,11 @@ describe Mongoid::Fields::ForeignKey do
393
393
  end
394
394
 
395
395
  let(:id_one) do
396
- Moped::BSON::ObjectId.new.to_s
396
+ BSON::ObjectId.new.to_s
397
397
  end
398
398
 
399
399
  let(:id_two) do
400
- Moped::BSON::ObjectId.new.to_s
400
+ BSON::ObjectId.new.to_s
401
401
  end
402
402
 
403
403
  let(:evolved) do
@@ -405,7 +405,7 @@ describe Mongoid::Fields::ForeignKey do
405
405
  end
406
406
 
407
407
  it "does not convert the values to object ids" do
408
- evolved.should eq([ id_one, id_two ])
408
+ expect(evolved).to eq([ id_one, id_two ])
409
409
  end
410
410
  end
411
411
  end
@@ -417,7 +417,7 @@ describe Mongoid::Fields::ForeignKey do
417
417
  end
418
418
 
419
419
  it "does not convert the value" do
420
- evolved.should eq([ "testing" ])
420
+ expect(evolved).to eq([ "testing" ])
421
421
  end
422
422
  end
423
423
 
@@ -428,7 +428,7 @@ describe Mongoid::Fields::ForeignKey do
428
428
  end
429
429
 
430
430
  it "does not convert the value" do
431
- evolved.should eq([ "" ])
431
+ expect(evolved).to eq([ "" ])
432
432
  end
433
433
  end
434
434
 
@@ -439,7 +439,7 @@ describe Mongoid::Fields::ForeignKey do
439
439
  end
440
440
 
441
441
  it "does not convert the value" do
442
- evolved.should eq([ nil ])
442
+ expect(evolved).to eq([ nil ])
443
443
  end
444
444
  end
445
445
  end
@@ -451,22 +451,22 @@ describe Mongoid::Fields::ForeignKey do
451
451
  context "when the key is resizable" do
452
452
 
453
453
  let(:field) do
454
- described_class.new(:test, type: Array)
454
+ described_class.new(:test, type: Array, overwrite: true)
455
455
  end
456
456
 
457
457
  it "returns true" do
458
- field.should be_lazy
458
+ expect(field).to be_lazy
459
459
  end
460
460
  end
461
461
 
462
462
  context "when the key is not resizable" do
463
463
 
464
464
  let(:field) do
465
- described_class.new(:test, type: Moped::BSON::ObjectId)
465
+ described_class.new(:test, type: BSON::ObjectId, overwrite: true)
466
466
  end
467
467
 
468
468
  it "returns false" do
469
- field.should_not be_lazy
469
+ expect(field).to_not be_lazy
470
470
  end
471
471
  end
472
472
  end
@@ -491,14 +491,15 @@ describe Mongoid::Fields::ForeignKey do
491
491
  type: Array,
492
492
  default: [],
493
493
  identity: true,
494
- metadata: metadata
494
+ metadata: metadata,
495
+ overwrite: true
495
496
  )
496
497
  end
497
498
 
498
499
  context "when provided nil" do
499
500
 
500
501
  it "returns an empty array" do
501
- field.mongoize(nil).should be_empty
502
+ expect(field.mongoize(nil)).to be_empty
502
503
  end
503
504
  end
504
505
 
@@ -509,29 +510,29 @@ describe Mongoid::Fields::ForeignKey do
509
510
  end
510
511
 
511
512
  it "returns an empty array" do
512
- field.mongoize(array).should eq(array)
513
+ expect(field.mongoize(array)).to eq(array)
513
514
  end
514
515
 
515
516
  it "returns the same instance" do
516
- field.mongoize(array).should equal(array)
517
+ expect(field.mongoize(array)).to equal(array)
517
518
  end
518
519
  end
519
520
 
520
521
  context "when using object ids" do
521
522
 
522
523
  let(:object_id) do
523
- Moped::BSON::ObjectId.new
524
+ BSON::ObjectId.new
524
525
  end
525
526
 
526
527
  it "performs conversion on the ids if strings" do
527
- field.mongoize([object_id.to_s]).should eq([object_id])
528
+ expect(field.mongoize([object_id.to_s])).to eq([object_id])
528
529
  end
529
530
  end
530
531
 
531
532
  context "when not using object ids" do
532
533
 
533
534
  let(:object_id) do
534
- Moped::BSON::ObjectId.new
535
+ BSON::ObjectId.new
535
536
  end
536
537
 
537
538
  before do
@@ -539,21 +540,23 @@ describe Mongoid::Fields::ForeignKey do
539
540
  :_id,
540
541
  type: String,
541
542
  pre_processed: true,
542
- default: ->{ Moped::BSON::ObjectId.new.to_s }
543
+ default: ->{ BSON::ObjectId.new.to_s },
544
+ overwrite: true
543
545
  )
544
546
  end
545
547
 
546
548
  after do
547
549
  Person.field(
548
550
  :_id,
549
- type: Moped::BSON::ObjectId,
551
+ type: BSON::ObjectId,
550
552
  pre_processed: true,
551
- default: ->{ Moped::BSON::ObjectId.new }
553
+ default: ->{ BSON::ObjectId.new },
554
+ overwrite: true
552
555
  )
553
556
  end
554
557
 
555
558
  it "does not convert" do
556
- field.mongoize([object_id.to_s]).should eq([object_id.to_s])
559
+ expect(field.mongoize([object_id.to_s])).to eq([object_id.to_s])
557
560
  end
558
561
  end
559
562
  end
@@ -577,18 +580,19 @@ describe Mongoid::Fields::ForeignKey do
577
580
  type: Object,
578
581
  default: nil,
579
582
  identity: true,
580
- metadata: metadata
583
+ metadata: metadata,
584
+ overwrite: true
581
585
  )
582
586
  end
583
587
 
584
588
  context "when using object ids" do
585
589
 
586
590
  let(:object_id) do
587
- Moped::BSON::ObjectId.new
591
+ BSON::ObjectId.new
588
592
  end
589
593
 
590
594
  it "performs conversion on the ids if strings" do
591
- field.mongoize(object_id.to_s).should eq(object_id)
595
+ expect(field.mongoize(object_id.to_s)).to eq(object_id)
592
596
  end
593
597
  end
594
598
 
@@ -599,7 +603,7 @@ describe Mongoid::Fields::ForeignKey do
599
603
  context "when provided a string" do
600
604
 
601
605
  let(:object_id) do
602
- Moped::BSON::ObjectId.new
606
+ BSON::ObjectId.new
603
607
  end
604
608
 
605
609
  before do
@@ -607,21 +611,23 @@ describe Mongoid::Fields::ForeignKey do
607
611
  :_id,
608
612
  type: String,
609
613
  pre_processed: true,
610
- default: ->{ Moped::BSON::ObjectId.new.to_s }
614
+ default: ->{ BSON::ObjectId.new.to_s },
615
+ overwrite: true
611
616
  )
612
617
  end
613
618
 
614
619
  after do
615
620
  Person.field(
616
621
  :_id,
617
- type: Moped::BSON::ObjectId,
622
+ type: BSON::ObjectId,
618
623
  pre_processed: true,
619
- default: ->{ Moped::BSON::ObjectId.new }
624
+ default: ->{ BSON::ObjectId.new },
625
+ overwrite: true
620
626
  )
621
627
  end
622
628
 
623
629
  it "does not convert" do
624
- field.mongoize(object_id.to_s).should eq(object_id.to_s)
630
+ expect(field.mongoize(object_id.to_s)).to eq(object_id.to_s)
625
631
  end
626
632
  end
627
633
  end
@@ -631,20 +637,21 @@ describe Mongoid::Fields::ForeignKey do
631
637
  context "when provided a string" do
632
638
 
633
639
  before do
634
- Person.field(:_id, type: Integer)
640
+ Person.field(:_id, type: Integer, overwrite: true)
635
641
  end
636
642
 
637
643
  after do
638
644
  Person.field(
639
645
  :_id,
640
- type: Moped::BSON::ObjectId,
646
+ type: BSON::ObjectId,
641
647
  pre_processed: true,
642
- default: ->{ Moped::BSON::ObjectId.new }
648
+ default: ->{ BSON::ObjectId.new },
649
+ overwrite: true
643
650
  )
644
651
  end
645
652
 
646
653
  it "converts the string to an integer" do
647
- field.mongoize("1").should eq(1)
654
+ expect(field.mongoize("1")).to eq(1)
648
655
  end
649
656
  end
650
657
  end
@@ -662,7 +669,7 @@ describe Mongoid::Fields::ForeignKey do
662
669
  end
663
670
 
664
671
  it "returns true" do
665
- field.should be_resizable
672
+ expect(field).to be_resizable
666
673
  end
667
674
  end
668
675
 
@@ -673,7 +680,7 @@ describe Mongoid::Fields::ForeignKey do
673
680
  end
674
681
 
675
682
  it "returns false" do
676
- field.should_not be_resizable
683
+ expect(field).to_not be_resizable
677
684
  end
678
685
  end
679
686
  end
@@ -687,7 +694,7 @@ describe Mongoid::Fields::ForeignKey do
687
694
  end
688
695
 
689
696
  it "casts the ids on the initial set" do
690
- agent.account_ids.should eq([ "true", "false", "1", "2" ])
697
+ expect(agent.account_ids).to eq([ "true", "false", "1", "2" ])
691
698
  end
692
699
  end
693
700
  end