mongoid 3.1.6 → 4.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (571) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +479 -8
  3. data/README.md +10 -7
  4. data/lib/config/locales/en.yml +34 -20
  5. data/lib/mongoid.rb +10 -76
  6. data/lib/mongoid/atomic.rb +3 -14
  7. data/lib/mongoid/atomic/paths/embedded.rb +0 -30
  8. data/lib/mongoid/atomic/paths/embedded/many.rb +1 -1
  9. data/lib/mongoid/atomic/paths/embedded/one.rb +1 -1
  10. data/lib/mongoid/atomic/paths/root.rb +0 -13
  11. data/lib/mongoid/attributes.rb +65 -101
  12. data/lib/mongoid/attributes/dynamic.rb +154 -0
  13. data/lib/mongoid/attributes/nested.rb +82 -0
  14. data/lib/mongoid/attributes/processing.rb +13 -66
  15. data/lib/mongoid/{dirty.rb → changeable.rb} +32 -2
  16. data/lib/mongoid/composable.rb +105 -0
  17. data/lib/mongoid/config.rb +3 -9
  18. data/lib/mongoid/config/options.rb +1 -1
  19. data/lib/mongoid/contextual.rb +2 -0
  20. data/lib/mongoid/contextual/aggregable/memory.rb +2 -2
  21. data/lib/mongoid/contextual/aggregable/mongo.rb +7 -9
  22. data/lib/mongoid/contextual/atomic.rb +53 -53
  23. data/lib/mongoid/contextual/geo_near.rb +1 -1
  24. data/lib/mongoid/contextual/map_reduce.rb +4 -2
  25. data/lib/mongoid/contextual/memory.rb +23 -11
  26. data/lib/mongoid/contextual/mongo.rb +75 -57
  27. data/lib/mongoid/contextual/none.rb +90 -0
  28. data/lib/mongoid/contextual/text_search.rb +178 -0
  29. data/lib/mongoid/copyable.rb +2 -3
  30. data/lib/mongoid/criteria.rb +39 -34
  31. data/lib/mongoid/criteria/#findable.rb# +141 -0
  32. data/lib/mongoid/{criterion → criteria}/findable.rb +7 -47
  33. data/lib/mongoid/{criterion/inspection.rb → criteria/inspectable.rb} +2 -2
  34. data/lib/mongoid/{criterion → criteria}/marshalable.rb +3 -1
  35. data/lib/mongoid/{criterion → criteria}/modifiable.rb +28 -8
  36. data/lib/mongoid/criteria/permission.rb +70 -0
  37. data/lib/mongoid/{criterion/scoping.rb → criteria/scopable.rb} +2 -2
  38. data/lib/mongoid/document.rb +39 -24
  39. data/lib/mongoid/errors.rb +4 -1
  40. data/lib/mongoid/errors/document_not_destroyed.rb +25 -0
  41. data/lib/mongoid/errors/document_not_found.rb +2 -1
  42. data/lib/mongoid/errors/invalid_storage_options.rb +1 -1
  43. data/lib/mongoid/errors/invalid_storage_parent.rb +26 -0
  44. data/lib/mongoid/errors/invalid_value.rb +16 -0
  45. data/lib/mongoid/errors/mongoid_error.rb +1 -1
  46. data/lib/mongoid/errors/readonly_document.rb +24 -0
  47. data/lib/mongoid/extensions.rb +15 -7
  48. data/lib/mongoid/extensions/array.rb +3 -3
  49. data/lib/mongoid/extensions/big_decimal.rb +1 -1
  50. data/lib/mongoid/extensions/boolean.rb +15 -17
  51. data/lib/mongoid/extensions/date.rb +1 -1
  52. data/lib/mongoid/extensions/date_time.rb +3 -3
  53. data/lib/mongoid/extensions/float.rb +2 -1
  54. data/lib/mongoid/extensions/hash.rb +3 -3
  55. data/lib/mongoid/extensions/integer.rb +1 -1
  56. data/lib/mongoid/extensions/object.rb +7 -7
  57. data/lib/mongoid/extensions/object_id.rb +5 -5
  58. data/lib/mongoid/extensions/range.rb +9 -3
  59. data/lib/mongoid/extensions/regexp.rb +1 -1
  60. data/lib/mongoid/extensions/set.rb +1 -1
  61. data/lib/mongoid/extensions/string.rb +6 -18
  62. data/lib/mongoid/extensions/symbol.rb +1 -1
  63. data/lib/mongoid/extensions/time.rb +3 -3
  64. data/lib/mongoid/extensions/time_with_zone.rb +1 -1
  65. data/lib/mongoid/factory.rb +8 -6
  66. data/lib/mongoid/fields.rb +41 -8
  67. data/lib/mongoid/fields/foreign_key.rb +3 -3
  68. data/lib/mongoid/fields/localized.rb +1 -1
  69. data/lib/mongoid/fields/standard.rb +5 -17
  70. data/lib/mongoid/fields/validators/macro.rb +15 -5
  71. data/lib/mongoid/{finders.rb → findable.rb} +35 -7
  72. data/lib/mongoid/{indexes.rb → indexable.rb} +50 -55
  73. data/lib/mongoid/indexable/specification.rb +104 -0
  74. data/lib/mongoid/{indexes → indexable}/validators/options.rb +2 -1
  75. data/lib/mongoid/{inspection.rb → inspectable.rb} +15 -11
  76. data/lib/mongoid/{callbacks.rb → interceptable.rb} +30 -62
  77. data/lib/mongoid/log_subscriber.rb +55 -0
  78. data/lib/mongoid/matchable.rb +152 -0
  79. data/lib/mongoid/{matchers → matchable}/all.rb +1 -1
  80. data/lib/mongoid/{matchers → matchable}/and.rb +2 -2
  81. data/lib/mongoid/{matchers → matchable}/default.rb +1 -1
  82. data/lib/mongoid/{matchers → matchable}/exists.rb +1 -1
  83. data/lib/mongoid/{matchers → matchable}/gt.rb +1 -1
  84. data/lib/mongoid/{matchers → matchable}/gte.rb +1 -1
  85. data/lib/mongoid/{matchers → matchable}/in.rb +2 -2
  86. data/lib/mongoid/{matchers → matchable}/lt.rb +1 -1
  87. data/lib/mongoid/{matchers → matchable}/lte.rb +1 -1
  88. data/lib/mongoid/{matchers → matchable}/ne.rb +2 -2
  89. data/lib/mongoid/{matchers → matchable}/nin.rb +3 -2
  90. data/lib/mongoid/{matchers → matchable}/or.rb +2 -2
  91. data/lib/mongoid/{matchers → matchable}/size.rb +1 -1
  92. data/lib/mongoid/persistable.rb +216 -0
  93. data/lib/mongoid/persistable/creatable.rb +189 -0
  94. data/lib/mongoid/persistable/deletable.rb +149 -0
  95. data/lib/mongoid/persistable/destroyable.rb +60 -0
  96. data/lib/mongoid/persistable/incrementable.rb +36 -0
  97. data/lib/mongoid/persistable/logical.rb +38 -0
  98. data/lib/mongoid/persistable/poppable.rb +39 -0
  99. data/lib/mongoid/persistable/pullable.rb +55 -0
  100. data/lib/mongoid/persistable/pushable.rb +62 -0
  101. data/lib/mongoid/persistable/renamable.rb +35 -0
  102. data/lib/mongoid/persistable/savable.rb +52 -0
  103. data/lib/mongoid/persistable/settable.rb +33 -0
  104. data/lib/mongoid/persistable/unsettable.rb +36 -0
  105. data/lib/mongoid/persistable/updatable.rb +153 -0
  106. data/lib/mongoid/persistable/upsertable.rb +55 -0
  107. data/lib/mongoid/positional.rb +71 -0
  108. data/lib/mongoid/query_cache.rb +255 -0
  109. data/lib/mongoid/railtie.rb +34 -60
  110. data/lib/mongoid/railties/database.rake +9 -25
  111. data/lib/mongoid/relations.rb +11 -25
  112. data/lib/mongoid/relations/accessors.rb +15 -51
  113. data/lib/mongoid/relations/auto_save.rb +15 -36
  114. data/lib/mongoid/relations/binding.rb +2 -25
  115. data/lib/mongoid/relations/bindings/embedded/in.rb +1 -1
  116. data/lib/mongoid/relations/bindings/embedded/many.rb +1 -3
  117. data/lib/mongoid/relations/bindings/referenced/in.rb +3 -8
  118. data/lib/mongoid/relations/bindings/referenced/many_to_many.rb +4 -2
  119. data/lib/mongoid/relations/builder.rb +1 -1
  120. data/lib/mongoid/relations/builders.rb +2 -2
  121. data/lib/mongoid/relations/builders/embedded/one.rb +1 -1
  122. data/lib/mongoid/relations/builders/nested_attributes/many.rb +10 -13
  123. data/lib/mongoid/relations/builders/nested_attributes/one.rb +5 -6
  124. data/lib/mongoid/relations/builders/referenced/in.rb +1 -1
  125. data/lib/mongoid/relations/builders/referenced/many.rb +1 -2
  126. data/lib/mongoid/relations/builders/referenced/many_to_many.rb +1 -2
  127. data/lib/mongoid/relations/builders/referenced/one.rb +1 -1
  128. data/lib/mongoid/relations/cascading.rb +3 -5
  129. data/lib/mongoid/relations/constraint.rb +1 -1
  130. data/lib/mongoid/relations/conversions.rb +1 -1
  131. data/lib/mongoid/relations/counter_cache.rb +39 -15
  132. data/lib/mongoid/relations/eager.rb +46 -0
  133. data/lib/mongoid/relations/eager/base.rb +149 -0
  134. data/lib/mongoid/relations/eager/belongs_to.rb +31 -0
  135. data/lib/mongoid/relations/eager/has_and_belongs_to_many.rb +47 -0
  136. data/lib/mongoid/relations/eager/has_many.rb +38 -0
  137. data/lib/mongoid/relations/eager/has_one.rb +30 -0
  138. data/lib/mongoid/relations/embedded/batchable.rb +4 -5
  139. data/lib/mongoid/relations/embedded/in.rb +4 -4
  140. data/lib/mongoid/relations/embedded/many.rb +14 -32
  141. data/lib/mongoid/relations/embedded/one.rb +1 -1
  142. data/lib/mongoid/relations/macros.rb +3 -4
  143. data/lib/mongoid/relations/many.rb +51 -31
  144. data/lib/mongoid/relations/marshalable.rb +3 -3
  145. data/lib/mongoid/relations/metadata.rb +14 -79
  146. data/lib/mongoid/relations/nested_builder.rb +2 -2
  147. data/lib/mongoid/relations/one.rb +1 -1
  148. data/lib/mongoid/relations/options.rb +1 -0
  149. data/lib/mongoid/relations/polymorphic.rb +0 -1
  150. data/lib/mongoid/relations/proxy.rb +21 -41
  151. data/lib/mongoid/relations/referenced/in.rb +4 -20
  152. data/lib/mongoid/relations/referenced/many.rb +22 -35
  153. data/lib/mongoid/relations/referenced/many_to_many.rb +19 -42
  154. data/lib/mongoid/relations/referenced/one.rb +6 -25
  155. data/lib/mongoid/relations/synchronization.rb +4 -4
  156. data/lib/mongoid/relations/targets/enumerable.rb +10 -10
  157. data/lib/mongoid/relations/touchable.rb +34 -1
  158. data/lib/mongoid/{reloading.rb → reloadable.rb} +7 -5
  159. data/lib/mongoid/{scoping.rb → scopable.rb} +36 -36
  160. data/lib/mongoid/selectable.rb +59 -0
  161. data/lib/mongoid/{serialization.rb → serializable.rb} +11 -2
  162. data/lib/mongoid/sessions.rb +37 -345
  163. data/lib/mongoid/sessions/factory.rb +2 -0
  164. data/lib/mongoid/sessions/options.rb +185 -0
  165. data/lib/mongoid/sessions/storage_options.rb +140 -0
  166. data/lib/mongoid/sessions/thread_options.rb +19 -0
  167. data/lib/mongoid/sessions/validators/storage.rb +16 -3
  168. data/lib/mongoid/{sharding.rb → shardable.rb} +5 -1
  169. data/lib/mongoid/{state.rb → stateful.rb} +13 -1
  170. data/lib/mongoid/support/query_counter.rb +23 -0
  171. data/lib/mongoid/tasks/database.rake +31 -0
  172. data/lib/mongoid/tasks/database.rb +107 -0
  173. data/lib/mongoid/threaded.rb +26 -172
  174. data/lib/mongoid/threaded/lifecycle.rb +0 -28
  175. data/lib/mongoid/timestamps/updated/short.rb +2 -2
  176. data/lib/mongoid/{hierarchy.rb → traversable.rb} +15 -7
  177. data/lib/mongoid/{validations.rb → validatable.rb} +23 -10
  178. data/lib/mongoid/{validations → validatable}/associated.rb +4 -2
  179. data/lib/mongoid/{validations → validatable}/format.rb +1 -1
  180. data/lib/mongoid/{validations → validatable}/length.rb +1 -1
  181. data/lib/mongoid/{validations → validatable}/localizable.rb +1 -1
  182. data/lib/mongoid/{validations → validatable}/macros.rb +4 -3
  183. data/lib/mongoid/{validations → validatable}/presence.rb +1 -1
  184. data/lib/mongoid/{validations → validatable}/queryable.rb +1 -2
  185. data/lib/mongoid/{validations → validatable}/uniqueness.rb +25 -21
  186. data/lib/mongoid/version.rb +1 -1
  187. data/lib/rails/generators/mongoid/config/templates/mongoid.yml +46 -25
  188. data/lib/rails/generators/mongoid/model/model_generator.rb +0 -1
  189. data/lib/rails/generators/mongoid/model/templates/model.rb.tt +0 -3
  190. data/lib/rails/generators/mongoid_generator.rb +3 -40
  191. data/lib/rails/mongoid.rb +0 -122
  192. data/lib/support/ruby_version.rb +1 -1
  193. data/spec/app/models/account.rb +2 -6
  194. data/spec/app/models/acolyte.rb +2 -1
  195. data/spec/app/models/actor.rb +0 -1
  196. data/spec/app/models/address.rb +8 -3
  197. data/spec/app/models/animal.rb +1 -1
  198. data/spec/app/models/appointment.rb +3 -3
  199. data/spec/app/models/article.rb +1 -4
  200. data/spec/app/models/audio.rb +5 -0
  201. data/spec/app/models/author.rb +0 -2
  202. data/spec/app/models/band.rb +3 -2
  203. data/spec/app/models/bar.rb +1 -0
  204. data/spec/app/models/book.rb +1 -0
  205. data/spec/app/models/building.rb +0 -2
  206. data/spec/app/models/building_address.rb +0 -2
  207. data/spec/app/models/bus.rb +1 -1
  208. data/spec/app/models/canvas.rb +1 -1
  209. data/spec/app/models/contextable_item.rb +5 -0
  210. data/spec/app/models/contractor.rb +0 -2
  211. data/spec/app/models/country_code.rb +1 -1
  212. data/spec/app/models/definition.rb +2 -2
  213. data/spec/app/models/dog.rb +1 -1
  214. data/spec/app/models/draft.rb +9 -0
  215. data/spec/app/models/dragon.rb +4 -0
  216. data/spec/app/models/drug.rb +1 -3
  217. data/spec/app/models/dungeon.rb +4 -0
  218. data/spec/app/models/edit.rb +5 -0
  219. data/spec/app/models/even.rb +7 -0
  220. data/spec/app/models/event.rb +1 -1
  221. data/spec/app/models/filesystem.rb +1 -0
  222. data/spec/app/models/fish.rb +0 -1
  223. data/spec/app/models/fruits.rb +6 -0
  224. data/spec/app/models/game.rb +0 -2
  225. data/spec/app/models/house.rb +1 -3
  226. data/spec/app/models/id_key.rb +6 -0
  227. data/spec/app/models/item.rb +1 -5
  228. data/spec/app/models/jar.rb +1 -1
  229. data/spec/app/models/label.rb +4 -4
  230. data/spec/app/models/line_item.rb +1 -1
  231. data/spec/app/models/login.rb +1 -1
  232. data/spec/app/models/message.rb +8 -0
  233. data/spec/app/models/movie.rb +1 -0
  234. data/spec/app/models/name.rb +3 -3
  235. data/spec/app/models/note.rb +3 -1
  236. data/spec/app/models/odd.rb +7 -0
  237. data/spec/app/models/oscar.rb +1 -1
  238. data/spec/app/models/parent_doc.rb +1 -1
  239. data/spec/app/models/person.rb +16 -10
  240. data/spec/app/models/phone.rb +1 -3
  241. data/spec/app/models/player.rb +3 -3
  242. data/spec/app/models/post.rb +5 -3
  243. data/spec/app/models/preference.rb +1 -1
  244. data/spec/app/models/quiz.rb +0 -3
  245. data/spec/app/models/record.rb +10 -5
  246. data/spec/app/models/registry.rb +1 -1
  247. data/spec/app/models/server.rb +1 -1
  248. data/spec/app/models/service.rb +3 -3
  249. data/spec/app/models/sound.rb +5 -0
  250. data/spec/app/models/symptom.rb +1 -1
  251. data/spec/app/models/template.rb +1 -1
  252. data/spec/app/models/title.rb +0 -1
  253. data/spec/app/models/track.rb +5 -5
  254. data/spec/app/models/tree.rb +3 -3
  255. data/spec/app/models/video.rb +1 -5
  256. data/spec/app/models/wiki_page.rb +2 -5
  257. data/spec/app/models/word.rb +3 -0
  258. data/spec/app/models/word_origin.rb +1 -1
  259. data/spec/config/mongoid.yml +7 -8
  260. data/spec/helpers.rb +18 -0
  261. data/spec/mongoid/#atomic_spec.rb# +365 -0
  262. data/spec/mongoid/atomic/modifiers_spec.rb +22 -22
  263. data/spec/mongoid/atomic/paths/embedded/many_spec.rb +8 -49
  264. data/spec/mongoid/atomic/paths/embedded/one_spec.rb +7 -49
  265. data/spec/mongoid/atomic/paths/root_spec.rb +3 -61
  266. data/spec/mongoid/atomic/paths_spec.rb +19 -19
  267. data/spec/mongoid/atomic_spec.rb +19 -19
  268. data/spec/mongoid/{nested_attributes_spec.rb → attributes/nested_spec.rb} +474 -592
  269. data/spec/mongoid/attributes/readonly_spec.rb +58 -18
  270. data/spec/mongoid/attributes_spec.rb +349 -434
  271. data/spec/mongoid/{dirty_spec.rb → changeable_spec.rb} +203 -153
  272. data/spec/mongoid/{components_spec.rb → composable_spec.rb} +3 -3
  273. data/spec/mongoid/config/environment_spec.rb +3 -3
  274. data/spec/mongoid/config/options_spec.rb +6 -6
  275. data/spec/mongoid/config_spec.rb +24 -48
  276. data/spec/mongoid/contextual/aggregable/memory_spec.rb +12 -12
  277. data/spec/mongoid/contextual/aggregable/mongo_spec.rb +78 -38
  278. data/spec/mongoid/contextual/atomic_spec.rb +60 -56
  279. data/spec/mongoid/contextual/find_and_modify_spec.rb +14 -14
  280. data/spec/mongoid/contextual/geo_near_spec.rb +22 -22
  281. data/spec/mongoid/contextual/map_reduce_spec.rb +27 -27
  282. data/spec/mongoid/contextual/memory_spec.rb +156 -94
  283. data/spec/mongoid/contextual/mongo_spec.rb +238 -150
  284. data/spec/mongoid/contextual/none_spec.rb +127 -0
  285. data/spec/mongoid/contextual/text_search_spec.rb +209 -0
  286. data/spec/mongoid/copyable_spec.rb +56 -68
  287. data/spec/mongoid/criteria/findable_spec.rb +991 -0
  288. data/spec/mongoid/{criterion/inspection_spec.rb → criteria/inspectable_spec.rb} +5 -5
  289. data/spec/mongoid/{criterion → criteria}/marshalable_spec.rb +2 -2
  290. data/spec/mongoid/criteria/modifiable_spec.rb +1252 -0
  291. data/spec/mongoid/{criterion/scoping_spec.rb → criteria/scopable_spec.rb} +37 -37
  292. data/spec/mongoid/criteria_spec.rb +715 -2421
  293. data/spec/mongoid/document_spec.rb +171 -121
  294. data/spec/mongoid/equality_spec.rb +22 -22
  295. data/spec/mongoid/errors/ambiguous_relationship_spec.rb +3 -3
  296. data/spec/mongoid/errors/callback_spec.rb +3 -3
  297. data/spec/mongoid/errors/delete_restriction_spec.rb +3 -3
  298. data/spec/mongoid/errors/document_not_destroyed_spec.rb +33 -0
  299. data/spec/mongoid/errors/document_not_found_spec.rb +11 -11
  300. data/spec/mongoid/errors/eager_load_spec.rb +3 -3
  301. data/spec/mongoid/errors/invalid_collection_spec.rb +3 -3
  302. data/spec/mongoid/errors/invalid_config_option_spec.rb +3 -3
  303. data/spec/mongoid/errors/invalid_field_option_spec.rb +3 -3
  304. data/spec/mongoid/errors/invalid_field_spec.rb +3 -3
  305. data/spec/mongoid/errors/invalid_find_spec.rb +3 -3
  306. data/spec/mongoid/errors/invalid_includes_spec.rb +3 -3
  307. data/spec/mongoid/errors/invalid_index_spec.rb +3 -3
  308. data/spec/mongoid/errors/invalid_options_spec.rb +3 -3
  309. data/spec/mongoid/errors/invalid_path_spec.rb +3 -3
  310. data/spec/mongoid/errors/invalid_scope_spec.rb +5 -5
  311. data/spec/mongoid/errors/invalid_set_polymorphic_relation_spec.rb +3 -3
  312. data/spec/mongoid/errors/invalid_storage_options_spec.rb +3 -3
  313. data/spec/mongoid/errors/invalid_time_spec.rb +3 -3
  314. data/spec/mongoid/errors/inverse_not_found_spec.rb +3 -3
  315. data/spec/mongoid/errors/mixed_relations_spec.rb +3 -3
  316. data/spec/mongoid/errors/mixed_session_configuration_spec.rb +3 -3
  317. data/spec/mongoid/errors/mongoid_error_spec.rb +8 -8
  318. data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +3 -3
  319. data/spec/mongoid/errors/no_environment_spec.rb +3 -3
  320. data/spec/mongoid/errors/no_map_reduce_output_spec.rb +3 -3
  321. data/spec/mongoid/errors/no_metadata_spec.rb +3 -3
  322. data/spec/mongoid/errors/no_parent_spec.rb +3 -3
  323. data/spec/mongoid/errors/no_session_config_spec.rb +3 -3
  324. data/spec/mongoid/errors/no_session_database_spec.rb +3 -3
  325. data/spec/mongoid/errors/no_session_hosts_spec.rb +3 -3
  326. data/spec/mongoid/errors/no_sessions_config_spec.rb +3 -3
  327. data/spec/mongoid/errors/readonly_attribute_spec.rb +3 -3
  328. data/spec/mongoid/errors/readonly_document_spec.rb +29 -0
  329. data/spec/mongoid/errors/scope_overwrite_spec.rb +3 -3
  330. data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +3 -3
  331. data/spec/mongoid/errors/unknown_attribute_spec.rb +5 -5
  332. data/spec/mongoid/errors/unsaved_document_spec.rb +3 -3
  333. data/spec/mongoid/errors/unsupported_javascript_spec.rb +3 -3
  334. data/spec/mongoid/errors/validations_spec.rb +7 -7
  335. data/spec/mongoid/extensions/array_spec.rb +61 -61
  336. data/spec/mongoid/extensions/big_decimal_spec.rb +11 -11
  337. data/spec/mongoid/extensions/binary_spec.rb +12 -12
  338. data/spec/mongoid/extensions/boolean_spec.rb +18 -18
  339. data/spec/mongoid/extensions/date_spec.rb +13 -13
  340. data/spec/mongoid/extensions/date_time_spec.rb +8 -8
  341. data/spec/mongoid/extensions/false_class_spec.rb +5 -5
  342. data/spec/mongoid/extensions/float_spec.rb +29 -15
  343. data/spec/mongoid/extensions/hash_spec.rb +29 -29
  344. data/spec/mongoid/extensions/integer_spec.rb +15 -15
  345. data/spec/mongoid/extensions/module_spec.rb +2 -2
  346. data/spec/mongoid/extensions/nil_class_spec.rb +1 -1
  347. data/spec/mongoid/extensions/object_id_spec.rb +134 -134
  348. data/spec/mongoid/extensions/object_spec.rb +26 -26
  349. data/spec/mongoid/extensions/range_spec.rb +61 -12
  350. data/spec/mongoid/extensions/regexp_spec.rb +4 -4
  351. data/spec/mongoid/extensions/set_spec.rb +4 -4
  352. data/spec/mongoid/extensions/string_spec.rb +35 -46
  353. data/spec/mongoid/extensions/symbol_spec.rb +9 -9
  354. data/spec/mongoid/extensions/time_spec.rb +49 -49
  355. data/spec/mongoid/extensions/time_with_zone_spec.rb +34 -34
  356. data/spec/mongoid/extensions/true_class_spec.rb +5 -5
  357. data/spec/mongoid/extensions_spec.rb +29 -0
  358. data/spec/mongoid/factory_spec.rb +15 -15
  359. data/spec/mongoid/fields/foreign_key_spec.rb +73 -66
  360. data/spec/mongoid/fields/internal/foreign_keys/array_spec.rb +15 -15
  361. data/spec/mongoid/fields/internal/foreign_keys/object_spec.rb +22 -22
  362. data/spec/mongoid/fields/localized_spec.rb +38 -23
  363. data/spec/mongoid/fields/standard_spec.rb +12 -12
  364. data/spec/mongoid/fields_spec.rb +263 -217
  365. data/spec/mongoid/findable_spec.rb +509 -0
  366. data/spec/mongoid/indexable/specification_spec.rb +102 -0
  367. data/spec/mongoid/{indexes_spec.rb → indexable_spec.rb} +171 -51
  368. data/spec/mongoid/{inspection_spec.rb → inspectable_spec.rb} +6 -14
  369. data/spec/mongoid/{callbacks_spec.rb → interceptable_spec.rb} +117 -116
  370. data/spec/mongoid/log_subscriber_spec.rb +75 -0
  371. data/spec/mongoid/loggable_spec.rb +1 -1
  372. data/spec/mongoid/{matchers → matchable}/all_spec.rb +4 -4
  373. data/spec/mongoid/{matchers → matchable}/and_spec.rb +11 -11
  374. data/spec/mongoid/{matchers → matchable}/default_spec.rb +15 -15
  375. data/spec/mongoid/{matchers → matchable}/exists_spec.rb +5 -5
  376. data/spec/mongoid/{matchers → matchable}/gt_spec.rb +9 -8
  377. data/spec/mongoid/{matchers → matchable}/gte_spec.rb +7 -7
  378. data/spec/mongoid/matchable/in_spec.rb +49 -0
  379. data/spec/mongoid/{matchers → matchable}/lt_spec.rb +7 -7
  380. data/spec/mongoid/{matchers → matchable}/lte_spec.rb +7 -7
  381. data/spec/mongoid/matchable/ne_spec.rb +46 -0
  382. data/spec/mongoid/matchable/nin_spec.rb +48 -0
  383. data/spec/mongoid/{matchers → matchable}/or_spec.rb +6 -6
  384. data/spec/mongoid/{matchers → matchable}/size_spec.rb +3 -3
  385. data/spec/mongoid/{matchers_spec.rb → matchable_spec.rb} +41 -41
  386. data/spec/mongoid/persistable/creatable_spec.rb +553 -0
  387. data/spec/mongoid/persistable/deletable_spec.rb +218 -0
  388. data/spec/mongoid/persistable/destroyable_spec.rb +192 -0
  389. data/spec/mongoid/persistable/incrementable_spec.rb +173 -0
  390. data/spec/mongoid/persistable/logical_spec.rb +143 -0
  391. data/spec/mongoid/persistable/poppable_spec.rb +115 -0
  392. data/spec/mongoid/persistable/pullable_spec.rb +228 -0
  393. data/spec/mongoid/persistable/pushable_spec.rb +258 -0
  394. data/spec/mongoid/persistable/renamable_spec.rb +135 -0
  395. data/spec/mongoid/persistable/savable_spec.rb +498 -0
  396. data/spec/mongoid/persistable/settable_spec.rb +162 -0
  397. data/spec/mongoid/persistable/unsettable_spec.rb +155 -0
  398. data/spec/mongoid/persistable/updatable_spec.rb +558 -0
  399. data/spec/mongoid/persistable/upsertable_spec.rb +106 -0
  400. data/spec/mongoid/persistable_spec.rb +206 -0
  401. data/spec/mongoid/{atomic/positionable_spec.rb → positional_spec.rb} +14 -19
  402. data/spec/mongoid/query_cache_spec.rb +263 -0
  403. data/spec/mongoid/railties/document_spec.rb +2 -2
  404. data/spec/mongoid/relations/accessors_spec.rb +53 -145
  405. data/spec/mongoid/relations/auto_save_spec.rb +37 -17
  406. data/spec/mongoid/relations/bindings/embedded/in_spec.rb +12 -12
  407. data/spec/mongoid/relations/bindings/embedded/many_spec.rb +3 -3
  408. data/spec/mongoid/relations/bindings/embedded/one_spec.rb +5 -5
  409. data/spec/mongoid/relations/bindings/referenced/in_spec.rb +26 -26
  410. data/spec/mongoid/relations/bindings/referenced/many_spec.rb +10 -10
  411. data/spec/mongoid/relations/bindings/referenced/many_to_many_spec.rb +19 -19
  412. data/spec/mongoid/relations/bindings/referenced/one_spec.rb +12 -12
  413. data/spec/mongoid/relations/builders/embedded/in_spec.rb +4 -4
  414. data/spec/mongoid/relations/builders/embedded/many_spec.rb +18 -18
  415. data/spec/mongoid/relations/builders/embedded/one_spec.rb +11 -11
  416. data/spec/mongoid/relations/builders/nested_attributes/many_spec.rb +12 -13
  417. data/spec/mongoid/relations/builders/nested_attributes/one_spec.rb +14 -14
  418. data/spec/mongoid/relations/builders/referenced/in_spec.rb +24 -35
  419. data/spec/mongoid/relations/builders/referenced/many_spec.rb +15 -15
  420. data/spec/mongoid/relations/builders/referenced/many_to_many_spec.rb +18 -18
  421. data/spec/mongoid/relations/builders/referenced/one_spec.rb +12 -25
  422. data/spec/mongoid/relations/builders_spec.rb +21 -21
  423. data/spec/mongoid/relations/cascading/delete_spec.rb +9 -9
  424. data/spec/mongoid/relations/cascading/destroy_spec.rb +6 -6
  425. data/spec/mongoid/relations/cascading/nullify_spec.rb +4 -4
  426. data/spec/mongoid/relations/cascading/restrict_spec.rb +7 -7
  427. data/spec/mongoid/relations/cascading_spec.rb +16 -16
  428. data/spec/mongoid/relations/constraint_spec.rb +8 -7
  429. data/spec/mongoid/relations/conversions_spec.rb +16 -14
  430. data/spec/mongoid/relations/counter_cache_spec.rb +85 -0
  431. data/spec/mongoid/relations/cyclic_spec.rb +18 -18
  432. data/spec/mongoid/relations/eager/belongs_to_spec.rb +154 -0
  433. data/spec/mongoid/relations/eager/has_and_belongs_to_many_spec.rb +117 -0
  434. data/spec/mongoid/relations/eager/has_many_spec.rb +207 -0
  435. data/spec/mongoid/relations/eager/has_one_spec.rb +163 -0
  436. data/spec/mongoid/relations/eager_spec.rb +228 -0
  437. data/spec/mongoid/relations/embedded/dirty_spec.rb +8 -8
  438. data/spec/mongoid/relations/embedded/in_spec.rb +56 -57
  439. data/spec/mongoid/relations/embedded/many_spec.rb +467 -372
  440. data/spec/mongoid/relations/embedded/one_spec.rb +108 -141
  441. data/spec/mongoid/relations/macros_spec.rb +108 -102
  442. data/spec/mongoid/relations/metadata_spec.rb +180 -255
  443. data/spec/mongoid/relations/options_spec.rb +1 -1
  444. data/spec/mongoid/relations/polymorphic_spec.rb +13 -17
  445. data/spec/mongoid/relations/proxy_spec.rb +2 -2
  446. data/spec/mongoid/relations/referenced/in_spec.rb +128 -303
  447. data/spec/mongoid/relations/referenced/many_spec.rb +587 -527
  448. data/spec/mongoid/relations/referenced/many_to_many_spec.rb +401 -424
  449. data/spec/mongoid/relations/referenced/one_spec.rb +149 -264
  450. data/spec/mongoid/relations/reflections_spec.rb +6 -6
  451. data/spec/mongoid/relations/synchronization_spec.rb +46 -50
  452. data/spec/mongoid/relations/targets/enumerable_spec.rb +118 -118
  453. data/spec/mongoid/relations/touchable_spec.rb +333 -0
  454. data/spec/mongoid/relations_spec.rb +16 -15
  455. data/spec/mongoid/{reloading_spec.rb → reloadable_spec.rb} +38 -55
  456. data/spec/mongoid/{scoping_spec.rb → scopable_spec.rb} +89 -164
  457. data/spec/mongoid/selectable_spec.rb +134 -0
  458. data/spec/mongoid/{serialization_spec.rb → serializable_spec.rb} +129 -82
  459. data/spec/mongoid/sessions/factory_spec.rb +49 -28
  460. data/spec/mongoid/sessions/mongo_uri_spec.rb +7 -7
  461. data/spec/mongoid/sessions/options_spec.rb +108 -0
  462. data/spec/mongoid/sessions_spec.rb +319 -178
  463. data/spec/mongoid/{sharding_spec.rb → shardable_spec.rb} +8 -8
  464. data/spec/mongoid/{state_spec.rb → stateful_spec.rb} +36 -11
  465. data/spec/mongoid/tasks/database_rake_spec.rb +285 -0
  466. data/spec/mongoid/tasks/database_spec.rb +160 -0
  467. data/spec/mongoid/threaded_spec.rb +17 -70
  468. data/spec/mongoid/timestamps/created/short_spec.rb +6 -6
  469. data/spec/mongoid/timestamps/created_spec.rb +5 -5
  470. data/spec/mongoid/timestamps/timeless_spec.rb +6 -6
  471. data/spec/mongoid/timestamps/updated/short_spec.rb +11 -11
  472. data/spec/mongoid/timestamps/updated_spec.rb +9 -13
  473. data/spec/mongoid/timestamps_spec.rb +9 -13
  474. data/spec/mongoid/{hierarchy_spec.rb → traversable_spec.rb} +19 -19
  475. data/spec/mongoid/{validations → validatable}/associated_spec.rb +45 -22
  476. data/spec/mongoid/{validations → validatable}/format_spec.rb +6 -6
  477. data/spec/mongoid/{validations → validatable}/length_spec.rb +14 -14
  478. data/spec/mongoid/{validations → validatable}/numericality_spec.rb +1 -1
  479. data/spec/mongoid/{validations → validatable}/presence_spec.rb +37 -44
  480. data/spec/mongoid/{validations → validatable}/uniqueness_spec.rb +184 -192
  481. data/spec/mongoid/{validations_spec.rb → validatable_spec.rb} +28 -28
  482. data/spec/mongoid_spec.rb +8 -8
  483. data/spec/rails/mongoid_spec.rb +19 -335
  484. data/spec/spec_helper.rb +31 -13
  485. metadata +303 -283
  486. data/lib/mongoid/atomic/positionable.rb +0 -73
  487. data/lib/mongoid/components.rb +0 -92
  488. data/lib/mongoid/config/inflections.rb +0 -6
  489. data/lib/mongoid/contextual/eager.rb +0 -158
  490. data/lib/mongoid/errors/versioning_not_on_root.rb +0 -23
  491. data/lib/mongoid/identity_map.rb +0 -163
  492. data/lib/mongoid/json.rb +0 -16
  493. data/lib/mongoid/matchers.rb +0 -32
  494. data/lib/mongoid/matchers/strategies.rb +0 -97
  495. data/lib/mongoid/multi_parameter_attributes.rb +0 -105
  496. data/lib/mongoid/nested_attributes.rb +0 -78
  497. data/lib/mongoid/observer.rb +0 -192
  498. data/lib/mongoid/paranoia.rb +0 -136
  499. data/lib/mongoid/persistence.rb +0 -357
  500. data/lib/mongoid/persistence/atomic.rb +0 -231
  501. data/lib/mongoid/persistence/atomic/add_to_set.rb +0 -47
  502. data/lib/mongoid/persistence/atomic/bit.rb +0 -35
  503. data/lib/mongoid/persistence/atomic/inc.rb +0 -45
  504. data/lib/mongoid/persistence/atomic/operation.rb +0 -154
  505. data/lib/mongoid/persistence/atomic/pop.rb +0 -32
  506. data/lib/mongoid/persistence/atomic/pull.rb +0 -32
  507. data/lib/mongoid/persistence/atomic/pull_all.rb +0 -32
  508. data/lib/mongoid/persistence/atomic/push.rb +0 -25
  509. data/lib/mongoid/persistence/atomic/push_all.rb +0 -25
  510. data/lib/mongoid/persistence/atomic/rename.rb +0 -30
  511. data/lib/mongoid/persistence/atomic/sets.rb +0 -28
  512. data/lib/mongoid/persistence/atomic/unset.rb +0 -27
  513. data/lib/mongoid/persistence/deletion.rb +0 -31
  514. data/lib/mongoid/persistence/insertion.rb +0 -38
  515. data/lib/mongoid/persistence/modification.rb +0 -35
  516. data/lib/mongoid/persistence/operations.rb +0 -214
  517. data/lib/mongoid/persistence/operations/embedded/insert.rb +0 -46
  518. data/lib/mongoid/persistence/operations/embedded/remove.rb +0 -43
  519. data/lib/mongoid/persistence/operations/insert.rb +0 -34
  520. data/lib/mongoid/persistence/operations/remove.rb +0 -33
  521. data/lib/mongoid/persistence/operations/update.rb +0 -59
  522. data/lib/mongoid/persistence/operations/upsert.rb +0 -28
  523. data/lib/mongoid/persistence/upsertion.rb +0 -31
  524. data/lib/mongoid/unit_of_work.rb +0 -61
  525. data/lib/mongoid/versioning.rb +0 -217
  526. data/lib/rack/mongoid.rb +0 -2
  527. data/lib/rack/mongoid/middleware/identity_map.rb +0 -39
  528. data/lib/rails/generators/mongoid/observer/observer_generator.rb +0 -17
  529. data/lib/rails/generators/mongoid/observer/templates/observer.rb.tt +0 -4
  530. data/spec/app/models/actor_observer.rb +0 -15
  531. data/spec/app/models/callback_recorder.rb +0 -25
  532. data/spec/app/models/paranoid_phone.rb +0 -25
  533. data/spec/app/models/paranoid_post.rb +0 -36
  534. data/spec/app/models/phone_observer.rb +0 -6
  535. data/spec/mongoid/attributes/processing_spec.rb +0 -149
  536. data/spec/mongoid/criterion/destructive_spec.rb +0 -101
  537. data/spec/mongoid/criterion/modifiable_spec.rb +0 -409
  538. data/spec/mongoid/criterion/modification_spec.rb +0 -402
  539. data/spec/mongoid/errors/versioning_not_on_root_spec.rb +0 -29
  540. data/spec/mongoid/finders_spec.rb +0 -321
  541. data/spec/mongoid/identity_map_spec.rb +0 -564
  542. data/spec/mongoid/json_spec.rb +0 -33
  543. data/spec/mongoid/matchers/in_spec.rb +0 -25
  544. data/spec/mongoid/matchers/ne_spec.rb +0 -25
  545. data/spec/mongoid/matchers/nin_spec.rb +0 -25
  546. data/spec/mongoid/multi_parameter_attributes_spec.rb +0 -128
  547. data/spec/mongoid/observer_spec.rb +0 -290
  548. data/spec/mongoid/paranoia_spec.rb +0 -759
  549. data/spec/mongoid/persistence/atomic/add_to_set_spec.rb +0 -262
  550. data/spec/mongoid/persistence/atomic/bit_spec.rb +0 -88
  551. data/spec/mongoid/persistence/atomic/inc_spec.rb +0 -133
  552. data/spec/mongoid/persistence/atomic/pop_spec.rb +0 -111
  553. data/spec/mongoid/persistence/atomic/pull_all_spec.rb +0 -77
  554. data/spec/mongoid/persistence/atomic/pull_spec.rb +0 -80
  555. data/spec/mongoid/persistence/atomic/push_all_spec.rb +0 -77
  556. data/spec/mongoid/persistence/atomic/push_spec.rb +0 -77
  557. data/spec/mongoid/persistence/atomic/rename_spec.rb +0 -42
  558. data/spec/mongoid/persistence/atomic/sets_spec.rb +0 -154
  559. data/spec/mongoid/persistence/atomic/unset_spec.rb +0 -65
  560. data/spec/mongoid/persistence/atomic_spec.rb +0 -216
  561. data/spec/mongoid/persistence/operations/embedded/insert_spec.rb +0 -191
  562. data/spec/mongoid/persistence/operations/embedded/remove_spec.rb +0 -8
  563. data/spec/mongoid/persistence/operations/insert_spec.rb +0 -149
  564. data/spec/mongoid/persistence/operations/remove_spec.rb +0 -113
  565. data/spec/mongoid/persistence/operations/update_spec.rb +0 -141
  566. data/spec/mongoid/persistence/operations/upsert_spec.rb +0 -59
  567. data/spec/mongoid/persistence/operations_spec.rb +0 -313
  568. data/spec/mongoid/persistence_spec.rb +0 -2279
  569. data/spec/mongoid/unit_of_work_spec.rb +0 -196
  570. data/spec/mongoid/versioning_spec.rb +0 -540
  571. data/spec/rack/mongoid/middleware/identity_map_spec.rb +0 -72
