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
@@ -9,7 +9,7 @@ describe Mongoid::Fields::Standard do
9
9
  end
10
10
 
11
11
  it "returns false" do
12
- field.should_not be_lazy
12
+ expect(field).to_not be_lazy
13
13
  end
14
14
  end
15
15
 
@@ -42,7 +42,7 @@ describe Mongoid::Fields::Standard do
42
42
  end
43
43
 
44
44
  it "returns true" do
45
- field.should be_pre_processed
45
+ expect(field).to be_pre_processed
46
46
  end
47
47
  end
48
48
 
@@ -58,7 +58,7 @@ describe Mongoid::Fields::Standard do
58
58
  end
59
59
 
60
60
  it "returns false" do
61
- field.should_not be_pre_processed
61
+ expect(field).to_not be_pre_processed
62
62
  end
63
63
  end
64
64
  end
@@ -75,7 +75,7 @@ describe Mongoid::Fields::Standard do
75
75
  end
76
76
 
77
77
  it "returns true" do
78
- field.should be_pre_processed
78
+ expect(field).to be_pre_processed
79
79
  end
80
80
  end
81
81
  end
@@ -90,7 +90,7 @@ describe Mongoid::Fields::Standard do
90
90
  end
91
91
 
92
92
  it "returns false" do
93
- field.should_not be_pre_processed
93
+ expect(field).to_not be_pre_processed
94
94
  end
95
95
  end
96
96
  end
@@ -102,7 +102,7 @@ describe Mongoid::Fields::Standard do
102
102
  end
103
103
 
104
104
  it "does not conflict with the ruby core hash" do
105
- image.hash_is_hash.should be_true
105
+ expect(image.hash_is_hash).to be true
106
106
  end
107
107
  end
108
108
 
@@ -119,14 +119,14 @@ describe Mongoid::Fields::Standard do
119
119
  end
120
120
 
121
121
  it "allows normal hash access" do
122
- hash[:key].should eq("value")
122
+ expect(hash[:key]).to eq("value")
123
123
  end
124
124
  end
125
125
 
126
126
  context "when getting a non existant value" do
127
127
 
128
128
  it "returns nil" do
129
- hash[:key].should be_nil
129
+ expect(hash[:key]).to be_nil
130
130
  end
131
131
  end
132
132
  end
@@ -138,11 +138,11 @@ describe Mongoid::Fields::Standard do
138
138
  end
139
139
 
140
140
  it "inherits the parents deserialize method" do
141
- Thumbnail.demongoize("testy").name.should eq("testy")
141
+ expect(Thumbnail.demongoize("testy").name).to eq("testy")
142
142
  end
143
143
 
144
144
  it "inherits the parents serialize method" do
145
- thumbnail.mongoize.should eq("test")
145
+ expect(thumbnail.mongoize).to eq("test")
146
146
  end
147
147
 
148
148
  context "when instantiating the class" do
@@ -155,11 +155,11 @@ describe Mongoid::Fields::Standard do
155
155
  end
156
156
 
157
157
  it "deserializes the parent type" do
158
- movie.poster.name.should eq("poster")
158
+ expect(movie.poster.name).to eq("poster")
159
159
  end
160
160
 
161
161
  it "deserializes the child type" do
162
- movie.poster_thumb.name.should eq("thumb")
162
+ expect(movie.poster_thumb.name).to eq("thumb")
163
163
  end
164
164
  end
165
165
  end
@@ -31,10 +31,14 @@ describe Mongoid::Fields do
31
31
  end
32
32
 
33
33
  it "returns all the translations" do
