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
@@ -1,6 +1,6 @@
1
1
  require "spec_helper"
2
2
 
3
- describe Mongoid::Dirty do
3
+ describe Mongoid::Changeable do
4
4
 
5
5
  describe "#attribute_change" do
6
6
 
@@ -17,13 +17,13 @@ describe Mongoid::Dirty do
17
17
  end
18
18
 
19
19
  it "returns an array of the old value and new value" do
20
- person.send(:attribute_change, "title").should eq(
20
+ expect(person.send(:attribute_change, "title")).to eq(
21
21
  [ "Grand Poobah", "Captain Obvious" ]
22
22
  )
23
23
  end
24
24
 
25
25
  it "allows access via (attribute)_change" do
26
- person.title_change.should eq(
26
+ expect(person.title_change).to eq(
27
27
  [ "Grand Poobah", "Captain Obvious" ]
28
28
  )
29
29
  end
@@ -39,13 +39,13 @@ describe Mongoid::Dirty do
39
39
  end
40
40
 
41
41
  it "returns an array of the old value and new value" do
42
- person.send(:attribute_change, "test").should eq(
42
+ expect(person.send(:attribute_change, "test")).to eq(
43
43
  [ "Aliased 1", "Aliased 2" ]
44
44
  )
45
45
  end
46
46
 
47
47
  it "allows access via (attribute)_change" do
48
- person.test_change.should eq(
48
+ expect(person.test_change).to eq(
49
49
  [ "Aliased 1", "Aliased 2" ]
50
50
  )
51
51
  end
@@ -63,13 +63,13 @@ describe Mongoid::Dirty do
63
63
  end
64
64
 
65
65
  it "returns an array of the old value and new value" do
66
- person.send(:attribute_change, "title").should eq(
66
+ expect(person.send(:attribute_change, "title")).to eq(
67
67
  [ "Grand Poobah", "Captain Obvious" ]
68
68
  )
69
69
  end
70
70
 
71
71
  it "allows access via (attribute)_change" do
72
- person.title_change.should eq(
72
+ expect(person.title_change).to eq(
73
73
  [ "Grand Poobah", "Captain Obvious" ]
74
74
  )
75
75
  end
@@ -85,11 +85,11 @@ describe Mongoid::Dirty do
85
85
  end
86
86
 
87
87
  it "returns an array of nil and new value" do
88
- person.send(:attribute_change, "pets").should eq([ nil, true ])
88
+ expect(person.send(:attribute_change, "pets")).to eq([ nil, true ])
89
89
  end
90
90
 
91
91
  it "allows access via (attribute)_change" do
92
- person.pets_change.should eq([ nil, true ])
92
+ expect(person.pets_change).to eq([ nil, true ])
93
93
  end
94
94
  end
95
95
 
@@ -106,11 +106,11 @@ describe Mongoid::Dirty do
106
106
  end
107
107
 
108
108
  it "returns an array of nil and new value" do
109
- person.send(:attribute_change, "pets").should eq([ nil, true ])
109
+ expect(person.send(:attribute_change, "pets")).to eq([ nil, true ])
110
110
  end
111
111
 
112
112
  it "allows access via (attribute)_change" do
113
- person.pets_change.should eq([ nil, true ])
113
+ expect(person.pets_change).to eq([ nil, true ])
114
114
  end
115
115
  end
116
116
 
@@ -121,11 +121,11 @@ describe Mongoid::Dirty do
121
121
  end
122
122
 
123
123
  before do
124
- person[:a] = "test"
124
+ person[:t] = "test"
125
125
  end
126
126
 
127
127
  it "returns an array of nil and new value" do
128
- person.send(:attribute_change, "a").should eq([ nil, "test" ])
128
+ expect(person.send(:attribute_change, "t")).to eq([ nil, "test" ])
129
129
  end
130
130
  end
131
131
  end
@@ -143,13 +143,13 @@ describe Mongoid::Dirty do
143
143
  end
144
144
 
145
145
  it "returns an array of the original value and new value" do
146
- person.send(:attribute_change, "title").should eq(
146
+ expect(person.send(:attribute_change, "title")).to eq(
147
147
  [ "Grand Poobah", "Dark Helmet" ]
148
148
  )
149
149
  end
150
150
 
151
151
  it "allows access via (attribute)_change" do
152
- person.title_change.should eq(
152
+ expect(person.title_change).to eq(
153
153
  [ "Grand Poobah", "Dark Helmet" ]
154
154
  )
155
155
  end
@@ -168,13 +168,13 @@ describe Mongoid::Dirty do
168
168
  end
169
169
 
170
170
  it "returns an array of the original value and new value" do
171
- person.send(:attribute_change, "aliases").should eq(
171
+ expect(person.send(:attribute_change, "aliases")).to eq(
172
172
  [[ "Grand Poobah" ], [ "Dark Helmet" ]]
173
173
  )
174
174
  end
175
175
 
176
176
  it "allows access via (attribute)_change" do
177
- person.aliases_change.should eq(
177
+ expect(person.aliases_change).to eq(
178
178
  [[ "Grand Poobah" ], [ "Dark Helmet" ]]
179
179
  )
180
180
  end
@@ -186,7 +186,7 @@ describe Mongoid::Dirty do
186
186
  end
187
187
 
188
188
  it "returns an array of the original value and new value" do
189
- person.send(:attribute_change, "aliases").should eq(
189
+ expect(person.send(:attribute_change, "aliases")).to eq(
190
190
  [[ "Grand Poobah" ], [ "Dark Helmet", "Colonel Sanders" ]]
191
191
  )
192
192
  end
@@ -204,13 +204,13 @@ describe Mongoid::Dirty do
204
204
  end
205
205
 
206
206
  it "returns an array of the original value and new value" do
207
- person.send(:attribute_change, "map").should eq(
207
+ expect(person.send(:attribute_change, "map")).to eq(
208
208
  [{ location: "Home" }, { location: "Work" }]
209
209
  )
210
210
  end
211
211
 
212
212
  it "allows access via (attribute)_change" do
213
- person.map_change.should eq(
213
+ expect(person.map_change).to eq(
214
214
  [{ location: "Home" }, { location: "Work" }]
215
215
  )
216
216
  end
@@ -222,7 +222,7 @@ describe Mongoid::Dirty do
222
222
  end
223
223
 
224
224
  it "returns an array of the original value and new value" do
225
- person.send(:attribute_change, "map").should eq(
225
+ expect(person.send(:attribute_change, "map")).to eq(
226
226
  [{ location: "Home" }, { location: "Work", lat: 20.0 }]
227
227
  )
228
228
  end
@@ -250,7 +250,7 @@ describe Mongoid::Dirty do
250
250
  end
251
251
 
252
252
  it "flags the attribute as changed" do
253
- person.send(:attribute_change, "map").should eq(
253
+ expect(person.send(:attribute_change, "map")).to eq(
254
254
  [
255
255
  {
256
256
  "stack1" => [ 1, 2, 3, 4 ],
@@ -277,7 +277,7 @@ describe Mongoid::Dirty do
277
277
  end
278
278
 
279
279
  it "returns nil" do
280
- person.send(:attribute_change, "title").should be_nil
280
+ expect(person.send(:attribute_change, "title")).to be_nil
281
281
  end
282
282
  end
283
283
 
@@ -290,7 +290,7 @@ describe Mongoid::Dirty do
290
290
  end
291
291
 
292
292
  it "returns the change" do
293
- person.send(:attribute_change, "pets").should eq([ nil, false ])
293
+ expect(person.send(:attribute_change, "pets")).to eq([ nil, false ])
294
294
  end
295
295
  end
296
296
 
@@ -301,7 +301,7 @@ describe Mongoid::Dirty do
301
301
  end
302
302
 
303
303
  it "returns nil" do
304
- person.send(:attribute_change, "pets").should be_nil
304
+ expect(person.send(:attribute_change, "pets")).to be_nil
305
305
  end
306
306
  end
307
307
  end
@@ -317,7 +317,7 @@ describe Mongoid::Dirty do
317
317
  end
318
318
 
319
319
  it "returns an empty array" do
320
- person.send(:attribute_change, "title").should be_nil
320
+ expect(person.send(:attribute_change, "title")).to be_nil
321
321
  end
322
322
  end
323
323
 
@@ -332,7 +332,7 @@ describe Mongoid::Dirty do
332
332
  end
333
333
 
334
334
  it "returns an empty array" do
335
- person.send(:attribute_change, "title").should eq(
335
+ expect(person.send(:attribute_change, "title")).to eq(
336
336
  [ "Grand Poobah", nil ]
337
337
  )
338
338
  end
@@ -352,11 +352,11 @@ describe Mongoid::Dirty do
352
352
  end
353
353
 
354
354
  it "returns true" do
355
- person.send(:attribute_changed?, "title").should be_true
355
+ expect(person.send(:attribute_changed?, "title")).to be true
356
356
  end
357
357
 
358
358
  it "allows access via (attribute)_changed?" do
359
- person.title_changed?.should be_true
359
+ expect(person.title_changed?).to be true
360
360
  end
361
361
 
362
362
  context "when the field is aliased" do
@@ -370,11 +370,11 @@ describe Mongoid::Dirty do
370
370
  end
371
371
 
372
372
  it "returns true" do
373
- person.send(:attribute_changed?, "test").should be_true
373
+ expect(person.send(:attribute_changed?, "test")).to be true
374
374
  end
375
375
 
376
376
  it "allows access via (attribute)_changed?" do
377
- person.test_changed?.should be_true
377
+ expect(person.test_changed?).to be true
378
378
  end
379
379
  end
380
380
  end
@@ -390,11 +390,11 @@ describe Mongoid::Dirty do
390
390
  end
391
391
 
392
392
  it "returns true" do
393
- person.send(:attribute_changed?, "pets").should be_true
393
+ expect(person.send(:attribute_changed?, "pets")).to be true
394
394
  end
395
395
 
396
396
  it "allows access via (attribute)_changed?" do
397
- person.pets_changed?.should be_true
397
+ expect(person.pets_changed?).to be true
398
398
  end
399
399
  end
400
400
 
@@ -405,7 +405,7 @@ describe Mongoid::Dirty do
405
405
  end
406
406
 
407
407
  it "returns false" do
408
- person.send(:attribute_changed?, "title").should be_false
408
+ expect(person.send(:attribute_changed?, "title")).to be false
409
409
  end
410
410
  end
411
411
 
@@ -420,7 +420,7 @@ describe Mongoid::Dirty do
420
420
  end
421
421
 
422
422
  it "returns true" do
423
- person.send(:attribute_changed?, "pets").should be_true
423
+ expect(person.send(:attribute_changed?, "pets")).to be true
424
424
  end
425
425
  end
426
426
 
@@ -431,7 +431,7 @@ describe Mongoid::Dirty do
431
431
  end
432
432
 
433
433
  it "returns false" do
434
- person.send(:attribute_changed?, "pets").should be_false
434
+ expect(person.send(:attribute_changed?, "pets")).to be false
435
435
  end
436
436
  end
437
437
  end
@@ -450,7 +450,7 @@ describe Mongoid::Dirty do
450
450
  end
451
451
 
452
452
  it "returns false" do
453
- person.should_not be_aliases_changed
453
+ expect(person).to_not be_aliases_changed
454
454
  end
455
455
  end
456
456
  end
@@ -469,7 +469,7 @@ describe Mongoid::Dirty do
469
469
  end
470
470
 
471
471
  it "returns false" do
472
- person.should_not be_map_changed
472
+ expect(person).to_not be_map_changed
473
473
  end
474
474
  end
475
475
  end
@@ -485,7 +485,7 @@ describe Mongoid::Dirty do
485
485
  end
486
486
 
487
487
  it "returns true" do
488
- person.should be_age_changed_from_default
488
+ expect(person).to be_age_changed_from_default
489
489
  end
490
490
  end
491
491
 
@@ -496,7 +496,7 @@ describe Mongoid::Dirty do
496
496
  end
497
497
 
498
498
  it "returns false" do
499
- person.should_not be_age_changed_from_default
499
+ expect(person).to_not be_age_changed_from_default
500
500
  end
501
501
  end
502
502
  end
@@ -514,11 +514,11 @@ describe Mongoid::Dirty do
514
514
  end
515
515
 
516
516
  it "returns the old value" do
517
- person.send(:attribute_was, "title").should eq("Grand Poobah")
517
+ expect(person.send(:attribute_was, "title")).to eq("Grand Poobah")
518
518
  end
519
519
 
520
520
  it "allows access via (attribute)_was" do
521
- person.title_was.should eq("Grand Poobah")
521
+ expect(person.title_was).to eq("Grand Poobah")
522
522
  end
523
523
 
524
524
  context "when the field is aliased" do
@@ -532,34 +532,15 @@ describe Mongoid::Dirty do
532
532
  end
533
533
 
534
534
  it "returns the old value" do
535
- person.send(:attribute_was, "test").should eq("Aliased 1")
535
+ expect(person.send(:attribute_was, "test")).to eq("Aliased 1")
536
536
  end
537
537
 
538
538
  it "allows access via (attribute)_was" do
539
- person.test_was.should eq("Aliased 1")
539
+ expect(person.test_was).to eq("Aliased 1")
540
540
  end
541
541
  end
542
542
  end
543
543
 
544
- context "when the attribute has changed from the default value" do
545
-
546
- let(:person) do
547
- Person.new
548
- end
549
-
550
- before do
551
- person.pets = true
552
- end
553
-
554
- it "returns the default value" do
555
- person.send(:attribute_was, "pets").should be_false
556
- end
557
-
558
- it "allows access via (attribute)_was" do
559
- person.pets_was.should be_false
560
- end
561
- end
562
-
563
544
  context "when the attribute has not changed from the persisted value" do
564
545
 
565
546
  let!(:person) do
@@ -567,18 +548,7 @@ describe Mongoid::Dirty do
567
548
  end
568
549
 
569
550
  it "returns the original value" do
570
- person.send(:attribute_was, "title").should eq("Grand Poobah")
571
- end
572
- end
573
-
574
- context "when the attribute has not changed from the default value" do
575
-
576
- let(:person) do
577
- Person.new
578
- end
579
-
580
- it "returns the default value" do
581
- person.send(:attribute_was, "pets").should be_false
551
+ expect(person.send(:attribute_was, "title")).to eq("Grand Poobah")
582
552
  end
583
553
  end
584
554
  end
@@ -608,11 +578,11 @@ describe Mongoid::Dirty do
608
578
  end
609
579
 
610
580
  it "does not return the value in the changes" do
611
- changes.should be_empty
581
+ expect(changes).to be_empty
612
582
  end
613
583
 
614
584
  it "is not flagged as changed" do
615
- person.should_not be_changed
585
+ expect(person).to_not be_changed
616
586
  end
617
587
  end
618
588
 
@@ -628,7 +598,7 @@ describe Mongoid::Dirty do
628
598
  end
629
599
 
630
600
  it "returns the value in the changes" do
631
- changes.should eq({ "aliases" => [[ "007" ], [ "007", "008" ]] })
601
+ expect(changes).to eq({ "aliases" => [[ "007" ], [ "007", "008" ]] })
632
602
  end
633
603
  end
634
604
 
@@ -645,11 +615,11 @@ describe Mongoid::Dirty do
645
615
  end
646
616
 
647
617
  it "clones the value" do
648
- changed["aliases"].should_not equal(aliases)
618
+ expect(changed["aliases"]).to_not equal(aliases)
649
619
  end
650
620
 
651
621
  it "puts the old value in the changes" do
652
- changed["aliases"].should eq(aliases)
622
+ expect(changed["aliases"]).to eq(aliases)
653
623
  end
654
624
  end
655
625
 
@@ -666,11 +636,11 @@ describe Mongoid::Dirty do
666
636
  end
667
637
 
668
638
  it "does not clone the value" do
669
- changed["aliases"].should equal(aliases)
639
+ expect(changed["aliases"]).to equal(aliases)
670
640
  end
671
641
 
672
642
  it "retains the first value in the changes" do
673
- changed["aliases"].should eq(aliases)
643
+ expect(changed["aliases"]).to eq(aliases)
674
644
  end
675
645
  end
676
646
  end
@@ -689,7 +659,7 @@ describe Mongoid::Dirty do
689
659
  end
690
660
 
691
661
  it "returns an array of changed field names" do
692
- person.changed.should include("title")
662
+ expect(person.changed).to include("title")
693
663
  end
694
664
  end
695
665
 
@@ -700,7 +670,7 @@ describe Mongoid::Dirty do
700
670
  end
701
671
 
702
672
  it "does not include non changed fields" do
703
- person.changed.should_not include("title")
673
+ expect(person.changed).to_not include("title")
704
674
  end
705
675
  end
706
676
 
@@ -721,7 +691,7 @@ describe Mongoid::Dirty do
721
691
  end
722
692
 
723
693
  it "returns true" do
724
- person.name.should be_changed
694
+ expect(person.name).to be_changed
725
695
  end
726
696
  end
727
697
  end
@@ -740,7 +710,7 @@ describe Mongoid::Dirty do
740
710
  end
741
711
 
742
712
  it "returns true" do
743
- person.should be_changed
713
+ expect(person).to be_changed
744
714
  end
745
715
  end
746
716
 
@@ -757,7 +727,7 @@ describe Mongoid::Dirty do
757
727
  end
758
728
 
759
729
  it "returns false" do
760
- person.should_not be_changed
730
+ expect(person).to_not be_changed
761
731
  end
762
732
  end
763
733
 
@@ -772,7 +742,7 @@ describe Mongoid::Dirty do
772
742
  end
773
743
 
774
744
  it "returns true" do
775
- person.should be_changed
745
+ expect(person).to be_changed
776
746
  end
777
747
  end
778
748
 
@@ -783,7 +753,6 @@ describe Mongoid::Dirty do
783
753
  end
784
754
 
785
755
  before do
786
- Mongoid.configure.allow_dynamic_fields = true
787
756
  person.other_name[:full][:first] = 'Name'
788
757
  end
789
758
 
@@ -797,11 +766,11 @@ describe Mongoid::Dirty do
797
766
  context "when the document has not changed" do
798
767
 
799
768
  let(:acolyte) do
800
- Acolyte.instantiate("_id" => Moped::BSON::ObjectId.new)
769
+ Acolyte.instantiate("_id" => BSON::ObjectId.new)
801
770
  end
802
771
 
803
772
  it "returns false" do
804
- acolyte.should_not be_changed
773
+ expect(acolyte).to_not be_changed
805
774
  end
806
775
  end
807
776
 
@@ -820,7 +789,7 @@ describe Mongoid::Dirty do
820
789
  end
821
790
 
822
791
  it "returns true" do
823
- person.should be_changed
792
+ expect(person).to be_changed
824
793
  end
825
794
  end
826
795
 
@@ -843,7 +812,7 @@ describe Mongoid::Dirty do
843
812
  end
844
813
 
845
814
  it "returns true" do
846
- person.should be_changed
815
+ expect(person).to be_changed
847
816
  end
848
817
  end
849
818
 
@@ -858,7 +827,7 @@ describe Mongoid::Dirty do
858
827
  end
859
828
 
860
829
  it "returns true" do
861
- person.should be_changed
830
+ expect(person).to be_changed
862
831
  end
863
832
  end
864
833
 
@@ -877,7 +846,7 @@ describe Mongoid::Dirty do
877
846
  end
878
847
 
879
848
  it "returns true" do
880
- person.should be_changed
849
+ expect(person).to be_changed
881
850
  end
882
851
  end
883
852
  end
@@ -895,13 +864,13 @@ describe Mongoid::Dirty do
895
864
  end
896
865
 
897
866
  it "returns a hash of changes" do
898
- person.changes["title"].should eq(
867
+ expect(person.changes["title"]).to eq(
899
868
  [ nil, "Captain Obvious" ]
900
869
  )
901
870
  end
902
871
 
903
872
  it "returns a hash with indifferent access" do
904
- person.changes["title"].should eq(
873
+ expect(person.changes["title"]).to eq(
905
874
  [ nil, "Captain Obvious" ]
906
875
  )
907
876
  end
@@ -910,11 +879,11 @@ describe Mongoid::Dirty do
910
879
  context "when the document has not changed" do
911
880
 
912
881
  let(:acolyte) do
913
- Acolyte.instantiate("_id" => Moped::BSON::ObjectId.new)
882
+ Acolyte.instantiate("_id" => BSON::ObjectId.new)
914
883
  end
915
884
 
916
885
  it "returns an empty hash" do
917
- acolyte.changes.should be_empty
886
+ expect(acolyte.changes).to be_empty
918
887
  end
919
888
  end
920
889
  end
@@ -943,7 +912,7 @@ describe Mongoid::Dirty do
943
912
  end
944
913
 
945
914
  it "contains array changes in the setters" do
946
- setters.should eq({ "aliases" => [] })
915
+ expect(setters).to eq({ "aliases" => [] })
947
916
  end
948
917
  end
949
918
 
@@ -958,7 +927,7 @@ describe Mongoid::Dirty do
958
927
  end
959
928
 
960
929
  it "contains array changes in the setters" do
961
- setters.should eq({ "aliases" => [ "007", "008" ] })
930
+ expect(setters).to eq({ "aliases" => [ "007", "008" ] })
962
931
  end
963
932
  end
964
933
 
@@ -974,7 +943,7 @@ describe Mongoid::Dirty do
974
943
  end
975
944
 
976
945
  it "does not contain array changes in the setters" do
977
- setters.should eq({ "aliases" => [ "008" ]})
946
+ expect(setters).to eq({ "aliases" => [ "008" ]})
978
947
  end
979
948
  end
980
949
  end
@@ -990,7 +959,7 @@ describe Mongoid::Dirty do
990
959
  end
991
960
 
992
961
  it "returns a hash of field names and new values" do
993
- person.setters["title"].should eq("Captain Obvious")
962
+ expect(person.setters["title"]).to eq("Captain Obvious")
994
963
  end
995
964
  end
996
965
 
@@ -1012,7 +981,7 @@ describe Mongoid::Dirty do
1012
981
  end
1013
982
 
1014
983
  it "returns a hash of field names and new values" do
1015
- address.setters.should eq(
984
+ expect(address.setters).to eq(
1016
985
  { "addresses.0.street" => "Bond St" }
1017
986
  )
1018
987
  end
@@ -1030,7 +999,7 @@ describe Mongoid::Dirty do
1030
999
  end
1031
1000
 
1032
1001
  it "returns the proper hash with locations" do
1033
- location.setters.should eq(
1002
+ expect(location.setters).to eq(
1034
1003
  { "addresses.0.locations.0.name" => "Work" }
1035
1004
  )
1036
1005
  end
@@ -1041,11 +1010,11 @@ describe Mongoid::Dirty do
1041
1010
  context "when the document has not changed" do
1042
1011
 
1043
1012
  let(:acolyte) do
1044
- Acolyte.instantiate("_id" => Moped::BSON::ObjectId.new)
1013
+ Acolyte.instantiate("_id" => BSON::ObjectId.new)
1045
1014
  end
1046
1015
 
1047
1016
  it "returns an empty hash" do
1048
- acolyte.setters.should be_empty
1017
+ expect(acolyte.setters).to be_empty
1049
1018
  end
1050
1019
  end
1051
1020
  end
@@ -1067,7 +1036,7 @@ describe Mongoid::Dirty do
1067
1036
  end
1068
1037
 
1069
1038
  it "returns the changes before the save" do
1070
- person.previous_changes["title"].should eq(
1039
+ expect(person.previous_changes["title"]).to eq(
1071
1040
  [ nil, "Captain Obvious" ]
1072
1041
  )
1073
1042
  end
@@ -1076,7 +1045,7 @@ describe Mongoid::Dirty do
1076
1045
  context "when the document has not been saved" do
1077
1046
 
1078
1047
  it "returns an empty hash" do
1079
- person.previous_changes.should be_empty
1048
+ expect(person.previous_changes).to be_empty
1080
1049
  end
1081
1050
  end
1082
1051
  end
@@ -1095,19 +1064,19 @@ describe Mongoid::Dirty do
1095
1064
  end
1096
1065
 
1097
1066
  it "clears the atomic pulls" do
1098
- person.atomic_pulls.should be_empty
1067
+ expect(person.atomic_pulls).to be_empty
1099
1068
  end
1100
1069
 
1101
1070
  it "clears the atomic unsets" do
1102
- person.atomic_unsets.should be_empty
1071
+ expect(person.atomic_unsets).to be_empty
1103
1072
  end
1104
1073
 
1105
1074
  it "clears the delayed atomic sets" do
1106
- person.delayed_atomic_sets.should be_empty
1075
+ expect(person.delayed_atomic_sets).to be_empty
1107
1076
  end
1108
1077
 
1109
1078
  it "clears the changed attributes" do
1110
- person.changed_attributes.should be_empty
1079
+ expect(person.changed_attributes).to be_empty
1111
1080
  end
1112
1081
  end
1113
1082
 
@@ -1125,15 +1094,15 @@ describe Mongoid::Dirty do
1125
1094
  end
1126
1095
 
1127
1096
  it "resets the value to the original" do
1128
- person.title.should be_nil
1097
+ expect(person.title).to be_nil
1129
1098
  end
1130
1099
 
1131
1100
  it "allows access via reset_(attribute)!" do
1132
- person.title.should be_nil
1101
+ expect(person.title).to be_nil
1133
1102
  end
1134
1103
 
1135
1104
  it "removes the field from the changes" do
1136
- person.changed.should_not include("title")
1105
+ expect(person.changed).to_not include("title")
1137
1106
  end
1138
1107
 
1139
1108
  context "when the field is aliased" do
@@ -1148,11 +1117,11 @@ describe Mongoid::Dirty do
1148
1117
  end
1149
1118
 
1150
1119
  it "resets the value to the original" do
1151
- person.test.should be_nil
1120
+ expect(person.test).to be_nil
1152
1121
  end
1153
1122
 
1154
1123
  it "removes the field from the changes" do
1155
- person.changed.should_not include("test")
1124
+ expect(person.changed).to_not include("test")
1156
1125
  end
1157
1126
  end
1158
1127
  end
@@ -1168,7 +1137,7 @@ describe Mongoid::Dirty do
1168
1137
  end
1169
1138
 
1170
1139
  it "does nothing" do
1171
- person.title.should be_nil
1140
+ expect(person.title).to be_nil
1172
1141
  end
1173
1142
  end
1174
1143
  end
@@ -1180,15 +1149,15 @@ describe Mongoid::Dirty do
1180
1149
  end
1181
1150
 
1182
1151
  it "defines a _change method" do
1183
- document.updated_at_change.should be_nil
1152
+ expect(document.updated_at_change).to be_nil
1184
1153
  end
1185
1154
 
1186
1155
  it "defines a _changed? method" do
1187
- document.updated_at_changed?.should be_false
1156
+ expect(document.updated_at_changed?).to be false
1188
1157
  end
1189
1158
 
1190
1159
  it "defines a _changes method" do
1191
- document.updated_at_was.should be_nil
1160
+ expect(document.updated_at_was).to be_nil
1192
1161
  end
1193
1162
  end
1194
1163
 
@@ -1207,7 +1176,7 @@ describe Mongoid::Dirty do
1207
1176
  end
1208
1177
 
1209
1178
  it "flags the parent as changed" do
1210
- person.should be_changed
1179
+ expect(person).to be_changed
1211
1180
  end
1212
1181
  end
1213
1182
 
@@ -1222,7 +1191,7 @@ describe Mongoid::Dirty do
1222
1191
  end
1223
1192
 
1224
1193
  it "flags the parent as changed" do
1225
- person.should be_changed
1194
+ expect(person).to be_changed
1226
1195
  end
1227
1196
  end
1228
1197
 
@@ -1233,7 +1202,7 @@ describe Mongoid::Dirty do
1233
1202
  end
1234
1203
 
1235
1204
  it "does not flag the parent as changed" do
1236
- person.should_not be_changed
1205
+ expect(person).to_not be_changed
1237
1206
  end
1238
1207
  end
1239
1208
  end
@@ -1247,7 +1216,7 @@ describe Mongoid::Dirty do
1247
1216
  end
1248
1217
 
1249
1218
  it "flags the parent as changed" do
1250
- person.should be_changed
1219
+ expect(person).to be_changed
1251
1220
  end
1252
1221
  end
1253
1222
 
@@ -1262,7 +1231,7 @@ describe Mongoid::Dirty do
1262
1231
  end
1263
1232
 
1264
1233
  it "flags the parent as changed" do
1265
- person.should be_changed
1234
+ expect(person).to be_changed
1266
1235
  end
1267
1236
  end
1268
1237
 
@@ -1273,7 +1242,7 @@ describe Mongoid::Dirty do
1273
1242
  end
1274
1243
 
1275
1244
  it "does not flag the parent as changed" do
1276
- person.should_not be_changed
1245
+ expect(person).to_not be_changed
1277
1246
  end
1278
1247
  end
1279
1248
  end
@@ -1290,7 +1259,7 @@ describe Mongoid::Dirty do
1290
1259
  end
1291
1260
 
1292
1261
  it "records the changes" do
1293
- person.changes.should eq(
1262
+ expect(person.changes).to eq(
1294
1263
  { "map" => [{ "test" => {}}, { "test" => { "value" => 10 }}]}
1295
1264
  )
1296
1265
  end
@@ -1311,7 +1280,7 @@ describe Mongoid::Dirty do
1311
1280
  end
1312
1281
 
1313
1282
  it "records the foreign key dirty changes" do
1314
- person.previous_changes["preference_ids"].should eq(
1283
+ expect(person.previous_changes["preference_ids"]).to eq(
1315
1284
  [nil, [ preference.id ]]
1316
1285
  )
1317
1286
  end
@@ -1334,11 +1303,11 @@ describe Mongoid::Dirty do
1334
1303
  end
1335
1304
 
1336
1305
  it "flags the change" do
1337
- from_db.changes["preference_ids"].should eq([ nil, []])
1306
+ expect(from_db.changes["preference_ids"]).to eq([ nil, []])
1338
1307
  end
1339
1308
 
1340
1309
  it "does not include the changes in the setters" do
1341
- from_db.setters.should be_empty
1310
+ expect(from_db.setters).to be_empty
1342
1311
  end
1343
1312
  end
1344
1313
  end
@@ -1358,7 +1327,7 @@ describe Mongoid::Dirty do
1358
1327
  end
1359
1328
 
1360
1329
  it "clears the changed attributes" do
1361
- from_db.changed_attributes.should be_empty
1330
+ expect(from_db.changed_attributes).to be_empty
1362
1331
  end
1363
1332
  end
1364
1333
 
@@ -1378,11 +1347,11 @@ describe Mongoid::Dirty do
1378
1347
  end
1379
1348
 
1380
1349
  it "marks the document as changed" do
1381
- person.should be_changed
1350
+ expect(person).to be_changed
1382
1351
  end
1383
1352
 
1384
1353
  it "marks field changes" do
1385
- person.changes.should eq({
1354
+ expect(person.changes).to eq({
1386
1355
  "title" => [ "MC", "DJ" ],
1387
1356
  "ssn" => [ nil, "222-22-2222" ],
1388
1357
  "some_dynamic_field" => [ "blah", "bloop" ]
@@ -1390,25 +1359,25 @@ describe Mongoid::Dirty do
1390
1359
  end
1391
1360
 
1392
1361
  it "marks changed fields" do
1393
- person.changed.should =~ [ "title", "ssn", "some_dynamic_field" ]
1362
+ expect(person.changed).to eq([ "title", "ssn", "some_dynamic_field" ])
1394
1363
  end
1395
1364
 
1396
1365
  it "marks the field as changed" do
1397
- person.title_changed?.should be_true
1366
+ expect(person.title_changed?).to be true
1398
1367
  end
1399
1368
 
1400
1369
  it "stores previous field values" do
1401
- person.title_was.should eq("MC")
1370
+ expect(person.title_was).to eq("MC")
1402
1371
  end
1403
1372
 
1404
1373
  it "marks field changes" do
1405
- person.title_change.should eq([ "MC", "DJ" ])
1374
+ expect(person.title_change).to eq([ "MC", "DJ" ])
1406
1375
  end
1407
1376
 
1408
1377
  it "allows reset of field changes" do
1409
1378
  person.reset_title!
1410
- person.title.should eq("MC")
1411
- person.changed.should =~ [ "ssn", "some_dynamic_field" ]
1379
+ expect(person.title).to eq("MC")
1380
+ expect(person.changed).to eq([ "ssn", "some_dynamic_field" ])
1412
1381
  end
1413
1382
 
1414
1383
  context "after a save" do
@@ -1418,12 +1387,12 @@ describe Mongoid::Dirty do
1418
1387
  end
1419
1388
 
1420
1389
  it "clears changes" do
1421
- person.should_not be_changed
1390
+ expect(person).to_not be_changed
1422
1391
  end
1423
1392
 
1424
1393
  it "stores previous changes" do
1425
- person.previous_changes["title"].should eq([ "MC", "DJ" ])
1426
- person.previous_changes["ssn"].should eq([ nil, "222-22-2222" ])
1394
+ expect(person.previous_changes["title"]).to eq([ "MC", "DJ" ])
1395
+ expect(person.previous_changes["ssn"]).to eq([ nil, "222-22-2222" ])
1427
1396
  end
1428
1397
  end
1429
1398
 
@@ -1435,7 +1404,7 @@ describe Mongoid::Dirty do
1435
1404
  end
1436
1405
 
1437
1406
  it "removes the attribute from the document" do
1438
- person.score.should be_nil
1407
+ expect(person.score).to be_nil
1439
1408
  end
1440
1409
  end
1441
1410
  end
@@ -1462,7 +1431,7 @@ describe Mongoid::Dirty do
1462
1431
 
1463
1432
  it "retains the changes until after all callbacks" do
1464
1433
  acolyte.update_attribute(:status, "testing")
1465
- acolyte.changed_in_callback.should eq({ "status" => [ nil, "testing" ] })
1434
+ expect(acolyte.changed_in_callback).to eq({ "status" => [ nil, "testing" ] })
1466
1435
  end
1467
1436
  end
1468
1437
 
@@ -1486,7 +1455,7 @@ describe Mongoid::Dirty do
1486
1455
 
1487
1456
  it "retains the changes until after all callbacks" do
1488
1457
  acolyte.save
1489
- acolyte.changed_in_callback["name"].should eq([ nil, "callback-test" ])
1458
+ expect(acolyte.changed_in_callback["name"]).to eq([ nil, "callback-test" ])
1490
1459
  end
1491
1460
  end
1492
1461
  end
@@ -1502,7 +1471,7 @@ describe Mongoid::Dirty do
1502
1471
  end
1503
1472
 
1504
1473
  it "does not set the association to nil when hitting the database" do
1505
- person.setters.should_not eq({ "addresses" => nil })
1474
+ expect(person.setters).to_not eq({ "addresses" => nil })
1506
1475
  end
1507
1476
  end
1508
1477
  end