@@ -23,7 +23,7 @@ describe Mongoid::Relations::Embedded::One do
23
23
  context "when the proxied document is same class" do
24
24
 
25
25
  it "returns true" do
26
- (relation === Name.new).should be_true
26
+ expect((relation === Name.new)).to be true
27
27
  end
28
28
  end
29
29
  end
@@ -47,19 +47,19 @@ describe Mongoid::Relations::Embedded::One do
47
47
  end
48
48
 
49
49
  it "sets the target of the relation" do
50
- person.name.should eq(name)
50
+ expect(person.name).to eq(name)
51
51
  end
52
52
 
53
53
  it "sets the base on the inverse relation" do
54
- name.namable.should eq(person)
54
+ expect(name.namable).to eq(person)
55
55
  end
56
56
 
57
57
  it "sets the same instance on the inverse relation" do
58
- name.namable.should eql(person)
58
+ expect(name.namable).to eql(person)
59
59
  end
60
60
 
61
61
  it "does not save the target" do
62
- name.should_not be_persisted
62
+ expect(name).to_not be_persisted
63
63
  end
64
64
 
65
65
  context "with overwritten getter" do
@@ -76,7 +76,7 @@ describe Mongoid::Relations::Embedded::One do
76
76
 
77
77
  it "sets the target without an invinite recursion" do
