mongoid 3.1.6 → 4.0.0

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