mongoid 3.1.6 → 4.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (571) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +479 -8
  3. data/README.md +10 -7
  4. data/lib/config/locales/en.yml +34 -20
  5. data/lib/mongoid.rb +10 -76
  6. data/lib/mongoid/atomic.rb +3 -14
  7. data/lib/mongoid/atomic/paths/embedded.rb +0 -30
  8. data/lib/mongoid/atomic/paths/embedded/many.rb +1 -1
  9. data/lib/mongoid/atomic/paths/embedded/one.rb +1 -1
  10. data/lib/mongoid/atomic/paths/root.rb +0 -13
  11. data/lib/mongoid/attributes.rb +65 -101
  12. data/lib/mongoid/attributes/dynamic.rb +154 -0
  13. data/lib/mongoid/attributes/nested.rb +82 -0
  14. data/lib/mongoid/attributes/processing.rb +13 -66
  15. data/lib/mongoid/{dirty.rb → changeable.rb} +32 -2
  16. data/lib/mongoid/composable.rb +105 -0
  17. data/lib/mongoid/config.rb +3 -9
  18. data/lib/mongoid/config/options.rb +1 -1
  19. data/lib/mongoid/contextual.rb +2 -0
  20. data/lib/mongoid/contextual/aggregable/memory.rb +2 -2
  21. data/lib/mongoid/contextual/aggregable/mongo.rb +7 -9
  22. data/lib/mongoid/contextual/atomic.rb +53 -53
  23. data/lib/mongoid/contextual/geo_near.rb +1 -1
  24. data/lib/mongoid/contextual/map_reduce.rb +4 -2
  25. data/lib/mongoid/contextual/memory.rb +23 -11
  26. data/lib/mongoid/contextual/mongo.rb +75 -57
  27. data/lib/mongoid/contextual/none.rb +90 -0
  28. data/lib/mongoid/contextual/text_search.rb +178 -0
  29. data/lib/mongoid/copyable.rb +2 -3
  30. data/lib/mongoid/criteria.rb +39 -34
  31. data/lib/mongoid/criteria/#findable.rb# +141 -0
  32. data/lib/mongoid/{criterion → criteria}/findable.rb +7 -47
  33. data/lib/mongoid/{criterion/inspection.rb → criteria/inspectable.rb} +2 -2
  34. data/lib/mongoid/{criterion → criteria}/marshalable.rb +3 -1
  35. data/lib/mongoid/{criterion → criteria}/modifiable.rb +28 -8
  36. data/lib/mongoid/criteria/permission.rb +70 -0
  37. data/lib/mongoid/{criterion/scoping.rb → criteria/scopable.rb} +2 -2
  38. data/lib/mongoid/document.rb +39 -24
  39. data/lib/mongoid/errors.rb +4 -1
  40. data/lib/mongoid/errors/document_not_destroyed.rb +25 -0
  41. data/lib/mongoid/errors/document_not_found.rb +2 -1
  42. data/lib/mongoid/errors/invalid_storage_options.rb +1 -1
  43. data/lib/mongoid/errors/invalid_storage_parent.rb +26 -0
  44. data/lib/mongoid/errors/invalid_value.rb +16 -0
  45. data/lib/mongoid/errors/mongoid_error.rb +1 -1
  46. data/lib/mongoid/errors/readonly_document.rb +24 -0
  47. data/lib/mongoid/extensions.rb +15 -7
  48. data/lib/mongoid/extensions/array.rb +3 -3
  49. data/lib/mongoid/extensions/big_decimal.rb +1 -1
  50. data/lib/mongoid/extensions/boolean.rb +15 -17
  51. data/lib/mongoid/extensions/date.rb +1 -1
  52. data/lib/mongoid/extensions/date_time.rb +3 -3
  53. data/lib/mongoid/extensions/float.rb +2 -1
  54. data/lib/mongoid/extensions/hash.rb +3 -3
  55. data/lib/mongoid/extensions/integer.rb +1 -1
  56. data/lib/mongoid/extensions/object.rb +7 -7
  57. data/lib/mongoid/extensions/object_id.rb +5 -5
  58. data/lib/mongoid/extensions/range.rb +9 -3
  59. data/lib/mongoid/extensions/regexp.rb +1 -1
  60. data/lib/mongoid/extensions/set.rb +1 -1
  61. data/lib/mongoid/extensions/string.rb +6 -18
  62. data/lib/mongoid/extensions/symbol.rb +1 -1
  63. data/lib/mongoid/extensions/time.rb +3 -3
  64. data/lib/mongoid/extensions/time_with_zone.rb +1 -1
  65. data/lib/mongoid/factory.rb +8 -6
  66. data/lib/mongoid/fields.rb +41 -8
  67. data/lib/mongoid/fields/foreign_key.rb +3 -3
  68. data/lib/mongoid/fields/localized.rb +1 -1
  69. data/lib/mongoid/fields/standard.rb +5 -17
  70. data/lib/mongoid/fields/validators/macro.rb +15 -5
  71. data/lib/mongoid/{finders.rb → findable.rb} +35 -7
  72. data/lib/mongoid/{indexes.rb → indexable.rb} +50 -55
  73. data/lib/mongoid/indexable/specification.rb +104 -0
  74. data/lib/mongoid/{indexes → indexable}/validators/options.rb +2 -1
  75. data/lib/mongoid/{inspection.rb → inspectable.rb} +15 -11
  76. data/lib/mongoid/{callbacks.rb → interceptable.rb} +30 -62
  77. data/lib/mongoid/log_subscriber.rb +55 -0
  78. data/lib/mongoid/matchable.rb +152 -0
  79. data/lib/mongoid/{matchers → matchable}/all.rb +1 -1
  80. data/lib/mongoid/{matchers → matchable}/and.rb +2 -2
  81. data/lib/mongoid/{matchers → matchable}/default.rb +1 -1
  82. data/lib/mongoid/{matchers → matchable}/exists.rb +1 -1
  83. data/lib/mongoid/{matchers → matchable}/gt.rb +1 -1
  84. data/lib/mongoid/{matchers → matchable}/gte.rb +1 -1
  85. data/lib/mongoid/{matchers → matchable}/in.rb +2 -2
  86. data/lib/mongoid/{matchers → matchable}/lt.rb +1 -1
  87. data/lib/mongoid/{matchers → matchable}/lte.rb +1 -1
  88. data/lib/mongoid/{matchers → matchable}/ne.rb +2 -2
  89. data/lib/mongoid/{matchers → matchable}/nin.rb +3 -2
  90. data/lib/mongoid/{matchers → matchable}/or.rb +2 -2
  91. data/lib/mongoid/{matchers → matchable}/size.rb +1 -1
  92. data/lib/mongoid/persistable.rb +216 -0
  93. data/lib/mongoid/persistable/creatable.rb +189 -0
  94. data/lib/mongoid/persistable/deletable.rb +149 -0
  95. data/lib/mongoid/persistable/destroyable.rb +60 -0
  96. data/lib/mongoid/persistable/incrementable.rb +36 -0
  97. data/lib/mongoid/persistable/logical.rb +38 -0
  98. data/lib/mongoid/persistable/poppable.rb +39 -0
  99. data/lib/mongoid/persistable/pullable.rb +55 -0
  100. data/lib/mongoid/persistable/pushable.rb +62 -0
  101. data/lib/mongoid/persistable/renamable.rb +35 -0
  102. data/lib/mongoid/persistable/savable.rb +52 -0
  103. data/lib/mongoid/persistable/settable.rb +33 -0
  104. data/lib/mongoid/persistable/unsettable.rb +36 -0
  105. data/lib/mongoid/persistable/updatable.rb +153 -0
  106. data/lib/mongoid/persistable/upsertable.rb +55 -0
  107. data/lib/mongoid/positional.rb +71 -0
  108. data/lib/mongoid/query_cache.rb +255 -0
  109. data/lib/mongoid/railtie.rb +34 -60
  110. data/lib/mongoid/railties/database.rake +9 -25
  111. data/lib/mongoid/relations.rb +11 -25
  112. data/lib/mongoid/relations/accessors.rb +15 -51
  113. data/lib/mongoid/relations/auto_save.rb +15 -36
  114. data/lib/mongoid/relations/binding.rb +2 -25
  115. data/lib/mongoid/relations/bindings/embedded/in.rb +1 -1
  116. data/lib/mongoid/relations/bindings/embedded/many.rb +1 -3
  117. data/lib/mongoid/relations/bindings/referenced/in.rb +3 -8
  118. data/lib/mongoid/relations/bindings/referenced/many_to_many.rb +4 -2
  119. data/lib/mongoid/relations/builder.rb +1 -1
  120. data/lib/mongoid/relations/builders.rb +2 -2
  121. data/lib/mongoid/relations/builders/embedded/one.rb +1 -1
  122. data/lib/mongoid/relations/builders/nested_attributes/many.rb +10 -13
  123. data/lib/mongoid/relations/builders/nested_attributes/one.rb +5 -6
  124. data/lib/mongoid/relations/builders/referenced/in.rb +1 -1
  125. data/lib/mongoid/relations/builders/referenced/many.rb +1 -2
  126. data/lib/mongoid/relations/builders/referenced/many_to_many.rb +1 -2
  127. data/lib/mongoid/relations/builders/referenced/one.rb +1 -1
  128. data/lib/mongoid/relations/cascading.rb +3 -5
  129. data/lib/mongoid/relations/constraint.rb +1 -1
  130. data/lib/mongoid/relations/conversions.rb +1 -1
  131. data/lib/mongoid/relations/counter_cache.rb +39 -15
  132. data/lib/mongoid/relations/eager.rb +46 -0
  133. data/lib/mongoid/relations/eager/base.rb +149 -0
  134. data/lib/mongoid/relations/eager/belongs_to.rb +31 -0
  135. data/lib/mongoid/relations/eager/has_and_belongs_to_many.rb +47 -0
  136. data/lib/mongoid/relations/eager/has_many.rb +38 -0
  137. data/lib/mongoid/relations/eager/has_one.rb +30 -0
  138. data/lib/mongoid/relations/embedded/batchable.rb +4 -5
  139. data/lib/mongoid/relations/embedded/in.rb +4 -4
  140. data/lib/mongoid/relations/embedded/many.rb +14 -32
  141. data/lib/mongoid/relations/embedded/one.rb +1 -1
  142. data/lib/mongoid/relations/macros.rb +3 -4
  143. data/lib/mongoid/relations/many.rb +51 -31
  144. data/lib/mongoid/relations/marshalable.rb +3 -3
  145. data/lib/mongoid/relations/metadata.rb +14 -79
  146. data/lib/mongoid/relations/nested_builder.rb +2 -2
  147. data/lib/mongoid/relations/one.rb +1 -1
  148. data/lib/mongoid/relations/options.rb +1 -0
  149. data/lib/mongoid/relations/polymorphic.rb +0 -1
  150. data/lib/mongoid/relations/proxy.rb +21 -41
  151. data/lib/mongoid/relations/referenced/in.rb +4 -20
  152. data/lib/mongoid/relations/referenced/many.rb +22 -35
  153. data/lib/mongoid/relations/referenced/many_to_many.rb +19 -42
  154. data/lib/mongoid/relations/referenced/one.rb +6 -25
  155. data/lib/mongoid/relations/synchronization.rb +4 -4
  156. data/lib/mongoid/relations/targets/enumerable.rb +10 -10
  157. data/lib/mongoid/relations/touchable.rb +34 -1
  158. data/lib/mongoid/{reloading.rb → reloadable.rb} +7 -5
  159. data/lib/mongoid/{scoping.rb → scopable.rb} +36 -36
  160. data/lib/mongoid/selectable.rb +59 -0
  161. data/lib/mongoid/{serialization.rb → serializable.rb} +11 -2
  162. data/lib/mongoid/sessions.rb +37 -345
  163. data/lib/mongoid/sessions/factory.rb +2 -0
  164. data/lib/mongoid/sessions/options.rb +185 -0
  165. data/lib/mongoid/sessions/storage_options.rb +140 -0
  166. data/lib/mongoid/sessions/thread_options.rb +19 -0
  167. data/lib/mongoid/sessions/validators/storage.rb +16 -3
  168. data/lib/mongoid/{sharding.rb → shardable.rb} +5 -1
  169. data/lib/mongoid/{state.rb → stateful.rb} +13 -1
  170. data/lib/mongoid/support/query_counter.rb +23 -0
  171. data/lib/mongoid/tasks/database.rake +31 -0
  172. data/lib/mongoid/tasks/database.rb +107 -0
  173. data/lib/mongoid/threaded.rb +26 -172
  174. data/lib/mongoid/threaded/lifecycle.rb +0 -28
  175. data/lib/mongoid/timestamps/updated/short.rb +2 -2
  176. data/lib/mongoid/{hierarchy.rb → traversable.rb} +15 -7
  177. data/lib/mongoid/{validations.rb → validatable.rb} +23 -10
  178. data/lib/mongoid/{validations → validatable}/associated.rb +4 -2
  179. data/lib/mongoid/{validations → validatable}/format.rb +1 -1
  180. data/lib/mongoid/{validations → validatable}/length.rb +1 -1
  181. data/lib/mongoid/{validations → validatable}/localizable.rb +1 -1
  182. data/lib/mongoid/{validations → validatable}/macros.rb +4 -3
  183. data/lib/mongoid/{validations → validatable}/presence.rb +1 -1
  184. data/lib/mongoid/{validations → validatable}/queryable.rb +1 -2
  185. data/lib/mongoid/{validations → validatable}/uniqueness.rb +25 -21
  186. data/lib/mongoid/version.rb +1 -1
  187. data/lib/rails/generators/mongoid/config/templates/mongoid.yml +46 -25
  188. data/lib/rails/generators/mongoid/model/model_generator.rb +0 -1
  189. data/lib/rails/generators/mongoid/model/templates/model.rb.tt +0 -3
  190. data/lib/rails/generators/mongoid_generator.rb +3 -40
  191. data/lib/rails/mongoid.rb +0 -122
  192. data/lib/support/ruby_version.rb +1 -1
  193. data/spec/app/models/account.rb +2 -6
  194. data/spec/app/models/acolyte.rb +2 -1
  195. data/spec/app/models/actor.rb +0 -1
  196. data/spec/app/models/address.rb +8 -3
  197. data/spec/app/models/animal.rb +1 -1
  198. data/spec/app/models/appointment.rb +3 -3
  199. data/spec/app/models/article.rb +1 -4
  200. data/spec/app/models/audio.rb +5 -0
  201. data/spec/app/models/author.rb +0 -2
  202. data/spec/app/models/band.rb +3 -2
  203. data/spec/app/models/bar.rb +1 -0
  204. data/spec/app/models/book.rb +1 -0
  205. data/spec/app/models/building.rb +0 -2
  206. data/spec/app/models/building_address.rb +0 -2
  207. data/spec/app/models/bus.rb +1 -1
  208. data/spec/app/models/canvas.rb +1 -1
  209. data/spec/app/models/contextable_item.rb +5 -0
  210. data/spec/app/models/contractor.rb +0 -2
  211. data/spec/app/models/country_code.rb +1 -1
  212. data/spec/app/models/definition.rb +2 -2
  213. data/spec/app/models/dog.rb +1 -1
  214. data/spec/app/models/draft.rb +9 -0
  215. data/spec/app/models/dragon.rb +4 -0
  216. data/spec/app/models/drug.rb +1 -3
  217. data/spec/app/models/dungeon.rb +4 -0
  218. data/spec/app/models/edit.rb +5 -0
  219. data/spec/app/models/even.rb +7 -0
  220. data/spec/app/models/event.rb +1 -1
  221. data/spec/app/models/filesystem.rb +1 -0
  222. data/spec/app/models/fish.rb +0 -1
  223. data/spec/app/models/fruits.rb +6 -0
  224. data/spec/app/models/game.rb +0 -2
  225. data/spec/app/models/house.rb +1 -3
  226. data/spec/app/models/id_key.rb +6 -0
  227. data/spec/app/models/item.rb +1 -5
  228. data/spec/app/models/jar.rb +1 -1
  229. data/spec/app/models/label.rb +4 -4
  230. data/spec/app/models/line_item.rb +1 -1
  231. data/spec/app/models/login.rb +1 -1
  232. data/spec/app/models/message.rb +8 -0
  233. data/spec/app/models/movie.rb +1 -0
  234. data/spec/app/models/name.rb +3 -3
  235. data/spec/app/models/note.rb +3 -1
  236. data/spec/app/models/odd.rb +7 -0
  237. data/spec/app/models/oscar.rb +1 -1
  238. data/spec/app/models/parent_doc.rb +1 -1
  239. data/spec/app/models/person.rb +16 -10
  240. data/spec/app/models/phone.rb +1 -3
  241. data/spec/app/models/player.rb +3 -3
  242. data/spec/app/models/post.rb +5 -3
  243. data/spec/app/models/preference.rb +1 -1
  244. data/spec/app/models/quiz.rb +0 -3
  245. data/spec/app/models/record.rb +10 -5
  246. data/spec/app/models/registry.rb +1 -1
  247. data/spec/app/models/server.rb +1 -1
  248. data/spec/app/models/service.rb +3 -3
  249. data/spec/app/models/sound.rb +5 -0
  250. data/spec/app/models/symptom.rb +1 -1
  251. data/spec/app/models/template.rb +1 -1
  252. data/spec/app/models/title.rb +0 -1
  253. data/spec/app/models/track.rb +5 -5
  254. data/spec/app/models/tree.rb +3 -3
  255. data/spec/app/models/video.rb +1 -5
  256. data/spec/app/models/wiki_page.rb +2 -5
  257. data/spec/app/models/word.rb +3 -0
  258. data/spec/app/models/word_origin.rb +1 -1
  259. data/spec/config/mongoid.yml +7 -8
  260. data/spec/helpers.rb +18 -0
  261. data/spec/mongoid/#atomic_spec.rb# +365 -0
  262. data/spec/mongoid/atomic/modifiers_spec.rb +22 -22
  263. data/spec/mongoid/atomic/paths/embedded/many_spec.rb +8 -49
  264. data/spec/mongoid/atomic/paths/embedded/one_spec.rb +7 -49
  265. data/spec/mongoid/atomic/paths/root_spec.rb +3 -61
  266. data/spec/mongoid/atomic/paths_spec.rb +19 -19
  267. data/spec/mongoid/atomic_spec.rb +19 -19
  268. data/spec/mongoid/{nested_attributes_spec.rb → attributes/nested_spec.rb} +474 -592
  269. data/spec/mongoid/attributes/readonly_spec.rb +58 -18
  270. data/spec/mongoid/attributes_spec.rb +349 -434
  271. data/spec/mongoid/{dirty_spec.rb → changeable_spec.rb} +203 -153
  272. data/spec/mongoid/{components_spec.rb → composable_spec.rb} +3 -3
  273. data/spec/mongoid/config/environment_spec.rb +3 -3
  274. data/spec/mongoid/config/options_spec.rb +6 -6
  275. data/spec/mongoid/config_spec.rb +24 -48
  276. data/spec/mongoid/contextual/aggregable/memory_spec.rb +12 -12
  277. data/spec/mongoid/contextual/aggregable/mongo_spec.rb +78 -38
  278. data/spec/mongoid/contextual/atomic_spec.rb +60 -56
  279. data/spec/mongoid/contextual/find_and_modify_spec.rb +14 -14
  280. data/spec/mongoid/contextual/geo_near_spec.rb +22 -22
  281. data/spec/mongoid/contextual/map_reduce_spec.rb +27 -27
  282. data/spec/mongoid/contextual/memory_spec.rb +156 -94
  283. data/spec/mongoid/contextual/mongo_spec.rb +238 -150
  284. data/spec/mongoid/contextual/none_spec.rb +127 -0
  285. data/spec/mongoid/contextual/text_search_spec.rb +209 -0
  286. data/spec/mongoid/copyable_spec.rb +56 -68
  287. data/spec/mongoid/criteria/findable_spec.rb +991 -0
  288. data/spec/mongoid/{criterion/inspection_spec.rb → criteria/inspectable_spec.rb} +5 -5
  289. data/spec/mongoid/{criterion → criteria}/marshalable_spec.rb +2 -2
  290. data/spec/mongoid/criteria/modifiable_spec.rb +1252 -0
  291. data/spec/mongoid/{criterion/scoping_spec.rb → criteria/scopable_spec.rb} +37 -37
  292. data/spec/mongoid/criteria_spec.rb +715 -2421
  293. data/spec/mongoid/document_spec.rb +171 -121
  294. data/spec/mongoid/equality_spec.rb +22 -22
  295. data/spec/mongoid/errors/ambiguous_relationship_spec.rb +3 -3
  296. data/spec/mongoid/errors/callback_spec.rb +3 -3
  297. data/spec/mongoid/errors/delete_restriction_spec.rb +3 -3
  298. data/spec/mongoid/errors/document_not_destroyed_spec.rb +33 -0
  299. data/spec/mongoid/errors/document_not_found_spec.rb +11 -11
  300. data/spec/mongoid/errors/eager_load_spec.rb +3 -3
  301. data/spec/mongoid/errors/invalid_collection_spec.rb +3 -3
  302. data/spec/mongoid/errors/invalid_config_option_spec.rb +3 -3
  303. data/spec/mongoid/errors/invalid_field_option_spec.rb +3 -3
  304. data/spec/mongoid/errors/invalid_field_spec.rb +3 -3
  305. data/spec/mongoid/errors/invalid_find_spec.rb +3 -3
  306. data/spec/mongoid/errors/invalid_includes_spec.rb +3 -3
  307. data/spec/mongoid/errors/invalid_index_spec.rb +3 -3
  308. data/spec/mongoid/errors/invalid_options_spec.rb +3 -3
  309. data/spec/mongoid/errors/invalid_path_spec.rb +3 -3
  310. data/spec/mongoid/errors/invalid_scope_spec.rb +5 -5
  311. data/spec/mongoid/errors/invalid_set_polymorphic_relation_spec.rb +3 -3
  312. data/spec/mongoid/errors/invalid_storage_options_spec.rb +3 -3
  313. data/spec/mongoid/errors/invalid_time_spec.rb +3 -3
  314. data/spec/mongoid/errors/inverse_not_found_spec.rb +3 -3
  315. data/spec/mongoid/errors/mixed_relations_spec.rb +3 -3
  316. data/spec/mongoid/errors/mixed_session_configuration_spec.rb +3 -3
  317. data/spec/mongoid/errors/mongoid_error_spec.rb +8 -8
  318. data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +3 -3
  319. data/spec/mongoid/errors/no_environment_spec.rb +3 -3
  320. data/spec/mongoid/errors/no_map_reduce_output_spec.rb +3 -3
  321. data/spec/mongoid/errors/no_metadata_spec.rb +3 -3
  322. data/spec/mongoid/errors/no_parent_spec.rb +3 -3
  323. data/spec/mongoid/errors/no_session_config_spec.rb +3 -3
  324. data/spec/mongoid/errors/no_session_database_spec.rb +3 -3
  325. data/spec/mongoid/errors/no_session_hosts_spec.rb +3 -3
  326. data/spec/mongoid/errors/no_sessions_config_spec.rb +3 -3
  327. data/spec/mongoid/errors/readonly_attribute_spec.rb +3 -3
  328. data/spec/mongoid/errors/readonly_document_spec.rb +29 -0
  329. data/spec/mongoid/errors/scope_overwrite_spec.rb +3 -3
  330. data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +3 -3
  331. data/spec/mongoid/errors/unknown_attribute_spec.rb +5 -5
  332. data/spec/mongoid/errors/unsaved_document_spec.rb +3 -3
  333. data/spec/mongoid/errors/unsupported_javascript_spec.rb +3 -3
  334. data/spec/mongoid/errors/validations_spec.rb +7 -7
  335. data/spec/mongoid/extensions/array_spec.rb +61 -61
  336. data/spec/mongoid/extensions/big_decimal_spec.rb +11 -11
  337. data/spec/mongoid/extensions/binary_spec.rb +12 -12
  338. data/spec/mongoid/extensions/boolean_spec.rb +18 -18
  339. data/spec/mongoid/extensions/date_spec.rb +13 -13
  340. data/spec/mongoid/extensions/date_time_spec.rb +8 -8
  341. data/spec/mongoid/extensions/false_class_spec.rb +5 -5
  342. data/spec/mongoid/extensions/float_spec.rb +29 -15
  343. data/spec/mongoid/extensions/hash_spec.rb +29 -29
  344. data/spec/mongoid/extensions/integer_spec.rb +15 -15
  345. data/spec/mongoid/extensions/module_spec.rb +2 -2
  346. data/spec/mongoid/extensions/nil_class_spec.rb +1 -1
  347. data/spec/mongoid/extensions/object_id_spec.rb +134 -134
  348. data/spec/mongoid/extensions/object_spec.rb +26 -26
  349. data/spec/mongoid/extensions/range_spec.rb +61 -12
  350. data/spec/mongoid/extensions/regexp_spec.rb +4 -4
  351. data/spec/mongoid/extensions/set_spec.rb +4 -4
  352. data/spec/mongoid/extensions/string_spec.rb +35 -46
  353. data/spec/mongoid/extensions/symbol_spec.rb +9 -9
  354. data/spec/mongoid/extensions/time_spec.rb +49 -49
  355. data/spec/mongoid/extensions/time_with_zone_spec.rb +34 -34
  356. data/spec/mongoid/extensions/true_class_spec.rb +5 -5
  357. data/spec/mongoid/extensions_spec.rb +29 -0
  358. data/spec/mongoid/factory_spec.rb +15 -15
  359. data/spec/mongoid/fields/foreign_key_spec.rb +73 -66
  360. data/spec/mongoid/fields/internal/foreign_keys/array_spec.rb +15 -15
  361. data/spec/mongoid/fields/internal/foreign_keys/object_spec.rb +22 -22
  362. data/spec/mongoid/fields/localized_spec.rb +38 -23
  363. data/spec/mongoid/fields/standard_spec.rb +12 -12
  364. data/spec/mongoid/fields_spec.rb +263 -217
  365. data/spec/mongoid/findable_spec.rb +509 -0
  366. data/spec/mongoid/indexable/specification_spec.rb +102 -0
  367. data/spec/mongoid/{indexes_spec.rb → indexable_spec.rb} +171 -51
  368. data/spec/mongoid/{inspection_spec.rb → inspectable_spec.rb} +6 -14
  369. data/spec/mongoid/{callbacks_spec.rb → interceptable_spec.rb} +117 -116
  370. data/spec/mongoid/log_subscriber_spec.rb +75 -0
  371. data/spec/mongoid/loggable_spec.rb +1 -1
  372. data/spec/mongoid/{matchers → matchable}/all_spec.rb +4 -4
  373. data/spec/mongoid/{matchers → matchable}/and_spec.rb +11 -11
  374. data/spec/mongoid/{matchers → matchable}/default_spec.rb +15 -15
  375. data/spec/mongoid/{matchers → matchable}/exists_spec.rb +5 -5
  376. data/spec/mongoid/{matchers → matchable}/gt_spec.rb +9 -8
  377. data/spec/mongoid/{matchers → matchable}/gte_spec.rb +7 -7
  378. data/spec/mongoid/matchable/in_spec.rb +49 -0
  379. data/spec/mongoid/{matchers → matchable}/lt_spec.rb +7 -7
  380. data/spec/mongoid/{matchers → matchable}/lte_spec.rb +7 -7
  381. data/spec/mongoid/matchable/ne_spec.rb +46 -0
  382. data/spec/mongoid/matchable/nin_spec.rb +48 -0
  383. data/spec/mongoid/{matchers → matchable}/or_spec.rb +6 -6
  384. data/spec/mongoid/{matchers → matchable}/size_spec.rb +3 -3
  385. data/spec/mongoid/{matchers_spec.rb → matchable_spec.rb} +41 -41
  386. data/spec/mongoid/persistable/creatable_spec.rb +553 -0
  387. data/spec/mongoid/persistable/deletable_spec.rb +218 -0
  388. data/spec/mongoid/persistable/destroyable_spec.rb +192 -0
  389. data/spec/mongoid/persistable/incrementable_spec.rb +173 -0
  390. data/spec/mongoid/persistable/logical_spec.rb +143 -0
  391. data/spec/mongoid/persistable/poppable_spec.rb +115 -0
  392. data/spec/mongoid/persistable/pullable_spec.rb +228 -0
  393. data/spec/mongoid/persistable/pushable_spec.rb +258 -0
  394. data/spec/mongoid/persistable/renamable_spec.rb +135 -0
  395. data/spec/mongoid/persistable/savable_spec.rb +498 -0
  396. data/spec/mongoid/persistable/settable_spec.rb +162 -0
  397. data/spec/mongoid/persistable/unsettable_spec.rb +155 -0
  398. data/spec/mongoid/persistable/updatable_spec.rb +558 -0
  399. data/spec/mongoid/persistable/upsertable_spec.rb +106 -0
  400. data/spec/mongoid/persistable_spec.rb +206 -0
  401. data/spec/mongoid/{atomic/positionable_spec.rb → positional_spec.rb} +14 -19
  402. data/spec/mongoid/query_cache_spec.rb +263 -0
  403. data/spec/mongoid/railties/document_spec.rb +2 -2
  404. data/spec/mongoid/relations/accessors_spec.rb +53 -145
  405. data/spec/mongoid/relations/auto_save_spec.rb +37 -17
  406. data/spec/mongoid/relations/bindings/embedded/in_spec.rb +12 -12
  407. data/spec/mongoid/relations/bindings/embedded/many_spec.rb +3 -3
  408. data/spec/mongoid/relations/bindings/embedded/one_spec.rb +5 -5
  409. data/spec/mongoid/relations/bindings/referenced/in_spec.rb +26 -26
  410. data/spec/mongoid/relations/bindings/referenced/many_spec.rb +10 -10
  411. data/spec/mongoid/relations/bindings/referenced/many_to_many_spec.rb +19 -19
  412. data/spec/mongoid/relations/bindings/referenced/one_spec.rb +12 -12
  413. data/spec/mongoid/relations/builders/embedded/in_spec.rb +4 -4
  414. data/spec/mongoid/relations/builders/embedded/many_spec.rb +18 -18
  415. data/spec/mongoid/relations/builders/embedded/one_spec.rb +11 -11
  416. data/spec/mongoid/relations/builders/nested_attributes/many_spec.rb +12 -13
  417. data/spec/mongoid/relations/builders/nested_attributes/one_spec.rb +14 -14
  418. data/spec/mongoid/relations/builders/referenced/in_spec.rb +24 -35
  419. data/spec/mongoid/relations/builders/referenced/many_spec.rb +15 -15
  420. data/spec/mongoid/relations/builders/referenced/many_to_many_spec.rb +18 -18
  421. data/spec/mongoid/relations/builders/referenced/one_spec.rb +12 -25
  422. data/spec/mongoid/relations/builders_spec.rb +21 -21
  423. data/spec/mongoid/relations/cascading/delete_spec.rb +9 -9
  424. data/spec/mongoid/relations/cascading/destroy_spec.rb +6 -6
  425. data/spec/mongoid/relations/cascading/nullify_spec.rb +4 -4
  426. data/spec/mongoid/relations/cascading/restrict_spec.rb +7 -7
  427. data/spec/mongoid/relations/cascading_spec.rb +16 -16
  428. data/spec/mongoid/relations/constraint_spec.rb +8 -7
  429. data/spec/mongoid/relations/conversions_spec.rb +16 -14
  430. data/spec/mongoid/relations/counter_cache_spec.rb +85 -0
  431. data/spec/mongoid/relations/cyclic_spec.rb +18 -18
  432. data/spec/mongoid/relations/eager/belongs_to_spec.rb +154 -0
  433. data/spec/mongoid/relations/eager/has_and_belongs_to_many_spec.rb +117 -0
  434. data/spec/mongoid/relations/eager/has_many_spec.rb +207 -0
  435. data/spec/mongoid/relations/eager/has_one_spec.rb +163 -0
  436. data/spec/mongoid/relations/eager_spec.rb +228 -0
  437. data/spec/mongoid/relations/embedded/dirty_spec.rb +8 -8
  438. data/spec/mongoid/relations/embedded/in_spec.rb +56 -57
  439. data/spec/mongoid/relations/embedded/many_spec.rb +467 -372
  440. data/spec/mongoid/relations/embedded/one_spec.rb +108 -141
  441. data/spec/mongoid/relations/macros_spec.rb +108 -102
  442. data/spec/mongoid/relations/metadata_spec.rb +180 -255
  443. data/spec/mongoid/relations/options_spec.rb +1 -1
  444. data/spec/mongoid/relations/polymorphic_spec.rb +13 -17
  445. data/spec/mongoid/relations/proxy_spec.rb +2 -2
  446. data/spec/mongoid/relations/referenced/in_spec.rb +128 -303
  447. data/spec/mongoid/relations/referenced/many_spec.rb +587 -527
  448. data/spec/mongoid/relations/referenced/many_to_many_spec.rb +401 -424
  449. data/spec/mongoid/relations/referenced/one_spec.rb +149 -264
  450. data/spec/mongoid/relations/reflections_spec.rb +6 -6
  451. data/spec/mongoid/relations/synchronization_spec.rb +46 -50
  452. data/spec/mongoid/relations/targets/enumerable_spec.rb +118 -118
  453. data/spec/mongoid/relations/touchable_spec.rb +333 -0
  454. data/spec/mongoid/relations_spec.rb +16 -15
  455. data/spec/mongoid/{reloading_spec.rb → reloadable_spec.rb} +38 -55
  456. data/spec/mongoid/{scoping_spec.rb → scopable_spec.rb} +89 -164
  457. data/spec/mongoid/selectable_spec.rb +134 -0
  458. data/spec/mongoid/{serialization_spec.rb → serializable_spec.rb} +129 -82
  459. data/spec/mongoid/sessions/factory_spec.rb +49 -28
  460. data/spec/mongoid/sessions/mongo_uri_spec.rb +7 -7
  461. data/spec/mongoid/sessions/options_spec.rb +108 -0
  462. data/spec/mongoid/sessions_spec.rb +319 -178
  463. data/spec/mongoid/{sharding_spec.rb → shardable_spec.rb} +8 -8
  464. data/spec/mongoid/{state_spec.rb → stateful_spec.rb} +36 -11
  465. data/spec/mongoid/tasks/database_rake_spec.rb +285 -0
  466. data/spec/mongoid/tasks/database_spec.rb +160 -0
  467. data/spec/mongoid/threaded_spec.rb +17 -70
  468. data/spec/mongoid/timestamps/created/short_spec.rb +6 -6
  469. data/spec/mongoid/timestamps/created_spec.rb +5 -5
  470. data/spec/mongoid/timestamps/timeless_spec.rb +6 -6
  471. data/spec/mongoid/timestamps/updated/short_spec.rb +11 -11
  472. data/spec/mongoid/timestamps/updated_spec.rb +9 -13
  473. data/spec/mongoid/timestamps_spec.rb +9 -13
  474. data/spec/mongoid/{hierarchy_spec.rb → traversable_spec.rb} +19 -19
  475. data/spec/mongoid/{validations → validatable}/associated_spec.rb +45 -22
  476. data/spec/mongoid/{validations → validatable}/format_spec.rb +6 -6
  477. data/spec/mongoid/{validations → validatable}/length_spec.rb +14 -14
  478. data/spec/mongoid/{validations → validatable}/numericality_spec.rb +1 -1
  479. data/spec/mongoid/{validations → validatable}/presence_spec.rb +37 -44
  480. data/spec/mongoid/{validations → validatable}/uniqueness_spec.rb +184 -192
  481. data/spec/mongoid/{validations_spec.rb → validatable_spec.rb} +28 -28
  482. data/spec/mongoid_spec.rb +8 -8
  483. data/spec/rails/mongoid_spec.rb +19 -335
  484. data/spec/spec_helper.rb +31 -13
  485. metadata +303 -283
  486. data/lib/mongoid/atomic/positionable.rb +0 -73
  487. data/lib/mongoid/components.rb +0 -92
  488. data/lib/mongoid/config/inflections.rb +0 -6
  489. data/lib/mongoid/contextual/eager.rb +0 -158
  490. data/lib/mongoid/errors/versioning_not_on_root.rb +0 -23
  491. data/lib/mongoid/identity_map.rb +0 -163
  492. data/lib/mongoid/json.rb +0 -16
  493. data/lib/mongoid/matchers.rb +0 -32
  494. data/lib/mongoid/matchers/strategies.rb +0 -97
  495. data/lib/mongoid/multi_parameter_attributes.rb +0 -105
  496. data/lib/mongoid/nested_attributes.rb +0 -78
  497. data/lib/mongoid/observer.rb +0 -192
  498. data/lib/mongoid/paranoia.rb +0 -136
  499. data/lib/mongoid/persistence.rb +0 -357
  500. data/lib/mongoid/persistence/atomic.rb +0 -231
  501. data/lib/mongoid/persistence/atomic/add_to_set.rb +0 -47
  502. data/lib/mongoid/persistence/atomic/bit.rb +0 -35
  503. data/lib/mongoid/persistence/atomic/inc.rb +0 -45
  504. data/lib/mongoid/persistence/atomic/operation.rb +0 -154
  505. data/lib/mongoid/persistence/atomic/pop.rb +0 -32
  506. data/lib/mongoid/persistence/atomic/pull.rb +0 -32
  507. data/lib/mongoid/persistence/atomic/pull_all.rb +0 -32
  508. data/lib/mongoid/persistence/atomic/push.rb +0 -25
  509. data/lib/mongoid/persistence/atomic/push_all.rb +0 -25
  510. data/lib/mongoid/persistence/atomic/rename.rb +0 -30
  511. data/lib/mongoid/persistence/atomic/sets.rb +0 -28
  512. data/lib/mongoid/persistence/atomic/unset.rb +0 -27
  513. data/lib/mongoid/persistence/deletion.rb +0 -31
  514. data/lib/mongoid/persistence/insertion.rb +0 -38
  515. data/lib/mongoid/persistence/modification.rb +0 -35
  516. data/lib/mongoid/persistence/operations.rb +0 -214
  517. data/lib/mongoid/persistence/operations/embedded/insert.rb +0 -46
  518. data/lib/mongoid/persistence/operations/embedded/remove.rb +0 -43
  519. data/lib/mongoid/persistence/operations/insert.rb +0 -34
  520. data/lib/mongoid/persistence/operations/remove.rb +0 -33
  521. data/lib/mongoid/persistence/operations/update.rb +0 -59
  522. data/lib/mongoid/persistence/operations/upsert.rb +0 -28
  523. data/lib/mongoid/persistence/upsertion.rb +0 -31
  524. data/lib/mongoid/unit_of_work.rb +0 -61
  525. data/lib/mongoid/versioning.rb +0 -217
  526. data/lib/rack/mongoid.rb +0 -2
  527. data/lib/rack/mongoid/middleware/identity_map.rb +0 -39
  528. data/lib/rails/generators/mongoid/observer/observer_generator.rb +0 -17
  529. data/lib/rails/generators/mongoid/observer/templates/observer.rb.tt +0 -4
  530. data/spec/app/models/actor_observer.rb +0 -15
  531. data/spec/app/models/callback_recorder.rb +0 -25
  532. data/spec/app/models/paranoid_phone.rb +0 -25
  533. data/spec/app/models/paranoid_post.rb +0 -36
  534. data/spec/app/models/phone_observer.rb +0 -6
  535. data/spec/mongoid/attributes/processing_spec.rb +0 -149
  536. data/spec/mongoid/criterion/destructive_spec.rb +0 -101
  537. data/spec/mongoid/criterion/modifiable_spec.rb +0 -409
  538. data/spec/mongoid/criterion/modification_spec.rb +0 -402
  539. data/spec/mongoid/errors/versioning_not_on_root_spec.rb +0 -29
  540. data/spec/mongoid/finders_spec.rb +0 -321
  541. data/spec/mongoid/identity_map_spec.rb +0 -564
  542. data/spec/mongoid/json_spec.rb +0 -33
  543. data/spec/mongoid/matchers/in_spec.rb +0 -25
  544. data/spec/mongoid/matchers/ne_spec.rb +0 -25
  545. data/spec/mongoid/matchers/nin_spec.rb +0 -25
  546. data/spec/mongoid/multi_parameter_attributes_spec.rb +0 -128
  547. data/spec/mongoid/observer_spec.rb +0 -290
  548. data/spec/mongoid/paranoia_spec.rb +0 -759
  549. data/spec/mongoid/persistence/atomic/add_to_set_spec.rb +0 -262
  550. data/spec/mongoid/persistence/atomic/bit_spec.rb +0 -88
  551. data/spec/mongoid/persistence/atomic/inc_spec.rb +0 -133
  552. data/spec/mongoid/persistence/atomic/pop_spec.rb +0 -111
  553. data/spec/mongoid/persistence/atomic/pull_all_spec.rb +0 -77
  554. data/spec/mongoid/persistence/atomic/pull_spec.rb +0 -80
  555. data/spec/mongoid/persistence/atomic/push_all_spec.rb +0 -77
  556. data/spec/mongoid/persistence/atomic/push_spec.rb +0 -77
  557. data/spec/mongoid/persistence/atomic/rename_spec.rb +0 -42
  558. data/spec/mongoid/persistence/atomic/sets_spec.rb +0 -154
  559. data/spec/mongoid/persistence/atomic/unset_spec.rb +0 -65
  560. data/spec/mongoid/persistence/atomic_spec.rb +0 -216
  561. data/spec/mongoid/persistence/operations/embedded/insert_spec.rb +0 -191
  562. data/spec/mongoid/persistence/operations/embedded/remove_spec.rb +0 -8
  563. data/spec/mongoid/persistence/operations/insert_spec.rb +0 -149
  564. data/spec/mongoid/persistence/operations/remove_spec.rb +0 -113
  565. data/spec/mongoid/persistence/operations/update_spec.rb +0 -141
  566. data/spec/mongoid/persistence/operations/upsert_spec.rb +0 -59
  567. data/spec/mongoid/persistence/operations_spec.rb +0 -313
  568. data/spec/mongoid/persistence_spec.rb +0 -2279
  569. data/spec/mongoid/unit_of_work_spec.rb +0 -196
  570. data/spec/mongoid/versioning_spec.rb +0 -540
  571. data/spec/rack/mongoid/middleware/identity_map_spec.rb +0 -72