78
78
  person.name = name
79
- person.name.should be_present
79
+ expect(person.name).to be_present
80
80
  end
81
81
  end
82
82
  end
@@ -102,19 +102,19 @@ describe Mongoid::Relations::Embedded::One do
102
102
  end
103
103
 
104
104
  it "sets the target of the relation" do
105
- person.name.should eq(child_name)
105
+ expect(person.name).to eq(child_name)
106
106
  end
107
107
 
108
108
  it "sets the base on the inverse relation" do
109
- child_name.namable.should eq(person)
109
+ expect(child_name.namable).to eq(person)
110
110
  end
111
111
 
112
112
  it "sets the same instance on the inverse relation" do
113
- child_name.namable.should eql(person)
113
+ expect(child_name.namable).to eql(person)
114
114
  end
115
115
 
116
116
  it "saves the target" do
117
- child_name.should be_persisted
117
+ expect(child_name).to be_persisted
118
118
  end
119
119
 
120
120
  context "when replacing a relation with a hash" do
@@ -124,7 +124,7 @@ describe Mongoid::Relations::Embedded::One do
124
124
  end
125
125
 
126
126
  it "sets the relation with the proper object" do
127
- person.name.should be_a(Name)
127
+ expect(person.name).to be_a(Name)
128
128
  end
