mongoid 3.1.7 → 4.0.0.alpha1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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