@@ -1,6 +1,6 @@
1
1
  require "spec_helper"
2
2
 
3
- describe Mongoid::Validations::FormatValidator do
3
+ describe Mongoid::Validatable::FormatValidator do
4
4
 
5
5
  describe "#validate_each" do
6
6
 
@@ -21,7 +21,7 @@ describe Mongoid::Validations::FormatValidator do
21
21
  end
22
22
 
23
23
  it "adds no errors" do
24
- product.errors[:brand_name].should be_empty
24
+ expect(product.errors[:brand_name]).to be_empty
25
25
  end
26
26
  end
27
27
 
@@ -32,7 +32,7 @@ describe Mongoid::Validations::FormatValidator do
32
32
  end
33
33
 
34
34
  it "adds errors" do
35
- product.errors[:brand_name].should eq(["is invalid"])
35
+ expect(product.errors[:brand_name]).to eq(["is invalid"])
36
36
  end
37
37
  end
38
38
  end
@@ -50,7 +50,7 @@ describe Mongoid::Validations::FormatValidator do
50
50
  end
51
51
 
52
52
  it "adds no errors" do
53
- product.errors[:website].should be_empty
53
+ expect(product.errors[:website]).to be_empty
54
54
  end
55
55
  end
56
56
 
@@ -64,7 +64,7 @@ describe Mongoid::Validations::FormatValidator do
64
64
  end