129
129
  end
130
130
  end
@@ -137,11 +137,11 @@ describe Mongoid::Relations::Embedded::One do
137
137
  end
138
138
 
139
139
  it "does not change the relation" do
140
- person.name.should eq(name)
140
+ expect(person.name).to eq(name)
141
141
  end
142
142
 
143
143
  it "does not persist any change" do
144
- person.reload.name.should eq(name)
144
+ expect(person.reload.name).to eq(name)
145
145
  end
146
146
  end
147
147
 
@@ -152,19 +152,19 @@ describe Mongoid::Relations::Embedded::One do
152
152
  end
153
153
 
154
154
  it "sets the target of the relation" do
155
- person.name.should eq(name)
155
+ expect(person.name).to eq(name)
156
156
  end
157
157
 
158
158
  it "sets the base on the inverse relation" do
159
- name.namable.should eq(person)
159
+ expect(name.namable).to eq(person)
160
160
  end
161
161
 
162
162
  it "sets the same instance on the inverse relation" do
163
- name.namable.should eql(person)
163
+ expect(name.namable).to eql(person)
164
164
  end
165
165
 
166
166
  it "saves the target" do
167
- name.should be_persisted
167
+ expect(name).to be_persisted
168
168
  end
169
169
 
170
170
  context "when replacing an exising document" do
