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
@@ -9,19 +9,19 @@ describe Mongoid::Errors::NoSessionConfig do
9
9
  end
10
10
 
11
11
  it "contains the problem in the message" do
12
- error.message.should include(
12
+ expect(error.message).to include(
13
13
  "No configuration could be found for a session named 'secondary'."
14
14
  )
15
15
  end
16
16
 
17
17
  it "contains the summary in the message" do
18
- error.message.should include(
18
+ expect(error.message).to include(
19
19
  "When attempting to create the new session, Mongoid could not find a session"
20
20
  )
21
21
  end
22
22
 
23
23
  it "contains the resolution in the message" do
24
- error.message.should include(
24
+ expect(error.message).to include(
25
25
  "Double check your mongoid.yml to make sure under the sessions"
26
26
  )
27
27
  end
@@ -9,19 +9,19 @@ describe Mongoid::Errors::NoSessionDatabase do
9
9
  end
10
10
 
11
11
  it "contains the problem in the message" do
12
- error.message.should include(
12
+ expect(error.message).to include(
13
13
  "No database provided for session configuration: :secondary."
14
14
  )
15
15
  end
16
16
 
17
17
  it "contains the summary in the message" do
18
- error.message.should include(
18
+ expect(error.message).to include(
19
19
  "Each session configuration must provide a database so Mongoid"
20
20
  )
21
21
  end
22
22
 
23
23
  it "contains the resolution in the message" do
24
- error.message.should include(
24
+ expect(error.message).to include(
25
25
  "If configuring via a mongoid.yml, ensure that within your :secondary"
26
26
  )
27
27
  end
@@ -9,19 +9,19 @@ describe Mongoid::Errors::NoSessionHosts do
9
9
  end
10
10
 
11
11
  it "contains the problem in the message" do
12
- error.message.should include(
12
+ expect(error.message).to include(
13
13
  "No hosts provided for session configuration: :secondary."
14
14
  )
15
15
  end
16
16
 
17
17
  it "contains the summary in the message" do
18
- error.message.should include(
18
+ expect(error.message).to include(
19
19
  "Each session configuration must provide hosts so Mongoid"
20
20
  )
21
21
  end
22
22
 
23
23
  it "contains the resolution in the message" do
24
- error.message.should include(
24
+ expect(error.message).to include(
25
25
  "If configuring via a mongoid.yml, ensure that within your :secondary"
26
26
  )
27
27
  end
@@ -9,19 +9,19 @@ describe Mongoid::Errors::NoSessionsConfig do
9
9
  end
10
10
 
11
11
  it "contains the problem in the message" do
12
- error.message.should include(
12
+ expect(error.message).to include(
13
13
  "No sessions configuration provided."
14
14
  )
15
15
  end
16
16
 
17
17
  it "contains the summary in the message" do
18
- error.message.should include(
18
+ expect(error.message).to include(
19
19
  "Mongoid's configuration requires that you provide details"
20
20
  )
21
21
  end
22
22
 
23
23
  it "contains the resolution in the message" do
24
- error.message.should include(
24
+ expect(error.message).to include(
25
25
  "Double check your mongoid.yml to make sure that you have"
26
26
  )
27
27
  end
@@ -9,19 +9,19 @@ describe Mongoid::Errors::ReadonlyAttribute do
9
9
  end
10
10
 
11
11
  it "contains the problem in the message" do
12
- error.message.should include(
12
+ expect(error.message).to include(
13
13
  "Attempted to set the readonly attribute 'title' with the value: mr."
14
14
  )
15
15
  end
16
16
 
17
17
  it "contains the summary in the message" do
18
- error.message.should include(
18
+ expect(error.message).to include(
19
19
  "Attributes flagged as readonly via Model.attr_readonly can only"
20
20
  )
21
21
  end
22
22
 
23
23
  it "contains the resolution in the message" do
24
- error.message.should include(
24
+ expect(error.message).to include(
25
25
  "Don't define 'title' as readonly, or do not attempt to update"
26
26
  )
27
27
  end
@@ -0,0 +1,29 @@
1
+ require "spec_helper"
2
+
3
+ describe Mongoid::Errors::ReadonlyDocument do
4
+
5
+ describe "#message" do
6
+
7
+ let(:error) do
8
+ described_class.new(Band)
9
+ end
10
+
11
+ it "contains the problem in the message" do
12
+ expect(error.message).to include(
13
+ "Attempted to persist the readonly document 'Band'."
14
+ )
15
+ end
16
+
17
+ it "contains the summary in the message" do
18
+ expect(error.message).to include(
19
+ "Documents loaded from the database using #only"
20
+ )
21
+ end
22
+
23
+ it "contains the resolution in the message" do
24
+ expect(error.message).to include(
25
+ "Don't attempt to persist documents that are flagged as readonly."
26
+ )
27
+ end
28
+ end
29
+ end
@@ -9,19 +9,19 @@ describe Mongoid::Errors::ScopeOverwrite do
9
9
  end
10
10
 
11
11
  it "contains the problem in the message" do
12
- error.message.should include(
12
+ expect(error.message).to include(
13
13
  "Cannot create scope :scope, because of existing method Person.scope."
14
14
  )
15
15
  end
16
16
 
17
17
  it "contains the summary in the message" do
18
- error.message.should include(
18
+ expect(error.message).to include(
19
19
  "When defining a scope that conflicts with a method that already exists"
20
20
  )
21
21
  end
22
22
 
23
23
  it "contains the resolution in the message" do
24
- error.message.should include(
24
+ expect(error.message).to include(
25
25
  "Change the name of the scope so it does not conflict with the already"
26
26
  )
27
27
  end
@@ -9,19 +9,19 @@ describe Mongoid::Errors::TooManyNestedAttributeRecords do
9
9
  end
10
10
 
11
11
  it "contains the problem in the message" do
12
- error.message.should include(
12
+ expect(error.message).to include(
13
13
  "Accepting nested attributes for favorites is limited to 5 records."
14
14
  )
15
15
  end
16
16
 
17
17
  it "contains the summary in the message" do
18
- error.message.should include(
18
+ expect(error.message).to include(
19
19
  "More documents were sent to be processed than the allowed limit."
20
20
  )
21
21
  end
22
22
 
23
23
  it "contains the resolution in the message" do
24
- error.message.should include(
24
+ expect(error.message).to include(
25
25
  "The limit is set as an option to the macro, for example:"
26
26
  )
27
27
  end
@@ -9,20 +9,20 @@ describe Mongoid::Errors::UnknownAttribute do
9
9
  end
10
10
 
11
11
  it "contains the problem in the message" do
12
- error.message.should include(
12
+ expect(error.message).to include(
13
13
  "Attempted to set a value for 'gender' which is not allowed on"
14
14
  )
15
15
  end
16
16
 
17
17
  it "contains the summary in the message" do
18
- error.message.should include(
19
- "When setting Mongoid.allow_dynamic_fields to false"
18
+ expect(error.message).to include(
19
+ "Without including Mongoid::Attributes::Dynamic in your model"
20
20
  )
21
21
  end
22
22
 
23
23
  it "contains the resolution in the message" do
24
- error.message.should include(
25
- "You can set Mongoid.allow_dynamic_fields to true"
24
+ expect(error.message).to include(
25
+ "You can include Mongoid::Attributes::Dynamic"
26
26
  )
27
27
  end
28
28
  end
@@ -17,19 +17,19 @@ describe Mongoid::Errors::UnsavedDocument do
17
17
  end
18
18
 
19
19
  it "contains the problem in the message" do
20
- error.message.should include(
20
+ expect(error.message).to include(
21
21
  "Attempted to save Post before the parent Person."
22
22
  )
23
23
  end
24
24
 
25
25
  it "contains the summary in the message" do
26
- error.message.should include(
26
+ expect(error.message).to include(
27
27
  "You cannot call create or create! through the relation"
28
28
  )
29
29
  end
30
30
 
31
31
  it "contains the resolution in the message" do
32
- error.message.should include(
32
+ expect(error.message).to include(
33
33
  "Make sure to only use create or create!"
34
34
  )
35
35
  end
@@ -9,19 +9,19 @@ describe Mongoid::Errors::UnsupportedJavascript do
9
9
  end
10
10
 
11
11
  it "contains the problem in the message" do
12
- error.message.should include(
12
+ expect(error.message).to include(
13
13
  "Executing Javascript $where selector on an embedded criteria is not supported"
14
14
  )
15
15
  end
16
16
 
17
17
  it "contains the summary in the message" do
18
- error.message.should include(
18
+ expect(error.message).to include(
19
19
  "Mongoid only supports providing a hash of arguments to #where"
20
20
  )
21
21
  end
22
22
 
23
23
  it "contains the resolution in the message" do
24
- error.message.should include(
24
+ expect(error.message).to include(
25
25
  "Please provide a standard hash to #where when the criteria"
26
26
  )
27
27
  end
@@ -5,11 +5,11 @@ describe Mongoid::Errors::Validations do
5
5
  describe "#message" do
6
6
 
7
7
  let(:errors) do
8
- stub(full_messages: [ "Error 1", "Error 2" ], empty?: false)
8
+ double(full_messages: [ "Error 1", "Error 2" ], empty?: false)
9
9
  end
10
10
 
11
11
  let(:document) do
12
- stub(errors: errors, class: Person)
12
+ double(errors: errors, class: Person)
13
13
  end
14
14
 
15
15
  let(:error) do
@@ -17,29 +17,29 @@ describe Mongoid::Errors::Validations do
17
17
  end
18
18
 
19
19
  it "contains the problem in the message" do
20
- error.message.should include(
20
+ expect(error.message).to include(
21
21
  "Validation of Person failed"
22
22
  )
23
23
  end
24
24
 
25
25
  it "contains the summary in the message" do
26
- error.message.should include(
26
+ expect(error.message).to include(
27
27
  "The following errors were found: Error 1, Error 2"
28
28
  )
29
29
  end
30
30
 
31
31
  it "contains the resolution in the message" do
32
- error.message.should include(
32
+ expect(error.message).to include(
33
33
  "Try persisting the document with valid data"
34
34
  )
35
35
  end
36
36
 
37
37
  it "sets the document in the error" do
38
- error.document.should eq(document)
38
+ expect(error.document).to eq(document)
39
39
  end
40
40
 
41
41
  it "aliases record to document" do
42
- error.record.should eq(document)
42
+ expect(error.record).to eq(document)
43
43
  end
44
44
  end
45
45
  end
@@ -7,7 +7,7 @@ describe Mongoid::Extensions::Array do
7
7
  context "when provided an array of strings" do
8
8
 
9
9
  let(:object_id) do
10
- Moped::BSON::ObjectId.new
10
+ BSON::ObjectId.new
11
11
  end
12
12
 
13
13
  let(:other) do
@@ -23,18 +23,18 @@ describe Mongoid::Extensions::Array do
23
23
  end
24
24
 
25
25
  it "converts the convertible ones to object ids" do
26
- evolved.should eq([ object_id, other ])
26
+ expect(evolved).to eq([ object_id, other ])
27
27
  end
28
28
 
29
29
  it "returns the same instance" do
30
- evolved.should equal(array)
30
+ expect(evolved).to equal(array)
31
31
  end
32
32
  end
33
33
 
34
34
  context "when provided an array of object ids" do
35
35
 
36
36
  let(:object_id) do
37
- Moped::BSON::ObjectId.new
37
+ BSON::ObjectId.new
38
38
  end
39
39
 
40
40
  let(:array) do
@@ -46,18 +46,18 @@ describe Mongoid::Extensions::Array do
46
46
  end
47
47
 
48
48
  it "returns the array" do
49
- evolved.should eq(array)
49
+ expect(evolved).to eq(array)
50
50
  end
51
51
 
52
52
  it "returns the same instance" do
53
- evolved.should equal(array)
53
+ expect(evolved).to equal(array)
54
54
  end
55
55
  end
56
56
 
57
57
  context "when some values are nil" do
58
58
 
59
59
  let(:object_id) do
60
- Moped::BSON::ObjectId.new
60
+ BSON::ObjectId.new
61
61
  end
62
62
 
63
63
  let(:array) do
@@ -69,18 +69,18 @@ describe Mongoid::Extensions::Array do
69
69
  end
70
70
 
71
71
  it "returns the array with the nils" do
72
- evolved.should eq([ object_id, nil ])
72
+ expect(evolved).to eq([ object_id, nil ])
73
73
  end
74
74
 
75
75
  it "returns the same instance" do
76
- evolved.should equal(array)
76
+ expect(evolved).to equal(array)
77
77
  end
78
78
  end
79
79
 
80
80
  context "when some values are empty strings" do
81
81
 
82
82
  let(:object_id) do
83
- Moped::BSON::ObjectId.new
83
+ BSON::ObjectId.new
84
84
  end
85
85
 
86
86
  let(:array) do
@@ -92,11 +92,11 @@ describe Mongoid::Extensions::Array do
92
92
  end
93
93
 
94
94
  it "returns the array with the empty strings" do
95
- evolved.should eq([ object_id, "" ])
95
+ expect(evolved).to eq([ object_id, "" ])
96
96
  end
97
97
 
98
98
  it "returns the same instance" do
99
- evolved.should equal(array)
99
+ expect(evolved).to equal(array)
100
100
  end
101
101
  end
102
102
  end
@@ -106,7 +106,7 @@ describe Mongoid::Extensions::Array do
106
106
  context "when provided an array of strings" do
107
107
 
108
108
  let(:object_id) do
109
- Moped::BSON::ObjectId.new
109
+ BSON::ObjectId.new
110
110
  end
111
111
 
112
112
  let(:other) do
@@ -122,18 +122,18 @@ describe Mongoid::Extensions::Array do
122
122
  end
123
123
 
124
124
  it "converts the convertible ones to object ids" do
125
- mongoized.should eq([ object_id, other ])
125
+ expect(mongoized).to eq([ object_id, other ])
126
126
  end
127
127
 
128
128
  it "returns the same instance" do
129
- mongoized.should equal(array)
129
+ expect(mongoized).to equal(array)
130
130
  end
131
131
  end
132
132
 
133
133
  context "when provided an array of object ids" do
134
134
 
135
135
  let(:object_id) do
136
- Moped::BSON::ObjectId.new
136
+ BSON::ObjectId.new
137
137
  end
138
138
 
139
139
  let(:array) do
@@ -145,18 +145,18 @@ describe Mongoid::Extensions::Array do
145
145
  end
146
146
 
147
147
  it "returns the array" do
148
- mongoized.should eq(array)
148
+ expect(mongoized).to eq(array)
149
149
  end
150
150
 
151
151
  it "returns the same instance" do
152
- mongoized.should equal(array)
152
+ expect(mongoized).to equal(array)
153
153
  end
154
154
  end
155
155
 
156
156
  context "when some values are nil" do
157
157
 
158
158
  let(:object_id) do
159
- Moped::BSON::ObjectId.new
159
+ BSON::ObjectId.new
160
160
  end
161
161
 
162
162
  let(:array) do
@@ -168,18 +168,18 @@ describe Mongoid::Extensions::Array do
168
168
  end
169
169
 
170
170
  it "returns the array without the nils" do
171
- mongoized.should eq([ object_id ])
171
+ expect(mongoized).to eq([ object_id ])
172
172
  end
173
173
 
174
174
  it "returns the same instance" do
175
- mongoized.should equal(array)
175
+ expect(mongoized).to equal(array)
176
176
  end
177
177
  end
178
178
 
179
179
  context "when some values are empty strings" do
180
180
 
181
181
  let(:object_id) do
182
- Moped::BSON::ObjectId.new
182
+ BSON::ObjectId.new
183
183
  end
184
184
 
185
185
  let(:array) do
@@ -191,11 +191,11 @@ describe Mongoid::Extensions::Array do
191
191
  end
192
192
 
193
193
  it "returns the array without the empty strings" do
194
- mongoized.should eq([ object_id ])
194
+ expect(mongoized).to eq([ object_id ])
195
195
  end
196
196
 
197
197
  it "returns the same instance" do
198
- mongoized.should equal(array)
198
+ expect(mongoized).to equal(array)
199
199
  end
200
200
  end
201
201
  end
@@ -215,7 +215,7 @@ describe Mongoid::Extensions::Array do
215
215
  context "when provided an object id" do
216
216
 
217
217
  let(:object_id) do
218
- Moped::BSON::ObjectId.new
218
+ BSON::ObjectId.new
219
219
  end
220
220
 
221
221
  let(:fk) do
@@ -223,14 +223,14 @@ describe Mongoid::Extensions::Array do
223
223
  end
224
224
 
225
225
  it "returns the object id as an array" do
226
- fk.should eq([ object_id ])
226
+ expect(fk).to eq([ object_id ])
227
227
  end
228
228
  end
229
229
 
230
230
  context "when provided a object ids" do
231
231
 
232
232
  let(:object_id) do
233
- Moped::BSON::ObjectId.new
233
+ BSON::ObjectId.new
234
234
  end
235
235
 
236
236
  let(:fk) do
@@ -238,7 +238,7 @@ describe Mongoid::Extensions::Array do
238
238
  end
239
239
 
240
240
  it "returns the object ids" do
241
- fk.should eq([ object_id ])
241
+ expect(fk).to eq([ object_id ])
242
242
  end
243
243
  end
244
244
 
@@ -247,7 +247,7 @@ describe Mongoid::Extensions::Array do
247
247
  context "when the string is a legal object id" do
248
248
 
249
249
  let(:object_id) do
250
- Moped::BSON::ObjectId.new
250
+ BSON::ObjectId.new
251
251
  end
252
252
 
253
253
  let(:fk) do
@@ -255,7 +255,7 @@ describe Mongoid::Extensions::Array do
255
255
  end
256
256
 
257
257
  it "returns the object id in an array" do
258
- fk.should eq([ object_id ])
258
+ expect(fk).to eq([ object_id ])
259
259
  end
260
260
  end
261
261
 
@@ -270,7 +270,7 @@ describe Mongoid::Extensions::Array do
270
270
  end
271
271
 
272
272
  it "returns the string in an array" do
273
- fk.should eq([ string ])
273
+ expect(fk).to eq([ string ])
274
274
  end
275
275
  end
276
276
 
@@ -281,7 +281,7 @@ describe Mongoid::Extensions::Array do
281
281
  end
282
282
 
283
283
  it "returns an empty array" do
284
- fk.should be_empty
284
+ expect(fk).to be_empty
285
285
  end
286
286
  end
287
287
  end
@@ -293,7 +293,7 @@ describe Mongoid::Extensions::Array do
293
293
  end
294
294
 
295
295
  it "returns an empty array" do
296
- fk.should be_empty
296
+ expect(fk).to be_empty
297
297
  end
298
298
  end
299
299
 
@@ -302,7 +302,7 @@ describe Mongoid::Extensions::Array do
302
302
  context "when the strings are legal object ids" do
303
303
 
304
304
  let(:object_id) do
305
- Moped::BSON::ObjectId.new
305
+ BSON::ObjectId.new
306
306
  end
307
307
 
308
308
  let(:fk) do
@@ -310,7 +310,7 @@ describe Mongoid::Extensions::Array do
310
310
  end
311
311
 
312
312
  it "returns the object id in an array" do
313
- fk.should eq([ object_id ])
313
+ expect(fk).to eq([ object_id ])
314
314
  end
315
315
  end
316
316
 
@@ -325,7 +325,7 @@ describe Mongoid::Extensions::Array do
325
325
  end
326
326
 
327
327
  it "returns the string in an array" do
328
- fk.should eq([ string ])
328
+ expect(fk).to eq([ string ])
329
329
  end
330
330
  end
331
331
 
@@ -336,7 +336,7 @@ describe Mongoid::Extensions::Array do
336
336
  end
337
337
 
338
338
  it "returns an empty array" do
339
- fk.should be_empty
339
+ expect(fk).to be_empty
340
340
  end
341
341
  end
342
342
  end
@@ -348,7 +348,7 @@ describe Mongoid::Extensions::Array do
348
348
  end
349
349
 
350
350
  it "returns an empty array" do
351
- fk.should be_empty
351
+ expect(fk).to be_empty
352
352
  end
353
353
  end
354
354
  end
@@ -376,11 +376,11 @@ describe Mongoid::Extensions::Array do
376
376
  end
377
377
 
378
378
  it "converts to a time" do
379
- time.should eq(::Time.zone.local(*array))
379
+ expect(time).to eq(::Time.zone.local(*array))
380
380
  end
381
381
 
382
382
  it "converts to the as time zone" do
383
- time.zone.should eq("JST")
383
+ expect(time.zone).to eq("JST")
384
384
  end
385
385
  end
386
386
 
@@ -404,7 +404,7 @@ describe Mongoid::Extensions::Array do
404
404
  end
405
405
 
406
406
  it "converts to a time" do
407
- time.should eq(Time.local(*array))
407
+ expect(time).to eq(Time.local(*array))
408
408
  end
409
409
  end
410
410
  end
@@ -420,7 +420,7 @@ describe Mongoid::Extensions::Array do
420
420
  end
421
421
 
422
422
  it "returns true" do
423
- array.should be_blank_criteria
423
+ expect(array).to be_blank_criteria
424
424
  end
425
425
  end
426
426
 
@@ -431,7 +431,7 @@ describe Mongoid::Extensions::Array do
431
431
  end
432
432
 
433
433
  it "returns true" do
434
- array.should be_blank_criteria
434
+ expect(array).to be_blank_criteria
435
435
  end
436
436
  end
437
437
  end
@@ -450,7 +450,7 @@ describe Mongoid::Extensions::Array do
450
450
  end
451
451
 
452
452
  it "returns nil" do
453
- deleted.should be_nil
453
+ expect(deleted).to be_nil
454
454
  end
455
455
  end
456
456
 
@@ -465,11 +465,11 @@ describe Mongoid::Extensions::Array do
465
465
  end
466
466
 
467
467
  it "deletes the object" do
468
- array.should eq([ "2" ])
468
+ expect(array).to eq([ "2" ])
469
469
  end
470
470
 
471
471
  it "returns the object" do
472
- deleted.should eq("1")
472
+ expect(deleted).to eq("1")
473
473
  end
474
474
  end
475
475
 
@@ -484,11 +484,11 @@ describe Mongoid::Extensions::Array do
484
484
  end
485
485
 
486
486
  it "deletes the first object" do
487
- array.should eq([ "2", "1" ])
487
+ expect(array).to eq([ "2", "1" ])
488
488
  end
489
489
 
490
490
  it "returns the object" do
491
- deleted.should eq("1")
491
+ expect(deleted).to eq("1")
492
492
  end
493
493
  end
494
494
  end
@@ -500,7 +500,7 @@ describe Mongoid::Extensions::Array do
500
500
  end
501
501
 
502
502
  it "returns the array" do
503
- Array.demongoize(array).should eq(array)
503
+ expect(Array.demongoize(array)).to eq(array)
504
504
  end
505
505
  end
506
506
 
@@ -519,11 +519,11 @@ describe Mongoid::Extensions::Array do
519
519
  end
520
520
 
521
521
  it "mongoizes each element in the array" do
522
- mongoized.first.should be_a(Time)
522
+ expect(mongoized.first).to be_a(Time)
523
523
  end
524
524
 
525
525
  it "converts the elements properly" do
526
- mongoized.first.should eq(date)
526
+ expect(mongoized.first).to eq(Time.utc(2012, 1, 1, 0, 0, 0))
527
527
  end
528
528
  end
529
529
 
@@ -542,11 +542,11 @@ describe Mongoid::Extensions::Array do
542
542
  end
543
543
 
544
544
  it "mongoizes each element in the array" do
545
- mongoized.first.should be_a(Time)
545
+ expect(mongoized.first).to be_a(Time)
546
546
  end
547
547
 
548
548
  it "converts the elements properly" do
549
- mongoized.first.should eq(date)
549
+ expect(mongoized.first).to eq(Time.utc(2012, 1, 1, 0, 0, 0))
550
550
  end
551
551
  end
552
552
 
@@ -559,7 +559,7 @@ describe Mongoid::Extensions::Array do
559
559
  end
560
560
 
561
561
  it "returns true" do
562
- array.should be_multi_arged
562
+ expect(array).to be_multi_arged
563
563
  end
564
564
  end
565
565
 
@@ -572,7 +572,7 @@ describe Mongoid::Extensions::Array do
572
572
  end
573
573
 
574
574
  it "returns false" do
575
- array.should_not be_multi_arged
575
+ expect(array).to_not be_multi_arged
576
576
  end
577
577
  end
578
578
 
@@ -583,7 +583,7 @@ describe Mongoid::Extensions::Array do
583
583
  end
584
584
 
585
585
  it "returns false" do
586
- array.should_not be_multi_arged
586
+ expect(array).to_not be_multi_arged
587
587
  end
588
588
  end
589
589
 
@@ -594,7 +594,7 @@ describe Mongoid::Extensions::Array do
594
594
  end
595
595
 
596
596
  it "returns true" do
597
- array.should be_multi_arged
597
+ expect(array).to be_multi_arged
598
598
  end
599
599
  end
600
600
 
@@ -605,7 +605,7 @@ describe Mongoid::Extensions::Array do
605
605
  end
606
606
 
607
607
  it "returns true" do
608
- array.should be_multi_arged
608
+ expect(array).to be_multi_arged
609
609
  end
610
610
  end
611
611
 
@@ -616,7 +616,7 @@ describe Mongoid::Extensions::Array do
616
616
  end
617
617
 
618
618
  it "returns true" do
619
- array.should be_multi_arged
619
+ expect(array).to be_multi_arged
620
620
  end
621
621
  end
622
622
  end
@@ -625,14 +625,14 @@ describe Mongoid::Extensions::Array do
625
625
  describe ".resizable?" do
626
626
 
627
627
  it "returns true" do
628
- Array.should be_resizable
628
+ expect(Array).to be_resizable
629
629
  end
630
630
  end
631
631
 
632
632
  describe "#resiable?" do
633
633
 
634
634
  it "returns true" do
635
- [].should be_resizable
635
+ expect([]).to be_resizable
636
636
  end
637
637
  end
638
638
  end