34
- translations.should eq(
34
+ expect(translations).to eq(
35
35
  { "en" => "test", "de" => "The best" }
36
36
  )
37
37
  end
38
+
39
+ it "returns translations as a HashWithIndifferentAccess" do
40
+ expect(translations[:en]).to eq("test")
41
+ end
38
42
  end
39
43
 
40
44
  context "when translations do not exist" do
@@ -42,25 +46,33 @@ describe Mongoid::Fields do
42
46
  context "when no default is provided" do
43
47
 
44
48
  it "returns an empty hash" do
45
- product.description_translations.should be_empty
49
+ expect(product.description_translations).to be_empty
46
50
  end
47
51
  end
48
52
 
49
53
  context "when a default is provided" do
50
54
 
51
55
  it "returns the translations with the default" do
52
- product.name_translations.should eq(
56
+ expect(product.name_translations).to eq(
53
57
  { "en" => "no translation" }
54
58
  )
55
59
  end
56
60
  end
57
61
  end
62
+
63
+ it "should have alias method #\{field}_t" do
64
+ product.method(:name_t).should eq product.method(:name_translations)
65
+ end
58
66
  end
59
67
 
60
68
  context "when the field is not localized" do
61
69
 
62
70
  it "does not respond to the method" do
63
- product.should_not respond_to(:price_translations)
71
+ expect(product).to_not respond_to(:price_translations)
72
+ end
73
+
74
+ it "does not respond to the alias method" do
75
+ product.should_not respond_to(:price_t)
64
76
  end
65
77
  end
66
78
  end
@@ -88,7 +100,7 @@ describe Mongoid::Fields do
88
100
  end
89
101
 
90
102
  it "sets the raw values of the translations" do
91
- product.description_translations.should eq(translations)
103
+ expect(product.description_translations).to eq(translations)
92
104
  end
93
105
 
94
106
  context "when saving the new translations" do
@@ -98,7 +110,7 @@ describe Mongoid::Fields do
98
110
  end
99
111
 
100
112
  it "persists the changes" do
101
- product.reload.description_translations.should eq(translations)
113
+ expect(product.reload.description_translations).to eq(translations)
102
114
  end
103
115
 
104
116
  context "when updating the translations" do
@@ -109,7 +121,7 @@ describe Mongoid::Fields do
109
121
  end
110
122
 
111
123
  it "persists the changes" do
112
- product.reload.description_translations.should eq(
124
+ expect(product.reload.description_translations).to eq(
113
125
  { "en" => "overwritten" }
114
126
  )
115
127
  end
@@ -128,7 +140,7 @@ describe Mongoid::Fields do
128
140
  end
129
141
 
130
142
  it "sets the mongoized values of the translations" do
131
- dictionary.description_translations.should eq(
143
+ expect(dictionary.description_translations).to eq(
132
144
  { "en" => "1", "de" => "2" }
133
145
  )
134
146
  end
@@ -140,7 +152,7 @@ describe Mongoid::Fields do
140
152
  end
141
153
 
142
154
  it "persists the changes" do
143
- dictionary.reload.description_translations.should eq(
155
+ expect(dictionary.reload.description_translations).to eq(
144
156
  { "en" => "1", "de" => "2" }
145
157
  )
146
158
  end
@@ -153,19 +165,27 @@ describe Mongoid::Fields do
153
165
  end
154
166
 
155
167
  it "persists the changes" do
156
- dictionary.reload.description_translations.should eq(
168
+ expect(dictionary.reload.description_translations).to eq(
157
169
  { "en" => "overwritten" }
158
170
  )
159
171
  end
160
172
  end
161
173
  end
162
174
  end
175
+
176
+ it "should have alias method #\{field}_t=" do
177
+ product.method(:name_t=).should eq product.method(:name_translations=)
178
+ end
163
179
  end
164
180
 
165
181
  context "when the field is not localized" do
166
182
 
167
183
  it "does not respond to the method" do
168
- product.should_not respond_to(:price_translations=)
184
+ expect(product).to_not respond_to(:price_translations=)
185
+ end
186
+
187
+ it "does not respond to the alias method" do
188
+ product.should_not respond_to(:price_t=)
169
189
  end
170
190
  end
171
191
  end
@@ -179,7 +199,7 @@ describe Mongoid::Fields do
179
199
  context "when the document is subclassed" do
180
200
 
181
201
  it "does not include the child aliases" do
182
- person.aliased_fields.keys.should_not include("spec")
202
+ expect(person.aliased_fields.keys).to_not include("spec")
183
203
  end
184
204
  end
185
205
  end
@@ -193,19 +213,19 @@ describe Mongoid::Fields do
193
213
  end
194
214
 
195
215
  it "includes the _id field" do
196
- shape.attribute_names.should include("_id")
216
+ expect(shape.attribute_names).to include("_id")
197
217
  end
198
218
 
199
219
  it "includes the _type field" do
200
- shape.attribute_names.should include("_type")
220
+ expect(shape.attribute_names).to include("_type")
201
221
  end
202
222
 
203
223
  it "includes its own fields" do
204
- shape.attribute_names.should include("x")
224
+ expect(shape.attribute_names).to include("x")
205
225
  end
206
226
 
207
227
  it "does not return subclass fields" do
208
- shape.attribute_names.should_not include("radius")
228
+ expect(shape.attribute_names).to_not include("radius")
209
229
  end
210
230
  end
211
231
 
@@ -216,23 +236,23 @@ describe Mongoid::Fields do
216
236
  end
217
237
 
218
238
  it "includes the _id field" do
219
- circle.attribute_names.should include("_id")
239
+ expect(circle.attribute_names).to include("_id")
220
240
  end
221
241
 
222
242
  it "includes the _type field" do
223
- circle.attribute_names.should include("_type")
243
+ expect(circle.attribute_names).to include("_type")
224
244
  end
225
245
 
226
246
  it "includes the first parent field" do
227
- circle.attribute_names.should include("x")
247
+ expect(circle.attribute_names).to include("x")
228
248
  end
229
249
 
230
250
  it "includes the second parent field" do
231
- circle.attribute_names.should include("y")
251
+ expect(circle.attribute_names).to include("y")
232
252
  end
233
253
 
234
254
  it "includes the child fields" do
235
- circle.attribute_names.should include("radius")
255
+ expect(circle.attribute_names).to include("radius")
236
256
  end
237
257
  end
238
258
  end
@@ -242,42 +262,42 @@ describe Mongoid::Fields do
242
262
  context "when the class is a parent" do
243
263
 
244
264
  it "includes the _id field" do
245
- Shape.attribute_names.should include("_id")
265
+ expect(Shape.attribute_names).to include("_id")
246
266
  end
247
267
 
248
268
  it "includes the _type field" do
249
- Shape.attribute_names.should include("_type")
269
+ expect(Shape.attribute_names).to include("_type")
250
270
  end
251
271
 
252
272
  it "includes its own fields" do
253
- Shape.attribute_names.should include("x")
273
+ expect(Shape.attribute_names).to include("x")
254
274
  end
255
275
 
256
276
  it "does not return subclass fields" do
257
- Shape.attribute_names.should_not include("radius")
277
+ expect(Shape.attribute_names).to_not include("radius")
258
278
  end
259
279
  end
260
280
 
261
281
  context "when the class is a subclass" do
262
282
 
263
283
  it "includes the _id field" do
264
- Circle.attribute_names.should include("_id")
284
+ expect(Circle.attribute_names).to include("_id")
265
285
  end
266
286
 
267
287
  it "includes the _type field" do
268
- Circle.attribute_names.should include("_type")
288
+ expect(Circle.attribute_names).to include("_type")
269
289
  end
270
290
 
271
291
  it "includes the first parent field" do
272
- Circle.attribute_names.should include("x")
292
+ expect(Circle.attribute_names).to include("x")
273
293
  end
274
294
 
275
295
  it "includes the second parent field" do
276
- Circle.attribute_names.should include("y")
296
+ expect(Circle.attribute_names).to include("y")
277
297
  end
278
298
 
279
299
  it "includes the child fields" do
280
- Circle.attribute_names.should include("radius")
300
+ expect(Circle.attribute_names).to include("radius")
281
301
  end
282
302
  end
283
303
  end
@@ -302,7 +322,7 @@ describe Mongoid::Fields do
302
322
  end
303
323
 
304
324
  it "adds the field to the model" do
305
- Band.fields["acceptable"].should_not be_nil
325
+ expect(Band.fields["acceptable"]).to_not be_nil
306
326
  end
307
327
  end
308
328
 
@@ -313,7 +333,7 @@ describe Mongoid::Fields do
313
333
  end
314
334
 
315
335
  it "adds the field to the model" do
316
- Band.fields["acceptable"].should_not be_nil
336
+ expect(Band.fields["acceptable"]).to_not be_nil
317
337
  end
318
338
  end
319
339
  end
@@ -333,7 +353,7 @@ describe Mongoid::Fields do
333
353
  context "when the field is binary" do
334
354
 
335
355
  let(:binary) do
336
- Moped::BSON::Binary.new(:md5, "testing")
356
+ BSON::Binary.new("testing", :md5)
337
357
  end
338
358
 
339
359
  let(:registry) do
@@ -341,7 +361,7 @@ describe Mongoid::Fields do
341
361
  end
342
362
 
343
363
  it "returns the binary data intact" do
344
- registry.data.should eq(binary)
364
+ expect(registry.data).to eq(binary)
345
365
  end
346
366
  end
347
367
 
@@ -362,7 +382,7 @@ describe Mongoid::Fields do
362
382
  end
363
383
 
364
384
  it "returns the default locale value" do
365
- description.should eq("The best")
385
+ expect(description).to eq("The best")
366
386
  end
367
387
  end
368
388
 
@@ -382,7 +402,7 @@ describe Mongoid::Fields do
382
402
  end
383
403
 
384
404
  it "returns the set locale value" do
385
- description.should eq("The best")
405
+ expect(description).to eq("The best")
386
406
  end
387
407
  end
388
408
 
@@ -403,7 +423,7 @@ describe Mongoid::Fields do
403
423
  end
404
424
 
405
425
  it "returns the current locale value" do
406
- description.should eq("Cheaper drinks")
426
+ expect(description).to eq("Cheaper drinks")
407
427
  end
408
428
  end
409
429
  end
@@ -417,7 +437,7 @@ describe Mongoid::Fields do
417
437
  context "when the attribute has not been assigned" do
418
438
 
419
439
  it "delgates to the getter" do
420
- person.age_before_type_cast.should eq(person.age)
440
+ expect(person.age_before_type_cast).to eq(person.age)
421
441
  end
422
442
  end
423
443
 
@@ -425,7 +445,7 @@ describe Mongoid::Fields do
425
445
 
426
446
  it "returns the attribute before type cast" do
427
447
  person.age = "old"
428
- person.age_before_type_cast.should eq("old")
448
+ expect(person.age_before_type_cast).to eq("old")
429
449
  end
430
450
  end
431
451
  end
@@ -436,10 +456,24 @@ describe Mongoid::Fields do
436
456
  Product.new
437
457
  end
438
458
 
459
+ context "when setting via the setter" do
460
+
461
+ it "returns the set value" do
462
+ expect(product.price = 10).to eq(10)
463
+ end
464
+ end
465
+
466
+ context "when setting via send" do
467
+
468
+ it "returns the set value" do
469
+ expect(product.send(:price=, 10)).to eq(10)
470
+ end
471
+ end
472
+
439
473
  context "when the field is binary" do
440
474
 
441
475
  let(:binary) do
442
- Moped::BSON::Binary.new(:md5, "testing")
476
+ BSON::Binary.new("testing", :md5)
443
477
  end
444
478
 
445
479
  let(:registry) do
@@ -451,7 +485,7 @@ describe Mongoid::Fields do
451
485
  end
452
486
 
453
487
  it "returns the binary data intact" do
454
- registry.data.should eq(binary)
488
+ expect(registry.data).to eq(binary)
455
489
  end
456
490
  end
457
491
 
@@ -470,7 +504,7 @@ describe Mongoid::Fields do
470
504
  end
471
505
 
472
506
  it "allows the set" do
473
- product.stores.should be_nil
507
+ expect(product.stores).to be_nil
474
508
  end
475
509
  end
476
510
 
@@ -482,11 +516,11 @@ describe Mongoid::Fields do
482
516
  end
483
517
 
484
518
  it "allows the set of nil values" do
485
- product.stores.should eq([ "kadewe", nil ])
519
+ expect(product.stores).to eq([ "kadewe", nil ])
486
520
  end
487
521
 
488
522
  it "persists the nil values" do
489
- product.reload.stores.should eq([ "kadewe", nil ])
523
+ expect(product.reload.stores).to eq([ "kadewe", nil ])
490
524
  end
491
525
  end
492
526
 
@@ -498,11 +532,11 @@ describe Mongoid::Fields do
498
532
  end
499
533
 
500
534
  it "reverses the values" do
501
- product.stores.should eq([ "karstadt", "kadewe" ])
535
+ expect(product.stores).to eq([ "karstadt", "kadewe" ])
502
536
  end
503
537
 
504
538
  it "persists the changes" do
505
- product.reload.stores.should eq([ "karstadt", "kadewe" ])
539
+ expect(product.reload.stores).to eq([ "karstadt", "kadewe" ])
506
540
  end
507
541
  end
508
542
  end
@@ -520,7 +554,7 @@ describe Mongoid::Fields do
520
554
  end
521
555
 
522
556
  it "sets the value in the default locale" do
523
- description.should eq({ "en" => "Cheap drinks" })
557
+ expect(description).to eq({ "en" => "Cheap drinks" })
524
558
  end
525
559
  end
526
560
 
@@ -540,7 +574,7 @@ describe Mongoid::Fields do
540
574
  end
541
575
 
542
576
  it "sets the value in the default locale" do
543
- description.should eq({ "de" => "Cheaper drinks" })
577
+ expect(description).to eq({ "de" => "Cheaper drinks" })
544
578
  end
545
579
  end
546
580
 
@@ -561,7 +595,7 @@ describe Mongoid::Fields do
561
595
  end
562
596
 
563
597
  it "sets the value in both locales" do
564
- description.should eq(
598
+ expect(description).to eq(
565
599
  { "de" => "Cheaper drinks", "en" => "Cheap drinks" }
566
600
  )
567
601
  end
@@ -584,7 +618,7 @@ describe Mongoid::Fields do
584
618
  context "when provided a default array" do
585
619
 
586
620
  before do
587
- Person.field(:array_testing, type: Array, default: [])
621
+ Person.field(:array_testing, type: Array, default: [], overwrite: true)
588
622
  end
589
623
 
590
624
  after do
@@ -593,7 +627,7 @@ describe Mongoid::Fields do
593
627
  end
594
628
 
595
629
  it "returns an equal object of a different instance" do
596
- person_one.array_testing.object_id.should_not eq(
630
+ expect(person_one.array_testing.object_id).to_not eq(
597
631
  person_two.array_testing.object_id
598
632
  )
599
633
  end
@@ -602,7 +636,7 @@ describe Mongoid::Fields do
602
636
  context "when provided a default hash" do
603
637
 
604
638
  before do
605
- Person.field(:hash_testing, type: Hash, default: {})
639
+ Person.field(:hash_testing, type: Hash, default: {}, overwrite: true)
606
640
  end
607
641
 
608
642
  after do
@@ -610,7 +644,7 @@ describe Mongoid::Fields do
610
644
  end
611
645
 
612
646
  it "returns an equal object of a different instance" do
613
- person_one.hash_testing.object_id.should_not eq(
647
+ expect(person_one.hash_testing.object_id).to_not eq(
614
648
  person_two.hash_testing.object_id
615
649
  )
616
650
  end
@@ -624,7 +658,8 @@ describe Mongoid::Fields do
624
658
  Person.field(
625
659
  :generated_testing,
626
660
  type: Float,
627
- default: ->{ Time.now.to_f }
661
+ default: ->{ Time.now.to_f },
662
+ overwrite: true
628
663
  )
629
664
  end
630
665
 
@@ -634,7 +669,7 @@ describe Mongoid::Fields do
634
669
  end
635
670
 
636
671
  it "returns an equal object of a different instance" do
637
- person_one.generated_testing.object_id.should_not eq(
672
+ expect(person_one.generated_testing.object_id).to_not eq(
638
673
  person_two.generated_testing.object_id
639
674
  )
640
675
  end
@@ -646,7 +681,8 @@ describe Mongoid::Fields do
646
681
  Person.field(
647
682
  :rank,
648
683
  type: Integer,
649
- default: ->{ title? ? 1 : 2 }
684
+ default: ->{ title? ? 1 : 2 },
685
+ overwrite: true
650
686
  )
651
687
  end
652
688
 
@@ -656,7 +692,7 @@ describe Mongoid::Fields do
656
692
  end
657
693
 
658
694
  it "yields the document to the proc" do
659
- Person.new.rank.should eq(2)
695
+ expect(Person.new.rank).to eq(2)
660
696
  end
661
697
  end
662
698
  end
@@ -669,7 +705,7 @@ describe Mongoid::Fields do
669
705
  end
670
706
 
671
707
  it "does not return subclass defaults" do
672
- shape.pre_processed_defaults.should eq([ "_id", "x", "y", "_type" ])
708
+ expect(shape.pre_processed_defaults).to eq([ "_id", "x", "y", "_type" ])
673
709
  end
674
710
  end
675
711
 
@@ -680,7 +716,7 @@ describe Mongoid::Fields do
680
716
  end
681
717
 
682
718
  it "has the parent and child defaults" do
683
- circle.pre_processed_defaults.should eq([ "_id", "x", "y", "_type", "radius" ])
719
+ expect(circle.pre_processed_defaults).to eq([ "_id", "x", "y", "_type", "radius" ])
684
720
  end
685
721
  end
686
722
  end
@@ -688,7 +724,7 @@ describe Mongoid::Fields do
688
724
  describe ".field" do
689
725
 
690
726
  it "returns the generated field" do
691
- Person.field(:testing).should equal Person.fields["testing"]
727
+ expect(Person.field(:testing)).to eq(Person.fields["testing"])
692
728
  end
693
729
 
694
730
  context "when the field name conflicts with mongoid's internals" do
@@ -703,6 +739,29 @@ describe Mongoid::Fields do
703
739
  end
704
740
  end
705
741
 
742
+ context "when field already exist and validate_duplicate is enable" do
743
+
744
+ before do
745
+ Mongoid.duplicate_fields_exception = true
746
+ end
747
+
748
+ after do
749
+ Mongoid.duplicate_fields_exception = false
750
+ end
751
+
752
+ it "raises an error" do
753
+ expect {
754
+ Person.field(:title)
755
+ }.to raise_error(Mongoid::Errors::InvalidField)
756
+ end
757
+
758
+ it "doesn't raise an error" do
759
+ expect {
760
+ Class.new(Person)
761
+ }.to_not raise_error
762
+ end
763
+ end
764
+
706
765
  context "when the field is a time" do
707
766
 
708
767
  let!(:time) do
@@ -724,7 +783,7 @@ describe Mongoid::Fields do
724
783
  end
725
784
 
726
785
  it "performs the necessary time conversions" do
727
- person.lunch_time.to_s.should eq(time.getlocal.to_s)
786
+ expect(person.lunch_time.to_s).to eq(time.getlocal.to_s)
728
787
  end
729
788
  end
730
789
  end
@@ -732,7 +791,7 @@ describe Mongoid::Fields do
732
791
  context "when providing no options" do
733
792
 
734
793
  before do
735
- Person.field(:testing)
794
+ Person.field(:testing, overwrite: true)
736
795
  end
737
796
 
738
797
  let(:person) do
@@ -740,15 +799,15 @@ describe Mongoid::Fields do
740
799
  end
741
800
 
742
801
  it "adds a reader for the fields defined" do
743
- person.testing.should eq("Test")
802
+ expect(person.testing).to eq("Test")
744
803
  end
745
804
 
746
805
  it "adds a writer for the fields defined" do
747
- (person.testing = "Testy").should eq("Testy")
806
+ (person.testing = expect("Testy")).to eq("Testy")
748
807
  end
749
808
 
750
809
  it "adds an existance method" do
751
- Person.new.testing?.should be_false
810
+ expect(Person.new.testing?).to be false
752
811
  end
753
812
 
754
813
  context "when overwriting an existing field" do
@@ -765,7 +824,7 @@ describe Mongoid::Fields do
765
824
  end
766
825
 
767
826
  it "properly overwrites the method" do
768
- person.testing_override_called.should be_true
827
+ expect(person.testing_override_called).to be true
769
828
  end
770
829
  end
771
830
  end
@@ -777,7 +836,7 @@ describe Mongoid::Fields do
777
836
  end
778
837
 
779
838
  it "returns the given value" do
780
- bob.reading.should eq(10.023)
839
+ expect(bob.reading).to eq(10.023)
781
840
  end
782
841
  end
783
842
 
@@ -788,7 +847,7 @@ describe Mongoid::Fields do
788
847
  end
789
848
 
790
849
  it "adds an accessor method with a question mark" do
791
- person.terms?.should be_true
850
+ expect(person.terms?).to be true
792
851
  end
793
852
  end
794
853
 
@@ -799,39 +858,39 @@ describe Mongoid::Fields do
799
858
  end
800
859
 
801
860
  before do
802
- Person.field :aliased, as: :alias, type: Boolean
861
+ Person.field :aliased, as: :alias, type: Boolean, overwrite: true
803
862
  end
804
863
 
805
864
  it "uses the alias to write the attribute" do
806
- (person.alias = true).should be_true
865
+ (person.alias = expect(true)).to be true
807
866
  end
808
867
 
809
868
  it "uses the alias to read the attribute" do
810
- person.alias.should be_true
869
+ expect(person.alias).to be true
811
870
  end
812
871
 
813
872
  it "uses the alias for the query method" do
814
- person.should be_alias
873
+ expect(person).to be_alias
815
874
  end
816
875
 
817
876
  it "uses the name to write the attribute" do
818
- (person.aliased = true).should be_true
877
+ (person.aliased = expect(true)).to be true
819
878
  end
820
879
 
821
880
  it "uses the name to read the attribute" do
822
- person.aliased.should be_true
881
+ expect(person.aliased).to be true
823
882
  end
824
883
 
825
884
  it "uses the name for the query method" do
826
- person.should be_aliased
885
+ expect(person).to be_aliased
827
886
  end
828
887
 
829
888
  it "creates dirty methods for the name" do
830
- person.should respond_to(:aliased_changed?)
889
+ expect(person).to respond_to(:aliased_changed?)
831
890
  end
832
891
 
833
892
  it "creates dirty methods for the alias" do
834
- person.should respond_to(:alias_changed?)
893
+ expect(person).to respond_to(:alias_changed?)
835
894
  end
836
895
 
837
896
  context "when changing the name" do
@@ -841,11 +900,11 @@ describe Mongoid::Fields do
841
900
  end
842
901
 
843
902
  it "sets name_changed?" do
844
- person.aliased_changed?.should be_true
903
+ expect(person.aliased_changed?).to be true
845
904
  end
846
905
 
847
906
  it "sets alias_changed?" do
848
- person.alias_changed?.should be_true
907
+ expect(person.alias_changed?).to be true
849
908
  end
850
909
  end
851
910
 
@@ -856,11 +915,11 @@ describe Mongoid::Fields do
856
915
  end
857
916
 
858
917
  it "sets name_changed?" do
859
- person.aliased_changed?.should be_true
918
+ expect(person.aliased_changed?).to be true
860
919
  end
861
920
 
862
921
  it "sets alias_changed?" do
863
- person.alias_changed?.should be_true
922
+ expect(person.alias_changed?).to be true
864
923
  end
865
924
  end
866
925
 
@@ -871,7 +930,7 @@ describe Mongoid::Fields do
871
930
  end
872
931
 
873
932
  it "properly serializes the aliased field" do
874
- criteria.selector.should eq({ "aliased" => true })
933
+ expect(criteria.selector).to eq({ "aliased" => true })
875
934
  end
876
935
  end
877
936
  end
@@ -889,27 +948,8 @@ describe Mongoid::Fields do
889
948
  context "when option is provided" do
890
949
 
891
950
  it "calls the handler with the model" do
892
- handler.should_receive(:call).with do |model,_,_|
893
- model.should eql User
894
- end
895
-
896
- User.field :custom, option: true
897
- end
898
-
899
- it "calls the handler with the field" do
900
- handler.should_receive(:call).with do |_,field,_|
901
- field.should eql User.fields["custom"]
902
- end
903
-
904
- User.field :custom, option: true
905
- end
906
-
907
- it "calls the handler with the option value" do
908
- handler.should_receive(:call).with do |_,_,value|
909
- value.should eql true
910
- end
911
-
912
- User.field :custom, option: true
951
+ User.field :custom, option: true, overwrite: true
952
+ expect(User.fields["custom"].options[:option]).to be_truthy
913
953
  end
914
954
  end
915
955
 
@@ -917,7 +957,7 @@ describe Mongoid::Fields do
917
957
 
918
958
  it "calls the handler" do
919
959
  handler.should_receive(:call)
920
- User.field :custom, option: nil
960
+ User.field :custom, option: nil, overwrite: true
921
961
  end
922
962
  end
923
963
 
@@ -926,7 +966,7 @@ describe Mongoid::Fields do
926
966
  it "does not call the handler" do
927
967
  handler.should_receive(:call).never
928
968
 
929
- User.field :custom
969
+ User.field :custom, overwrite: true
930
970
  end
931
971
  end
932
972
  end
@@ -941,11 +981,11 @@ describe Mongoid::Fields do
941
981
  end
942
982
 
943
983
  it "includes its own fields" do
944
- shape.fields.keys.should include("x")
984
+ expect(shape.fields.keys).to include("x")
945
985
  end
946
986
 
947
987
  it "does not return subclass fields" do
948
- shape.fields.keys.should_not include("radius")
988
+ expect(shape.fields.keys).to_not include("radius")
949
989
  end
950
990
  end
951
991
 
@@ -956,15 +996,15 @@ describe Mongoid::Fields do
956
996
  end
957
997
 
958
998
  it "includes the first parent field" do
959
- circle.fields.keys.should include("x")
999
+ expect(circle.fields.keys).to include("x")
960
1000
  end
961
1001
 
962
1002
  it "includes the second parent field" do
963
- circle.fields.keys.should include("y")
1003
+ expect(circle.fields.keys).to include("y")
964
1004
  end
965
1005
 
966
1006
  it "includes the child fields" do
967
- circle.fields.keys.should include("radius")
1007
+ expect(circle.fields.keys).to include("radius")
968
1008
  end
969
1009
  end
970
1010
  end
@@ -972,7 +1012,7 @@ describe Mongoid::Fields do
972
1012
  describe ".replace_field" do
973
1013
 
974
1014
  let!(:original) do
975
- Person.field(:id_test, type: Moped::BSON::ObjectId, label: "id")
1015
+ Person.field(:id_test, type: BSON::ObjectId, label: "id")
976
1016
  end
977
1017
 
978
1018
  let!(:altered) do
@@ -988,11 +1028,11 @@ describe Mongoid::Fields do
988
1028
  end
989
1029
 
990
1030
  it "sets the new type on the field" do
991
- new_field.type.should eq(String)
1031
+ expect(new_field.type).to eq(String)
992
1032
  end
993
1033
 
994
1034
  it "keeps the options from the old field" do
995
- new_field.options[:label].should eq("id")
1035
+ expect(new_field.options[:label]).to eq("id")
996
1036
  end
997
1037
  end
998
1038
 
@@ -1009,7 +1049,7 @@ describe Mongoid::Fields do
1009
1049
  end
1010
1050
 
1011
1051
  it "resets the fields" do
1012
- fields.keys.should include("user_id")
1052
+ expect(fields.keys).to include("user_id")
1013
1053
  end
1014
1054
  end
1015
1055
 
@@ -1020,7 +1060,7 @@ describe Mongoid::Fields do
1020
1060
  end
1021
1061
 
1022
1062
  it "resets the fields" do
1023
- fields.keys.should include("user_id")
1063
+ expect(fields.keys).to include("user_id")
1024
1064
  end
1025
1065
  end
1026
1066
  end
@@ -1032,88 +1072,7 @@ describe Mongoid::Fields do
1032
1072
  end
1033
1073
 
1034
1074
  it "sets the default value pre process" do
1035
- person.map_with_default.should eq({ "key" => "testing" })
1036
- end
1037
- end
1038
-
1039
- context "when dealing with auto protection" do
1040
-
1041
- context "when auto protect ids and types is true" do
1042
-
1043
- context "when redefining as accessible" do
1044
-
1045
- before do
1046
- Person.attr_accessible :id, :_id, :_type
1047
- end
1048
-
1049
- after do
1050
- Person.attr_protected :id, :_id, :_type
1051
- end
1052
-
1053
- let(:bson_id) do
1054
- Moped::BSON::ObjectId.new
1055
- end
1056
-
1057
- it "allows mass assignment of id" do
1058
- Person.new(_id: bson_id).id.should eq(bson_id)
1059
- end
1060
-
1061
- it "allows mass assignment of type" do
1062
- Person.new(_type: "Something")._type.should eq("Something")
1063
- end
1064
- end
1065
-
1066
- context "when redefining as protected" do
1067
-
1068
- before do
1069
- Person.attr_protected :id, :_id, :_type
1070
- end
1071
-
1072
- let(:bson_id) do
1073
- Moped::BSON::ObjectId.new
1074
- end
1075
-
1076
- it "protects assignment of id" do
1077
- Person.new(_id: bson_id).id.should_not eq(bson_id)
1078
- end
1079
-
1080
- it "protects assignment of type" do
1081
- Person.new(_type: "Something")._type.should_not eq("Something")
1082
- end
1083
- end
1084
- end
1085
-
1086
- context "when auto protecting ids and types is false" do
1087
-
1088
- before do
1089
- Mongoid.protect_sensitive_fields = false
1090
- end
1091
-
1092
- after do
1093
- Mongoid.protect_sensitive_fields = true
1094
- end
1095
-
1096
- let(:klass) do
1097
- Class.new do
1098
- include Mongoid::Document
1099
- end
1100
- end
1101
-
1102
- let(:bson_id) do
1103
- Moped::BSON::ObjectId.new
1104
- end
1105
-
1106
- let(:model) do
1107
- klass.new(id: bson_id, _type: "Model")
1108
- end
1109
-
1110
- it "allows mass assignment of id" do
1111
- model.id.should eq(bson_id)
1112
- end
1113
-
1114
- it "allows mass assignment of type" do
1115
- model._type.should eq("Model")
1116
- end
1075
+ expect(person.map_with_default).to eq({ "key" => "testing" })
1117
1076
  end
1118
1077
  end
1119
1078
 
@@ -1134,11 +1093,11 @@ describe Mongoid::Fields do
1134
1093
  end
1135
1094
 
1136
1095
  it "properly persists as a string" do
1137
- band.attributes["sales"].should eq(decimal.to_s)
1096
+ expect(band.attributes["sales"]).to eq(decimal.to_s)
1138
1097
  end
1139
1098
 
1140
1099
  it "returns the proper big decimal" do
1141
- band.sales.should eq(decimal)
1100
+ expect(band.sales).to eq(decimal)
1142
1101
  end
1143
1102
  end
1144
1103
 
@@ -1149,11 +1108,11 @@ describe Mongoid::Fields do
1149
1108
  end
1150
1109
 
1151
1110
  it "properly persists as a string" do
1152
- band.attributes["sales"].should eq(decimal.to_s)
1111
+ expect(band.attributes["sales"]).to eq(decimal.to_s)
1153
1112
  end
1154
1113
 
1155
1114
  it "returns the proper big decimal" do
1156
- band.sales.should eq(decimal)
1115
+ expect(band.sales).to eq(decimal)
1157
1116
  end
1158
1117
  end
1159
1118
 
@@ -1164,11 +1123,11 @@ describe Mongoid::Fields do
1164
1123
  end
1165
1124
 
1166
1125
  it "properly persists as a string" do
1167
- band.attributes["sales"].should eq("1000000")
1126
+ expect(band.attributes["sales"]).to eq("1000000")
1168
1127
  end
1169
1128
 
1170
1129
  it "returns the proper big decimal" do
1171
- band.sales.should eq(decimal)
1130
+ expect(band.sales).to eq(decimal)
1172
1131
  end
1173
1132
  end
1174
1133
 
@@ -1179,11 +1138,11 @@ describe Mongoid::Fields do
1179
1138
  end
1180
1139
 
1181
1140
  it "properly persists as a string" do
1182
- band.attributes["sales"].should eq(decimal.to_s)
1141
+ expect(band.attributes["sales"]).to eq(decimal.to_s)
1183
1142
  end
1184
1143
 
1185
1144
  it "returns the proper big decimal" do
1186
- band.sales.should eq(decimal)
1145
+ expect(band.sales).to eq(decimal)
1187
1146
  end
1188
1147
  end
1189
1148
  end
@@ -1209,7 +1168,7 @@ describe Mongoid::Fields do
1209
1168
  end
1210
1169
 
1211
1170
  it "properly updates the hash" do
1212
- person.map.should eq(
1171
+ expect(person.map).to eq(
1213
1172
  {
1214
1173
  "stack1" => [ 4, 3, 2, 1 ],
1215
1174
  "stack2" => [ 1, 2, 3, 4 ],
@@ -1219,7 +1178,7 @@ describe Mongoid::Fields do
1219
1178
  end
1220
1179
 
1221
1180
  it "persists the changes" do
1222
- person.reload.map.should eq(
1181
+ expect(person.reload.map).to eq(
1223
1182
  {
1224
1183
  "stack1" => [ 4, 3, 2, 1 ],
1225
1184
  "stack2" => [ 1, 2, 3, 4 ],
@@ -1242,11 +1201,11 @@ describe Mongoid::Fields do
1242
1201
  end
1243
1202
 
1244
1203
  it "does not override the parent" do
1245
- canvas.foo.should eq("original")
1204
+ expect(canvas.foo).to eq("original")
1246
1205
  end
1247
1206
 
1248
1207
  it "overrides the default" do
1249
- test.foo.should eq("overridden")
1208
+ expect(test.foo).to eq("overridden")
1250
1209
  end
1251
1210
  end
1252
1211
  end