@@ -174,11 +174,11 @@ describe Mongoid::Relations::Embedded::One do
174
174
  end
175
175
 
176
176
  let(:pet_one) do
177
- Pet.new
177
+ Pet.new(name: 'kika')
178
178
  end
179
179
 
180
180
  let(:pet_two) do
181
- Pet.new
181
+ Pet.new(name: 'tiksy')
182
182
  end
183
183
 
184
184
  before do
@@ -187,7 +187,15 @@ describe Mongoid::Relations::Embedded::One do
187
187
  end
188
188
 
189
189
  it "runs the destroy callbacks on the old document" do
190
- pet_one.destroy_flag.should be_true
190
+ expect(pet_one.destroy_flag).to be true
191
+ end
192
+
193
+ it "keeps the name of the destroyed" do
194
+ expect(pet_one.name).to eq("kika")
195
+ end
196
+
197
+ it "saves the new name" do
198
+ expect(pet_owner.pet.name).to eq("tiksy")
191
199
  end
192
200
  end
193
201
  end
@@ -199,11 +207,11 @@ describe Mongoid::Relations::Embedded::One do
199
207
  end
200
208
 
201
209
  it "sets the target of the relation" do
202
- person.name.should eq(name)
210
+ expect(person.name).to eq(name)
203
211
  end
