mongoid 3.1.7 → 4.0.0.alpha1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (521) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +317 -11
  3. data/README.md +4 -5
  4. data/lib/config/locales/en.yml +9 -12
  5. data/lib/mongoid.rb +6 -75
  6. data/lib/mongoid/atomic.rb +0 -11
  7. data/lib/mongoid/atomic/paths/embedded.rb +0 -30
  8. data/lib/mongoid/atomic/paths/root.rb +0 -13
  9. data/lib/mongoid/attributes.rb +30 -108
  10. data/lib/mongoid/attributes/dynamic.rb +154 -0
  11. data/lib/mongoid/attributes/nested.rb +82 -0
  12. data/lib/mongoid/attributes/processing.rb +13 -66
  13. data/lib/mongoid/{dirty.rb → changeable.rb} +5 -2
  14. data/lib/mongoid/composable.rb +104 -0
  15. data/lib/mongoid/config.rb +3 -9
  16. data/lib/mongoid/config/options.rb +1 -1
  17. data/lib/mongoid/contextual/aggregable/mongo.rb +5 -9
  18. data/lib/mongoid/contextual/atomic.rb +53 -53
  19. data/lib/mongoid/contextual/command.rb +26 -0
  20. data/lib/mongoid/contextual/map_reduce.rb +1 -1
  21. data/lib/mongoid/contextual/memory.rb +6 -5
  22. data/lib/mongoid/contextual/mongo.rb +59 -28
  23. data/lib/mongoid/contextual/text_search.rb +180 -0
  24. data/lib/mongoid/copyable.rb +2 -3
  25. data/lib/mongoid/criteria.rb +13 -33
  26. data/lib/mongoid/criteria/{#findable.rb# → findable.rb} +0 -2
  27. data/lib/mongoid/{criterion/inspection.rb → criteria/inspectable.rb} +2 -2
  28. data/lib/mongoid/{criterion → criteria}/marshalable.rb +3 -1
  29. data/lib/mongoid/{criterion → criteria}/modifiable.rb +1 -1
  30. data/lib/mongoid/{criterion/scoping.rb → criteria/scopable.rb} +2 -2
  31. data/lib/mongoid/document.rb +28 -12
  32. data/lib/mongoid/errors.rb +1 -1
  33. data/lib/mongoid/errors/document_not_found.rb +2 -1
  34. data/lib/mongoid/errors/invalid_value.rb +16 -0
  35. data/lib/mongoid/errors/mongoid_error.rb +1 -1
  36. data/lib/mongoid/extensions.rb +2 -7
  37. data/lib/mongoid/extensions/array.rb +2 -2
  38. data/lib/mongoid/extensions/boolean.rb +14 -17
  39. data/lib/mongoid/extensions/float.rb +1 -0
  40. data/lib/mongoid/extensions/hash.rb +1 -1
  41. data/lib/mongoid/extensions/object.rb +4 -4
  42. data/lib/mongoid/extensions/object_id.rb +5 -5
  43. data/lib/mongoid/extensions/range.rb +8 -2
  44. data/lib/mongoid/extensions/string.rb +5 -17
  45. data/lib/mongoid/extensions/time.rb +2 -2
  46. data/lib/mongoid/factory.rb +3 -3
  47. data/lib/mongoid/fields.rb +9 -8
  48. data/lib/mongoid/fields/foreign_key.rb +3 -3
  49. data/lib/mongoid/fields/standard.rb +4 -16
  50. data/lib/mongoid/fields/validators/macro.rb +11 -3
  51. data/lib/mongoid/{finders.rb → findable.rb} +6 -2
  52. data/lib/mongoid/{indexes.rb → indexable.rb} +50 -55
  53. data/lib/mongoid/indexable/specification.rb +104 -0
  54. data/lib/mongoid/{indexes → indexable}/validators/options.rb +2 -1
  55. data/lib/mongoid/{inspection.rb → inspectable.rb} +15 -11
  56. data/lib/mongoid/{callbacks.rb → interceptable.rb} +3 -52
  57. data/lib/mongoid/log_subscriber.rb +22 -0
  58. data/lib/mongoid/matchable.rb +152 -0
  59. data/lib/mongoid/{matchers → matchable}/all.rb +1 -1
  60. data/lib/mongoid/{matchers → matchable}/and.rb +2 -2
  61. data/lib/mongoid/{matchers → matchable}/default.rb +1 -1
  62. data/lib/mongoid/{matchers → matchable}/exists.rb +1 -1
  63. data/lib/mongoid/{matchers → matchable}/gt.rb +1 -1
  64. data/lib/mongoid/{matchers → matchable}/gte.rb +1 -1
  65. data/lib/mongoid/{matchers → matchable}/in.rb +2 -2
  66. data/lib/mongoid/{matchers → matchable}/lt.rb +1 -1
  67. data/lib/mongoid/{matchers → matchable}/lte.rb +1 -1
  68. data/lib/mongoid/{matchers → matchable}/ne.rb +1 -1
  69. data/lib/mongoid/{matchers → matchable}/nin.rb +3 -2
  70. data/lib/mongoid/{matchers → matchable}/or.rb +2 -2
  71. data/lib/mongoid/{matchers → matchable}/size.rb +1 -1
  72. data/lib/mongoid/persistable.rb +212 -0
  73. data/lib/mongoid/persistable/creatable.rb +188 -0
  74. data/lib/mongoid/persistable/deletable.rb +148 -0
  75. data/lib/mongoid/persistable/destroyable.rb +55 -0
  76. data/lib/mongoid/persistable/incrementable.rb +36 -0
  77. data/lib/mongoid/persistable/logical.rb +38 -0
  78. data/lib/mongoid/persistable/poppable.rb +39 -0
  79. data/lib/mongoid/persistable/pullable.rb +55 -0
  80. data/lib/mongoid/persistable/pushable.rb +62 -0
  81. data/lib/mongoid/persistable/renamable.rb +35 -0
  82. data/lib/mongoid/persistable/savable.rb +52 -0
  83. data/lib/mongoid/persistable/settable.rb +33 -0
  84. data/lib/mongoid/persistable/unsettable.rb +36 -0
  85. data/lib/mongoid/persistable/updatable.rb +151 -0
  86. data/lib/mongoid/persistable/upsertable.rb +55 -0
  87. data/lib/mongoid/positional.rb +71 -0
  88. data/lib/mongoid/railtie.rb +32 -45
  89. data/lib/mongoid/railties/database.rake +12 -6
  90. data/lib/mongoid/relations.rb +3 -3
  91. data/lib/mongoid/relations/accessors.rb +13 -46
  92. data/lib/mongoid/relations/auto_save.rb +15 -36
  93. data/lib/mongoid/relations/binding.rb +0 -23
  94. data/lib/mongoid/relations/bindings/embedded/many.rb +1 -3
  95. data/lib/mongoid/relations/bindings/referenced/in.rb +3 -8
  96. data/lib/mongoid/relations/bindings/referenced/many_to_many.rb +3 -1
  97. data/lib/mongoid/relations/builder.rb +1 -1
  98. data/lib/mongoid/relations/builders.rb +2 -2
  99. data/lib/mongoid/relations/builders/nested_attributes/many.rb +10 -13
  100. data/lib/mongoid/relations/builders/nested_attributes/one.rb +4 -5
  101. data/lib/mongoid/relations/builders/referenced/in.rb +1 -1
  102. data/lib/mongoid/relations/builders/referenced/many.rb +1 -2
  103. data/lib/mongoid/relations/builders/referenced/many_to_many.rb +1 -2
  104. data/lib/mongoid/relations/builders/referenced/one.rb +1 -1
  105. data/lib/mongoid/relations/cascading.rb +3 -5
  106. data/lib/mongoid/relations/constraint.rb +1 -1
  107. data/lib/mongoid/relations/conversions.rb +1 -1
  108. data/lib/mongoid/relations/counter_cache.rb +39 -15
  109. data/lib/mongoid/relations/eager.rb +47 -0
  110. data/lib/mongoid/relations/eager/base.rb +57 -0
  111. data/lib/mongoid/relations/eager/belongs_to.rb +30 -0
  112. data/lib/mongoid/relations/eager/has_and_belongs_to_many.rb +40 -0
  113. data/lib/mongoid/relations/eager/has_many.rb +37 -0
  114. data/lib/mongoid/relations/eager/has_one.rb +29 -0
  115. data/lib/mongoid/relations/embedded/batchable.rb +3 -4
  116. data/lib/mongoid/relations/embedded/many.rb +7 -27
  117. data/lib/mongoid/relations/macros.rb +2 -4
  118. data/lib/mongoid/relations/many.rb +30 -31
  119. data/lib/mongoid/relations/metadata.rb +6 -75
  120. data/lib/mongoid/relations/nested_builder.rb +2 -2
  121. data/lib/mongoid/relations/options.rb +1 -0
  122. data/lib/mongoid/relations/polymorphic.rb +0 -1
  123. data/lib/mongoid/relations/proxy.rb +10 -32
  124. data/lib/mongoid/relations/referenced/in.rb +2 -18
  125. data/lib/mongoid/relations/referenced/many.rb +9 -22
  126. data/lib/mongoid/relations/referenced/many_to_many.rb +10 -33
  127. data/lib/mongoid/relations/referenced/one.rb +2 -21
  128. data/lib/mongoid/relations/synchronization.rb +3 -3
  129. data/lib/mongoid/relations/touchable.rb +33 -0
  130. data/lib/mongoid/{reloading.rb → reloadable.rb} +6 -4
  131. data/lib/mongoid/{scoping.rb → scopable.rb} +26 -3
  132. data/lib/mongoid/selectable.rb +59 -0
  133. data/lib/mongoid/{serialization.rb → serializable.rb} +10 -1
  134. data/lib/mongoid/sessions.rb +37 -345
  135. data/lib/mongoid/sessions/factory.rb +2 -0
  136. data/lib/mongoid/sessions/options.rb +176 -0
  137. data/lib/mongoid/sessions/storage_options.rb +140 -0
  138. data/lib/mongoid/sessions/thread_options.rb +19 -0
  139. data/lib/mongoid/sessions/validators/storage.rb +15 -1
  140. data/lib/mongoid/{sharding.rb → shardable.rb} +5 -1
  141. data/lib/mongoid/support/query_counter.rb +23 -0
  142. data/lib/mongoid/threaded.rb +0 -110
  143. data/lib/mongoid/threaded/lifecycle.rb +0 -28
  144. data/lib/mongoid/timestamps/updated/short.rb +2 -2
  145. data/lib/mongoid/{hierarchy.rb → traversable.rb} +9 -5
  146. data/lib/mongoid/{validations.rb → validatable.rb} +23 -9
  147. data/lib/mongoid/{validations → validatable}/associated.rb +3 -1
  148. data/lib/mongoid/{validations → validatable}/format.rb +1 -1
  149. data/lib/mongoid/{validations → validatable}/length.rb +1 -1
  150. data/lib/mongoid/{validations → validatable}/localizable.rb +1 -1
  151. data/lib/mongoid/{validations → validatable}/macros.rb +4 -3
  152. data/lib/mongoid/{validations → validatable}/presence.rb +1 -1
  153. data/lib/mongoid/{validations → validatable}/queryable.rb +1 -2
  154. data/lib/mongoid/{validations → validatable}/uniqueness.rb +3 -3
  155. data/lib/mongoid/version.rb +1 -1
  156. data/lib/rails/generators/mongoid/config/templates/mongoid.yml +9 -13
  157. data/lib/rails/generators/mongoid/model/model_generator.rb +0 -1
  158. data/lib/rails/generators/mongoid/model/templates/model.rb.tt +0 -3
  159. data/lib/rails/generators/mongoid_generator.rb +3 -40
  160. data/lib/rails/mongoid.rb +59 -57
  161. data/lib/support/ruby_version.rb +1 -1
  162. data/spec/app/models/account.rb +2 -6
  163. data/spec/app/models/acolyte.rb +1 -0
  164. data/spec/app/models/actor.rb +0 -1
  165. data/spec/app/models/address.rb +6 -1
  166. data/spec/app/models/animal.rb +1 -1
  167. data/spec/app/models/appointment.rb +2 -2
  168. data/spec/app/models/article.rb +1 -4
  169. data/spec/app/models/audio.rb +5 -0
  170. data/spec/app/models/author.rb +0 -2
  171. data/spec/app/models/band.rb +3 -2
  172. data/spec/app/models/bar.rb +1 -0
  173. data/spec/app/models/book.rb +1 -0
  174. data/spec/app/models/building.rb +0 -2
  175. data/spec/app/models/building_address.rb +0 -2
  176. data/spec/app/models/bus.rb +1 -1
  177. data/spec/app/models/canvas.rb +1 -1
  178. data/spec/app/models/contractor.rb +0 -2
  179. data/spec/app/models/country_code.rb +1 -1
  180. data/spec/app/models/definition.rb +2 -2
  181. data/spec/app/models/dragon.rb +4 -0
  182. data/spec/app/models/drug.rb +1 -3
  183. data/spec/app/models/dungeon.rb +4 -0
  184. data/spec/app/models/filesystem.rb +1 -0
  185. data/spec/app/models/fish.rb +0 -1
  186. data/spec/app/models/fruits.rb +6 -0
  187. data/spec/app/models/game.rb +0 -2
  188. data/spec/app/models/house.rb +0 -2
  189. data/spec/app/models/item.rb +1 -5
  190. data/spec/app/models/jar.rb +1 -1
  191. data/spec/app/models/label.rb +4 -4
  192. data/spec/app/models/login.rb +1 -1
  193. data/spec/app/models/movie.rb +1 -0
  194. data/spec/app/models/name.rb +3 -3
  195. data/spec/app/models/note.rb +1 -1
  196. data/spec/app/models/oscar.rb +1 -1
  197. data/spec/app/models/parent_doc.rb +1 -1
  198. data/spec/app/models/person.rb +13 -8
  199. data/spec/app/models/phone.rb +1 -3
  200. data/spec/app/models/player.rb +1 -1
  201. data/spec/app/models/post.rb +2 -1
  202. data/spec/app/models/quiz.rb +0 -3
  203. data/spec/app/models/record.rb +5 -5
  204. data/spec/app/models/registry.rb +1 -1
  205. data/spec/app/models/server.rb +1 -1
  206. data/spec/app/models/service.rb +3 -3
  207. data/spec/app/models/sound.rb +5 -0
  208. data/spec/app/models/template.rb +1 -1
  209. data/spec/app/models/title.rb +0 -1
  210. data/spec/app/models/track.rb +5 -5
  211. data/spec/app/models/tree.rb +1 -1
  212. data/spec/app/models/video.rb +0 -4
  213. data/spec/app/models/wiki_page.rb +1 -4
  214. data/spec/app/models/word.rb +3 -0
  215. data/spec/app/models/word_origin.rb +1 -1
  216. data/spec/config/mongoid.yml +7 -8
  217. data/spec/helpers.rb +18 -0
  218. data/spec/mongoid/atomic/modifiers_spec.rb +22 -22
  219. data/spec/mongoid/atomic/paths/embedded/many_spec.rb +8 -49
  220. data/spec/mongoid/atomic/paths/embedded/one_spec.rb +7 -49
  221. data/spec/mongoid/atomic/paths/root_spec.rb +3 -61
  222. data/spec/mongoid/atomic/paths_spec.rb +19 -19
  223. data/spec/mongoid/atomic_spec.rb +19 -19
  224. data/spec/mongoid/{nested_attributes_spec.rb → attributes/nested_spec.rb} +335 -448
  225. data/spec/mongoid/attributes/readonly_spec.rb +16 -16
  226. data/spec/mongoid/attributes_spec.rb +188 -434
  227. data/spec/mongoid/{dirty_spec.rb → changeable_spec.rb} +117 -148
  228. data/spec/mongoid/{components_spec.rb → composable_spec.rb} +3 -3
  229. data/spec/mongoid/config/environment_spec.rb +3 -3
  230. data/spec/mongoid/config/options_spec.rb +6 -6
  231. data/spec/mongoid/config_spec.rb +24 -48
  232. data/spec/mongoid/contextual/aggregable/memory_spec.rb +12 -12
  233. data/spec/mongoid/contextual/aggregable/mongo_spec.rb +46 -38
  234. data/spec/mongoid/contextual/atomic_spec.rb +60 -56
  235. data/spec/mongoid/contextual/find_and_modify_spec.rb +14 -14
  236. data/spec/mongoid/contextual/geo_near_spec.rb +22 -22
  237. data/spec/mongoid/contextual/map_reduce_spec.rb +27 -27
  238. data/spec/mongoid/contextual/memory_spec.rb +94 -94
  239. data/spec/mongoid/contextual/mongo_spec.rb +225 -139
  240. data/spec/mongoid/contextual/text_search_spec.rb +207 -0
  241. data/spec/mongoid/copyable_spec.rb +56 -68
  242. data/spec/mongoid/criteria/findable_spec.rb +991 -0
  243. data/spec/mongoid/{criterion/inspection_spec.rb → criteria/inspectable_spec.rb} +5 -5
  244. data/spec/mongoid/{criterion → criteria}/marshalable_spec.rb +2 -2
  245. data/spec/mongoid/criteria/modifiable_spec.rb +1063 -0
  246. data/spec/mongoid/{criterion/scoping_spec.rb → criteria/scopable_spec.rb} +31 -31
  247. data/spec/mongoid/criteria_spec.rb +530 -2207
  248. data/spec/mongoid/document_spec.rb +166 -120
  249. data/spec/mongoid/equality_spec.rb +22 -22
  250. data/spec/mongoid/errors/ambiguous_relationship_spec.rb +3 -3
  251. data/spec/mongoid/errors/callback_spec.rb +3 -3
  252. data/spec/mongoid/errors/delete_restriction_spec.rb +3 -3
  253. data/spec/mongoid/errors/document_not_found_spec.rb +11 -11
  254. data/spec/mongoid/errors/eager_load_spec.rb +3 -3
  255. data/spec/mongoid/errors/invalid_collection_spec.rb +3 -3
  256. data/spec/mongoid/errors/invalid_config_option_spec.rb +3 -3
  257. data/spec/mongoid/errors/invalid_field_option_spec.rb +3 -3
  258. data/spec/mongoid/errors/invalid_field_spec.rb +3 -3
  259. data/spec/mongoid/errors/invalid_find_spec.rb +3 -3
  260. data/spec/mongoid/errors/invalid_includes_spec.rb +3 -3
  261. data/spec/mongoid/errors/invalid_index_spec.rb +3 -3
  262. data/spec/mongoid/errors/invalid_options_spec.rb +3 -3
  263. data/spec/mongoid/errors/invalid_path_spec.rb +3 -3
  264. data/spec/mongoid/errors/invalid_scope_spec.rb +3 -3
  265. data/spec/mongoid/errors/invalid_set_polymorphic_relation_spec.rb +3 -3
  266. data/spec/mongoid/errors/invalid_storage_options_spec.rb +3 -3
  267. data/spec/mongoid/errors/invalid_time_spec.rb +3 -3
  268. data/spec/mongoid/errors/inverse_not_found_spec.rb +3 -3
  269. data/spec/mongoid/errors/mixed_relations_spec.rb +3 -3
  270. data/spec/mongoid/errors/mixed_session_configuration_spec.rb +3 -3
  271. data/spec/mongoid/errors/mongoid_error_spec.rb +7 -7
  272. data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +3 -3
  273. data/spec/mongoid/errors/no_environment_spec.rb +3 -3
  274. data/spec/mongoid/errors/no_map_reduce_output_spec.rb +3 -3
  275. data/spec/mongoid/errors/no_metadata_spec.rb +3 -3
  276. data/spec/mongoid/errors/no_parent_spec.rb +3 -3
  277. data/spec/mongoid/errors/no_session_config_spec.rb +3 -3
  278. data/spec/mongoid/errors/no_session_database_spec.rb +3 -3
  279. data/spec/mongoid/errors/no_session_hosts_spec.rb +3 -3
  280. data/spec/mongoid/errors/no_sessions_config_spec.rb +3 -3
  281. data/spec/mongoid/errors/readonly_attribute_spec.rb +3 -3
  282. data/spec/mongoid/errors/scope_overwrite_spec.rb +3 -3
  283. data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +3 -3
  284. data/spec/mongoid/errors/unknown_attribute_spec.rb +5 -5
  285. data/spec/mongoid/errors/unsaved_document_spec.rb +3 -3
  286. data/spec/mongoid/errors/unsupported_javascript_spec.rb +3 -3
  287. data/spec/mongoid/errors/validations_spec.rb +7 -7
  288. data/spec/mongoid/extensions/array_spec.rb +61 -61
  289. data/spec/mongoid/extensions/big_decimal_spec.rb +11 -11
  290. data/spec/mongoid/extensions/binary_spec.rb +12 -12
  291. data/spec/mongoid/extensions/boolean_spec.rb +18 -18
  292. data/spec/mongoid/extensions/date_spec.rb +13 -13
  293. data/spec/mongoid/extensions/date_time_spec.rb +9 -9
  294. data/spec/mongoid/extensions/false_class_spec.rb +5 -5
  295. data/spec/mongoid/extensions/float_spec.rb +29 -15
  296. data/spec/mongoid/extensions/hash_spec.rb +29 -29
  297. data/spec/mongoid/extensions/integer_spec.rb +15 -15
  298. data/spec/mongoid/extensions/module_spec.rb +2 -2
  299. data/spec/mongoid/extensions/nil_class_spec.rb +1 -1
  300. data/spec/mongoid/extensions/object_id_spec.rb +134 -134
  301. data/spec/mongoid/extensions/object_spec.rb +26 -26
  302. data/spec/mongoid/extensions/range_spec.rb +61 -12
  303. data/spec/mongoid/extensions/regexp_spec.rb +4 -4
  304. data/spec/mongoid/extensions/set_spec.rb +4 -4
  305. data/spec/mongoid/extensions/string_spec.rb +35 -46
  306. data/spec/mongoid/extensions/symbol_spec.rb +9 -9
  307. data/spec/mongoid/extensions/time_spec.rb +49 -49
  308. data/spec/mongoid/extensions/time_with_zone_spec.rb +34 -34
  309. data/spec/mongoid/extensions/true_class_spec.rb +5 -5
  310. data/spec/mongoid/extensions_spec.rb +15 -0
  311. data/spec/mongoid/factory_spec.rb +15 -15
  312. data/spec/mongoid/fields/foreign_key_spec.rb +73 -66
  313. data/spec/mongoid/fields/internal/foreign_keys/array_spec.rb +15 -15
  314. data/spec/mongoid/fields/internal/foreign_keys/object_spec.rb +22 -22
  315. data/spec/mongoid/fields/localized_spec.rb +23 -23
  316. data/spec/mongoid/fields/standard_spec.rb +12 -12
  317. data/spec/mongoid/fields_spec.rb +168 -209
  318. data/spec/mongoid/{finders_spec.rb → findable_spec.rb} +62 -27
  319. data/spec/mongoid/indexable/specification_spec.rb +102 -0
  320. data/spec/mongoid/{indexes_spec.rb → indexable_spec.rb} +171 -51
  321. data/spec/mongoid/{inspection_spec.rb → inspectable_spec.rb} +6 -14
  322. data/spec/mongoid/{callbacks_spec.rb → interceptable_spec.rb} +105 -105
  323. data/spec/mongoid/log_subscriber_spec.rb +74 -0
  324. data/spec/mongoid/loggable_spec.rb +1 -1
  325. data/spec/mongoid/{matchers → matchable}/all_spec.rb +4 -4
  326. data/spec/mongoid/{matchers → matchable}/and_spec.rb +11 -11
  327. data/spec/mongoid/{matchers → matchable}/default_spec.rb +15 -15
  328. data/spec/mongoid/{matchers → matchable}/exists_spec.rb +5 -5
  329. data/spec/mongoid/{matchers → matchable}/gt_spec.rb +9 -8
  330. data/spec/mongoid/{matchers → matchable}/gte_spec.rb +7 -7
  331. data/spec/mongoid/matchable/in_spec.rb +49 -0
  332. data/spec/mongoid/{matchers → matchable}/lt_spec.rb +7 -7
  333. data/spec/mongoid/{matchers → matchable}/lte_spec.rb +7 -7
  334. data/spec/mongoid/{matchers → matchable}/ne_spec.rb +3 -3
  335. data/spec/mongoid/matchable/nin_spec.rb +48 -0
  336. data/spec/mongoid/{matchers → matchable}/or_spec.rb +6 -6
  337. data/spec/mongoid/{matchers → matchable}/size_spec.rb +3 -3
  338. data/spec/mongoid/{matchers_spec.rb → matchable_spec.rb} +41 -41
  339. data/spec/mongoid/persistable/creatable_spec.rb +512 -0
  340. data/spec/mongoid/persistable/deletable_spec.rb +205 -0
  341. data/spec/mongoid/persistable/destroyable_spec.rb +148 -0
  342. data/spec/mongoid/persistable/incrementable_spec.rb +173 -0
  343. data/spec/mongoid/persistable/logical_spec.rb +143 -0
  344. data/spec/mongoid/persistable/poppable_spec.rb +115 -0
  345. data/spec/mongoid/persistable/pullable_spec.rb +228 -0
  346. data/spec/mongoid/persistable/pushable_spec.rb +258 -0
  347. data/spec/mongoid/persistable/renamable_spec.rb +135 -0
  348. data/spec/mongoid/persistable/savable_spec.rb +432 -0
  349. data/spec/mongoid/persistable/settable_spec.rb +139 -0
  350. data/spec/mongoid/persistable/unsettable_spec.rb +155 -0
  351. data/spec/mongoid/persistable/updatable_spec.rb +558 -0
  352. data/spec/mongoid/persistable/upsertable_spec.rb +106 -0
  353. data/spec/mongoid/persistable_spec.rb +206 -0
  354. data/spec/mongoid/{atomic/positionable_spec.rb → positional_spec.rb} +19 -14
  355. data/spec/mongoid/railties/document_spec.rb +2 -2
  356. data/spec/mongoid/relations/accessors_spec.rb +53 -145
  357. data/spec/mongoid/relations/auto_save_spec.rb +36 -16
  358. data/spec/mongoid/relations/bindings/embedded/in_spec.rb +6 -6
  359. data/spec/mongoid/relations/bindings/embedded/many_spec.rb +2 -2
  360. data/spec/mongoid/relations/bindings/embedded/one_spec.rb +3 -3
  361. data/spec/mongoid/relations/bindings/referenced/in_spec.rb +12 -12
  362. data/spec/mongoid/relations/bindings/referenced/many_spec.rb +6 -6
  363. data/spec/mongoid/relations/bindings/referenced/many_to_many_spec.rb +9 -9
  364. data/spec/mongoid/relations/bindings/referenced/one_spec.rb +6 -6
  365. data/spec/mongoid/relations/builders/embedded/in_spec.rb +4 -4
  366. data/spec/mongoid/relations/builders/embedded/many_spec.rb +18 -18
  367. data/spec/mongoid/relations/builders/embedded/one_spec.rb +11 -11
  368. data/spec/mongoid/relations/builders/nested_attributes/many_spec.rb +12 -13
  369. data/spec/mongoid/relations/builders/nested_attributes/one_spec.rb +14 -14
  370. data/spec/mongoid/relations/builders/referenced/in_spec.rb +22 -33
  371. data/spec/mongoid/relations/builders/referenced/many_spec.rb +15 -15
  372. data/spec/mongoid/relations/builders/referenced/many_to_many_spec.rb +18 -18
  373. data/spec/mongoid/relations/builders/referenced/one_spec.rb +11 -24
  374. data/spec/mongoid/relations/builders_spec.rb +21 -21
  375. data/spec/mongoid/relations/cascading/delete_spec.rb +7 -7
  376. data/spec/mongoid/relations/cascading/destroy_spec.rb +2 -2
  377. data/spec/mongoid/relations/cascading/nullify_spec.rb +2 -2
  378. data/spec/mongoid/relations/cascading/restrict_spec.rb +3 -3
  379. data/spec/mongoid/relations/cascading_spec.rb +16 -16
  380. data/spec/mongoid/relations/constraint_spec.rb +8 -7
  381. data/spec/mongoid/relations/conversions_spec.rb +16 -14
  382. data/spec/mongoid/relations/counter_cache_spec.rb +85 -0
  383. data/spec/mongoid/relations/cyclic_spec.rb +18 -18
  384. data/spec/mongoid/relations/eager/belongs_to_spec.rb +154 -0
  385. data/spec/mongoid/relations/eager/has_and_belongs_to_many_spec.rb +143 -0
  386. data/spec/mongoid/relations/eager/has_many_spec.rb +207 -0
  387. data/spec/mongoid/relations/eager/has_one_spec.rb +163 -0
  388. data/spec/mongoid/relations/eager_spec.rb +228 -0
  389. data/spec/mongoid/relations/embedded/dirty_spec.rb +8 -8
  390. data/spec/mongoid/relations/embedded/in_spec.rb +55 -56
  391. data/spec/mongoid/relations/embedded/many_spec.rb +357 -367
  392. data/spec/mongoid/relations/embedded/one_spec.rb +98 -139
  393. data/spec/mongoid/relations/macros_spec.rb +108 -102
  394. data/spec/mongoid/relations/metadata_spec.rb +147 -241
  395. data/spec/mongoid/relations/options_spec.rb +1 -1
  396. data/spec/mongoid/relations/polymorphic_spec.rb +13 -17
  397. data/spec/mongoid/relations/proxy_spec.rb +2 -2
  398. data/spec/mongoid/relations/referenced/in_spec.rb +128 -303
  399. data/spec/mongoid/relations/referenced/many_spec.rb +379 -522
  400. data/spec/mongoid/relations/referenced/many_to_many_spec.rb +345 -417
  401. data/spec/mongoid/relations/referenced/one_spec.rb +148 -263
  402. data/spec/mongoid/relations/reflections_spec.rb +6 -6
  403. data/spec/mongoid/relations/synchronization_spec.rb +46 -50
  404. data/spec/mongoid/relations/targets/enumerable_spec.rb +116 -116
  405. data/spec/mongoid/relations/touchable_spec.rb +296 -0
  406. data/spec/mongoid/relations_spec.rb +16 -15
  407. data/spec/mongoid/{reloading_spec.rb → reloadable_spec.rb} +20 -60
  408. data/spec/mongoid/{scoping_spec.rb → scopable_spec.rb} +74 -126
  409. data/spec/mongoid/selectable_spec.rb +134 -0
  410. data/spec/mongoid/{serialization_spec.rb → serializable_spec.rb} +111 -82
  411. data/spec/mongoid/sessions/factory_spec.rb +49 -28
  412. data/spec/mongoid/sessions/mongo_uri_spec.rb +7 -7
  413. data/spec/mongoid/sessions/options_spec.rb +92 -0
  414. data/spec/mongoid/sessions_spec.rb +288 -177
  415. data/spec/mongoid/{sharding_spec.rb → shardable_spec.rb} +8 -8
  416. data/spec/mongoid/state_spec.rb +10 -10
  417. data/spec/mongoid/threaded_spec.rb +17 -70
  418. data/spec/mongoid/timestamps/created/short_spec.rb +6 -6
  419. data/spec/mongoid/timestamps/created_spec.rb +5 -5
  420. data/spec/mongoid/timestamps/updated/short_spec.rb +10 -10
  421. data/spec/mongoid/timestamps/updated_spec.rb +8 -12
  422. data/spec/mongoid/timestamps_spec.rb +7 -11
  423. data/spec/mongoid/{hierarchy_spec.rb → traversable_spec.rb} +19 -19
  424. data/spec/mongoid/{validations → validatable}/associated_spec.rb +18 -18
  425. data/spec/mongoid/{validations → validatable}/format_spec.rb +6 -6
  426. data/spec/mongoid/{validations → validatable}/length_spec.rb +7 -7
  427. data/spec/mongoid/{validations → validatable}/numericality_spec.rb +1 -1
  428. data/spec/mongoid/{validations → validatable}/presence_spec.rb +31 -38
  429. data/spec/mongoid/{validations → validatable}/uniqueness_spec.rb +126 -183
  430. data/spec/mongoid/{validations_spec.rb → validatable_spec.rb} +28 -28
  431. data/spec/mongoid_spec.rb +8 -8
  432. data/spec/rails/mongoid_spec.rb +72 -87
  433. data/spec/spec_helper.rb +19 -17
  434. metadata +261 -283
  435. data/lib/mongoid/atomic/positionable.rb +0 -73
  436. data/lib/mongoid/components.rb +0 -92
  437. data/lib/mongoid/config/inflections.rb +0 -6
  438. data/lib/mongoid/contextual/eager.rb +0 -158
  439. data/lib/mongoid/criterion/findable.rb +0 -179
  440. data/lib/mongoid/errors/versioning_not_on_root.rb +0 -23
  441. data/lib/mongoid/identity_map.rb +0 -163
  442. data/lib/mongoid/json.rb +0 -16
  443. data/lib/mongoid/matchers.rb +0 -32
  444. data/lib/mongoid/matchers/strategies.rb +0 -97
  445. data/lib/mongoid/multi_parameter_attributes.rb +0 -105
  446. data/lib/mongoid/nested_attributes.rb +0 -78
  447. data/lib/mongoid/observer.rb +0 -192
  448. data/lib/mongoid/paranoia.rb +0 -136
  449. data/lib/mongoid/persistence.rb +0 -357
  450. data/lib/mongoid/persistence/atomic.rb +0 -231
  451. data/lib/mongoid/persistence/atomic/add_to_set.rb +0 -47
  452. data/lib/mongoid/persistence/atomic/bit.rb +0 -35
  453. data/lib/mongoid/persistence/atomic/inc.rb +0 -45
  454. data/lib/mongoid/persistence/atomic/operation.rb +0 -154
  455. data/lib/mongoid/persistence/atomic/pop.rb +0 -32
  456. data/lib/mongoid/persistence/atomic/pull.rb +0 -32
  457. data/lib/mongoid/persistence/atomic/pull_all.rb +0 -32
  458. data/lib/mongoid/persistence/atomic/push.rb +0 -25
  459. data/lib/mongoid/persistence/atomic/push_all.rb +0 -25
  460. data/lib/mongoid/persistence/atomic/rename.rb +0 -30
  461. data/lib/mongoid/persistence/atomic/sets.rb +0 -28
  462. data/lib/mongoid/persistence/atomic/unset.rb +0 -27
  463. data/lib/mongoid/persistence/deletion.rb +0 -31
  464. data/lib/mongoid/persistence/insertion.rb +0 -38
  465. data/lib/mongoid/persistence/modification.rb +0 -35
  466. data/lib/mongoid/persistence/operations.rb +0 -214
  467. data/lib/mongoid/persistence/operations/embedded/insert.rb +0 -46
  468. data/lib/mongoid/persistence/operations/embedded/remove.rb +0 -43
  469. data/lib/mongoid/persistence/operations/insert.rb +0 -34
  470. data/lib/mongoid/persistence/operations/remove.rb +0 -33
  471. data/lib/mongoid/persistence/operations/update.rb +0 -59
  472. data/lib/mongoid/persistence/operations/upsert.rb +0 -28
  473. data/lib/mongoid/persistence/upsertion.rb +0 -31
  474. data/lib/mongoid/unit_of_work.rb +0 -61
  475. data/lib/mongoid/versioning.rb +0 -217
  476. data/lib/rack/mongoid.rb +0 -2
  477. data/lib/rack/mongoid/middleware/identity_map.rb +0 -39
  478. data/lib/rails/generators/mongoid/observer/observer_generator.rb +0 -17
  479. data/lib/rails/generators/mongoid/observer/templates/observer.rb.tt +0 -4
  480. data/spec/app/models/actor_observer.rb +0 -15
  481. data/spec/app/models/callback_recorder.rb +0 -25
  482. data/spec/app/models/draft.rb +0 -9
  483. data/spec/app/models/paranoid_phone.rb +0 -25
  484. data/spec/app/models/paranoid_post.rb +0 -36
  485. data/spec/app/models/phone_observer.rb +0 -6
  486. data/spec/mongoid/#atomic_spec.rb# +0 -365
  487. data/spec/mongoid/attributes/processing_spec.rb +0 -149
  488. data/spec/mongoid/criterion/destructive_spec.rb +0 -101
  489. data/spec/mongoid/criterion/modifiable_spec.rb +0 -409
  490. data/spec/mongoid/criterion/modification_spec.rb +0 -402
  491. data/spec/mongoid/errors/versioning_not_on_root_spec.rb +0 -29
  492. data/spec/mongoid/identity_map_spec.rb +0 -564
  493. data/spec/mongoid/json_spec.rb +0 -33
  494. data/spec/mongoid/matchers/in_spec.rb +0 -25
  495. data/spec/mongoid/matchers/nin_spec.rb +0 -25
  496. data/spec/mongoid/multi_parameter_attributes_spec.rb +0 -128
  497. data/spec/mongoid/observer_spec.rb +0 -290
  498. data/spec/mongoid/paranoia_spec.rb +0 -759
  499. data/spec/mongoid/persistence/atomic/add_to_set_spec.rb +0 -262
  500. data/spec/mongoid/persistence/atomic/bit_spec.rb +0 -88
  501. data/spec/mongoid/persistence/atomic/inc_spec.rb +0 -133
  502. data/spec/mongoid/persistence/atomic/pop_spec.rb +0 -111
  503. data/spec/mongoid/persistence/atomic/pull_all_spec.rb +0 -77
  504. data/spec/mongoid/persistence/atomic/pull_spec.rb +0 -80
  505. data/spec/mongoid/persistence/atomic/push_all_spec.rb +0 -77
  506. data/spec/mongoid/persistence/atomic/push_spec.rb +0 -77
  507. data/spec/mongoid/persistence/atomic/rename_spec.rb +0 -42
  508. data/spec/mongoid/persistence/atomic/sets_spec.rb +0 -154
  509. data/spec/mongoid/persistence/atomic/unset_spec.rb +0 -65
  510. data/spec/mongoid/persistence/atomic_spec.rb +0 -216
  511. data/spec/mongoid/persistence/operations/embedded/insert_spec.rb +0 -191
  512. data/spec/mongoid/persistence/operations/embedded/remove_spec.rb +0 -8
  513. data/spec/mongoid/persistence/operations/insert_spec.rb +0 -149
  514. data/spec/mongoid/persistence/operations/remove_spec.rb +0 -113
  515. data/spec/mongoid/persistence/operations/update_spec.rb +0 -141
  516. data/spec/mongoid/persistence/operations/upsert_spec.rb +0 -59
  517. data/spec/mongoid/persistence/operations_spec.rb +0 -313
  518. data/spec/mongoid/persistence_spec.rb +0 -2279
  519. data/spec/mongoid/unit_of_work_spec.rb +0 -196
  520. data/spec/mongoid/versioning_spec.rb +0 -540
  521. data/spec/rack/mongoid/middleware/identity_map_spec.rb +0 -72
@@ -1,9 +1,7 @@
1
1
  class Phone
2
2
  include Mongoid::Document
3
3
 
4
- attr_accessor :number_in_observer
5
-
6
- field :_id, type: String, default: ->{ number }
4
+ field :_id, type: String, overwrite: true, default: ->{ number }
7
5
 
8
6
  field :number
9
7
  embeds_one :country_code
@@ -1,6 +1,6 @@
1
1
  class Player
2
2
  include Mongoid::Document
3
- field :active, type: Boolean
3
+ field :active, type: Mongoid::Boolean
4
4
  field :frags, type: Integer
5
5
  field :deaths, type: Integer
6
6
  field :impressions, type: Integer, default: 0
@@ -1,10 +1,11 @@
1
1
  class Post
2
2
  include Mongoid::Document
3
+ include Mongoid::Attributes::Dynamic
3
4
 
4
5
  field :title, type: String
5
6
  field :content, type: String
6
7
  field :rating, type: Integer
7
- field :person_title, type: String, default: ->{ person.try(:title) }
8
+ field :person_title, type: String, default: ->{ person.title if ivar(:person) }
8
9
 
9
10
  attr_accessor :before_add_called, :after_add_called, :before_remove_called, :after_remove_called
10
11
 
@@ -4,7 +4,4 @@ class Quiz
4
4
  field :name, type: String
5
5
  field :topic, type: String
6
6
  embeds_many :pages
7
-
8
- attr_accessible :topic, as: [ :default, :admin ]
9
- attr_accessible :name, as: :default
10
7
  end
@@ -2,11 +2,11 @@ class Record
2
2
  include Mongoid::Document
3
3
  field :name, type: String
4
4
 
5
- field :before_create_called, type: Boolean, default: false
6
- field :before_save_called, type: Boolean, default: false
7
- field :before_update_called, type: Boolean, default: false
8
- field :before_validation_called, type: Boolean, default: false
9
- field :before_destroy_called, type: Boolean, default: false
5
+ field :before_create_called, type: Mongoid::Boolean, default: false
6
+ field :before_save_called, type: Mongoid::Boolean, default: false
7
+ field :before_update_called, type: Mongoid::Boolean, default: false
8
+ field :before_validation_called, type: Mongoid::Boolean, default: false
9
+ field :before_destroy_called, type: Mongoid::Boolean, default: false
10
10
 
11
11
  embedded_in :band
12
12
  embeds_many :tracks, cascade_callbacks: true
@@ -1,4 +1,4 @@
1
1
  class Registry
2
2
  include Mongoid::Document
3
- field :data, type: Moped::BSON::Binary
3
+ field :data, type: BSON::Binary
4
4
  end
@@ -1,7 +1,7 @@
1
1
  class Server
2
2
  include Mongoid::Document
3
3
  field :name, type: String
4
- field :after, type: Boolean, default: false
4
+ field :after, type: Mongoid::Boolean, default: false
5
5
  belongs_to :node
6
6
  embeds_many :filesystems, validate: false
7
7
  accepts_nested_attributes_for :filesystems
@@ -1,9 +1,9 @@
1
1
  class Service
2
2
  include Mongoid::Document
3
3
  field :sid
4
- field :before_destroy_called, type: Boolean, default: false
5
- field :after_destroy_called, type: Boolean, default: false
6
- field :after_initialize_called, type: Boolean, default: false
4
+ field :before_destroy_called, type: Mongoid::Boolean, default: false
5
+ field :after_destroy_called, type: Mongoid::Boolean, default: false
6
+ field :after_initialize_called, type: Mongoid::Boolean, default: false
7
7
  embedded_in :person
8
8
  belongs_to :target, class_name: "User"
9
9
  validates_numericality_of :sid
@@ -0,0 +1,5 @@
1
+ class Sound
2
+ include Mongoid::Document
3
+ field :active, type: Mongoid::Boolean
4
+ default_scope where(active: true)
5
+ end
@@ -1,5 +1,5 @@
1
1
  class Template
2
2
  include Mongoid::Document
3
- field :active, type: Boolean, default: false
3
+ field :active, type: Mongoid::Boolean, default: false
4
4
  validates :active, presence: true
5
5
  end
@@ -1,4 +1,3 @@
1
1
  class Title
2
2
  include Mongoid::Document
3
- belongs_to :paranoid_post
4
3
  end
@@ -2,11 +2,11 @@ class Track
2
2
  include Mongoid::Document
3
3
  field :name, type: String
4
4
 
5
- field :before_create_called, type: Boolean, default: false
6
- field :before_save_called, type: Boolean, default: false
7
- field :before_update_called, type: Boolean, default: false
8
- field :before_validation_called, type: Boolean, default: false
9
- field :before_destroy_called, type: Boolean, default: false
5
+ field :before_create_called, type: Mongoid::Boolean, default: false
6
+ field :before_save_called, type: Mongoid::Boolean, default: false
7
+ field :before_update_called, type: Mongoid::Boolean, default: false
8
+ field :before_validation_called, type: Mongoid::Boolean, default: false
9
+ field :before_destroy_called, type: Mongoid::Boolean, default: false
10
10
 
11
11
  embedded_in :record
12
12
 
@@ -2,7 +2,7 @@ class Tree
2
2
  include Mongoid::Document
3
3
 
4
4
  field :name
5
- field :evergreen, type: Boolean
5
+ field :evergreen, type: Mongoid::Boolean
6
6
 
7
7
  scope :verdant, where(evergreen: true)
8
8
  default_scope asc(:name)
@@ -10,8 +10,4 @@ class Video
10
10
  belongs_to :game
11
11
 
12
12
  default_scope asc(:title)
13
-
14
- attr_accessible :title, as: [ :default, :admin ]
15
- attr_accessible :year, as: [ :default ]
16
- attr_accessible :person_attributes, as: [ :default ]
17
13
  end
@@ -1,16 +1,13 @@
1
1
  class WikiPage
2
2
  include Mongoid::Document
3
3
  include Mongoid::Timestamps
4
- include Mongoid::Versioning
5
4
 
6
5
  field :title, type: String
7
- field :transient_property, type: String, versioned: false
6
+ field :transient_property, type: String
8
7
  field :author, type: String
9
8
  field :description, type: String, localize: true
10
9
  max_versions 5
11
10
 
12
- attr_protected :author
13
-
14
11
  has_many :comments, dependent: :destroy, validate: false
15
12
  has_many :child_pages, class_name: "WikiPage", dependent: :delete, inverse_of: :parent_pages
16
13
  belongs_to :parent_pages, class_name: "WikiPage", inverse_of: :child_pages
@@ -1,6 +1,7 @@
1
1
  class Word
2
2
  include Mongoid::Document
3
3
  field :name, type: String
4
+ field :origin, type: String
4
5
 
5
6
  belongs_to :dictionary
6
7
 
@@ -9,4 +10,6 @@ class Word
9
10
  embeds_one :pronunciation, validate: false
10
11
 
11
12
  accepts_nested_attributes_for :definitions, allow_destroy: true
13
+
14
+ index({ name: "text" }, default_language: "english")
12
15
  end
@@ -1,7 +1,7 @@
1
1
  class WordOrigin
2
2
  include Mongoid::Document
3
3
 
4
- field :_id, type: Integer, default: ->{ origin_id }
4
+ field :_id, type: Integer, overwrite: true, default: ->{ origin_id }
5
5
 
6
6
  field :origin_id, type: Integer
7
7
  field :country, type: String
@@ -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
@@ -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