mongoid 3.1.6 → 4.0.2

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