204
212
 
205
213
  it "does not save the target" do
206
- name.should_not be_persisted
214
+ expect(name).to_not be_persisted
207
215
  end
208
216
  end
209
217
  end
@@ -226,19 +234,19 @@ describe Mongoid::Relations::Embedded::One do
226
234
  end
227
235
 
228
236
  it "sets the target of the relation" do
229
- parent_shelf.child_shelf.should eq(child_shelf)
237
+ expect(parent_shelf.child_shelf).to eq(child_shelf)
230
238
  end
231
239
 
232
240
  it "sets the base on the inverse relation" do
233
- child_shelf.parent_shelf.should eq(parent_shelf)
241
+ expect(child_shelf.parent_shelf).to eq(parent_shelf)
234
242
  end
235
243
 
236
244
  it "sets the same instance on the inverse relation" do
237
- child_shelf.parent_shelf.should eql(parent_shelf)
245
+ expect(child_shelf.parent_shelf).to eql(parent_shelf)
238
246
  end
239
247
 
240
248
  it "does not save the target" do
241
- child_shelf.should_not be_persisted
249
+ expect(child_shelf).to_not be_persisted
242
250
  end
243
251
  end
244
252
 
@@ -257,19 +265,19 @@ describe Mongoid::Relations::Embedded::One do
257
265
  end
258
266
 
259
267
  it "sets the target of the relation" do
260
- parent_shelf.child_shelf.should eq(child_shelf)
268
+ expect(parent_shelf.child_shelf).to eq(child_shelf)
261
269
  end
262
270
 
263
271
  it "sets the base on the inverse relation" do
264
- child_shelf.parent_shelf.should eq(parent_shelf)
272
+ expect(child_shelf.parent_shelf).to eq(parent_shelf)
265
273
  end
266
274
 
267
275
  it "sets the same instance on the inverse relation" do
268
- child_shelf.parent_shelf.should eql(parent_shelf)
276
+ expect(child_shelf.parent_shelf).to eql(parent_shelf)
269
277
  end
270
278
 
271
279
  it "saves the target" do
272
- child_shelf.should be_persisted
280
+ expect(child_shelf).to be_persisted
273
281
  end
274
282
  end
275
283
  end
@@ -287,7 +295,7 @@ describe Mongoid::Relations::Embedded::One do
287
295
  end
288
296
 
289
297
  it "saves the child document" do
290
- parent.first_child.should be_a(Child)
298
+ expect(parent.first_child).to be_a(Child)
291
299
  end
292
300
  end
293
301
  end
@@ -312,11 +320,11 @@ describe Mongoid::Relations::Embedded::One do
312
320
  end
313
321
 
314
322
  it "sets the relation to nil" do
315
- person.name.should be_nil
323
+ expect(person.name).to be_nil
316
324
  end
317
325
 
318
326
  it "removes the inverse relation" do
319
- name.namable.should be_nil
327
+ expect(name.namable).to be_nil
320
328
  end
321
329
  end
322
330
 
