mongoid 3.1.7 → 4.0.0.alpha1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (521) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +317 -11
  3. data/README.md +4 -5
  4. data/lib/config/locales/en.yml +9 -12
  5. data/lib/mongoid.rb +6 -75
  6. data/lib/mongoid/atomic.rb +0 -11
  7. data/lib/mongoid/atomic/paths/embedded.rb +0 -30
  8. data/lib/mongoid/atomic/paths/root.rb +0 -13
  9. data/lib/mongoid/attributes.rb +30 -108
  10. data/lib/mongoid/attributes/dynamic.rb +154 -0
  11. data/lib/mongoid/attributes/nested.rb +82 -0
  12. data/lib/mongoid/attributes/processing.rb +13 -66
  13. data/lib/mongoid/{dirty.rb → changeable.rb} +5 -2
  14. data/lib/mongoid/composable.rb +104 -0
  15. data/lib/mongoid/config.rb +3 -9
  16. data/lib/mongoid/config/options.rb +1 -1
  17. data/lib/mongoid/contextual/aggregable/mongo.rb +5 -9
  18. data/lib/mongoid/contextual/atomic.rb +53 -53
  19. data/lib/mongoid/contextual/command.rb +26 -0
  20. data/lib/mongoid/contextual/map_reduce.rb +1 -1
  21. data/lib/mongoid/contextual/memory.rb +6 -5
  22. data/lib/mongoid/contextual/mongo.rb +59 -28
  23. data/lib/mongoid/contextual/text_search.rb +180 -0
  24. data/lib/mongoid/copyable.rb +2 -3
  25. data/lib/mongoid/criteria.rb +13 -33
  26. data/lib/mongoid/criteria/{#findable.rb# → findable.rb} +0 -2
  27. data/lib/mongoid/{criterion/inspection.rb → criteria/inspectable.rb} +2 -2
  28. data/lib/mongoid/{criterion → criteria}/marshalable.rb +3 -1
  29. data/lib/mongoid/{criterion → criteria}/modifiable.rb +1 -1
  30. data/lib/mongoid/{criterion/scoping.rb → criteria/scopable.rb} +2 -2
  31. data/lib/mongoid/document.rb +28 -12
  32. data/lib/mongoid/errors.rb +1 -1
  33. data/lib/mongoid/errors/document_not_found.rb +2 -1
  34. data/lib/mongoid/errors/invalid_value.rb +16 -0
  35. data/lib/mongoid/errors/mongoid_error.rb +1 -1
  36. data/lib/mongoid/extensions.rb +2 -7
  37. data/lib/mongoid/extensions/array.rb +2 -2
  38. data/lib/mongoid/extensions/boolean.rb +14 -17
  39. data/lib/mongoid/extensions/float.rb +1 -0
  40. data/lib/mongoid/extensions/hash.rb +1 -1
  41. data/lib/mongoid/extensions/object.rb +4 -4
  42. data/lib/mongoid/extensions/object_id.rb +5 -5
  43. data/lib/mongoid/extensions/range.rb +8 -2
  44. data/lib/mongoid/extensions/string.rb +5 -17
  45. data/lib/mongoid/extensions/time.rb +2 -2
  46. data/lib/mongoid/factory.rb +3 -3
  47. data/lib/mongoid/fields.rb +9 -8
  48. data/lib/mongoid/fields/foreign_key.rb +3 -3
  49. data/lib/mongoid/fields/standard.rb +4 -16
  50. data/lib/mongoid/fields/validators/macro.rb +11 -3
  51. data/lib/mongoid/{finders.rb → findable.rb} +6 -2
  52. data/lib/mongoid/{indexes.rb → indexable.rb} +50 -55
  53. data/lib/mongoid/indexable/specification.rb +104 -0
  54. data/lib/mongoid/{indexes → indexable}/validators/options.rb +2 -1
  55. data/lib/mongoid/{inspection.rb → inspectable.rb} +15 -11
  56. data/lib/mongoid/{callbacks.rb → interceptable.rb} +3 -52
  57. data/lib/mongoid/log_subscriber.rb +22 -0
  58. data/lib/mongoid/matchable.rb +152 -0
  59. data/lib/mongoid/{matchers → matchable}/all.rb +1 -1
  60. data/lib/mongoid/{matchers → matchable}/and.rb +2 -2
  61. data/lib/mongoid/{matchers → matchable}/default.rb +1 -1
  62. data/lib/mongoid/{matchers → matchable}/exists.rb +1 -1
  63. data/lib/mongoid/{matchers → matchable}/gt.rb +1 -1
  64. data/lib/mongoid/{matchers → matchable}/gte.rb +1 -1
  65. data/lib/mongoid/{matchers → matchable}/in.rb +2 -2
  66. data/lib/mongoid/{matchers → matchable}/lt.rb +1 -1
  67. data/lib/mongoid/{matchers → matchable}/lte.rb +1 -1
  68. data/lib/mongoid/{matchers → matchable}/ne.rb +1 -1
  69. data/lib/mongoid/{matchers → matchable}/nin.rb +3 -2
  70. data/lib/mongoid/{matchers → matchable}/or.rb +2 -2
  71. data/lib/mongoid/{matchers → matchable}/size.rb +1 -1
  72. data/lib/mongoid/persistable.rb +212 -0
  73. data/lib/mongoid/persistable/creatable.rb +188 -0
  74. data/lib/mongoid/persistable/deletable.rb +148 -0
  75. data/lib/mongoid/persistable/destroyable.rb +55 -0
  76. data/lib/mongoid/persistable/incrementable.rb +36 -0
  77. data/lib/mongoid/persistable/logical.rb +38 -0
  78. data/lib/mongoid/persistable/poppable.rb +39 -0
  79. data/lib/mongoid/persistable/pullable.rb +55 -0
  80. data/lib/mongoid/persistable/pushable.rb +62 -0
  81. data/lib/mongoid/persistable/renamable.rb +35 -0
  82. data/lib/mongoid/persistable/savable.rb +52 -0
  83. data/lib/mongoid/persistable/settable.rb +33 -0
  84. data/lib/mongoid/persistable/unsettable.rb +36 -0
  85. data/lib/mongoid/persistable/updatable.rb +151 -0
  86. data/lib/mongoid/persistable/upsertable.rb +55 -0
  87. data/lib/mongoid/positional.rb +71 -0
  88. data/lib/mongoid/railtie.rb +32 -45
  89. data/lib/mongoid/railties/database.rake +12 -6
  90. data/lib/mongoid/relations.rb +3 -3
  91. data/lib/mongoid/relations/accessors.rb +13 -46
  92. data/lib/mongoid/relations/auto_save.rb +15 -36
  93. data/lib/mongoid/relations/binding.rb +0 -23
  94. data/lib/mongoid/relations/bindings/embedded/many.rb +1 -3
  95. data/lib/mongoid/relations/bindings/referenced/in.rb +3 -8
  96. data/lib/mongoid/relations/bindings/referenced/many_to_many.rb +3 -1
  97. data/lib/mongoid/relations/builder.rb +1 -1
  98. data/lib/mongoid/relations/builders.rb +2 -2
  99. data/lib/mongoid/relations/builders/nested_attributes/many.rb +10 -13
  100. data/lib/mongoid/relations/builders/nested_attributes/one.rb +4 -5
  101. data/lib/mongoid/relations/builders/referenced/in.rb +1 -1
  102. data/lib/mongoid/relations/builders/referenced/many.rb +1 -2
  103. data/lib/mongoid/relations/builders/referenced/many_to_many.rb +1 -2
  104. data/lib/mongoid/relations/builders/referenced/one.rb +1 -1
  105. data/lib/mongoid/relations/cascading.rb +3 -5
  106. data/lib/mongoid/relations/constraint.rb +1 -1
  107. data/lib/mongoid/relations/conversions.rb +1 -1
  108. data/lib/mongoid/relations/counter_cache.rb +39 -15
  109. data/lib/mongoid/relations/eager.rb +47 -0
  110. data/lib/mongoid/relations/eager/base.rb +57 -0
  111. data/lib/mongoid/relations/eager/belongs_to.rb +30 -0
  112. data/lib/mongoid/relations/eager/has_and_belongs_to_many.rb +40 -0
  113. data/lib/mongoid/relations/eager/has_many.rb +37 -0
  114. data/lib/mongoid/relations/eager/has_one.rb +29 -0
  115. data/lib/mongoid/relations/embedded/batchable.rb +3 -4
  116. data/lib/mongoid/relations/embedded/many.rb +7 -27
  117. data/lib/mongoid/relations/macros.rb +2 -4
  118. data/lib/mongoid/relations/many.rb +30 -31
  119. data/lib/mongoid/relations/metadata.rb +6 -75
  120. data/lib/mongoid/relations/nested_builder.rb +2 -2
  121. data/lib/mongoid/relations/options.rb +1 -0
  122. data/lib/mongoid/relations/polymorphic.rb +0 -1
  123. data/lib/mongoid/relations/proxy.rb +10 -32
  124. data/lib/mongoid/relations/referenced/in.rb +2 -18
  125. data/lib/mongoid/relations/referenced/many.rb +9 -22
  126. data/lib/mongoid/relations/referenced/many_to_many.rb +10 -33
  127. data/lib/mongoid/relations/referenced/one.rb +2 -21
  128. data/lib/mongoid/relations/synchronization.rb +3 -3
  129. data/lib/mongoid/relations/touchable.rb +33 -0
  130. data/lib/mongoid/{reloading.rb → reloadable.rb} +6 -4
  131. data/lib/mongoid/{scoping.rb → scopable.rb} +26 -3
  132. data/lib/mongoid/selectable.rb +59 -0
  133. data/lib/mongoid/{serialization.rb → serializable.rb} +10 -1
  134. data/lib/mongoid/sessions.rb +37 -345
  135. data/lib/mongoid/sessions/factory.rb +2 -0
  136. data/lib/mongoid/sessions/options.rb +176 -0
  137. data/lib/mongoid/sessions/storage_options.rb +140 -0
  138. data/lib/mongoid/sessions/thread_options.rb +19 -0
  139. data/lib/mongoid/sessions/validators/storage.rb +15 -1
  140. data/lib/mongoid/{sharding.rb → shardable.rb} +5 -1
  141. data/lib/mongoid/support/query_counter.rb +23 -0
  142. data/lib/mongoid/threaded.rb +0 -110
  143. data/lib/mongoid/threaded/lifecycle.rb +0 -28
  144. data/lib/mongoid/timestamps/updated/short.rb +2 -2
  145. data/lib/mongoid/{hierarchy.rb → traversable.rb} +9 -5
  146. data/lib/mongoid/{validations.rb → validatable.rb} +23 -9
  147. data/lib/mongoid/{validations → validatable}/associated.rb +3 -1
  148. data/lib/mongoid/{validations → validatable}/format.rb +1 -1
  149. data/lib/mongoid/{validations → validatable}/length.rb +1 -1
  150. data/lib/mongoid/{validations → validatable}/localizable.rb +1 -1
  151. data/lib/mongoid/{validations → validatable}/macros.rb +4 -3
  152. data/lib/mongoid/{validations → validatable}/presence.rb +1 -1
  153. data/lib/mongoid/{validations → validatable}/queryable.rb +1 -2
  154. data/lib/mongoid/{validations → validatable}/uniqueness.rb +3 -3
  155. data/lib/mongoid/version.rb +1 -1
  156. data/lib/rails/generators/mongoid/config/templates/mongoid.yml +9 -13
  157. data/lib/rails/generators/mongoid/model/model_generator.rb +0 -1
  158. data/lib/rails/generators/mongoid/model/templates/model.rb.tt +0 -3
  159. data/lib/rails/generators/mongoid_generator.rb +3 -40
  160. data/lib/rails/mongoid.rb +59 -57
  161. data/lib/support/ruby_version.rb +1 -1
  162. data/spec/app/models/account.rb +2 -6
  163. data/spec/app/models/acolyte.rb +1 -0
  164. data/spec/app/models/actor.rb +0 -1
  165. data/spec/app/models/address.rb +6 -1
  166. data/spec/app/models/animal.rb +1 -1
  167. data/spec/app/models/appointment.rb +2 -2
  168. data/spec/app/models/article.rb +1 -4
  169. data/spec/app/models/audio.rb +5 -0
  170. data/spec/app/models/author.rb +0 -2
  171. data/spec/app/models/band.rb +3 -2
  172. data/spec/app/models/bar.rb +1 -0
  173. data/spec/app/models/book.rb +1 -0
  174. data/spec/app/models/building.rb +0 -2
  175. data/spec/app/models/building_address.rb +0 -2
  176. data/spec/app/models/bus.rb +1 -1
  177. data/spec/app/models/canvas.rb +1 -1
  178. data/spec/app/models/contractor.rb +0 -2
  179. data/spec/app/models/country_code.rb +1 -1
  180. data/spec/app/models/definition.rb +2 -2
  181. data/spec/app/models/dragon.rb +4 -0
  182. data/spec/app/models/drug.rb +1 -3
  183. data/spec/app/models/dungeon.rb +4 -0
  184. data/spec/app/models/filesystem.rb +1 -0
  185. data/spec/app/models/fish.rb +0 -1
  186. data/spec/app/models/fruits.rb +6 -0
  187. data/spec/app/models/game.rb +0 -2
  188. data/spec/app/models/house.rb +0 -2
  189. data/spec/app/models/item.rb +1 -5
  190. data/spec/app/models/jar.rb +1 -1
  191. data/spec/app/models/label.rb +4 -4
  192. data/spec/app/models/login.rb +1 -1
  193. data/spec/app/models/movie.rb +1 -0
  194. data/spec/app/models/name.rb +3 -3
  195. data/spec/app/models/note.rb +1 -1
  196. data/spec/app/models/oscar.rb +1 -1
  197. data/spec/app/models/parent_doc.rb +1 -1
  198. data/spec/app/models/person.rb +13 -8
  199. data/spec/app/models/phone.rb +1 -3
  200. data/spec/app/models/player.rb +1 -1
  201. data/spec/app/models/post.rb +2 -1
  202. data/spec/app/models/quiz.rb +0 -3
  203. data/spec/app/models/record.rb +5 -5
  204. data/spec/app/models/registry.rb +1 -1
  205. data/spec/app/models/server.rb +1 -1
  206. data/spec/app/models/service.rb +3 -3
  207. data/spec/app/models/sound.rb +5 -0
  208. data/spec/app/models/template.rb +1 -1
  209. data/spec/app/models/title.rb +0 -1
  210. data/spec/app/models/track.rb +5 -5
  211. data/spec/app/models/tree.rb +1 -1
  212. data/spec/app/models/video.rb +0 -4
  213. data/spec/app/models/wiki_page.rb +1 -4
  214. data/spec/app/models/word.rb +3 -0
  215. data/spec/app/models/word_origin.rb +1 -1
  216. data/spec/config/mongoid.yml +7 -8
  217. data/spec/helpers.rb +18 -0
  218. data/spec/mongoid/atomic/modifiers_spec.rb +22 -22
  219. data/spec/mongoid/atomic/paths/embedded/many_spec.rb +8 -49
  220. data/spec/mongoid/atomic/paths/embedded/one_spec.rb +7 -49
  221. data/spec/mongoid/atomic/paths/root_spec.rb +3 -61
  222. data/spec/mongoid/atomic/paths_spec.rb +19 -19
  223. data/spec/mongoid/atomic_spec.rb +19 -19
  224. data/spec/mongoid/{nested_attributes_spec.rb → attributes/nested_spec.rb} +335 -448
  225. data/spec/mongoid/attributes/readonly_spec.rb +16 -16
  226. data/spec/mongoid/attributes_spec.rb +188 -434
  227. data/spec/mongoid/{dirty_spec.rb → changeable_spec.rb} +117 -148
  228. data/spec/mongoid/{components_spec.rb → composable_spec.rb} +3 -3
  229. data/spec/mongoid/config/environment_spec.rb +3 -3
  230. data/spec/mongoid/config/options_spec.rb +6 -6
  231. data/spec/mongoid/config_spec.rb +24 -48
  232. data/spec/mongoid/contextual/aggregable/memory_spec.rb +12 -12
  233. data/spec/mongoid/contextual/aggregable/mongo_spec.rb +46 -38
  234. data/spec/mongoid/contextual/atomic_spec.rb +60 -56
  235. data/spec/mongoid/contextual/find_and_modify_spec.rb +14 -14
  236. data/spec/mongoid/contextual/geo_near_spec.rb +22 -22
  237. data/spec/mongoid/contextual/map_reduce_spec.rb +27 -27
  238. data/spec/mongoid/contextual/memory_spec.rb +94 -94
  239. data/spec/mongoid/contextual/mongo_spec.rb +225 -139
  240. data/spec/mongoid/contextual/text_search_spec.rb +207 -0
  241. data/spec/mongoid/copyable_spec.rb +56 -68
  242. data/spec/mongoid/criteria/findable_spec.rb +991 -0
  243. data/spec/mongoid/{criterion/inspection_spec.rb → criteria/inspectable_spec.rb} +5 -5
  244. data/spec/mongoid/{criterion → criteria}/marshalable_spec.rb +2 -2
  245. data/spec/mongoid/criteria/modifiable_spec.rb +1063 -0
  246. data/spec/mongoid/{criterion/scoping_spec.rb → criteria/scopable_spec.rb} +31 -31
  247. data/spec/mongoid/criteria_spec.rb +530 -2207
  248. data/spec/mongoid/document_spec.rb +166 -120
  249. data/spec/mongoid/equality_spec.rb +22 -22
  250. data/spec/mongoid/errors/ambiguous_relationship_spec.rb +3 -3
  251. data/spec/mongoid/errors/callback_spec.rb +3 -3
  252. data/spec/mongoid/errors/delete_restriction_spec.rb +3 -3
  253. data/spec/mongoid/errors/document_not_found_spec.rb +11 -11
  254. data/spec/mongoid/errors/eager_load_spec.rb +3 -3
  255. data/spec/mongoid/errors/invalid_collection_spec.rb +3 -3
  256. data/spec/mongoid/errors/invalid_config_option_spec.rb +3 -3
  257. data/spec/mongoid/errors/invalid_field_option_spec.rb +3 -3
  258. data/spec/mongoid/errors/invalid_field_spec.rb +3 -3
  259. data/spec/mongoid/errors/invalid_find_spec.rb +3 -3
  260. data/spec/mongoid/errors/invalid_includes_spec.rb +3 -3
  261. data/spec/mongoid/errors/invalid_index_spec.rb +3 -3
  262. data/spec/mongoid/errors/invalid_options_spec.rb +3 -3
  263. data/spec/mongoid/errors/invalid_path_spec.rb +3 -3
  264. data/spec/mongoid/errors/invalid_scope_spec.rb +3 -3
  265. data/spec/mongoid/errors/invalid_set_polymorphic_relation_spec.rb +3 -3
  266. data/spec/mongoid/errors/invalid_storage_options_spec.rb +3 -3
  267. data/spec/mongoid/errors/invalid_time_spec.rb +3 -3
  268. data/spec/mongoid/errors/inverse_not_found_spec.rb +3 -3
  269. data/spec/mongoid/errors/mixed_relations_spec.rb +3 -3
  270. data/spec/mongoid/errors/mixed_session_configuration_spec.rb +3 -3
  271. data/spec/mongoid/errors/mongoid_error_spec.rb +7 -7
  272. data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +3 -3
  273. data/spec/mongoid/errors/no_environment_spec.rb +3 -3
  274. data/spec/mongoid/errors/no_map_reduce_output_spec.rb +3 -3
  275. data/spec/mongoid/errors/no_metadata_spec.rb +3 -3
  276. data/spec/mongoid/errors/no_parent_spec.rb +3 -3
  277. data/spec/mongoid/errors/no_session_config_spec.rb +3 -3
  278. data/spec/mongoid/errors/no_session_database_spec.rb +3 -3
  279. data/spec/mongoid/errors/no_session_hosts_spec.rb +3 -3
  280. data/spec/mongoid/errors/no_sessions_config_spec.rb +3 -3
  281. data/spec/mongoid/errors/readonly_attribute_spec.rb +3 -3
  282. data/spec/mongoid/errors/scope_overwrite_spec.rb +3 -3
  283. data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +3 -3
  284. data/spec/mongoid/errors/unknown_attribute_spec.rb +5 -5
  285. data/spec/mongoid/errors/unsaved_document_spec.rb +3 -3
  286. data/spec/mongoid/errors/unsupported_javascript_spec.rb +3 -3
  287. data/spec/mongoid/errors/validations_spec.rb +7 -7
  288. data/spec/mongoid/extensions/array_spec.rb +61 -61
  289. data/spec/mongoid/extensions/big_decimal_spec.rb +11 -11
  290. data/spec/mongoid/extensions/binary_spec.rb +12 -12
  291. data/spec/mongoid/extensions/boolean_spec.rb +18 -18
  292. data/spec/mongoid/extensions/date_spec.rb +13 -13
  293. data/spec/mongoid/extensions/date_time_spec.rb +9 -9
  294. data/spec/mongoid/extensions/false_class_spec.rb +5 -5
  295. data/spec/mongoid/extensions/float_spec.rb +29 -15
  296. data/spec/mongoid/extensions/hash_spec.rb +29 -29
  297. data/spec/mongoid/extensions/integer_spec.rb +15 -15
  298. data/spec/mongoid/extensions/module_spec.rb +2 -2
  299. data/spec/mongoid/extensions/nil_class_spec.rb +1 -1
  300. data/spec/mongoid/extensions/object_id_spec.rb +134 -134
  301. data/spec/mongoid/extensions/object_spec.rb +26 -26
  302. data/spec/mongoid/extensions/range_spec.rb +61 -12
  303. data/spec/mongoid/extensions/regexp_spec.rb +4 -4
  304. data/spec/mongoid/extensions/set_spec.rb +4 -4
  305. data/spec/mongoid/extensions/string_spec.rb +35 -46
  306. data/spec/mongoid/extensions/symbol_spec.rb +9 -9
  307. data/spec/mongoid/extensions/time_spec.rb +49 -49
  308. data/spec/mongoid/extensions/time_with_zone_spec.rb +34 -34
  309. data/spec/mongoid/extensions/true_class_spec.rb +5 -5
  310. data/spec/mongoid/extensions_spec.rb +15 -0
  311. data/spec/mongoid/factory_spec.rb +15 -15
  312. data/spec/mongoid/fields/foreign_key_spec.rb +73 -66
  313. data/spec/mongoid/fields/internal/foreign_keys/array_spec.rb +15 -15
  314. data/spec/mongoid/fields/internal/foreign_keys/object_spec.rb +22 -22
  315. data/spec/mongoid/fields/localized_spec.rb +23 -23
  316. data/spec/mongoid/fields/standard_spec.rb +12 -12
  317. data/spec/mongoid/fields_spec.rb +168 -209
  318. data/spec/mongoid/{finders_spec.rb → findable_spec.rb} +62 -27
  319. data/spec/mongoid/indexable/specification_spec.rb +102 -0
  320. data/spec/mongoid/{indexes_spec.rb → indexable_spec.rb} +171 -51
  321. data/spec/mongoid/{inspection_spec.rb → inspectable_spec.rb} +6 -14
  322. data/spec/mongoid/{callbacks_spec.rb → interceptable_spec.rb} +105 -105
  323. data/spec/mongoid/log_subscriber_spec.rb +74 -0
  324. data/spec/mongoid/loggable_spec.rb +1 -1
  325. data/spec/mongoid/{matchers → matchable}/all_spec.rb +4 -4
  326. data/spec/mongoid/{matchers → matchable}/and_spec.rb +11 -11
  327. data/spec/mongoid/{matchers → matchable}/default_spec.rb +15 -15
  328. data/spec/mongoid/{matchers → matchable}/exists_spec.rb +5 -5
  329. data/spec/mongoid/{matchers → matchable}/gt_spec.rb +9 -8
  330. data/spec/mongoid/{matchers → matchable}/gte_spec.rb +7 -7
  331. data/spec/mongoid/matchable/in_spec.rb +49 -0
  332. data/spec/mongoid/{matchers → matchable}/lt_spec.rb +7 -7
  333. data/spec/mongoid/{matchers → matchable}/lte_spec.rb +7 -7
  334. data/spec/mongoid/{matchers → matchable}/ne_spec.rb +3 -3
  335. data/spec/mongoid/matchable/nin_spec.rb +48 -0
  336. data/spec/mongoid/{matchers → matchable}/or_spec.rb +6 -6
  337. data/spec/mongoid/{matchers → matchable}/size_spec.rb +3 -3
  338. data/spec/mongoid/{matchers_spec.rb → matchable_spec.rb} +41 -41
  339. data/spec/mongoid/persistable/creatable_spec.rb +512 -0
  340. data/spec/mongoid/persistable/deletable_spec.rb +205 -0
  341. data/spec/mongoid/persistable/destroyable_spec.rb +148 -0
  342. data/spec/mongoid/persistable/incrementable_spec.rb +173 -0
  343. data/spec/mongoid/persistable/logical_spec.rb +143 -0
  344. data/spec/mongoid/persistable/poppable_spec.rb +115 -0
  345. data/spec/mongoid/persistable/pullable_spec.rb +228 -0
  346. data/spec/mongoid/persistable/pushable_spec.rb +258 -0
  347. data/spec/mongoid/persistable/renamable_spec.rb +135 -0
  348. data/spec/mongoid/persistable/savable_spec.rb +432 -0
  349. data/spec/mongoid/persistable/settable_spec.rb +139 -0
  350. data/spec/mongoid/persistable/unsettable_spec.rb +155 -0
  351. data/spec/mongoid/persistable/updatable_spec.rb +558 -0
  352. data/spec/mongoid/persistable/upsertable_spec.rb +106 -0
  353. data/spec/mongoid/persistable_spec.rb +206 -0
  354. data/spec/mongoid/{atomic/positionable_spec.rb → positional_spec.rb} +19 -14
  355. data/spec/mongoid/railties/document_spec.rb +2 -2
  356. data/spec/mongoid/relations/accessors_spec.rb +53 -145
  357. data/spec/mongoid/relations/auto_save_spec.rb +36 -16
  358. data/spec/mongoid/relations/bindings/embedded/in_spec.rb +6 -6
  359. data/spec/mongoid/relations/bindings/embedded/many_spec.rb +2 -2
  360. data/spec/mongoid/relations/bindings/embedded/one_spec.rb +3 -3
  361. data/spec/mongoid/relations/bindings/referenced/in_spec.rb +12 -12
  362. data/spec/mongoid/relations/bindings/referenced/many_spec.rb +6 -6
  363. data/spec/mongoid/relations/bindings/referenced/many_to_many_spec.rb +9 -9
  364. data/spec/mongoid/relations/bindings/referenced/one_spec.rb +6 -6
  365. data/spec/mongoid/relations/builders/embedded/in_spec.rb +4 -4
  366. data/spec/mongoid/relations/builders/embedded/many_spec.rb +18 -18
  367. data/spec/mongoid/relations/builders/embedded/one_spec.rb +11 -11
  368. data/spec/mongoid/relations/builders/nested_attributes/many_spec.rb +12 -13
  369. data/spec/mongoid/relations/builders/nested_attributes/one_spec.rb +14 -14
  370. data/spec/mongoid/relations/builders/referenced/in_spec.rb +22 -33
  371. data/spec/mongoid/relations/builders/referenced/many_spec.rb +15 -15
  372. data/spec/mongoid/relations/builders/referenced/many_to_many_spec.rb +18 -18
  373. data/spec/mongoid/relations/builders/referenced/one_spec.rb +11 -24
  374. data/spec/mongoid/relations/builders_spec.rb +21 -21
  375. data/spec/mongoid/relations/cascading/delete_spec.rb +7 -7
  376. data/spec/mongoid/relations/cascading/destroy_spec.rb +2 -2
  377. data/spec/mongoid/relations/cascading/nullify_spec.rb +2 -2
  378. data/spec/mongoid/relations/cascading/restrict_spec.rb +3 -3
  379. data/spec/mongoid/relations/cascading_spec.rb +16 -16
  380. data/spec/mongoid/relations/constraint_spec.rb +8 -7
  381. data/spec/mongoid/relations/conversions_spec.rb +16 -14
  382. data/spec/mongoid/relations/counter_cache_spec.rb +85 -0
  383. data/spec/mongoid/relations/cyclic_spec.rb +18 -18
  384. data/spec/mongoid/relations/eager/belongs_to_spec.rb +154 -0
  385. data/spec/mongoid/relations/eager/has_and_belongs_to_many_spec.rb +143 -0
  386. data/spec/mongoid/relations/eager/has_many_spec.rb +207 -0
  387. data/spec/mongoid/relations/eager/has_one_spec.rb +163 -0
  388. data/spec/mongoid/relations/eager_spec.rb +228 -0
  389. data/spec/mongoid/relations/embedded/dirty_spec.rb +8 -8
  390. data/spec/mongoid/relations/embedded/in_spec.rb +55 -56
  391. data/spec/mongoid/relations/embedded/many_spec.rb +357 -367
  392. data/spec/mongoid/relations/embedded/one_spec.rb +98 -139
  393. data/spec/mongoid/relations/macros_spec.rb +108 -102
  394. data/spec/mongoid/relations/metadata_spec.rb +147 -241
  395. data/spec/mongoid/relations/options_spec.rb +1 -1
  396. data/spec/mongoid/relations/polymorphic_spec.rb +13 -17
  397. data/spec/mongoid/relations/proxy_spec.rb +2 -2
  398. data/spec/mongoid/relations/referenced/in_spec.rb +128 -303
  399. data/spec/mongoid/relations/referenced/many_spec.rb +379 -522
  400. data/spec/mongoid/relations/referenced/many_to_many_spec.rb +345 -417
  401. data/spec/mongoid/relations/referenced/one_spec.rb +148 -263
  402. data/spec/mongoid/relations/reflections_spec.rb +6 -6
  403. data/spec/mongoid/relations/synchronization_spec.rb +46 -50
  404. data/spec/mongoid/relations/targets/enumerable_spec.rb +116 -116
  405. data/spec/mongoid/relations/touchable_spec.rb +296 -0
  406. data/spec/mongoid/relations_spec.rb +16 -15
  407. data/spec/mongoid/{reloading_spec.rb → reloadable_spec.rb} +20 -60
  408. data/spec/mongoid/{scoping_spec.rb → scopable_spec.rb} +74 -126
  409. data/spec/mongoid/selectable_spec.rb +134 -0
  410. data/spec/mongoid/{serialization_spec.rb → serializable_spec.rb} +111 -82
  411. data/spec/mongoid/sessions/factory_spec.rb +49 -28
  412. data/spec/mongoid/sessions/mongo_uri_spec.rb +7 -7
  413. data/spec/mongoid/sessions/options_spec.rb +92 -0
  414. data/spec/mongoid/sessions_spec.rb +288 -177
  415. data/spec/mongoid/{sharding_spec.rb → shardable_spec.rb} +8 -8
  416. data/spec/mongoid/state_spec.rb +10 -10
  417. data/spec/mongoid/threaded_spec.rb +17 -70
  418. data/spec/mongoid/timestamps/created/short_spec.rb +6 -6
  419. data/spec/mongoid/timestamps/created_spec.rb +5 -5
  420. data/spec/mongoid/timestamps/updated/short_spec.rb +10 -10
  421. data/spec/mongoid/timestamps/updated_spec.rb +8 -12
  422. data/spec/mongoid/timestamps_spec.rb +7 -11
  423. data/spec/mongoid/{hierarchy_spec.rb → traversable_spec.rb} +19 -19
  424. data/spec/mongoid/{validations → validatable}/associated_spec.rb +18 -18
  425. data/spec/mongoid/{validations → validatable}/format_spec.rb +6 -6
  426. data/spec/mongoid/{validations → validatable}/length_spec.rb +7 -7
  427. data/spec/mongoid/{validations → validatable}/numericality_spec.rb +1 -1
  428. data/spec/mongoid/{validations → validatable}/presence_spec.rb +31 -38
  429. data/spec/mongoid/{validations → validatable}/uniqueness_spec.rb +126 -183
  430. data/spec/mongoid/{validations_spec.rb → validatable_spec.rb} +28 -28
  431. data/spec/mongoid_spec.rb +8 -8
  432. data/spec/rails/mongoid_spec.rb +72 -87
  433. data/spec/spec_helper.rb +19 -17
  434. metadata +261 -283
  435. data/lib/mongoid/atomic/positionable.rb +0 -73
  436. data/lib/mongoid/components.rb +0 -92
  437. data/lib/mongoid/config/inflections.rb +0 -6
  438. data/lib/mongoid/contextual/eager.rb +0 -158
  439. data/lib/mongoid/criterion/findable.rb +0 -179
  440. data/lib/mongoid/errors/versioning_not_on_root.rb +0 -23
  441. data/lib/mongoid/identity_map.rb +0 -163
  442. data/lib/mongoid/json.rb +0 -16
  443. data/lib/mongoid/matchers.rb +0 -32
  444. data/lib/mongoid/matchers/strategies.rb +0 -97
  445. data/lib/mongoid/multi_parameter_attributes.rb +0 -105
  446. data/lib/mongoid/nested_attributes.rb +0 -78
  447. data/lib/mongoid/observer.rb +0 -192
  448. data/lib/mongoid/paranoia.rb +0 -136
  449. data/lib/mongoid/persistence.rb +0 -357
  450. data/lib/mongoid/persistence/atomic.rb +0 -231
  451. data/lib/mongoid/persistence/atomic/add_to_set.rb +0 -47
  452. data/lib/mongoid/persistence/atomic/bit.rb +0 -35
  453. data/lib/mongoid/persistence/atomic/inc.rb +0 -45
  454. data/lib/mongoid/persistence/atomic/operation.rb +0 -154
  455. data/lib/mongoid/persistence/atomic/pop.rb +0 -32
  456. data/lib/mongoid/persistence/atomic/pull.rb +0 -32
  457. data/lib/mongoid/persistence/atomic/pull_all.rb +0 -32
  458. data/lib/mongoid/persistence/atomic/push.rb +0 -25
  459. data/lib/mongoid/persistence/atomic/push_all.rb +0 -25
  460. data/lib/mongoid/persistence/atomic/rename.rb +0 -30
  461. data/lib/mongoid/persistence/atomic/sets.rb +0 -28
  462. data/lib/mongoid/persistence/atomic/unset.rb +0 -27
  463. data/lib/mongoid/persistence/deletion.rb +0 -31
  464. data/lib/mongoid/persistence/insertion.rb +0 -38
  465. data/lib/mongoid/persistence/modification.rb +0 -35
  466. data/lib/mongoid/persistence/operations.rb +0 -214
  467. data/lib/mongoid/persistence/operations/embedded/insert.rb +0 -46
  468. data/lib/mongoid/persistence/operations/embedded/remove.rb +0 -43
  469. data/lib/mongoid/persistence/operations/insert.rb +0 -34
  470. data/lib/mongoid/persistence/operations/remove.rb +0 -33
  471. data/lib/mongoid/persistence/operations/update.rb +0 -59
  472. data/lib/mongoid/persistence/operations/upsert.rb +0 -28
  473. data/lib/mongoid/persistence/upsertion.rb +0 -31
  474. data/lib/mongoid/unit_of_work.rb +0 -61
  475. data/lib/mongoid/versioning.rb +0 -217
  476. data/lib/rack/mongoid.rb +0 -2
  477. data/lib/rack/mongoid/middleware/identity_map.rb +0 -39
  478. data/lib/rails/generators/mongoid/observer/observer_generator.rb +0 -17
  479. data/lib/rails/generators/mongoid/observer/templates/observer.rb.tt +0 -4
  480. data/spec/app/models/actor_observer.rb +0 -15
  481. data/spec/app/models/callback_recorder.rb +0 -25
  482. data/spec/app/models/draft.rb +0 -9
  483. data/spec/app/models/paranoid_phone.rb +0 -25
  484. data/spec/app/models/paranoid_post.rb +0 -36
  485. data/spec/app/models/phone_observer.rb +0 -6
  486. data/spec/mongoid/#atomic_spec.rb# +0 -365
  487. data/spec/mongoid/attributes/processing_spec.rb +0 -149
  488. data/spec/mongoid/criterion/destructive_spec.rb +0 -101
  489. data/spec/mongoid/criterion/modifiable_spec.rb +0 -409
  490. data/spec/mongoid/criterion/modification_spec.rb +0 -402
  491. data/spec/mongoid/errors/versioning_not_on_root_spec.rb +0 -29
  492. data/spec/mongoid/identity_map_spec.rb +0 -564
  493. data/spec/mongoid/json_spec.rb +0 -33
  494. data/spec/mongoid/matchers/in_spec.rb +0 -25
  495. data/spec/mongoid/matchers/nin_spec.rb +0 -25
  496. data/spec/mongoid/multi_parameter_attributes_spec.rb +0 -128
  497. data/spec/mongoid/observer_spec.rb +0 -290
  498. data/spec/mongoid/paranoia_spec.rb +0 -759
  499. data/spec/mongoid/persistence/atomic/add_to_set_spec.rb +0 -262
  500. data/spec/mongoid/persistence/atomic/bit_spec.rb +0 -88
  501. data/spec/mongoid/persistence/atomic/inc_spec.rb +0 -133
  502. data/spec/mongoid/persistence/atomic/pop_spec.rb +0 -111
  503. data/spec/mongoid/persistence/atomic/pull_all_spec.rb +0 -77
  504. data/spec/mongoid/persistence/atomic/pull_spec.rb +0 -80
  505. data/spec/mongoid/persistence/atomic/push_all_spec.rb +0 -77
  506. data/spec/mongoid/persistence/atomic/push_spec.rb +0 -77
  507. data/spec/mongoid/persistence/atomic/rename_spec.rb +0 -42
  508. data/spec/mongoid/persistence/atomic/sets_spec.rb +0 -154
  509. data/spec/mongoid/persistence/atomic/unset_spec.rb +0 -65
  510. data/spec/mongoid/persistence/atomic_spec.rb +0 -216
  511. data/spec/mongoid/persistence/operations/embedded/insert_spec.rb +0 -191
  512. data/spec/mongoid/persistence/operations/embedded/remove_spec.rb +0 -8
  513. data/spec/mongoid/persistence/operations/insert_spec.rb +0 -149
  514. data/spec/mongoid/persistence/operations/remove_spec.rb +0 -113
  515. data/spec/mongoid/persistence/operations/update_spec.rb +0 -141
  516. data/spec/mongoid/persistence/operations/upsert_spec.rb +0 -59
  517. data/spec/mongoid/persistence/operations_spec.rb +0 -313
  518. data/spec/mongoid/persistence_spec.rb +0 -2279
  519. data/spec/mongoid/unit_of_work_spec.rb +0 -196
  520. data/spec/mongoid/versioning_spec.rb +0 -540
  521. data/spec/rack/mongoid/middleware/identity_map_spec.rb +0 -72
@@ -0,0 +1,134 @@
1
+ require "spec_helper"
2
+
3
+ describe Mongoid::Selectable do
4
+
5
+ describe "#atomic_selector" do
6
+
7
+ context "when the document is a root document" do
8
+
9
+ context "when the document has a shard key" do
10
+
11
+ let(:profile) do
12
+ Profile.create(name: "google")
13
+ end
14
+
15
+ let!(:selector) do
16
+ profile.atomic_selector
17
+ end
18
+
19
+ it "returns the id and shard key in the hash" do
20
+ expect(selector).to eq({ "_id" => profile.id, "name" => profile.name })
21
+ end
22
+ end
23
+
24
+ context "when the document does not have a shard key" do
25
+
26
+ context "when using object ids" do
27
+
28
+ let(:band) do
29
+ Band.create
30
+ end
31
+
32
+ let(:selector) do
33
+ band.atomic_selector
34
+ end
35
+
36
+ it "returns the hash with the id" do
37
+ expect(selector).to eq({ "_id" => band.id })
38
+ end
39
+ end
40
+
41
+ context "when using a custom id" do
42
+
43
+ let(:account) do
44
+ Account.create(name: "savings")
45
+ end
46
+
47
+ let(:selector) do
48
+ account.atomic_selector
49
+ end
50
+
51
+ context "when the id has not changed" do
52
+
53
+ it "returns the hash with the key" do
54
+ expect(selector).to eq({ "_id" => "savings" })
55
+ end
56
+ end
57
+
58
+ context "when the composite key has changed" do
59
+
60
+ before do
61
+ account.new_record = false
62
+ account.name = "current"
63
+ end
64
+
65
+ it "returns the hash with the old key" do
66
+ expect(selector).to eq({ "_id" => "savings" })
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end
72
+
73
+ context "when the document is embedded" do
74
+
75
+ let(:person) do
76
+ Person.create
77
+ end
78
+
79
+ context "when the document is an embeds one" do
80
+
81
+ let(:name) do
82
+ person.create_name(first_name: "test", last_name: "user")
83
+ end
84
+
85
+ it "returns the hash with the selector" do
86
+ expect(name.atomic_selector).to eq(
87
+ { "_id" => person.id, "name._id" => name.id }
88
+ )
89
+ end
90
+ end
91
+
92
+ context "when the document is an embeds many" do
93
+
94
+ let(:address) do
95
+ person.addresses.create(street: "kreuzbergstr")
96
+ end
97
+
98
+ it "returns the hash with the selector" do
99
+ expect(address.atomic_selector).to eq(
100
+ { "_id" => person.id, "addresses._id" => address.id }
101
+ )
102
+ end
103
+
104
+ context "when the document's id changes" do
105
+
106
+ before do
107
+ address._id = "hobrecht"
108
+ end
109
+
110
+ it "returns only the parent selector" do
111
+ expect(address.atomic_selector).to eq(person.atomic_selector)
112
+ end
113
+ end
114
+
115
+ context "when the document is embedded multiple levels" do
116
+
117
+ let(:location) do
118
+ address.locations.create
119
+ end
120
+
121
+ it "returns a hash with the selector" do
122
+ expect(location.atomic_selector).to eq(
123
+ {
124
+ "_id" => person.id,
125
+ "addresses._id" => address.id,
126
+ "addresses.0.locations._id" => location.id
127
+ }
128
+ )
129
+ end
130
+ end
131
+ end
132
+ end
133
+ end
134
+ end
@@ -1,6 +1,6 @@
1
1
  require "spec_helper"
2
2
 
3
- describe Mongoid::Serialization do
3
+ describe Mongoid::Serializable do
4
4
 
5
5
  describe "#field_names" do
6
6
 
@@ -9,7 +9,36 @@ describe Mongoid::Serialization do
9
9
  end
10
10
 
11
11
  it "does not duplicate fields" do
12
- band.send(:field_names, {}).should eq(band.fields.except("_type").keys.sort)
12
+ expect(band.send(:field_names, {})).to eq(band.fields.except("_type").keys.sort)
13
+ end
14
+ end
15
+
16
+ describe ".include_root_in_json" do
17
+
18
+ let(:person) do
19
+ Person.new
20
+ end
21
+
22
+ context "when config set to true" do
23
+
24
+ before do
25
+ Mongoid.include_root_in_json = true
26
+ end
27
+
28
+ it "returns true" do
29
+ expect(person.include_root_in_json).to be true
30
+ end
31
+ end
32
+
33
+ context "when config set to false" do
34
+
35
+ before do
36
+ Mongoid.include_root_in_json = false
37
+ end
38
+
39
+ it "returns false" do
40
+ expect(person.include_root_in_json).to be false
41
+ end
13
42
  end
14
43
  end
15
44
 
@@ -30,7 +59,7 @@ describe Mongoid::Serialization do
30
59
  end
31
60
 
32
61
  it "grabs the attribute direct from the hash" do
33
- attributes["loop"].should eq("testing")
62
+ expect(attributes["loop"]).to eq("testing")
34
63
  end
35
64
  end
36
65
 
@@ -45,7 +74,7 @@ describe Mongoid::Serialization do
45
74
  end
46
75
 
47
76
  it "uses the overridden method" do
48
- attributes["override_me"].should eq("1")
77
+ expect(attributes["override_me"]).to eq("1")
49
78
  end
50
79
  end
51
80
 
@@ -62,7 +91,7 @@ describe Mongoid::Serialization do
62
91
  end
63
92
 
64
93
  it "includes the embedded documents" do
65
- attributes["addresses"].first.should eq(address.serializable_hash)
94
+ expect(attributes["addresses"].first).to eq(address.serializable_hash)
66
95
  end
67
96
  end
68
97
 
@@ -77,11 +106,11 @@ describe Mongoid::Serialization do
77
106
  end
78
107
 
79
108
  it "uses the options" do
80
- attributes["id"].should eq(person.id)
109
+ expect(attributes["id"]).to eq(person.id)
81
110
  end
82
111
 
83
112
  it "uses the options on embedded documents" do
84
- address_attributes["id"].should eq(address.id)
113
+ expect(address_attributes["id"]).to eq(address.id)
85
114
  end
86
115
  end
87
116
 
@@ -96,7 +125,7 @@ describe Mongoid::Serialization do
96
125
  end
97
126
 
98
127
  it "includes the deeply nested document" do
99
- attributes["addresses"][0]["locations"].should_not be_empty
128
+ expect(attributes["addresses"][0]["locations"]).to_not be_empty
100
129
  end
101
130
  end
102
131
  end
@@ -116,7 +145,7 @@ describe Mongoid::Serialization do
116
145
  end
117
146
 
118
147
  it "converts the objects to the defined type" do
119
- attributes["dob"].should eq(date)
148
+ expect(attributes["dob"]).to eq(date)
120
149
  end
121
150
  end
122
151
 
@@ -127,7 +156,7 @@ describe Mongoid::Serialization do
127
156
  end
128
157
 
129
158
  before do
130
- person.write_attributes(attributes, false)
159
+ person.write_attributes(attributes)
131
160
  end
132
161
 
133
162
  let(:field_names) do
@@ -135,15 +164,15 @@ describe Mongoid::Serialization do
135
164
  end
136
165
 
137
166
  it "serializes assigned attributes" do
138
- person.serializable_hash.should include attributes
167
+ expect(person.serializable_hash).to include attributes
139
168
  end
140
169
 
141
170
  it "includes all defined fields except _type" do
142
- person.serializable_hash.keys.should include(*field_names)
171
+ expect(person.serializable_hash.keys).to include(*field_names)
143
172
  end
144
173
 
145
174
  it "does not include _type" do
146
- person.serializable_hash.keys.should_not include "_type"
175
+ expect(person.serializable_hash.keys).to_not include "_type"
147
176
  end
148
177
 
149
178
  context "when providing options" do
@@ -157,7 +186,7 @@ describe Mongoid::Serialization do
157
186
  end
158
187
 
159
188
  it "does not modify the options in the argument" do
160
- options[:except].should be_nil
189
+ expect(options[:except]).to be_nil
161
190
  end
162
191
  end
163
192
 
@@ -172,14 +201,14 @@ describe Mongoid::Serialization do
172
201
  end
173
202
 
174
203
  it "includes _type field" do
175
- person.serializable_hash.keys.should include '_type'
204
+ expect(person.serializable_hash.keys).to include '_type'
176
205
  end
177
206
  end
178
207
 
179
208
  context "when specifying which fields to only include" do
180
209
 
181
210
  it "only includes the specified fields" do
182
- person.serializable_hash(only: [:title]).should eq(
211
+ expect(person.serializable_hash(only: [:title])).to eq(
183
212
  { "title" => attributes["title"] }
184
213
  )
185
214
  end
@@ -188,16 +217,16 @@ describe Mongoid::Serialization do
188
217
  context "when specifying extra inclusions" do
189
218
 
190
219
  it "includes the extra fields" do
191
- person.serializable_hash(
220
+ expect(person.serializable_hash(
192
221
  methods: [ :_type ]
193
- ).has_key?("_type").should be_true
222
+ ).has_key?("_type")).to be true
194
223
  end
195
224
  end
196
225
 
197
226
  context "when specifying which fields to exclude" do
198
227
 
199
228
  it "excludes the specified fields" do
200
- person.serializable_hash(except: [:title]).should_not include(
229
+ expect(person.serializable_hash(except: [:title])).to_not include(
201
230
  "title" => attributes["title"]
202
231
  )
203
232
  end
@@ -219,13 +248,13 @@ describe Mongoid::Serialization do
219
248
  end
220
249
 
221
250
  it "includes dynamic fields" do
222
- person.serializable_hash[dynamic_field_name].should eq(dynamic_value)
251
+ expect(person.serializable_hash[dynamic_field_name]).to eq(dynamic_value)
223
252
  end
224
253
 
225
254
  context "when specifying which dynamic fields to only include" do
226
255
 
227
256
  it "only includes the specified dynamic fields" do
228
- person.serializable_hash(only: [dynamic_field_name]).should eq(
257
+ expect(person.serializable_hash(only: [dynamic_field_name])).to eq(
229
258
  { dynamic_field_name => dynamic_value }
230
259
  )
231
260
  end
@@ -234,7 +263,7 @@ describe Mongoid::Serialization do
234
263
  context "when specified which dynamic fields to exclude" do
235
264
 
236
265
  it "excludes the specified fields" do
237
- person.serializable_hash(except: [dynamic_field_name]).should_not include(
266
+ expect(person.serializable_hash(except: [dynamic_field_name])).to_not include(
238
267
  dynamic_field_name => dynamic_value
239
268
  )
240
269
  end
@@ -248,7 +277,7 @@ describe Mongoid::Serialization do
248
277
  end
249
278
 
250
279
  before do
251
- person.write_attributes(attributes, false)
280
+ person.write_attributes(attributes)
252
281
  end
253
282
 
254
283
  context "when the model is saved before the relation is added" do
@@ -268,7 +297,7 @@ describe Mongoid::Serialization do
268
297
  end
269
298
 
270
299
  it "includes the relation" do
271
- person.serializable_hash.keys.should include('addresses')
300
+ expect(person.serializable_hash.keys).to include('addresses')
272
301
  end
273
302
  end
274
303
 
@@ -282,7 +311,7 @@ describe Mongoid::Serialization do
282
311
  end
283
312
 
284
313
  it "includes the relation" do
285
- person.serializable_hash.keys.should include('name')
314
+ expect(person.serializable_hash.keys).to include('name')
286
315
  end
287
316
  end
288
317
  end
@@ -300,7 +329,7 @@ describe Mongoid::Serialization do
300
329
  end
301
330
 
302
331
  it "includes the relation" do
303
- person.serializable_hash.keys.should include('addresses')
332
+ expect(person.serializable_hash.keys).to include('addresses')
304
333
  end
305
334
  end
306
335
 
@@ -314,7 +343,7 @@ describe Mongoid::Serialization do
314
343
  end
315
344
 
316
345
  it "includes the relation" do
317
- person.serializable_hash.keys.should include('name')
346
+ expect(person.serializable_hash.keys).to include('name')
318
347
  end
319
348
  end
320
349
  end
@@ -323,7 +352,7 @@ describe Mongoid::Serialization do
323
352
  context "when including methods" do
324
353
 
325
354
  it "includes the method result" do
326
- person.serializable_hash(methods: [:foo]).should include(
355
+ expect(person.serializable_hash(methods: [:foo])).to include(
327
356
  "foo" => person.foo
328
357
  )
329
358
  end
@@ -362,7 +391,7 @@ describe Mongoid::Serialization do
362
391
  end
363
392
 
364
393
  it "does not generate new ids" do
365
- hash["addresses"].first["_id"].should be_nil
394
+ expect(hash["addresses"].first["_id"]).to be_nil
366
395
  end
367
396
  end
368
397
 
@@ -373,12 +402,12 @@ describe Mongoid::Serialization do
373
402
  end
374
403
 
375
404
  it "includes the first relation" do
376
- relation_hash[0].should include
405
+ expect(relation_hash[0]).to include
377
406
  { "_id" => "kudamm", "street" => "Kudamm" }
378
407
  end
379
408
 
380
409
  it "includes the second relation" do
381
- relation_hash[1].should include
410
+ expect(relation_hash[1]).to include
382
411
  { "_id" => "tauentzienstr", "street" => "Tauentzienstr" }
383
412
  end
384
413
  end
@@ -390,12 +419,12 @@ describe Mongoid::Serialization do
390
419
  end
391
420
 
392
421
  it "includes the first relation" do
393
- relation_hash[0].should include
422
+ expect(relation_hash[0]).to include
394
423
  { "_id" => "kudamm", "street" => "Kudamm" }
395
424
  end
396
425
 
397
426
  it "includes the second relation" do
398
- relation_hash[1].should include
427
+ expect(relation_hash[1]).to include
399
428
  { "_id" => "tauentzienstr", "street" => "Tauentzienstr" }
400
429
  end
401
430
  end
@@ -409,11 +438,11 @@ describe Mongoid::Serialization do
409
438
  end
410
439
 
411
440
  it "includes the first relation sans exceptions" do
412
- relation_hash[0].should include({ "street" => "Kudamm" })
441
+ expect(relation_hash[0]).to include({ "street" => "Kudamm" })
413
442
  end
414
443
 
415
444
  it "includes the second relation sans exceptions" do
416
- relation_hash[1].should include({ "street" => "Tauentzienstr" })
445
+ expect(relation_hash[1]).to include({ "street" => "Tauentzienstr" })
417
446
  end
418
447
  end
419
448
 
@@ -432,9 +461,9 @@ describe Mongoid::Serialization do
432
461
  end
433
462
 
434
463
  it "includes the first relation" do
435
- relation_hash[0]["locations"].any? do |location|
464
+ expect(relation_hash[0]["locations"].any? do |location|
436
465
  location["name"] == "Home"
437
- end.should be_true
466
+ end).to be true
438
467
  end
439
468
 
440
469
  context "after retrieved from database" do
@@ -460,12 +489,12 @@ describe Mongoid::Serialization do
460
489
  end
461
490
 
462
491
  it "includes the specific ralations" do
463
- relation_hash[0]["locations"].map do |location|
492
+ expect(relation_hash[0]["locations"].map do |location|
464
493
  location["name"]
465
- end.should include "Home"
466
- relation_hash[1]["locations"].map do |location|
494
+ end).to include "Home"
495
+ expect(relation_hash[1]["locations"].map do |location|
467
496
  location["name"]
468
- end.should include "Hotel"
497
+ end).to include "Hotel"
469
498
  end
470
499
  end
471
500
  end
@@ -484,15 +513,15 @@ describe Mongoid::Serialization do
484
513
  end
485
514
 
486
515
  it "does not contain the root exclusion" do
487
- hash["_id"].should be_nil
516
+ expect(hash["_id"]).to be_nil
488
517
  end
489
518
 
490
519
  it "does not include the embedded many exclusion" do
491
- relation_hash[0]["_id"].should be_nil
520
+ expect(relation_hash[0]["_id"]).to be_nil
492
521
  end
493
522
 
494
523
  it "does not include the embedded one exclusion" do
495
- hash["name"]["_id"].should be_nil
524
+ expect(hash["name"]["_id"]).to be_nil
496
525
  end
497
526
  end
498
527
  end
@@ -515,7 +544,7 @@ describe Mongoid::Serialization do
515
544
  end
516
545
 
517
546
  it "includes the specified relation" do
518
- relation_hash.should include
547
+ expect(relation_hash).to include
519
548
  { "_id" => "leo-marvin", "first_name" => "Leo", "last_name" => "Marvin" }
520
549
  end
521
550
  end
@@ -527,7 +556,7 @@ describe Mongoid::Serialization do
527
556
  end
528
557
 
529
558
  it "includes the specified relation" do
530
- relation_hash.should include
559
+ expect(relation_hash).to include
531
560
  { "_id" => "leo-marvin", "first_name" => "Leo", "last_name" => "Marvin" }
532
561
  end
533
562
  end
@@ -539,7 +568,7 @@ describe Mongoid::Serialization do
539
568
  end
540
569
 
541
570
  it "includes the specified relation sans exceptions" do
542
- relation_hash.should include
571
+ expect(relation_hash).to include
543
572
  { "first_name" => "Leo", "last_name" => "Marvin" }
544
573
  end
545
574
  end
@@ -566,15 +595,15 @@ describe Mongoid::Serialization do
566
595
  end
567
596
 
568
597
  it "includes the specified relation" do
569
- relation_hash.should_not be_nil
598
+ expect(relation_hash).to_not be_nil
570
599
  end
571
600
 
572
601
  it "includes the first document related fields" do
573
- relation_hash[0]["title"].should eq("First")
602
+ expect(relation_hash[0]["title"]).to eq("First")
574
603
  end
575
604
 
576
605
  it "includes the second document related fields" do
577
- relation_hash[1]["title"].should eq("Second")
606
+ expect(relation_hash[1]["title"]).to eq("Second")
578
607
  end
579
608
  end
580
609
 
@@ -585,15 +614,15 @@ describe Mongoid::Serialization do
585
614
  end
586
615
 
587
616
  it "includes the specified relation" do
588
- relation_hash.should_not be_nil
617
+ expect(relation_hash).to_not be_nil
589
618
  end
590
619
 
591
620
  it "includes the first document related fields" do
592
- relation_hash[0]["title"].should eq("First")
621
+ expect(relation_hash[0]["title"]).to eq("First")
593
622
  end
594
623
 
595
624
  it "includes the second document related fields" do
596
- relation_hash[1]["title"].should eq("Second")
625
+ expect(relation_hash[1]["title"]).to eq("Second")
597
626
  end
598
627
  end
599
628
 
@@ -604,23 +633,23 @@ describe Mongoid::Serialization do
604
633
  end
605
634
 
606
635
  it "includes the specified relation" do
607
- relation_hash.should_not be_nil
636
+ expect(relation_hash).to_not be_nil
608
637
  end
609
638
 
610
639
  it "includes the first document related fields" do
611
- relation_hash[0]["title"].should eq("First")
640
+ expect(relation_hash[0]["title"]).to eq("First")
612
641
  end
613
642
 
614
643
  it "includes the second document related fields" do
615
- relation_hash[1]["title"].should eq("Second")
644
+ expect(relation_hash[1]["title"]).to eq("Second")
616
645
  end
617
646
 
618
647
  it "does not include the first document exceptions" do
619
- relation_hash[0]["_id"].should be_nil
648
+ expect(relation_hash[0]["_id"]).to be_nil
620
649
  end
621
650
 
622
651
  it "does not include the second document exceptions" do
623
- relation_hash[1]["_id"].should be_nil
652
+ expect(relation_hash[1]["_id"]).to be_nil
624
653
  end
625
654
  end
626
655
  end
@@ -646,15 +675,15 @@ describe Mongoid::Serialization do
646
675
  end
647
676
 
648
677
  it "includes the specified relation" do
649
- relation_hash.should_not be_nil
678
+ expect(relation_hash).to_not be_nil
650
679
  end
651
680
 
652
681
  it "includes the first document related fields" do
653
- relation_hash[0]["name"].should eq("First")
682
+ expect(relation_hash[0]["name"]).to eq("First")
654
683
  end
655
684
 
656
685
  it "includes the second document related fields" do
657
- relation_hash[1]["name"].should eq("Second")
686
+ expect(relation_hash[1]["name"]).to eq("Second")
658
687
  end
659
688
  end
660
689
 
@@ -665,15 +694,15 @@ describe Mongoid::Serialization do
665
694
  end
666
695
 
667
696
  it "includes the specified relation" do
668
- relation_hash.should_not be_nil
697
+ expect(relation_hash).to_not be_nil
669
698
  end
670
699
 
671
700
  it "includes the first document related fields" do
672
- relation_hash[0]["name"].should eq("First")
701
+ expect(relation_hash[0]["name"]).to eq("First")
673
702
  end
674
703
 
675
704
  it "includes the second document related fields" do
676
- relation_hash[1]["name"].should eq("Second")
705
+ expect(relation_hash[1]["name"]).to eq("Second")
677
706
  end
678
707
  end
679
708
 
@@ -691,27 +720,27 @@ describe Mongoid::Serialization do
691
720
  end
692
721
 
693
722
  it "includes the specified relation" do
694
- relation_hash.should_not be_nil
723
+ expect(relation_hash).to_not be_nil
695
724
  end
696
725
 
697
726
  it "includes the first document related fields" do
698
- relation_hash[0]["name"].should eq("First")
727
+ expect(relation_hash[0]["name"]).to eq("First")
699
728
  end
700
729
 
701
730
  it "includes the second document related fields" do
702
- relation_hash[1]["name"].should eq("Second")
731
+ expect(relation_hash[1]["name"]).to eq("Second")
703
732
  end
704
733
 
705
734
  it "does not include the first document exceptions" do
706
- relation_hash[0]["_id"].should be_nil
735
+ expect(relation_hash[0]["_id"]).to be_nil
707
736
  end
708
737
 
709
738
  it "does not include the second document exceptions" do
710
- relation_hash[1]["_id"].should be_nil
739
+ expect(relation_hash[1]["_id"]).to be_nil
711
740
  end
712
741
 
713
742
  it "does not include the root exceptions" do
714
- hash["preference_ids"].should be_nil
743
+ expect(hash["preference_ids"]).to be_nil
715
744
  end
716
745
  end
717
746
  end
@@ -732,7 +761,7 @@ describe Mongoid::Serialization do
732
761
  end
733
762
 
734
763
  it "uses the mongoid configuration" do
735
- person.to_json.should include("person")
764
+ expect(person.to_json).to include("person")
736
765
  end
737
766
  end
738
767
 
@@ -743,7 +772,7 @@ describe Mongoid::Serialization do
743
772
  end
744
773
 
745
774
  it "uses the mongoid configuration" do
746
- person.to_json.should_not include("person")
775
+ expect(person.to_json).to_not include("person")
747
776
  end
748
777
  end
749
778
 
@@ -760,7 +789,7 @@ describe Mongoid::Serialization do
760
789
  end
761
790
 
762
791
  it "serializes only the relation" do
763
- json.should include(address.street)
792
+ expect(json).to include(address.street)
764
793
  end
765
794
  end
766
795
 
@@ -775,7 +804,7 @@ describe Mongoid::Serialization do
775
804
  end
776
805
 
777
806
  it "serializes only the relation" do
778
- json.should include(post.title)
807
+ expect(json).to include(post.title)
779
808
  end
780
809
  end
781
810
  end
@@ -783,14 +812,14 @@ describe Mongoid::Serialization do
783
812
 
784
813
  describe "#to_xml" do
785
814
 
786
- context "Moped::BSON::ObjectId" do
815
+ context "BSON::ObjectId" do
787
816
 
788
817
  let(:person) do
789
818
  Person.new
790
819
  end
791
820
 
792
821
  it "serializes as string" do
793
- person.to_xml.should include("<_id>#{person.id}</_id>")
822
+ expect(person.to_xml).to include("<_id>#{person.id}</_id>")
794
823
  end
795
824
  end
796
825
 
@@ -803,12 +832,12 @@ describe Mongoid::Serialization do
803
832
  end
804
833
 
805
834
  it "properly types the array" do
806
- person.to_xml.should include("<aliases type=\"array\">")
835
+ expect(person.to_xml).to include("<aliases type=\"array\">")
807
836
  end
808
837
 
809
838
  it "serializes the array" do
810
- person.to_xml.should include("<alias>Kelly</alias>")
811
- person.to_xml.should include("<alias>Machine Gun</alias>")
839
+ expect(person.to_xml).to include("<alias>Kelly</alias>")
840
+ expect(person.to_xml).to include("<alias>Machine Gun</alias>")
812
841
  end
813
842
  end
814
843
 
@@ -821,12 +850,12 @@ describe Mongoid::Serialization do
821
850
  end
822
851
 
823
852
  it "properly types the hash" do
824
- person.to_xml.should include("<map>")
853
+ expect(person.to_xml).to include("<map>")
825
854
  end
826
855
 
827
856
  it "serializes the hash" do
828
- person.to_xml.should include("<lat type=\"float\">24.5</lat>")
829
- person.to_xml.should include("<long type=\"float\">22.1</long>")
857
+ expect(person.to_xml).to include("<lat type=\"float\">24.5</lat>")
858
+ expect(person.to_xml).to include("<long type=\"float\">22.1</long>")
830
859
  end
831
860
  end
832
861
  end