65
65
 
66
66
  it "adds errors" do
67
- product.errors[:website].should eq(["is invalid"])
67
+ expect(product.errors[:website]).to eq(["is invalid"])
68
68
  end
69
69
  end
70
70
 
@@ -75,7 +75,7 @@ describe Mongoid::Validations::FormatValidator do
75
75
  end
76
76
 
77
77
  it "adds errors" do
78
- product.errors[:website].should eq(["is invalid"])
78
+ expect(product.errors[:website]).to eq(["is invalid"])
79
79
  end
80
80
  end
81
81
  end
@@ -1,6 +1,6 @@
1
1
  require "spec_helper"
2
2
 
3
- describe Mongoid::Validations::LengthValidator do
3
+ describe Mongoid::Validatable::LengthValidator do
4
4
 
5
5
  describe "#validate_each" do
6
6
 
@@ -21,7 +21,7 @@ describe Mongoid::Validations::LengthValidator do
21
21
  end
22
22
 
23
23
  it "adds no errors" do
24
- product.errors[:brand_name].should be_empty
24
+ expect(product.errors[:brand_name]).to be_empty
25
25
  end
26
26
  end
27
27
 
@@ -32,7 +32,7 @@ describe Mongoid::Validations::LengthValidator do
32
32
  end
33
33
 