@@ -331,7 +339,7 @@ describe Mongoid::Relations::Embedded::One do
331
339
  end
332
340
 
333
341
  it "sets the relation to nil" do
334
- person.name.should be_nil
342
+ expect(person.name).to be_nil
335
343
  end
336
344
  end
337
345
 
@@ -353,15 +361,15 @@ describe Mongoid::Relations::Embedded::One do
353
361
  end
354
362
 
355
363
  it "sets the relation to nil" do
356
- person.name.should be_nil
364
+ expect(person.name).to be_nil
357
365
  end
358
366
 
359
367
  it "removed the inverse relation" do
360
- name.namable.should be_nil
368
+ expect(name.namable).to be_nil
361
369
  end
362
370
 
363
371
  it "deletes the child document" do
364
- name.should be_destroyed
372
+ expect(name).to be_destroyed
365
373
  end
366
374
  end
367
375
 
@@ -373,11 +381,11 @@ describe Mongoid::Relations::Embedded::One do
373
381
  end
374
382
 
375
383
  it "sets the relation to nil" do
376
- person.name.should be_nil
384
+ expect(person.name).to be_nil
377
385
  end
378
386
 
379
387
  it "does not delete the child document" do
380
- name.should_not be_destroyed
388
+ expect(name).to_not be_destroyed
381
389
  end
382
390
  end
383
391
  end
@@ -401,11 +409,11 @@ describe Mongoid::Relations::Embedded::One do
401
409
  end
402
410
 
403
411
  it "sets the relation to nil" do
404
- parent_shelf.child_shelf.should be_nil
412
+ expect(parent_shelf.child_shelf).to be_nil
405
413
  end
406
414
 
407
415
  it "removes the inverse relation" do
408
- child_shelf.parent_shelf.should be_nil
416
+ expect(child_shelf.parent_shelf).to be_nil
409
417
  end
410
418
  end
411
419
 
@@ -420,7 +428,7 @@ describe Mongoid::Relations::Embedded::One do
420
428
  end
421
429
 
422
430
  it "sets the relation to nil" do
423
- parent_shelf.child_shelf.should be_nil
431
+ expect(parent_shelf.child_shelf).to be_nil
424
432
  end
425
433
  end
426
434
 
@@ -440,15 +448,15 @@ describe Mongoid::Relations::Embedded::One do
440
448
  end
441
449
 
442
450
  it "sets the relation to nil" do
443
- parent_shelf.child_shelf.should be_nil
451
+ expect(parent_shelf.child_shelf).to be_nil
444
452
  end
445
453
 
446
454
  it "removed the inverse relation" do
447
- child_shelf.parent_shelf.should be_nil
455
+ expect(child_shelf.parent_shelf).to be_nil
448
456
  end
449
457
 
450
458
  it "deletes the child document" do
451
- child_shelf.should be_destroyed
459
+ expect(child_shelf).to be_destroyed
452
460
  end
453
461
  end
454
462
  end
@@ -456,27 +464,6 @@ describe Mongoid::Relations::Embedded::One do
456
464
 
457
465
  describe "#build_#\{name}" do
458
466
 
459
- context "when providing mass assignment scoping" do
460
-
461
- let(:person) do
462
- Person.new
463
- end
464
-
465
- let(:quiz) do
466
- person.build_quiz(
467
- { topic: "Testing", name: "Test" }, as: :admin
468
- )
469
- end
470
-
471
- it "sets the attributes for the role" do
472
- quiz.topic.should eq("Testing")
473
- end
474
-
475
- it "does not set attributes not for the role" do
476
- quiz.name.should be_nil
477
- end
478
- end
479
-
480
467
  context "when the relation is not cyclic" do
481
468
 
482
469
  context "when the parent is a new record" do
@@ -494,19 +481,19 @@ describe Mongoid::Relations::Embedded::One do
494
481
  end
495
482
 
496
483
  it "sets the target of the relation" do
497
- person.name.should eq(name)
484
+ expect(person.name).to eq(name)
498
485
  end
499
486
 
500
487
  it "sets the base on the inverse relation" do
501
- name.namable.should eq(person)
488
+ expect(name.namable).to eq(person)
502
489
  end
503
490
 
504
491
  it "sets no attributes" do
505
- name.first_name.should be_nil
492
+ expect(name.first_name).to be_nil
506
493
  end
507
494
 
508
495
  it "does not save the target" do
509
- name.should_not be_persisted
496
+ expect(name).to_not be_persisted
510
497
  end
511
498
  end
512
499
 
@@ -522,19 +509,19 @@ describe Mongoid::Relations::Embedded::One do
522
509
  end
523
510
 
524
511
  it "sets the target of the relation" do
525
- person.name.should eq(name)
512
+ expect(person.name).to eq(name)
526
513
  end
527
514
 
528
515
  it "sets the base on the inverse relation" do
529
- name.namable.should eq(person)
516
+ expect(name.namable).to eq(person)
530
517
  end
531
518
 
532
519
  it "sets no attributes" do
533
- name.first_name.should be_nil
520
+ expect(name.first_name).to be_nil
534
521
  end
535
522
 
536
523
  it "does not save the target" do
537
- name.should_not be_persisted
524
+ expect(name).to_not be_persisted
538
525
  end
539
526
  end
540
527
  end
@@ -550,19 +537,19 @@ describe Mongoid::Relations::Embedded::One do
550
537
  end
551
538
 
552
539
  it "sets the target of the relation" do
553
- person.name.should eq(name)
540
+ expect(person.name).to eq(name)
554
541
  end
555
542
 
556
543
  it "sets the base on the inverse relation" do
557
- name.namable.should eq(person)
544
+ expect(name.namable).to eq(person)
558
545
  end
559
546
 
560
547
  it "sets no attributes" do
561
- name.first_name.should be_nil
548
+ expect(name.first_name).to be_nil
562
549
  end
563
550
 
564
551
  it "does not save the target" do
565
- name.should_not be_persisted
552
+ expect(name).to_not be_persisted
566
553
  end
567
554
  end
568
555
 
@@ -577,19 +564,19 @@ describe Mongoid::Relations::Embedded::One do
577
564
  end
578
565
 
579
566
  it "sets the target of the relation" do
580
- person.name.should eq(name)
567
+ expect(person.name).to eq(name)
581
568
  end
582
569
 
583
570
  it "sets the base on the inverse relation" do
584
- name.namable.should eq(person)
571
+ expect(name.namable).to eq(person)
585
572
  end
586
573
 
587
574
  it "sets the attributes" do
588
- name.first_name.should eq("James")
575
+ expect(name.first_name).to eq("James")
589
576
  end
590
577
 
591
578
  it "does not save the target" do
592
- name.should_not be_persisted
579
+ expect(name).to_not be_persisted
593
580
  end
594
581
  end
595
582
  end
@@ -605,7 +592,7 @@ describe Mongoid::Relations::Embedded::One do
605
592
  end
606
593
 
607
594
  it "does not save the target" do
608
- name.should_not be_persisted
595
+ expect(name).to_not be_persisted
609
596
  end
610
597
  end
611
598
  end
@@ -623,19 +610,19 @@ describe Mongoid::Relations::Embedded::One do
623
610
  end
624
611
 
625
612
  it "sets the target of the relation" do
626
- parent_shelf.child_shelf.should eq(child_shelf)
613
+ expect(parent_shelf.child_shelf).to eq(child_shelf)
627
614
  end
628
615
 
629
616
  it "sets the base on the inverse relation" do
630
- child_shelf.parent_shelf.should eq(parent_shelf)
617
+ expect(child_shelf.parent_shelf).to eq(parent_shelf)
631
618
  end
632
619
 
633
620
  it "sets the attributes" do
634
- child_shelf.level.should eq(1)
621
+ expect(child_shelf.level).to eq(1)
635
622
  end
636
623
 
637
624
  it "does not save the target" do
638
- child_shelf.should_not be_persisted
625
+ expect(child_shelf).to_not be_persisted
639
626
  end
640
627
  end
641
628
 
@@ -650,7 +637,7 @@ describe Mongoid::Relations::Embedded::One do
650
637
  end
651
638
 
652
639
  it "does not save the target" do
653
- child_shelf.should_not be_persisted
640
+ expect(child_shelf).to_not be_persisted
654
641
  end
655
642
  end
656
643
  end
@@ -675,33 +662,12 @@ describe Mongoid::Relations::Embedded::One do
675
662
  end
676
663
 
677
664
  it "returns the embedded one builder" do
678
- described_class.builder(base, metadata, target).should be_a(builder_klass)
665
+ expect(described_class.builder(base, metadata, target)).to be_a(builder_klass)
679
666
  end
