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