mongoid 3.1.7 → 4.0.0.alpha1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (521) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +317 -11
  3. data/README.md +4 -5
  4. data/lib/config/locales/en.yml +9 -12
  5. data/lib/mongoid.rb +6 -75
  6. data/lib/mongoid/atomic.rb +0 -11
  7. data/lib/mongoid/atomic/paths/embedded.rb +0 -30
  8. data/lib/mongoid/atomic/paths/root.rb +0 -13
  9. data/lib/mongoid/attributes.rb +30 -108
  10. data/lib/mongoid/attributes/dynamic.rb +154 -0
  11. data/lib/mongoid/attributes/nested.rb +82 -0
  12. data/lib/mongoid/attributes/processing.rb +13 -66
  13. data/lib/mongoid/{dirty.rb → changeable.rb} +5 -2
  14. data/lib/mongoid/composable.rb +104 -0
  15. data/lib/mongoid/config.rb +3 -9
  16. data/lib/mongoid/config/options.rb +1 -1
  17. data/lib/mongoid/contextual/aggregable/mongo.rb +5 -9
  18. data/lib/mongoid/contextual/atomic.rb +53 -53
  19. data/lib/mongoid/contextual/command.rb +26 -0
  20. data/lib/mongoid/contextual/map_reduce.rb +1 -1
  21. data/lib/mongoid/contextual/memory.rb +6 -5
  22. data/lib/mongoid/contextual/mongo.rb +59 -28
  23. data/lib/mongoid/contextual/text_search.rb +180 -0
  24. data/lib/mongoid/copyable.rb +2 -3
  25. data/lib/mongoid/criteria.rb +13 -33
  26. data/lib/mongoid/criteria/{#findable.rb# → findable.rb} +0 -2
  27. data/lib/mongoid/{criterion/inspection.rb → criteria/inspectable.rb} +2 -2
  28. data/lib/mongoid/{criterion → criteria}/marshalable.rb +3 -1
  29. data/lib/mongoid/{criterion → criteria}/modifiable.rb +1 -1
  30. data/lib/mongoid/{criterion/scoping.rb → criteria/scopable.rb} +2 -2
  31. data/lib/mongoid/document.rb +28 -12
  32. data/lib/mongoid/errors.rb +1 -1
  33. data/lib/mongoid/errors/document_not_found.rb +2 -1
  34. data/lib/mongoid/errors/invalid_value.rb +16 -0
  35. data/lib/mongoid/errors/mongoid_error.rb +1 -1
  36. data/lib/mongoid/extensions.rb +2 -7
  37. data/lib/mongoid/extensions/array.rb +2 -2
  38. data/lib/mongoid/extensions/boolean.rb +14 -17
  39. data/lib/mongoid/extensions/float.rb +1 -0
  40. data/lib/mongoid/extensions/hash.rb +1 -1
  41. data/lib/mongoid/extensions/object.rb +4 -4
  42. data/lib/mongoid/extensions/object_id.rb +5 -5
  43. data/lib/mongoid/extensions/range.rb +8 -2
  44. data/lib/mongoid/extensions/string.rb +5 -17
  45. data/lib/mongoid/extensions/time.rb +2 -2
  46. data/lib/mongoid/factory.rb +3 -3
  47. data/lib/mongoid/fields.rb +9 -8
  48. data/lib/mongoid/fields/foreign_key.rb +3 -3
  49. data/lib/mongoid/fields/standard.rb +4 -16
  50. data/lib/mongoid/fields/validators/macro.rb +11 -3
  51. data/lib/mongoid/{finders.rb → findable.rb} +6 -2
  52. data/lib/mongoid/{indexes.rb → indexable.rb} +50 -55
  53. data/lib/mongoid/indexable/specification.rb +104 -0
  54. data/lib/mongoid/{indexes → indexable}/validators/options.rb +2 -1
  55. data/lib/mongoid/{inspection.rb → inspectable.rb} +15 -11
  56. data/lib/mongoid/{callbacks.rb → interceptable.rb} +3 -52
  57. data/lib/mongoid/log_subscriber.rb +22 -0
  58. data/lib/mongoid/matchable.rb +152 -0
  59. data/lib/mongoid/{matchers → matchable}/all.rb +1 -1
  60. data/lib/mongoid/{matchers → matchable}/and.rb +2 -2
  61. data/lib/mongoid/{matchers → matchable}/default.rb +1 -1
  62. data/lib/mongoid/{matchers → matchable}/exists.rb +1 -1
  63. data/lib/mongoid/{matchers → matchable}/gt.rb +1 -1
  64. data/lib/mongoid/{matchers → matchable}/gte.rb +1 -1
  65. data/lib/mongoid/{matchers → matchable}/in.rb +2 -2
  66. data/lib/mongoid/{matchers → matchable}/lt.rb +1 -1
  67. data/lib/mongoid/{matchers → matchable}/lte.rb +1 -1
  68. data/lib/mongoid/{matchers → matchable}/ne.rb +1 -1
  69. data/lib/mongoid/{matchers → matchable}/nin.rb +3 -2
  70. data/lib/mongoid/{matchers → matchable}/or.rb +2 -2
  71. data/lib/mongoid/{matchers → matchable}/size.rb +1 -1
  72. data/lib/mongoid/persistable.rb +212 -0
  73. data/lib/mongoid/persistable/creatable.rb +188 -0
  74. data/lib/mongoid/persistable/deletable.rb +148 -0
  75. data/lib/mongoid/persistable/destroyable.rb +55 -0
  76. data/lib/mongoid/persistable/incrementable.rb +36 -0
  77. data/lib/mongoid/persistable/logical.rb +38 -0
  78. data/lib/mongoid/persistable/poppable.rb +39 -0
  79. data/lib/mongoid/persistable/pullable.rb +55 -0
  80. data/lib/mongoid/persistable/pushable.rb +62 -0
  81. data/lib/mongoid/persistable/renamable.rb +35 -0
  82. data/lib/mongoid/persistable/savable.rb +52 -0
  83. data/lib/mongoid/persistable/settable.rb +33 -0
  84. data/lib/mongoid/persistable/unsettable.rb +36 -0
  85. data/lib/mongoid/persistable/updatable.rb +151 -0
  86. data/lib/mongoid/persistable/upsertable.rb +55 -0
  87. data/lib/mongoid/positional.rb +71 -0
  88. data/lib/mongoid/railtie.rb +32 -45
  89. data/lib/mongoid/railties/database.rake +12 -6
  90. data/lib/mongoid/relations.rb +3 -3
  91. data/lib/mongoid/relations/accessors.rb +13 -46
  92. data/lib/mongoid/relations/auto_save.rb +15 -36
  93. data/lib/mongoid/relations/binding.rb +0 -23
  94. data/lib/mongoid/relations/bindings/embedded/many.rb +1 -3
  95. data/lib/mongoid/relations/bindings/referenced/in.rb +3 -8
  96. data/lib/mongoid/relations/bindings/referenced/many_to_many.rb +3 -1
  97. data/lib/mongoid/relations/builder.rb +1 -1
  98. data/lib/mongoid/relations/builders.rb +2 -2
  99. data/lib/mongoid/relations/builders/nested_attributes/many.rb +10 -13
  100. data/lib/mongoid/relations/builders/nested_attributes/one.rb +4 -5
  101. data/lib/mongoid/relations/builders/referenced/in.rb +1 -1
  102. data/lib/mongoid/relations/builders/referenced/many.rb +1 -2
  103. data/lib/mongoid/relations/builders/referenced/many_to_many.rb +1 -2
  104. data/lib/mongoid/relations/builders/referenced/one.rb +1 -1
  105. data/lib/mongoid/relations/cascading.rb +3 -5
  106. data/lib/mongoid/relations/constraint.rb +1 -1
  107. data/lib/mongoid/relations/conversions.rb +1 -1
  108. data/lib/mongoid/relations/counter_cache.rb +39 -15
  109. data/lib/mongoid/relations/eager.rb +47 -0
  110. data/lib/mongoid/relations/eager/base.rb +57 -0
  111. data/lib/mongoid/relations/eager/belongs_to.rb +30 -0
  112. data/lib/mongoid/relations/eager/has_and_belongs_to_many.rb +40 -0
  113. data/lib/mongoid/relations/eager/has_many.rb +37 -0
  114. data/lib/mongoid/relations/eager/has_one.rb +29 -0
  115. data/lib/mongoid/relations/embedded/batchable.rb +3 -4
  116. data/lib/mongoid/relations/embedded/many.rb +7 -27
  117. data/lib/mongoid/relations/macros.rb +2 -4
  118. data/lib/mongoid/relations/many.rb +30 -31
  119. data/lib/mongoid/relations/metadata.rb +6 -75
  120. data/lib/mongoid/relations/nested_builder.rb +2 -2
  121. data/lib/mongoid/relations/options.rb +1 -0
  122. data/lib/mongoid/relations/polymorphic.rb +0 -1
  123. data/lib/mongoid/relations/proxy.rb +10 -32
  124. data/lib/mongoid/relations/referenced/in.rb +2 -18
  125. data/lib/mongoid/relations/referenced/many.rb +9 -22
  126. data/lib/mongoid/relations/referenced/many_to_many.rb +10 -33
  127. data/lib/mongoid/relations/referenced/one.rb +2 -21
  128. data/lib/mongoid/relations/synchronization.rb +3 -3
  129. data/lib/mongoid/relations/touchable.rb +33 -0
  130. data/lib/mongoid/{reloading.rb → reloadable.rb} +6 -4
  131. data/lib/mongoid/{scoping.rb → scopable.rb} +26 -3
  132. data/lib/mongoid/selectable.rb +59 -0
  133. data/lib/mongoid/{serialization.rb → serializable.rb} +10 -1
  134. data/lib/mongoid/sessions.rb +37 -345
  135. data/lib/mongoid/sessions/factory.rb +2 -0
  136. data/lib/mongoid/sessions/options.rb +176 -0
  137. data/lib/mongoid/sessions/storage_options.rb +140 -0
  138. data/lib/mongoid/sessions/thread_options.rb +19 -0
  139. data/lib/mongoid/sessions/validators/storage.rb +15 -1
  140. data/lib/mongoid/{sharding.rb → shardable.rb} +5 -1
  141. data/lib/mongoid/support/query_counter.rb +23 -0
  142. data/lib/mongoid/threaded.rb +0 -110
  143. data/lib/mongoid/threaded/lifecycle.rb +0 -28
  144. data/lib/mongoid/timestamps/updated/short.rb +2 -2
  145. data/lib/mongoid/{hierarchy.rb → traversable.rb} +9 -5
  146. data/lib/mongoid/{validations.rb → validatable.rb} +23 -9
  147. data/lib/mongoid/{validations → validatable}/associated.rb +3 -1
  148. data/lib/mongoid/{validations → validatable}/format.rb +1 -1
  149. data/lib/mongoid/{validations → validatable}/length.rb +1 -1
  150. data/lib/mongoid/{validations → validatable}/localizable.rb +1 -1
  151. data/lib/mongoid/{validations → validatable}/macros.rb +4 -3
  152. data/lib/mongoid/{validations → validatable}/presence.rb +1 -1
  153. data/lib/mongoid/{validations → validatable}/queryable.rb +1 -2
  154. data/lib/mongoid/{validations → validatable}/uniqueness.rb +3 -3
  155. data/lib/mongoid/version.rb +1 -1
  156. data/lib/rails/generators/mongoid/config/templates/mongoid.yml +9 -13
  157. data/lib/rails/generators/mongoid/model/model_generator.rb +0 -1
  158. data/lib/rails/generators/mongoid/model/templates/model.rb.tt +0 -3
  159. data/lib/rails/generators/mongoid_generator.rb +3 -40
  160. data/lib/rails/mongoid.rb +59 -57
  161. data/lib/support/ruby_version.rb +1 -1
  162. data/spec/app/models/account.rb +2 -6
  163. data/spec/app/models/acolyte.rb +1 -0
  164. data/spec/app/models/actor.rb +0 -1
  165. data/spec/app/models/address.rb +6 -1
  166. data/spec/app/models/animal.rb +1 -1
  167. data/spec/app/models/appointment.rb +2 -2
  168. data/spec/app/models/article.rb +1 -4
  169. data/spec/app/models/audio.rb +5 -0
  170. data/spec/app/models/author.rb +0 -2
  171. data/spec/app/models/band.rb +3 -2
  172. data/spec/app/models/bar.rb +1 -0
  173. data/spec/app/models/book.rb +1 -0
  174. data/spec/app/models/building.rb +0 -2
  175. data/spec/app/models/building_address.rb +0 -2
  176. data/spec/app/models/bus.rb +1 -1
  177. data/spec/app/models/canvas.rb +1 -1
  178. data/spec/app/models/contractor.rb +0 -2
  179. data/spec/app/models/country_code.rb +1 -1
  180. data/spec/app/models/definition.rb +2 -2
  181. data/spec/app/models/dragon.rb +4 -0
  182. data/spec/app/models/drug.rb +1 -3
  183. data/spec/app/models/dungeon.rb +4 -0
  184. data/spec/app/models/filesystem.rb +1 -0
  185. data/spec/app/models/fish.rb +0 -1
  186. data/spec/app/models/fruits.rb +6 -0
  187. data/spec/app/models/game.rb +0 -2
  188. data/spec/app/models/house.rb +0 -2
  189. data/spec/app/models/item.rb +1 -5
  190. data/spec/app/models/jar.rb +1 -1
  191. data/spec/app/models/label.rb +4 -4
  192. data/spec/app/models/login.rb +1 -1
  193. data/spec/app/models/movie.rb +1 -0
  194. data/spec/app/models/name.rb +3 -3
  195. data/spec/app/models/note.rb +1 -1
  196. data/spec/app/models/oscar.rb +1 -1
  197. data/spec/app/models/parent_doc.rb +1 -1
  198. data/spec/app/models/person.rb +13 -8
  199. data/spec/app/models/phone.rb +1 -3
  200. data/spec/app/models/player.rb +1 -1
  201. data/spec/app/models/post.rb +2 -1
  202. data/spec/app/models/quiz.rb +0 -3
  203. data/spec/app/models/record.rb +5 -5
  204. data/spec/app/models/registry.rb +1 -1
  205. data/spec/app/models/server.rb +1 -1
  206. data/spec/app/models/service.rb +3 -3
  207. data/spec/app/models/sound.rb +5 -0
  208. data/spec/app/models/template.rb +1 -1
  209. data/spec/app/models/title.rb +0 -1
  210. data/spec/app/models/track.rb +5 -5
  211. data/spec/app/models/tree.rb +1 -1
  212. data/spec/app/models/video.rb +0 -4
  213. data/spec/app/models/wiki_page.rb +1 -4
  214. data/spec/app/models/word.rb +3 -0
  215. data/spec/app/models/word_origin.rb +1 -1
  216. data/spec/config/mongoid.yml +7 -8
  217. data/spec/helpers.rb +18 -0
  218. data/spec/mongoid/atomic/modifiers_spec.rb +22 -22
  219. data/spec/mongoid/atomic/paths/embedded/many_spec.rb +8 -49
  220. data/spec/mongoid/atomic/paths/embedded/one_spec.rb +7 -49
  221. data/spec/mongoid/atomic/paths/root_spec.rb +3 -61
  222. data/spec/mongoid/atomic/paths_spec.rb +19 -19
  223. data/spec/mongoid/atomic_spec.rb +19 -19
  224. data/spec/mongoid/{nested_attributes_spec.rb → attributes/nested_spec.rb} +335 -448
  225. data/spec/mongoid/attributes/readonly_spec.rb +16 -16
  226. data/spec/mongoid/attributes_spec.rb +188 -434
  227. data/spec/mongoid/{dirty_spec.rb → changeable_spec.rb} +117 -148
  228. data/spec/mongoid/{components_spec.rb → composable_spec.rb} +3 -3
  229. data/spec/mongoid/config/environment_spec.rb +3 -3
  230. data/spec/mongoid/config/options_spec.rb +6 -6
  231. data/spec/mongoid/config_spec.rb +24 -48
  232. data/spec/mongoid/contextual/aggregable/memory_spec.rb +12 -12
  233. data/spec/mongoid/contextual/aggregable/mongo_spec.rb +46 -38
  234. data/spec/mongoid/contextual/atomic_spec.rb +60 -56
  235. data/spec/mongoid/contextual/find_and_modify_spec.rb +14 -14
  236. data/spec/mongoid/contextual/geo_near_spec.rb +22 -22
  237. data/spec/mongoid/contextual/map_reduce_spec.rb +27 -27
  238. data/spec/mongoid/contextual/memory_spec.rb +94 -94
  239. data/spec/mongoid/contextual/mongo_spec.rb +225 -139
  240. data/spec/mongoid/contextual/text_search_spec.rb +207 -0
  241. data/spec/mongoid/copyable_spec.rb +56 -68
  242. data/spec/mongoid/criteria/findable_spec.rb +991 -0
  243. data/spec/mongoid/{criterion/inspection_spec.rb → criteria/inspectable_spec.rb} +5 -5
  244. data/spec/mongoid/{criterion → criteria}/marshalable_spec.rb +2 -2
  245. data/spec/mongoid/criteria/modifiable_spec.rb +1063 -0
  246. data/spec/mongoid/{criterion/scoping_spec.rb → criteria/scopable_spec.rb} +31 -31
  247. data/spec/mongoid/criteria_spec.rb +530 -2207
  248. data/spec/mongoid/document_spec.rb +166 -120
  249. data/spec/mongoid/equality_spec.rb +22 -22
  250. data/spec/mongoid/errors/ambiguous_relationship_spec.rb +3 -3
  251. data/spec/mongoid/errors/callback_spec.rb +3 -3
  252. data/spec/mongoid/errors/delete_restriction_spec.rb +3 -3
  253. data/spec/mongoid/errors/document_not_found_spec.rb +11 -11
  254. data/spec/mongoid/errors/eager_load_spec.rb +3 -3
  255. data/spec/mongoid/errors/invalid_collection_spec.rb +3 -3
  256. data/spec/mongoid/errors/invalid_config_option_spec.rb +3 -3
  257. data/spec/mongoid/errors/invalid_field_option_spec.rb +3 -3
  258. data/spec/mongoid/errors/invalid_field_spec.rb +3 -3
  259. data/spec/mongoid/errors/invalid_find_spec.rb +3 -3
  260. data/spec/mongoid/errors/invalid_includes_spec.rb +3 -3
  261. data/spec/mongoid/errors/invalid_index_spec.rb +3 -3
  262. data/spec/mongoid/errors/invalid_options_spec.rb +3 -3
  263. data/spec/mongoid/errors/invalid_path_spec.rb +3 -3
  264. data/spec/mongoid/errors/invalid_scope_spec.rb +3 -3
  265. data/spec/mongoid/errors/invalid_set_polymorphic_relation_spec.rb +3 -3
  266. data/spec/mongoid/errors/invalid_storage_options_spec.rb +3 -3
  267. data/spec/mongoid/errors/invalid_time_spec.rb +3 -3
  268. data/spec/mongoid/errors/inverse_not_found_spec.rb +3 -3
  269. data/spec/mongoid/errors/mixed_relations_spec.rb +3 -3
  270. data/spec/mongoid/errors/mixed_session_configuration_spec.rb +3 -3
  271. data/spec/mongoid/errors/mongoid_error_spec.rb +7 -7
  272. data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +3 -3
  273. data/spec/mongoid/errors/no_environment_spec.rb +3 -3
  274. data/spec/mongoid/errors/no_map_reduce_output_spec.rb +3 -3
  275. data/spec/mongoid/errors/no_metadata_spec.rb +3 -3
  276. data/spec/mongoid/errors/no_parent_spec.rb +3 -3
  277. data/spec/mongoid/errors/no_session_config_spec.rb +3 -3
  278. data/spec/mongoid/errors/no_session_database_spec.rb +3 -3
  279. data/spec/mongoid/errors/no_session_hosts_spec.rb +3 -3
  280. data/spec/mongoid/errors/no_sessions_config_spec.rb +3 -3
  281. data/spec/mongoid/errors/readonly_attribute_spec.rb +3 -3
  282. data/spec/mongoid/errors/scope_overwrite_spec.rb +3 -3
  283. data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +3 -3
  284. data/spec/mongoid/errors/unknown_attribute_spec.rb +5 -5
  285. data/spec/mongoid/errors/unsaved_document_spec.rb +3 -3
  286. data/spec/mongoid/errors/unsupported_javascript_spec.rb +3 -3
  287. data/spec/mongoid/errors/validations_spec.rb +7 -7
  288. data/spec/mongoid/extensions/array_spec.rb +61 -61
  289. data/spec/mongoid/extensions/big_decimal_spec.rb +11 -11
  290. data/spec/mongoid/extensions/binary_spec.rb +12 -12
  291. data/spec/mongoid/extensions/boolean_spec.rb +18 -18
  292. data/spec/mongoid/extensions/date_spec.rb +13 -13
  293. data/spec/mongoid/extensions/date_time_spec.rb +9 -9
  294. data/spec/mongoid/extensions/false_class_spec.rb +5 -5
  295. data/spec/mongoid/extensions/float_spec.rb +29 -15
  296. data/spec/mongoid/extensions/hash_spec.rb +29 -29
  297. data/spec/mongoid/extensions/integer_spec.rb +15 -15
  298. data/spec/mongoid/extensions/module_spec.rb +2 -2
  299. data/spec/mongoid/extensions/nil_class_spec.rb +1 -1
  300. data/spec/mongoid/extensions/object_id_spec.rb +134 -134
  301. data/spec/mongoid/extensions/object_spec.rb +26 -26
  302. data/spec/mongoid/extensions/range_spec.rb +61 -12
  303. data/spec/mongoid/extensions/regexp_spec.rb +4 -4
  304. data/spec/mongoid/extensions/set_spec.rb +4 -4
  305. data/spec/mongoid/extensions/string_spec.rb +35 -46
  306. data/spec/mongoid/extensions/symbol_spec.rb +9 -9
  307. data/spec/mongoid/extensions/time_spec.rb +49 -49
  308. data/spec/mongoid/extensions/time_with_zone_spec.rb +34 -34
  309. data/spec/mongoid/extensions/true_class_spec.rb +5 -5
  310. data/spec/mongoid/extensions_spec.rb +15 -0
  311. data/spec/mongoid/factory_spec.rb +15 -15
  312. data/spec/mongoid/fields/foreign_key_spec.rb +73 -66
  313. data/spec/mongoid/fields/internal/foreign_keys/array_spec.rb +15 -15
  314. data/spec/mongoid/fields/internal/foreign_keys/object_spec.rb +22 -22
  315. data/spec/mongoid/fields/localized_spec.rb +23 -23
  316. data/spec/mongoid/fields/standard_spec.rb +12 -12
  317. data/spec/mongoid/fields_spec.rb +168 -209
  318. data/spec/mongoid/{finders_spec.rb → findable_spec.rb} +62 -27
  319. data/spec/mongoid/indexable/specification_spec.rb +102 -0
  320. data/spec/mongoid/{indexes_spec.rb → indexable_spec.rb} +171 -51
  321. data/spec/mongoid/{inspection_spec.rb → inspectable_spec.rb} +6 -14
  322. data/spec/mongoid/{callbacks_spec.rb → interceptable_spec.rb} +105 -105
  323. data/spec/mongoid/log_subscriber_spec.rb +74 -0
  324. data/spec/mongoid/loggable_spec.rb +1 -1
  325. data/spec/mongoid/{matchers → matchable}/all_spec.rb +4 -4
  326. data/spec/mongoid/{matchers → matchable}/and_spec.rb +11 -11
  327. data/spec/mongoid/{matchers → matchable}/default_spec.rb +15 -15
  328. data/spec/mongoid/{matchers → matchable}/exists_spec.rb +5 -5
  329. data/spec/mongoid/{matchers → matchable}/gt_spec.rb +9 -8
  330. data/spec/mongoid/{matchers → matchable}/gte_spec.rb +7 -7
  331. data/spec/mongoid/matchable/in_spec.rb +49 -0
  332. data/spec/mongoid/{matchers → matchable}/lt_spec.rb +7 -7
  333. data/spec/mongoid/{matchers → matchable}/lte_spec.rb +7 -7
  334. data/spec/mongoid/{matchers → matchable}/ne_spec.rb +3 -3
  335. data/spec/mongoid/matchable/nin_spec.rb +48 -0
  336. data/spec/mongoid/{matchers → matchable}/or_spec.rb +6 -6
  337. data/spec/mongoid/{matchers → matchable}/size_spec.rb +3 -3
  338. data/spec/mongoid/{matchers_spec.rb → matchable_spec.rb} +41 -41
  339. data/spec/mongoid/persistable/creatable_spec.rb +512 -0
  340. data/spec/mongoid/persistable/deletable_spec.rb +205 -0
  341. data/spec/mongoid/persistable/destroyable_spec.rb +148 -0
  342. data/spec/mongoid/persistable/incrementable_spec.rb +173 -0
  343. data/spec/mongoid/persistable/logical_spec.rb +143 -0
  344. data/spec/mongoid/persistable/poppable_spec.rb +115 -0
  345. data/spec/mongoid/persistable/pullable_spec.rb +228 -0
  346. data/spec/mongoid/persistable/pushable_spec.rb +258 -0
  347. data/spec/mongoid/persistable/renamable_spec.rb +135 -0
  348. data/spec/mongoid/persistable/savable_spec.rb +432 -0
  349. data/spec/mongoid/persistable/settable_spec.rb +139 -0
  350. data/spec/mongoid/persistable/unsettable_spec.rb +155 -0
  351. data/spec/mongoid/persistable/updatable_spec.rb +558 -0
  352. data/spec/mongoid/persistable/upsertable_spec.rb +106 -0
  353. data/spec/mongoid/persistable_spec.rb +206 -0
  354. data/spec/mongoid/{atomic/positionable_spec.rb → positional_spec.rb} +19 -14
  355. data/spec/mongoid/railties/document_spec.rb +2 -2
  356. data/spec/mongoid/relations/accessors_spec.rb +53 -145
  357. data/spec/mongoid/relations/auto_save_spec.rb +36 -16
  358. data/spec/mongoid/relations/bindings/embedded/in_spec.rb +6 -6
  359. data/spec/mongoid/relations/bindings/embedded/many_spec.rb +2 -2
  360. data/spec/mongoid/relations/bindings/embedded/one_spec.rb +3 -3
  361. data/spec/mongoid/relations/bindings/referenced/in_spec.rb +12 -12
  362. data/spec/mongoid/relations/bindings/referenced/many_spec.rb +6 -6
  363. data/spec/mongoid/relations/bindings/referenced/many_to_many_spec.rb +9 -9
  364. data/spec/mongoid/relations/bindings/referenced/one_spec.rb +6 -6
  365. data/spec/mongoid/relations/builders/embedded/in_spec.rb +4 -4
  366. data/spec/mongoid/relations/builders/embedded/many_spec.rb +18 -18
  367. data/spec/mongoid/relations/builders/embedded/one_spec.rb +11 -11
  368. data/spec/mongoid/relations/builders/nested_attributes/many_spec.rb +12 -13
  369. data/spec/mongoid/relations/builders/nested_attributes/one_spec.rb +14 -14
  370. data/spec/mongoid/relations/builders/referenced/in_spec.rb +22 -33
  371. data/spec/mongoid/relations/builders/referenced/many_spec.rb +15 -15
  372. data/spec/mongoid/relations/builders/referenced/many_to_many_spec.rb +18 -18
  373. data/spec/mongoid/relations/builders/referenced/one_spec.rb +11 -24
  374. data/spec/mongoid/relations/builders_spec.rb +21 -21
  375. data/spec/mongoid/relations/cascading/delete_spec.rb +7 -7
  376. data/spec/mongoid/relations/cascading/destroy_spec.rb +2 -2
  377. data/spec/mongoid/relations/cascading/nullify_spec.rb +2 -2
  378. data/spec/mongoid/relations/cascading/restrict_spec.rb +3 -3
  379. data/spec/mongoid/relations/cascading_spec.rb +16 -16
  380. data/spec/mongoid/relations/constraint_spec.rb +8 -7
  381. data/spec/mongoid/relations/conversions_spec.rb +16 -14
  382. data/spec/mongoid/relations/counter_cache_spec.rb +85 -0
  383. data/spec/mongoid/relations/cyclic_spec.rb +18 -18
  384. data/spec/mongoid/relations/eager/belongs_to_spec.rb +154 -0
  385. data/spec/mongoid/relations/eager/has_and_belongs_to_many_spec.rb +143 -0
  386. data/spec/mongoid/relations/eager/has_many_spec.rb +207 -0
  387. data/spec/mongoid/relations/eager/has_one_spec.rb +163 -0
  388. data/spec/mongoid/relations/eager_spec.rb +228 -0
  389. data/spec/mongoid/relations/embedded/dirty_spec.rb +8 -8
  390. data/spec/mongoid/relations/embedded/in_spec.rb +55 -56
  391. data/spec/mongoid/relations/embedded/many_spec.rb +357 -367
  392. data/spec/mongoid/relations/embedded/one_spec.rb +98 -139
  393. data/spec/mongoid/relations/macros_spec.rb +108 -102
  394. data/spec/mongoid/relations/metadata_spec.rb +147 -241
  395. data/spec/mongoid/relations/options_spec.rb +1 -1
  396. data/spec/mongoid/relations/polymorphic_spec.rb +13 -17
  397. data/spec/mongoid/relations/proxy_spec.rb +2 -2
  398. data/spec/mongoid/relations/referenced/in_spec.rb +128 -303
  399. data/spec/mongoid/relations/referenced/many_spec.rb +379 -522
  400. data/spec/mongoid/relations/referenced/many_to_many_spec.rb +345 -417
  401. data/spec/mongoid/relations/referenced/one_spec.rb +148 -263
  402. data/spec/mongoid/relations/reflections_spec.rb +6 -6
  403. data/spec/mongoid/relations/synchronization_spec.rb +46 -50
  404. data/spec/mongoid/relations/targets/enumerable_spec.rb +116 -116
  405. data/spec/mongoid/relations/touchable_spec.rb +296 -0
  406. data/spec/mongoid/relations_spec.rb +16 -15
  407. data/spec/mongoid/{reloading_spec.rb → reloadable_spec.rb} +20 -60
  408. data/spec/mongoid/{scoping_spec.rb → scopable_spec.rb} +74 -126
  409. data/spec/mongoid/selectable_spec.rb +134 -0
  410. data/spec/mongoid/{serialization_spec.rb → serializable_spec.rb} +111 -82
  411. data/spec/mongoid/sessions/factory_spec.rb +49 -28
  412. data/spec/mongoid/sessions/mongo_uri_spec.rb +7 -7
  413. data/spec/mongoid/sessions/options_spec.rb +92 -0
  414. data/spec/mongoid/sessions_spec.rb +288 -177
  415. data/spec/mongoid/{sharding_spec.rb → shardable_spec.rb} +8 -8
  416. data/spec/mongoid/state_spec.rb +10 -10
  417. data/spec/mongoid/threaded_spec.rb +17 -70
  418. data/spec/mongoid/timestamps/created/short_spec.rb +6 -6
  419. data/spec/mongoid/timestamps/created_spec.rb +5 -5
  420. data/spec/mongoid/timestamps/updated/short_spec.rb +10 -10
  421. data/spec/mongoid/timestamps/updated_spec.rb +8 -12
  422. data/spec/mongoid/timestamps_spec.rb +7 -11
  423. data/spec/mongoid/{hierarchy_spec.rb → traversable_spec.rb} +19 -19
  424. data/spec/mongoid/{validations → validatable}/associated_spec.rb +18 -18
  425. data/spec/mongoid/{validations → validatable}/format_spec.rb +6 -6
  426. data/spec/mongoid/{validations → validatable}/length_spec.rb +7 -7
  427. data/spec/mongoid/{validations → validatable}/numericality_spec.rb +1 -1
  428. data/spec/mongoid/{validations → validatable}/presence_spec.rb +31 -38
  429. data/spec/mongoid/{validations → validatable}/uniqueness_spec.rb +126 -183
  430. data/spec/mongoid/{validations_spec.rb → validatable_spec.rb} +28 -28
  431. data/spec/mongoid_spec.rb +8 -8
  432. data/spec/rails/mongoid_spec.rb +72 -87
  433. data/spec/spec_helper.rb +19 -17
  434. metadata +261 -283
  435. data/lib/mongoid/atomic/positionable.rb +0 -73
  436. data/lib/mongoid/components.rb +0 -92
  437. data/lib/mongoid/config/inflections.rb +0 -6
  438. data/lib/mongoid/contextual/eager.rb +0 -158
  439. data/lib/mongoid/criterion/findable.rb +0 -179
  440. data/lib/mongoid/errors/versioning_not_on_root.rb +0 -23
  441. data/lib/mongoid/identity_map.rb +0 -163
  442. data/lib/mongoid/json.rb +0 -16
  443. data/lib/mongoid/matchers.rb +0 -32
  444. data/lib/mongoid/matchers/strategies.rb +0 -97
  445. data/lib/mongoid/multi_parameter_attributes.rb +0 -105
  446. data/lib/mongoid/nested_attributes.rb +0 -78
  447. data/lib/mongoid/observer.rb +0 -192
  448. data/lib/mongoid/paranoia.rb +0 -136
  449. data/lib/mongoid/persistence.rb +0 -357
  450. data/lib/mongoid/persistence/atomic.rb +0 -231
  451. data/lib/mongoid/persistence/atomic/add_to_set.rb +0 -47
  452. data/lib/mongoid/persistence/atomic/bit.rb +0 -35
  453. data/lib/mongoid/persistence/atomic/inc.rb +0 -45
  454. data/lib/mongoid/persistence/atomic/operation.rb +0 -154
  455. data/lib/mongoid/persistence/atomic/pop.rb +0 -32
  456. data/lib/mongoid/persistence/atomic/pull.rb +0 -32
  457. data/lib/mongoid/persistence/atomic/pull_all.rb +0 -32
  458. data/lib/mongoid/persistence/atomic/push.rb +0 -25
  459. data/lib/mongoid/persistence/atomic/push_all.rb +0 -25
  460. data/lib/mongoid/persistence/atomic/rename.rb +0 -30
  461. data/lib/mongoid/persistence/atomic/sets.rb +0 -28
  462. data/lib/mongoid/persistence/atomic/unset.rb +0 -27
  463. data/lib/mongoid/persistence/deletion.rb +0 -31
  464. data/lib/mongoid/persistence/insertion.rb +0 -38
  465. data/lib/mongoid/persistence/modification.rb +0 -35
  466. data/lib/mongoid/persistence/operations.rb +0 -214
  467. data/lib/mongoid/persistence/operations/embedded/insert.rb +0 -46
  468. data/lib/mongoid/persistence/operations/embedded/remove.rb +0 -43
  469. data/lib/mongoid/persistence/operations/insert.rb +0 -34
  470. data/lib/mongoid/persistence/operations/remove.rb +0 -33
  471. data/lib/mongoid/persistence/operations/update.rb +0 -59
  472. data/lib/mongoid/persistence/operations/upsert.rb +0 -28
  473. data/lib/mongoid/persistence/upsertion.rb +0 -31
  474. data/lib/mongoid/unit_of_work.rb +0 -61
  475. data/lib/mongoid/versioning.rb +0 -217
  476. data/lib/rack/mongoid.rb +0 -2
  477. data/lib/rack/mongoid/middleware/identity_map.rb +0 -39
  478. data/lib/rails/generators/mongoid/observer/observer_generator.rb +0 -17
  479. data/lib/rails/generators/mongoid/observer/templates/observer.rb.tt +0 -4
  480. data/spec/app/models/actor_observer.rb +0 -15
  481. data/spec/app/models/callback_recorder.rb +0 -25
  482. data/spec/app/models/draft.rb +0 -9
  483. data/spec/app/models/paranoid_phone.rb +0 -25
  484. data/spec/app/models/paranoid_post.rb +0 -36
  485. data/spec/app/models/phone_observer.rb +0 -6
  486. data/spec/mongoid/#atomic_spec.rb# +0 -365
  487. data/spec/mongoid/attributes/processing_spec.rb +0 -149
  488. data/spec/mongoid/criterion/destructive_spec.rb +0 -101
  489. data/spec/mongoid/criterion/modifiable_spec.rb +0 -409
  490. data/spec/mongoid/criterion/modification_spec.rb +0 -402
  491. data/spec/mongoid/errors/versioning_not_on_root_spec.rb +0 -29
  492. data/spec/mongoid/identity_map_spec.rb +0 -564
  493. data/spec/mongoid/json_spec.rb +0 -33
  494. data/spec/mongoid/matchers/in_spec.rb +0 -25
  495. data/spec/mongoid/matchers/nin_spec.rb +0 -25
  496. data/spec/mongoid/multi_parameter_attributes_spec.rb +0 -128
  497. data/spec/mongoid/observer_spec.rb +0 -290
  498. data/spec/mongoid/paranoia_spec.rb +0 -759
  499. data/spec/mongoid/persistence/atomic/add_to_set_spec.rb +0 -262
  500. data/spec/mongoid/persistence/atomic/bit_spec.rb +0 -88
  501. data/spec/mongoid/persistence/atomic/inc_spec.rb +0 -133
  502. data/spec/mongoid/persistence/atomic/pop_spec.rb +0 -111
  503. data/spec/mongoid/persistence/atomic/pull_all_spec.rb +0 -77
  504. data/spec/mongoid/persistence/atomic/pull_spec.rb +0 -80
  505. data/spec/mongoid/persistence/atomic/push_all_spec.rb +0 -77
  506. data/spec/mongoid/persistence/atomic/push_spec.rb +0 -77
  507. data/spec/mongoid/persistence/atomic/rename_spec.rb +0 -42
  508. data/spec/mongoid/persistence/atomic/sets_spec.rb +0 -154
  509. data/spec/mongoid/persistence/atomic/unset_spec.rb +0 -65
  510. data/spec/mongoid/persistence/atomic_spec.rb +0 -216
  511. data/spec/mongoid/persistence/operations/embedded/insert_spec.rb +0 -191
  512. data/spec/mongoid/persistence/operations/embedded/remove_spec.rb +0 -8
  513. data/spec/mongoid/persistence/operations/insert_spec.rb +0 -149
  514. data/spec/mongoid/persistence/operations/remove_spec.rb +0 -113
  515. data/spec/mongoid/persistence/operations/update_spec.rb +0 -141
  516. data/spec/mongoid/persistence/operations/upsert_spec.rb +0 -59
  517. data/spec/mongoid/persistence/operations_spec.rb +0 -313
  518. data/spec/mongoid/persistence_spec.rb +0 -2279
  519. data/spec/mongoid/unit_of_work_spec.rb +0 -196
  520. data/spec/mongoid/versioning_spec.rb +0 -540
  521. data/spec/rack/mongoid/middleware/identity_map_spec.rb +0 -72
@@ -1,6 +1,6 @@
1
1
  require "spec_helper"
2
2
 
3
- describe Mongoid::Scoping do
3
+ describe Mongoid::Scopable do
4
4
 
5
5
  describe ".default_scope" do
6
6
 
@@ -19,11 +19,11 @@ describe Mongoid::Scoping do
19
19
  end
20
20
 
21
21
  it "adds the default scope to the class" do
22
- Band.default_scoping.call.should eq(criteria)
22
+ expect(Band.default_scoping.call).to eq(criteria)
23
23
  end
24
24
 
25
25
  it "flags as being default scoped" do
26
- Band.should be_default_scoping
26
+ expect(Band).to be_default_scoping
27
27
  end
28
28
  end
29
29
 
@@ -42,11 +42,11 @@ describe Mongoid::Scoping do
42
42
  end
43
43
 
44
44
  it "adds the default scope to the class" do
45
- Band.default_scoping.call.should eq(criteria)
45
+ expect(Band.default_scoping.call).to eq(criteria)
46
46
  end
47
47
 
48
48
  it "flags as being default scoped" do
49
- Band.should be_default_scoping
49
+ expect(Band).to be_default_scoping
50
50
  end
51
51
  end
52
52
 
@@ -89,23 +89,23 @@ describe Mongoid::Scoping do
89
89
  end
90
90
 
91
91
  it "adds the first default scope" do
92
- Band.default_scoping.call.selector["name"].should eq("Depeche Mode")
92
+ expect(Band.default_scoping.call.selector["name"]).to eq("Depeche Mode")
93
93
  end
94
94
 
95
95
  it "adds the additional default scope" do
96
- Band.default_scoping.call.selector["origin"].should eq("England")
96
+ expect(Band.default_scoping.call.selector["origin"]).to eq("England")
97
97
  end
98
98
 
99
99
  it "adds the proc default scope" do
100
- Band.default_scoping.call.selector["active"].should be_true
100
+ expect(Band.default_scoping.call.selector["active"]).to be true
101
101
  end
102
102
 
103
103
  it "delays execution of the merge until called" do
104
- Band.all.selector["likes"].should_not eq(Band.all.selector["likes"])
104
+ expect(Band.all.selector["likes"]).to_not eq(Band.all.selector["likes"])
105
105
  end
106
106
 
107
107
  it "flags as being default scoped" do
108
- Band.should be_default_scoping
108
+ expect(Band).to be_default_scoping
109
109
  end
110
110
  end
111
111
  end
@@ -129,7 +129,7 @@ describe Mongoid::Scoping do
129
129
  context "when not in an unscoped block" do
130
130
 
131
131
  it "returns true" do
132
- Band.should be_default_scopable
132
+ expect(Band).to be_default_scopable
133
133
  end
134
134
  end
135
135
 
@@ -137,7 +137,7 @@ describe Mongoid::Scoping do
137
137
 
138
138
  it "returns false" do
139
139
  Band.unscoped do
140
- Band.should_not be_default_scopable
140
+ expect(Band).to_not be_default_scopable
141
141
  end
142
142
  end
143
143
  end
@@ -146,7 +146,7 @@ describe Mongoid::Scoping do
146
146
  context "when a default scope does not exist" do
147
147
 
148
148
  it "returns false" do
149
- Band.should_not be_default_scopable
149
+ expect(Band).to_not be_default_scopable
150
150
  end
151
151
  end
152
152
  end
@@ -156,7 +156,7 @@ describe Mongoid::Scoping do
156
156
  context "when no criteria exists on the stack" do
157
157
 
158
158
  it "returns an empty criteria" do
159
- Band.queryable.selector.should be_empty
159
+ expect(Band.queryable.selector).to be_empty
160
160
  end
161
161
  end
162
162
 
@@ -175,7 +175,7 @@ describe Mongoid::Scoping do
175
175
  end
176
176
 
177
177
  it "returns the criteria on the stack" do
178
- Band.queryable.should eq(criteria)
178
+ expect(Band.queryable).to eq(criteria)
179
179
  end
180
180
  end
181
181
  end
@@ -206,7 +206,7 @@ describe Mongoid::Scoping do
206
206
  end
207
207
 
208
208
  it "adds the extension to the scope" do
209
- scope.selector.should eq({ "active" => true, "origin" => "Deutschland" })
209
+ expect(scope.selector).to eq({ "active" => true, "origin" => "Deutschland" })
210
210
  end
211
211
  end
212
212
 
@@ -241,7 +241,7 @@ describe Mongoid::Scoping do
241
241
  end
242
242
 
243
243
  it "returns the correct documents" do
244
- scoped.should eq([ undertow ])
244
+ expect(scoped).to eq([ undertow ])
245
245
  end
246
246
  end
247
247
  end
@@ -260,7 +260,7 @@ describe Mongoid::Scoping do
260
260
  end
261
261
 
262
262
  it "adds a method for the scope" do
263
- Band.should respond_to(:active)
263
+ expect(Band).to respond_to(:active)
264
264
  end
265
265
 
266
266
  context "when calling the scope" do
@@ -272,15 +272,15 @@ describe Mongoid::Scoping do
272
272
  end
273
273
 
274
274
  it "returns a criteria" do
275
- scope.should be_a(Mongoid::Criteria)
275
+ expect(scope).to be_a(Mongoid::Criteria)
276
276
  end
277
277
 
278
278
  it "contains the proper selector" do
279
- scope.selector.should eq({ "active" => true })
279
+ expect(scope.selector).to eq({ "active" => true })
280
280
  end
281
281
 
282
282
  it "contains the proper options" do
283
- scope.options.should eq({ skip: 10 })
283
+ expect(scope.options).to eq({ skip: 10 })
284
284
  end
285
285
  end
286
286
 
@@ -302,19 +302,19 @@ describe Mongoid::Scoping do
302
302
  end
303
303
 
304
304
  it "returns a criteria" do
305
- scope.should be_a(Mongoid::Criteria)
305
+ expect(scope).to be_a(Mongoid::Criteria)
306
306
  end
307
307
 
308
308
  it "contains the proper selector" do
309
- scope.selector.should eq({ "active" => true, "origin" => "England" })
309
+ expect(scope.selector).to eq({ "active" => true, "origin" => "England" })
310
310
  end
311
311
 
312
312
  it "contains the proper options" do
313
- scope.options.should eq({ skip: 10 })
313
+ expect(scope.options).to eq({ skip: 10 })
314
314
  end
315
315
 
316
316
  it "does not modify the original scope" do
317
- Band.active.selector.should eq({ "active" => true })
317
+ expect(Band.active.selector).to eq({ "active" => true })
318
318
  end
319
319
  end
320
320
 
@@ -329,23 +329,23 @@ describe Mongoid::Scoping do
329
329
  end
330
330
 
331
331
  it "returns a criteria" do
332
- scope.should be_a(Mongoid::Criteria)
332
+ expect(scope).to be_a(Mongoid::Criteria)
333
333
  end
334
334
 
335
335
  it "contains the proper selector" do
336
- scope.selector.should eq({ "origin" => "England", "active" => true })
336
+ expect(scope.selector).to eq({ "origin" => "England", "active" => true })
337
337
  end
338
338
 
339
339
  it "contains the proper options" do
340
- scope.options.should eq({ skip: 10 })
340
+ expect(scope.options).to eq({ skip: 10 })
341
341
  end
342
342
 
343
343
  it "does not modify the original scope" do
344
- Band.active.selector.should eq({ "active" => true })
344
+ expect(Band.active.selector).to eq({ "active" => true })
345
345
  end
346
346
 
347
347
  it "does not modify the original criteria" do
348
- criteria.selector.should eq({ "origin" => "England" })
348
+ expect(criteria.selector).to eq({ "origin" => "England" })
349
349
  end
350
350
  end
351
351
  end
@@ -417,7 +417,7 @@ describe Mongoid::Scoping do
417
417
  end
418
418
 
419
419
  it "adds the extension to the scope" do
420
- scope.selector.should eq({ "active" => true, "origin" => "Deutschland" })
420
+ expect(scope.selector).to eq({ "active" => true, "origin" => "Deutschland" })
421
421
  end
422
422
  end
423
423
 
@@ -425,30 +425,29 @@ describe Mongoid::Scoping do
425
425
 
426
426
  before do
427
427
  Band.scope(:active, ->{ Band.where(active: true).skip(10) })
428
+ Band.scope(:named_by, ->(name) { Band.where(name: name) if name })
428
429
  end
429
430
 
430
431
  after do
431
432
  class << Band
432
433
  undef_method :active
434
+ undef_method :named_by
433
435
  end
434
436
  Band._declared_scopes.clear
435
437
  end
436
438
 
437
439
  it "adds a method for the scope" do
438
- Band.should respond_to(:active)
440
+ expect(Band).to respond_to(:active)
439
441
  end
440
442
 
441
- context "when proc return nil" do
442
- before do
443
- Band.scope(:named_by, ->(name) { Band.where(name: name) if name})
444
- end
443
+ context "when calling the scope" do
445
444
 
446
- it "return a all criteral" do
447
- Band.named_by(nil).should be_a(Mongoid::Criteria)
448
- end
449
- end
445
+ context "when the scope would return nil" do
450
446
 
451
- context "when calling the scope" do
447
+ it "returns a chainable empty scope" do
448
+ expect(Band.named_by(nil)).to be_a(Mongoid::Criteria)
449
+ end
450
+ end
452
451
 
453
452
  context "when calling from the class" do
454
453
 
@@ -457,15 +456,15 @@ describe Mongoid::Scoping do
457
456
  end
458
457
 
459
458
  it "returns a criteria" do
460
- scope.should be_a(Mongoid::Criteria)
459
+ expect(scope).to be_a(Mongoid::Criteria)
461
460
  end
462
461
 
463
462
  it "contains the proper selector" do
464
- scope.selector.should eq({ "active" => true })
463
+ expect(scope.selector).to eq({ "active" => true })
465
464
  end
466
465
 
467
466
  it "contains the proper options" do
468
- scope.options.should eq({ skip: 10 })
467
+ expect(scope.options).to eq({ skip: 10 })
469
468
  end
470
469
  end
471
470
 
@@ -487,19 +486,19 @@ describe Mongoid::Scoping do
487
486
  end
488
487
 
489
488
  it "returns a criteria" do
490
- scope.should be_a(Mongoid::Criteria)
489
+ expect(scope).to be_a(Mongoid::Criteria)
491
490
  end
492
491
 
493
492
  it "contains the proper selector" do
494
- scope.selector.should eq({ "active" => true, "origin" => "England" })
493
+ expect(scope.selector).to eq({ "active" => true, "origin" => "England" })
495
494
  end
496
495
 
497
496
  it "contains the proper options" do
498
- scope.options.should eq({ skip: 10 })
497
+ expect(scope.options).to eq({ skip: 10 })
499
498
  end
500
499
 
501
500
  it "does not modify the original scope" do
502
- Band.active.selector.should eq({ "active" => true })
501
+ expect(Band.active.selector).to eq({ "active" => true })
503
502
  end
504
503
  end
505
504
 
@@ -514,23 +513,23 @@ describe Mongoid::Scoping do
514
513
  end
515
514
 
516
515
  it "returns a criteria" do
517
- scope.should be_a(Mongoid::Criteria)
516
+ expect(scope).to be_a(Mongoid::Criteria)
518
517
  end
519
518
 
520
519
  it "contains the proper selector" do
521
- scope.selector.should eq({ "origin" => "England", "active" => true })
520
+ expect(scope.selector).to eq({ "origin" => "England", "active" => true })
522
521
  end
523
522
 
524
523
  it "contains the proper options" do
525
- scope.options.should eq({ skip: 10 })
524
+ expect(scope.options).to eq({ skip: 10 })
526
525
  end
527
526
 
528
527
  it "does not modify the original scope" do
529
- Band.active.selector.should eq({ "active" => true })
528
+ expect(Band.active.selector).to eq({ "active" => true })
530
529
  end
531
530
 
532
531
  it "does not modify the original criteria" do
533
- criteria.selector.should eq({ "origin" => "England" })
532
+ expect(criteria.selector).to eq({ "origin" => "England" })
534
533
  end
535
534
  end
536
535
  end
@@ -613,7 +612,7 @@ describe Mongoid::Scoping do
613
612
  end
614
613
 
615
614
  it "properly chains the $or queries together" do
616
- criteria.selector.should eq({
615
+ expect(criteria.selector).to eq({
617
616
  "$or" => [
618
617
  { "ccc" => nil },
619
618
  { "ccc" => { "$gt" => time }},
@@ -675,7 +674,7 @@ describe Mongoid::Scoping do
675
674
  context "when the scope stack has not been accessed" do
676
675
 
677
676
  it "returns an empty array" do
678
- Band.scope_stack.should eq([])
677
+ expect(Band.scope_stack).to eq([])
679
678
  end
680
679
  end
681
680
 
@@ -694,7 +693,7 @@ describe Mongoid::Scoping do
694
693
  end
695
694
 
696
695
  it "returns the criteria in the array" do
697
- Band.scope_stack.should eq([ criteria ])
696
+ expect(Band.scope_stack).to eq([ criteria ])
698
697
  end
699
698
  end
700
699
  end
@@ -708,15 +707,15 @@ describe Mongoid::Scoping do
708
707
  end
709
708
 
710
709
  it "returns a criteria" do
711
- scoped.should be_a(Mongoid::Criteria)
710
+ expect(scoped).to be_a(Mongoid::Criteria)
712
711
  end
713
712
 
714
713
  it "contains an empty selector" do
715
- scoped.selector.should be_empty
714
+ expect(scoped.selector).to be_empty
716
715
  end
717
716
 
718
717
  it "contains empty options" do
719
- scoped.options.should be_empty
718
+ expect(scoped.options).to be_empty
720
719
  end
721
720
  end
722
721
 
@@ -727,15 +726,15 @@ describe Mongoid::Scoping do
727
726
  end
728
727
 
729
728
  it "returns a criteria" do
730
- scoped.should be_a(Mongoid::Criteria)
729
+ expect(scoped).to be_a(Mongoid::Criteria)
731
730
  end
732
731
 
733
732
  it "contains an empty selector" do
734
- scoped.selector.should be_empty
733
+ expect(scoped.selector).to be_empty
735
734
  end
736
735
 
737
736
  it "contains the options" do
738
- scoped.options.should eq({ skip: 10, limit: 10 })
737
+ expect(scoped.options).to eq({ skip: 10, limit: 10 })
739
738
  end
740
739
  end
741
740
 
@@ -758,7 +757,7 @@ describe Mongoid::Scoping do
758
757
  end
759
758
 
760
759
  it "allows the default scope to be added" do
761
- scoped.selector.should eq({ "name" => "Depeche Mode" })
760
+ expect(scoped.selector).to eq({ "name" => "Depeche Mode" })
762
761
  end
763
762
 
764
763
  context "when chained after an unscoped criteria" do
@@ -768,7 +767,7 @@ describe Mongoid::Scoping do
768
767
  end
769
768
 
770
769
  it "reapplies the default scope" do
771
- scoped.selector.should eq({ "name" => "Depeche Mode" })
770
+ expect(scoped.selector).to eq({ "name" => "Depeche Mode" })
772
771
  end
773
772
  end
774
773
  end
@@ -795,7 +794,7 @@ describe Mongoid::Scoping do
795
794
  end
796
795
 
797
796
  it "removes the default scope from the criteria" do
798
- unscoped.selector.should be_empty
797
+ expect(unscoped.selector).to be_empty
799
798
  end
800
799
 
801
800
  context "when chained after a scoped criteria" do
@@ -805,7 +804,7 @@ describe Mongoid::Scoping do
805
804
  end
806
805
 
807
806
  it "removes all scoping" do
808
- unscoped.selector.should be_empty
807
+ expect(unscoped.selector).to be_empty
809
808
  end
810
809
  end
811
810
  end
@@ -816,7 +815,7 @@ describe Mongoid::Scoping do
816
815
 
817
816
  it "does not allow default scoping to be added in the block" do
818
817
  Band.unscoped do
819
- Band.skip(10).selector.should be_empty
818
+ expect(Band.skip(10).selector).to be_empty
820
819
  end
821
820
  end
822
821
  end
@@ -825,7 +824,7 @@ describe Mongoid::Scoping do
825
824
 
826
825
  it "does not allow default scoping to be added in the block" do
827
826
  Band.unscoped do
828
- Band.scoped.selector.should be_empty
827
+ expect(Band.scoped.selector).to be_empty
829
828
  end
830
829
  end
831
830
  end
@@ -845,7 +844,7 @@ describe Mongoid::Scoping do
845
844
 
846
845
  it "does not allow the default scope to be applied" do
847
846
  Band.unscoped do
848
- Band.skipped.selector.should be_empty
847
+ expect(Band.skipped.selector).to be_empty
849
848
  end
850
849
  end
851
850
  end
@@ -870,7 +869,7 @@ describe Mongoid::Scoping do
870
869
 
871
870
  it "returns an empty criteria" do
872
871
  Band.unscoped do
873
- Band.with_default_scope.selector.should be_empty
872
+ expect(Band.with_default_scope.selector).to be_empty
874
873
  end
875
874
  end
876
875
  end
@@ -882,7 +881,7 @@ describe Mongoid::Scoping do
882
881
  end
883
882
 
884
883
  it "returns an empty criteria" do
885
- scoped.selector.should be_empty
884
+ expect(scoped.selector).to be_empty
886
885
  end
887
886
  end
888
887
 
@@ -893,7 +892,7 @@ describe Mongoid::Scoping do
893
892
  end
894
893
 
895
894
  it "returns a scoped criteria" do
896
- scoped.selector.should eq({ "name" => "Depeche Mode" })
895
+ expect(scoped.selector).to eq({ "name" => "Depeche Mode" })
897
896
  end
898
897
  end
899
898
  end
@@ -906,13 +905,13 @@ describe Mongoid::Scoping do
906
905
 
907
906
  it "yields to the criteria" do
908
907
  Band.with_scope(criteria) do |crit|
909
- crit.selector.should eq({ "active" => true })
908
+ expect(crit.selector).to eq({ "active" => true })
910
909
  end
911
910
  end
912
911
 
913
912
  it "pops the criteria off the stack" do
914
913
  Band.with_scope(criteria) {}
915
- Band.scope_stack.should be_empty
914
+ expect(Band.scope_stack).to be_empty
916
915
  end
917
916
  end
918
917
 
@@ -920,58 +919,7 @@ describe Mongoid::Scoping do
920
919
 
921
920
  it "sets the threading options" do
922
921
  Band.without_default_scope do
923
- Mongoid::Threaded.should be_executing(:without_default_scope)
924
- end
925
- end
926
- end
927
-
928
- context "when the document is paranoid" do
929
-
930
- context "when calling a class method" do
931
-
932
- let(:criteria) do
933
- Fish.fresh
934
- end
935
-
936
- it "includes the deleted_at criteria in the selector" do
937
- criteria.selector.should eq({
938
- "deleted_at" => nil, "fresh" => true
939
- })
940
- end
941
- end
942
-
943
- context "when chaining a class method to unscoped" do
944
-
945
- let(:criteria) do
946
- Fish.unscoped.fresh
947
- end
948
-
949
- it "does not include the deleted_at in the selector" do
950
- criteria.selector.should eq({ "fresh" => true })
951
- end
952
- end
953
-
954
- context "when chaining a class method to deleted" do
955
-
956
- let(:criteria) do
957
- Fish.deleted.fresh
958
- end
959
-
960
- it "includes the deleted_at $ne criteria in the selector" do
961
- criteria.selector.should eq({
962
- "deleted_at" => { "$ne" => nil }, "fresh" => true
963
- })
964
- end
965
- end
966
-
967
- context "when chaining a where to unscoped" do
968
-
969
- let(:criteria) do
970
- Fish.unscoped.where(fresh: true)
971
- end
972
-
973
- it "includes no default scoping information in the selector" do
974
- criteria.selector.should eq({ "fresh" => true })
922
+ expect(Mongoid::Threaded).to be_executing(:without_default_scope)
975
923
  end
976
924
  end
977
925
  end