680
667
  end
681
668
 
682
669
  describe "#create_#\{name}" do
683
670
 
684
- context "when providing mass assignment scoping" do
685
-
686
- let(:person) do
687
- Person.new
688
- end
689
-
690
- let(:quiz) do
691
- person.create_quiz(
692
- { topic: "Testing", name: "Test" }, as: :admin
693
- )
694
- end
695
-
696
- it "sets the attributes for the role" do
697
- quiz.topic.should eq("Testing")
698
- end
699
-
700
- it "does not set attributes not for the role" do
701
- quiz.name.should be_nil
702
- end
703
- end
704
-
705
671
  context "when the parent is a new record" do
706
672
 
707
673
  context "when not providing any attributes" do
@@ -715,19 +681,19 @@ describe Mongoid::Relations::Embedded::One do
715
681
  end
716
682
 
717
683
  it "sets the target of the relation" do
718
- person.name.should eq(name)
684
+ expect(person.name).to eq(name)
719
685
  end
720
686
 
721
687
  it "sets the base on the inverse relation" do
722
- name.namable.should eq(person)
688
+ expect(name.namable).to eq(person)
723
689
  end
724
690
 
725
691
  it "sets no attributes" do
726
- name.first_name.should be_nil
692
+ expect(name.first_name).to be_nil
727
693
  end
728
694
 
729
695
  it "saves the target" do
730
- name.should be_persisted
696
+ expect(name).to be_persisted
731
697
  end
732
698
  end
733
699
 
@@ -742,19 +708,19 @@ describe Mongoid::Relations::Embedded::One do
742
708
  end
743
709
 
744
710
  it "sets the target of the relation" do
745
- person.name.should eq(name)
711
+ expect(person.name).to eq(name)
746
712
  end
747
713
 
748
714
  it "sets the base on the inverse relation" do
749
- name.namable.should eq(person)
715
+ expect(name.namable).to eq(person)
750
716
  end
751
717
 
752
718
  it "sets no attributes" do
753
- name.first_name.should be_nil
719
+ expect(name.first_name).to be_nil
754
720
  end
755
721
 
756
722
  it "saves the target" do
757
- name.should be_persisted
723
+ expect(name).to be_persisted
758
724
  end
759
725
  end
760
726
 
@@ -769,19 +735,19 @@ describe Mongoid::Relations::Embedded::One do
769
735
  end
770
736
 
771
737
  it "sets the target of the relation" do
772
- person.name.should eq(name)
738
+ expect(person.name).to eq(name)
773
739
  end
774
740
 
775
741
  it "sets the base on the inverse relation" do
776
- name.namable.should eq(person)
742
+ expect(name.namable).to eq(person)
777
743
  end
778
744
 
779
745
  it "sets the attributes" do
780
- name.first_name.should eq("James")
746
+ expect(name.first_name).to eq("James")
781
747
  end
782
748
 
783
749
  it "saves the target" do
784
- name.should be_persisted
750
+ expect(name).to be_persisted
785
751
  end
786
752
  end
787
753
 
@@ -796,7 +762,7 @@ describe Mongoid::Relations::Embedded::One do
796
762
  end
797
763
 
798
764
  it "does not save the target" do
799
- name.should be_persisted
765
+ expect(name).to be_persisted
800
766
  end
801
767
  end
802
768
  end
@@ -805,21 +771,21 @@ describe Mongoid::Relations::Embedded::One do
805
771
  describe ".embedded?" do
806
772
 
807
773
  it "returns true" do
808
- described_class.should be_embedded
774
+ expect(described_class).to be_embedded
809
775
  end
810
776
  end
811
777
 
812
778
  describe ".foreign_key_suffix" do
813
779
 
814
780
  it "returns nil" do
815
- described_class.foreign_key_suffix.should be_nil
781
+ expect(described_class.foreign_key_suffix).to be_nil
816
782
  end
817
783
  end
818
784
 
819
785
  describe ".macro" do
820
786
 
821
787
  it "returns embeds_one" do
822
- described_class.macro.should eq(:embeds_one)
788
+ expect(described_class.macro).to eq(:embeds_one)
823
789
  end
824
790
  end
825
791
 
@@ -838,8 +804,9 @@ describe Mongoid::Relations::Embedded::One do
838
804
  end
839
805
 
840
806
  it "returns the single nested builder" do
841
- described_class.nested_builder(metadata, attributes, {}).should
842
- be_a(nested_builder_klass)
807
+ expect(
808
+ described_class.nested_builder(metadata, attributes, {})
809
+ ).to be_a(nested_builder_klass)
843
810
  end
844
811
  end
845
812
 
@@ -862,20 +829,20 @@ describe Mongoid::Relations::Embedded::One do
862
829
  context "when checking #{method}" do
863
830
 
864
831
  it "returns true" do
865
- document.respond_to?(method).should be_true
832
+ expect(document.respond_to?(method)).to be true
866
833
  end
867
834
  end
868
835
  end
869
836
 
870
837
  it "responds to persisted?" do
871
- document.should respond_to(:persisted?)
838
+ expect(document).to respond_to(:persisted?)
872
839
  end
873
840
  end
874
841
 
875
842
  describe ".valid_options" do
876
843
 
877
844
  it "returns the valid options" do
878
- described_class.valid_options.should eq(
845
+ expect(described_class.valid_options).to eq(
879
846
  [ :autobuild, :as, :cascade_callbacks, :cyclic, :store_as ]
880
847
  )
881
848
  end
@@ -884,7 +851,7 @@ describe Mongoid::Relations::Embedded::One do
884
851
  describe ".validation_default" do
885
852
 
886
853
  it "returns true" do
887
- described_class.validation_default.should be_true
854
+ expect(described_class.validation_default).to be true
888
855
  end
889
856
  end
890
857
 
@@ -914,11 +881,11 @@ describe Mongoid::Relations::Embedded::One do
914
881
  end
915
882
 
916
883
  it "sets the values of the array" do
917
- from_db.aliases.should eq([ "Syd", "Sydney" ])
884
+ expect(from_db.aliases).to eq([ "Syd", "Sydney" ])
918
885
  end
919
886
 
920
887
  it "persists the array" do
921
- Person.find(person.id).name.aliases.should eq([ "Syd", "Sydney" ])
888
+ expect(Person.find(person.id).name.aliases).to eq([ "Syd", "Sydney" ])
922
889
  end
923
890
  end
924
891
  end
@@ -956,7 +923,7 @@ describe Mongoid::Relations::Embedded::One do
956
923
  end
957
924
 
958
925
  it "persists the new document on the first save" do
959
- from_db.reload.name.translations.should_not be_empty
926
+ expect(from_db.reload.name.translations).to_not be_empty
960
927
  end
961
928
  end
962
929
  end
@@ -986,7 +953,7 @@ describe Mongoid::Relations::Embedded::One do
986
953
  end
987
954
 
988
955
  it "reloads the correct number" do
989
- person.reload.addresses.count.should eq(1)
956
+ expect(person.reload.addresses.count).to eq(1)
990
957
  end
991
958
 
992
959
  context "when adding a child" do
@@ -1000,7 +967,7 @@ describe Mongoid::Relations::Embedded::One do
1000
967
  end
1001
968
 
1002
969
  it "reloads the correct number" do
1003
- person.reload.addresses.count.should eq(1)
970
+ expect(person.reload.addresses.count).to eq(1)
1004
971
  end
1005
972
  end
1006
973
  end
@@ -1029,11 +996,11 @@ describe Mongoid::Relations::Embedded::One do
1029
996
  end
1030
997
 
1031
998
  it "creates proper documents from the db" do
1032
- label.name.should eq("Mute")
999
+ expect(label.name).to eq("Mute")
1033
1000
  end
1034
1001
 
1035
1002
  it "assigns ids to the documents" do
1036
- label.id.should_not be_nil
1003
+ expect(label.id).to_not be_nil
1037
1004
  end
1038
1005
 
1039
1006
  context "when subsequently updating the documents" do
@@ -1043,11 +1010,11 @@ describe Mongoid::Relations::Embedded::One do
1043
1010
  end
1044
1011
 
1045
1012
  it "updates the document" do
1046
- label.name.should eq("Interscope")
1013
+ expect(label.name).to eq("Interscope")
1047
1014
  end
1048
1015
 
1049
1016
  it "persists the change" do
1050
- label.reload.name.should eq("Interscope")
1017
+ expect(label.reload.name).to eq("Interscope")
1051
1018
  end
1052
1019
  end
1053
1020
  end