34
34
  it "adds errors" do
35
- product.errors[:brand_name].should eq(
35
+ expect(product.errors[:brand_name]).to eq(
36
36
  ["is too long (maximum is 5 characters)"]
37
37
  )
38
38
  end
@@ -52,7 +52,7 @@ describe Mongoid::Validations::LengthValidator do
52
52
  end
53
53
 
54
54
  it "adds no errors" do
55
- product.errors[:website].should be_empty
55
+ expect(product.errors[:website]).to be_empty
56
56
  end
57
57
  end
58
58
 
@@ -66,7 +66,7 @@ describe Mongoid::Validations::LengthValidator do
66
66
  end
67
67
 
68
68
  it "adds errors" do
69
- product.errors[:website].should eq(
69
+ expect(product.errors[:website]).to eq(
70
70
  ["is too long (maximum is 5 characters)"]
71
71
  )
72
72
  end
@@ -79,7 +79,7 @@ describe Mongoid::Validations::LengthValidator do
79
79
  end
80
80
 
81
81
  it "adds errors" do
82
- product.errors[:website].should eq(
82
+ expect(product.errors[:website]).to eq(
83
83
  ["is too long (maximum is 5 characters)"]
84
84
  )
85
85
  end
@@ -101,7 +101,7 @@ describe Mongoid::Validations::LengthValidator do
101
101
  end
102
102
 
103
103
  it "adds no errors" do
104
- product.errors[:sku].should be_empty
104
+ expect(product.errors[:sku]).to be_empty
105
105
  end
106
106
  end
107
107
 
@@ -112,7 +112,7 @@ describe Mongoid::Validations::LengthValidator do
112
112
  end
113
113
 
114
114
  it "adds errors" do
115
- product.errors[:sku].should eq(["is too long (maximum is 5 characters)"])
115
+ expect(product.errors[:sku]).to eq(["is too long (maximum is 5 characters)"])
116
116
  end
117
117
  end
118
118
  end
@@ -130,7 +130,7 @@ describe Mongoid::Validations::LengthValidator do
130
130
  end
131
131
 
132
132
  it "adds no errors" do
133
- product.errors[:stock_keeping_unit].should be_empty
133
+ expect(product.errors[:stock_keeping_unit]).to be_empty
134
134
  end
135
135
  end
136
136
 
@@ -141,7 +141,7 @@ describe Mongoid::Validations::LengthValidator do
141
141
  end
142
142
 
143
143
  it "adds errors" do
144
- product.errors[:stock_keeping_unit].should eq(["is too long (maximum is 5 characters)"])
144
+ expect(product.errors[:stock_keeping_unit]).to eq(["is too long (maximum is 5 characters)"])
145
145
  end
146
146
  end
147
147
  end
@@ -159,7 +159,7 @@ describe Mongoid::Validations::LengthValidator do
159
159
  end
160
160
 
161
161
  it "adds no errors" do
162
- product.errors[:tagline].should be_empty
162
+ expect(product.errors[:tagline]).to be_empty
163
163
  end
164
164
  end
165
165
 
@@ -173,7 +173,7 @@ describe Mongoid::Validations::LengthValidator do
173
173
  end
174
174
 
175
175
  it "adds errors" do
176
- product.errors[:tagline].should eq(["is too long (maximum is 5 characters)"])
176
+ expect(product.errors[:tagline]).to eq(["is too long (maximum is 5 characters)"])
177
177
  end
178
178
  end
179
179
 
@@ -184,7 +184,7 @@ describe Mongoid::Validations::LengthValidator do
184
184
  end
185
185
 
186
186
  it "adds errors" do
187
- product.errors[:tagline].should eq(["is too long (maximum is 5 characters)"])
187
+ expect(product.errors[:tagline]).to eq(["is too long (maximum is 5 characters)"])
188
188
  end
189
189
  end
190
190
  end
@@ -215,7 +215,7 @@ describe Mongoid::Validations::LengthValidator do
215
215
  end
216
216
 
217
217
  it "adds the errors to the document" do
218
- person.errors[:aliases].should_not be_empty
218
+ expect(person.errors[:aliases]).to_not be_empty
219
219
  end
220
220
  end
221
221
  end
@@ -23,7 +23,7 @@ describe ActiveModel::Validations::NumericalityValidator do
23
23
  end
24
24
 
25
25
  it "returns false" do
26
- model.should_not be_valid
26
+ expect(model).to_not be_valid
27
27
  end
28
28
  end
29
29
  end
@@ -1,6 +1,6 @@
1
1
  require "spec_helper"
2
2
 
3
- describe Mongoid::Validations::PresenceValidator do
3
+ describe Mongoid::Validatable::PresenceValidator do
4
4
 
5
5
  describe "#validate_each" do
6
6
 
@@ -21,7 +21,7 @@ describe Mongoid::Validations::PresenceValidator do
21
21
  end
22
22
 
23
23
  it "adds no errors" do
24
- product.errors[:brand_name].should be_empty
24
+ expect(product.errors[:brand_name]).to be_empty
25
25
  end
26
26
  end
27
27
 
@@ -32,7 +32,7 @@ describe Mongoid::Validations::PresenceValidator do
32
32
  end
33
33
 
34
34
  it "adds errors" do
35
- product.errors[:brand_name].should eq(["can't be blank"])
35
+ expect(product.errors[:brand_name]).to eq(["can't be blank"])
36
36
  end
37
37
  end
38
38
 
@@ -43,7 +43,7 @@ describe Mongoid::Validations::PresenceValidator do
43
43
  end
44
44
 
45
45
  it "adds errors" do
46
- product.errors[:brand_name].should eq(["can't be blank"])
46
+ expect(product.errors[:brand_name]).to eq(["can't be blank"])
47
47
  end
48
48
  end
49
49
  end
@@ -57,7 +57,7 @@ describe Mongoid::Validations::PresenceValidator do
57
57
  end
58
58
 
59
59
  it "adds no errors" do
60
- product.errors[:name].should be_empty
60
+ expect(product.errors[:name]).to be_empty
61
61
  end
62
62
  end
63
63
 
@@ -68,7 +68,7 @@ describe Mongoid::Validations::PresenceValidator do
68
68
  end
69
69
 
70
70
  it "adds errors" do
71
- product.errors[:name].should eq(["can't be blank"])
71
+ expect(product.errors[:name]).to eq(["can't be blank"])
72
72
  end
73
73
  end
74
74
 
@@ -79,7 +79,7 @@ describe Mongoid::Validations::PresenceValidator do
79
79
  end
80
80
 
81
81
  it "adds errors" do
82
- product.errors[:name].should eq(["can't be blank in en"])
82
+ expect(product.errors[:name]).to eq(["can't be blank in en"])
83
83
  end
84
84
  end
85
85
 
@@ -90,7 +90,7 @@ describe Mongoid::Validations::PresenceValidator do
90
90
  end
91
91
 
92
92
  it "adds errors" do
93
- product.errors[:name].should eq(["can't be blank in en"])
93
+ expect(product.errors[:name]).to eq(["can't be blank in en"])
94
94
  end
95
95
  end
96
96
 
@@ -105,7 +105,7 @@ describe Mongoid::Validations::PresenceValidator do
105
105
  end
106
106
 
107
107
  it "adds errors" do
108
- product.errors[:name].should eq(["can't be blank in de"])
108
+ expect(product.errors[:name]).to eq(["can't be blank in de"])
109
109
  end
110
110
  end
111
111
 
@@ -120,7 +120,7 @@ describe Mongoid::Validations::PresenceValidator do
120
120
  end
121
121
 
122
122
  it "adds errors" do
123
- product.errors[:name].should eq(["can't be blank in en", "can't be blank in de"])
123
+ expect(product.errors[:name]).to eq(["can't be blank in en", "can't be blank in de"])
124
124
  end
125
125
  end
126
126
  end
@@ -136,7 +136,7 @@ describe Mongoid::Validations::PresenceValidator do
136
136
  end
137
137
 
138
138
  it "adds no errors" do
139
- product.errors[:sku].should be_empty
139
+ expect(product.errors[:sku]).to be_empty
140
140
  end
141
141
  end
142
142
 
@@ -147,7 +147,7 @@ describe Mongoid::Validations::PresenceValidator do
147
147
  end
148
148
 
149
149
  it "adds errors" do
150
- product.errors[:sku].should eq(["can't be blank"])
150
+ expect(product.errors[:sku]).to eq(["can't be blank"])
151
151
  end
152
152
  end
153
153
  end
@@ -161,7 +161,7 @@ describe Mongoid::Validations::PresenceValidator do
161
161
  end
162
162
 
163
163
  it "adds no errors" do
164
- product.errors[:stock_keeping_unit].should be_empty
164
+ expect(product.errors[:stock_keeping_unit]).to be_empty
165
165
  end
166
166
  end
167
167
 
@@ -172,7 +172,7 @@ describe Mongoid::Validations::PresenceValidator do
172
172
  end
173
173
 
174
174
  it "adds errors" do
175
- product.errors[:stock_keeping_unit].should eq(["can't be blank"])
175
+ expect(product.errors[:stock_keeping_unit]).to eq(["can't be blank"])
176
176
  end
177
177
  end
178
178
  end
@@ -186,7 +186,7 @@ describe Mongoid::Validations::PresenceValidator do
186
186
  end
187
187
 
188
188
  it "adds no errors" do
189
- product.errors[:tagline].should be_empty
189
+ expect(product.errors[:tagline]).to be_empty
190
190
  end
191
191
  end
192
192
 
@@ -200,7 +200,7 @@ describe Mongoid::Validations::PresenceValidator do
200
200
  end
201
201
 
202
202
  it "adds errors" do
203
- product.errors[:tagline].should eq(["can't be blank in fr"])
203
+ expect(product.errors[:tagline]).to eq(["can't be blank in fr"])
204
204
  end
205
205
  end
206
206
  end
@@ -212,12 +212,10 @@ describe Mongoid::Validations::PresenceValidator do
212
212
  context "when the relation is a has one" do
213
213
 
214
214
  before do
215
- Person.autosaved_relations.delete_one(:game)
216
215
  Person.validates :game, presence: true
217
216
  end
218
217
 
219
218
  after do
220
- Person.autosaved_relations.clear
221
219
  Person.reset_callbacks(:save)
222
220
  Person.reset_callbacks(:validate)
223
221
  end
@@ -241,7 +239,7 @@ describe Mongoid::Validations::PresenceValidator do
241
239
  end
242
240
 
243
241
  it "saves the relation" do
244
- game.reload.should eq(game)
242
+ expect(game.reload).to eq(game)
245
243
  end
246
244
  end
247
245
  end
@@ -260,11 +258,7 @@ describe Mongoid::Validations::PresenceValidator do
260
258
  end
261
259
 
262
260
  it "does not change autosave on the relation" do
263
- Person.relations["game"][:autosave].should be_false
264
- end
265
-
266
- it "does not add any autosaved relations" do
267
- Person.autosaved_relations.should be_empty
261
+ expect(Person.relations["game"][:autosave]).to be false
268
262
  end
269
263
 
270
264
  context "when the relation is new" do
@@ -316,7 +310,7 @@ describe Mongoid::Validations::PresenceValidator do
316
310
  end
317
311
 
318
312
  it "is not valid" do
319
- line_item.should_not be_valid
313
+ expect(line_item).to_not be_valid
320
314
  end
321
315
  end
322
316
  end
@@ -329,7 +323,6 @@ describe Mongoid::Validations::PresenceValidator do
329
323
  end
330
324
 
331
325
  after do
332
- Person.autosaved_relations.clear
333
326
  Person.reset_callbacks(:save)
334
327
  Person.reset_callbacks(:validate)
335
328
  end
@@ -351,14 +344,14 @@ describe Mongoid::Validations::PresenceValidator do
351
344
  end
352
345
 
353
346
  it "is valid" do
354
- loaded.should be_valid
347
+ expect(loaded).to be_valid
355
348
  end
356
349
  end
357
350
 
358
351
  context "when the relation is in memory" do
359
352
 
360
353
  it "is valid" do
361
- person.should be_valid
354
+ expect(person).to be_valid
362
355
  end
363
356
  end
364
357
  end
@@ -378,12 +371,12 @@ describe Mongoid::Validations::PresenceValidator do
378
371
  end
379
372
 
380
373
  it "is not a valid document" do
381
- product.should_not be_valid
374
+ expect(product).to_not be_valid
382
375
  end
383
376
 
384
377
  it "includes the proper errors" do
385
378
  product.valid?
386
- product.errors[:name].should_not be_empty
379
+ expect(product.errors[:name]).to_not be_empty
387
380
  end
388
381
  end
389
382
 
@@ -398,12 +391,12 @@ describe Mongoid::Validations::PresenceValidator do
398
391
  end
399
392
 
400
393
  it "is not a valid document" do
401
- product.should_not be_valid
394
+ expect(product).to_not be_valid
402
395
  end
403
396
 
404
397
  it "includes the proper errors" do
405
398
  product.valid?
406
- product.errors[:name].should_not be_empty
399
+ expect(product.errors[:name]).to_not be_empty
407
400
  end
408
401
  end
409
402
 
@@ -418,12 +411,12 @@ describe Mongoid::Validations::PresenceValidator do
418
411
  end
419
412
 
420
413
  it "is not a valid document" do
421
- product.should_not be_valid
414
+ expect(product).to_not be_valid
422
415
  end
423
416
 
424
417
  it "includes the proper errors" do
425
418
  product.valid?
426
- product.errors[:name].should_not be_empty
419
+ expect(product.errors[:name]).to_not be_empty
427
420
  end
428
421
  end
429
422
 
@@ -438,12 +431,12 @@ describe Mongoid::Validations::PresenceValidator do
438
431
  end
439
432
 
440
433
  it "is not a valid document" do
441
- product.should_not be_valid
434
+ expect(product).to_not be_valid
442
435
  end
443
436
 
444
437
  it "includes the proper errors" do
445
438
  product.valid?
446
- product.errors[:name].should_not be_empty
439
+ expect(product.errors[:name]).to_not be_empty
447
440
  end
448
441
  end
449
442
 
@@ -458,7 +451,7 @@ describe Mongoid::Validations::PresenceValidator do
458
451
  end
459
452
 
460
453
  it "is a valid document" do
461
- product.should be_valid
454
+ expect(product).to be_valid
462
455
  end
463
456
  end
464
457
  end
@@ -483,7 +476,7 @@ describe Mongoid::Validations::PresenceValidator do
483
476
  end
484
477
 
485
478
  it "persists the changes" do
486
- reloaded.products.should eq(updated_products)
479
+ expect(reloaded.products).to eq(updated_products)
487
480
  end
488
481
  end
489
482
 
@@ -506,11 +499,11 @@ describe Mongoid::Validations::PresenceValidator do
506
499
  end
507
500
 
508
501
  it "does not destroy the models change list" do
509
- manufacturer.changes.should_not be_empty
502
+ expect(manufacturer.changes).to_not be_empty
510
503
  end
511
504
 
512
505
  it "maintains the list of changes" do
513
- manufacturer.changes.should eq({
506
+ expect(manufacturer.changes).to eq({
514
507
  "products" => [
515
508
  [ "Laptop", "Tablet" ],
516
509
  [ "Laptop", "Tablet", "Smartphone", "Desktop" ]
@@ -529,7 +522,7 @@ describe Mongoid::Validations::PresenceValidator do
529
522
  context "when the value is false" do
530
523
 
531
524
  it "is a valid document" do
532
- template.should be_valid
525
+ expect(template).to be_valid
533
526
  end
534
527
  end
535
528
 
@@ -540,7 +533,7 @@ describe Mongoid::Validations::PresenceValidator do
540
533
  end
541
534
 
542
535
  it "is a valid document" do
543
- template.should be_valid
536
+ expect(template).to be_valid
544
537
  end
545
538
  end
546
539
  end
@@ -556,7 +549,7 @@ describe Mongoid::Validations::PresenceValidator do
556
549
  end
557
550
 
558
551
  it "adds the validation only to the instance" do
559
- validators.should eq([ described_class ])
552
+ expect(validators).to eq([ described_class ])
560
553
  end
561
554
  end
562
555
 
@@ -584,7 +577,7 @@ describe Mongoid::Validations::PresenceValidator do
584
577
  end
585
578
 
586
579
  it "adds the errors to the document" do
587
- person.errors[:aliases].should_not be_empty
580
+ expect(person.errors[:aliases]).to_not be_empty
588
581
  end
589
582
  end
590
583
  end