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
@@ -9,7 +9,7 @@ describe Mongoid::Extensions::Object do
9
9
  end
10
10
 
11
11
  it "returns self" do
12
- object.__evolve_object_id__.should eq(object)
12
+ expect(object.__evolve_object_id__).to eq(object)
13
13
  end
14
14
  end
15
15
 
@@ -20,7 +20,7 @@ describe Mongoid::Extensions::Object do
20
20
  end
21
21
 
22
22
  it "returns self" do
23
- object.__find_args__.should eq(object)
23
+ expect(object.__find_args__).to eq(object)
24
24
  end
25
25
  end
26
26
 
@@ -31,7 +31,7 @@ describe Mongoid::Extensions::Object do
31
31
  end
32
32
 
33
33
  it "returns self" do
34
- object.__mongoize_object_id__.should eq(object)
34
+ expect(object.__mongoize_object_id__).to eq(object)
35
35
  end
36
36
  end
37
37
 
@@ -50,7 +50,7 @@ describe Mongoid::Extensions::Object do
50
50
  context "when provided an object id" do
51
51
 
52
52
  let(:object_id) do
53
- Moped::BSON::ObjectId.new
53
+ BSON::ObjectId.new
54
54
  end
55
55
 
56
56
  let(:fk) do
@@ -58,7 +58,7 @@ describe Mongoid::Extensions::Object do
58
58
  end
59
59
 
60
60
  it "returns the object id" do
61
- fk.should eq(object_id)
61
+ expect(fk).to eq(object_id)
62
62
  end
63
63
  end
64
64
 
@@ -67,7 +67,7 @@ describe Mongoid::Extensions::Object do
67
67
  context "when the string is a legal object id" do
68
68
 
69
69
  let(:object_id) do
70
- Moped::BSON::ObjectId.new
70
+ BSON::ObjectId.new
71
71
  end
72
72
 
73
73
  let(:fk) do
@@ -75,7 +75,7 @@ describe Mongoid::Extensions::Object do
75
75
  end
76
76
 
77
77
  it "returns the object id" do
78
- fk.should eq(object_id)
78
+ expect(fk).to eq(object_id)
79
79
  end
80
80
  end
81
81
 
@@ -90,7 +90,7 @@ describe Mongoid::Extensions::Object do
90
90
  end
91
91
 
92
92
  it "returns the string" do
93
- fk.should eq(string)
93
+ expect(fk).to eq(string)
94
94
  end
95
95
  end
96
96
 
@@ -101,7 +101,7 @@ describe Mongoid::Extensions::Object do
101
101
  end
102
102
 
103
103
  it "returns nil" do
104
- fk.should be_nil
104
+ expect(fk).to be_nil
105
105
  end
106
106
  end
107
107
  end
@@ -113,7 +113,7 @@ describe Mongoid::Extensions::Object do
113
113
  end
114
114
 
115
115
  it "returns nil" do
116
- fk.should be_nil
116
+ expect(fk).to be_nil
117
117
  end
118
118
  end
119
119
 
@@ -124,7 +124,7 @@ describe Mongoid::Extensions::Object do
124
124
  end
125
125
 
126
126
  it "returns an empty array" do
127
- fk.should eq([])
127
+ expect(fk).to eq([])
128
128
  end
129
129
  end
130
130
  end
@@ -137,7 +137,7 @@ describe Mongoid::Extensions::Object do
137
137
  end
138
138
 
139
139
  it "returns self" do
140
- object.__mongoize_time__.should eq(object)
140
+ expect(object.__mongoize_time__).to eq(object)
141
141
  end
142
142
  end
143
143
 
@@ -148,7 +148,7 @@ describe Mongoid::Extensions::Object do
148
148
  end
149
149
 
150
150
  it "returns self" do
151
- object.__sortable__.should eq(object)
151
+ expect(object.__sortable__).to eq(object)
152
152
  end
153
153
  end
154
154
 
@@ -159,7 +159,7 @@ describe Mongoid::Extensions::Object do
159
159
  end
160
160
 
161
161
  it "returns the provided object" do
162
- Object.demongoize(object).should eq(object)
162
+ expect(Object.demongoize(object)).to eq(object)
163
163
  end
164
164
  end
165
165
 
@@ -172,7 +172,7 @@ describe Mongoid::Extensions::Object do
172
172
  end
173
173
 
174
174
  it "returns nil" do
175
- result.should be_nil
175
+ expect(result).to be_nil
176
176
  end
177
177
  end
178
178
 
@@ -185,7 +185,7 @@ describe Mongoid::Extensions::Object do
185
185
  end
186
186
 
187
187
  it "returns the result of the method" do
188
- result.should eq("Yoda,Luke")
188
+ expect(result).to eq("Yoda,Luke")
189
189
  end
190
190
  end
191
191
 
@@ -196,7 +196,7 @@ describe Mongoid::Extensions::Object do
196
196
  end
197
197
 
198
198
  it "returns the result of the method" do
199
- result.should be_nil
199
+ expect(result).to be_nil
200
200
  end
201
201
  end
202
202
  end
@@ -209,7 +209,7 @@ describe Mongoid::Extensions::Object do
209
209
  end
210
210
 
211
211
  it "returns the provided object" do
212
- Object.mongoize(object).should eq(object)
212
+ expect(Object.mongoize(object)).to eq(object)
213
213
  end
214
214
  end
215
215
 
@@ -220,14 +220,14 @@ describe Mongoid::Extensions::Object do
220
220
  end
221
221
 
222
222
  it "returns the object" do
223
- object.mongoize.should eq(object)
223
+ expect(object.mongoize).to eq(object)
224
224
  end
225
225
  end
226
226
 
227
227
  describe "#resizable?" do
228
228
 
229
229
  it "returns false" do
230
- Object.new.should_not be_resizable
230
+ expect(Object.new).to_not be_resizable
231
231
  end
232
232
  end
233
233
 
@@ -244,7 +244,7 @@ describe Mongoid::Extensions::Object do
244
244
  end
245
245
 
246
246
  it "returns nil" do
247
- result.should be_nil
247
+ expect(result).to be_nil
248
248
  end
249
249
  end
250
250
  end
@@ -258,7 +258,7 @@ describe Mongoid::Extensions::Object do
258
258
  end
259
259
 
260
260
  before do
261
- document.instance_variable_set(:@testing, "testing")
261
+ document.instance_variable_set(:@_testing, "testing")
262
262
  end
263
263
 
264
264
  let!(:removal) do
@@ -266,11 +266,11 @@ describe Mongoid::Extensions::Object do
266
266
  end
267
267
 
268
268
  it "removes the instance variable" do
269
- document.instance_variable_defined?(:@testing).should be_false
269
+ expect(document.instance_variable_defined?(:@_testing)).to be false
270
270
  end
271
271
 
272
- it "returns true" do
273
- removal.should be_true
272
+ it "returns the value" do
273
+ expect(removal).to eq("testing")
274
274
  end
275
275
  end
276
276
 
@@ -285,7 +285,7 @@ describe Mongoid::Extensions::Object do
285
285
  end
286
286
 
287
287
  it "returns false" do
288
- removal.should be_false
288
+ expect(removal).to be false
289
289
  end
290
290
  end
291
291
  end
@@ -9,7 +9,7 @@ describe Mongoid::Extensions::Range do
9
9
  end
10
10
 
11
11
  it "returns the range as an array" do
12
- range.__find_args__.should eq([ 1, 2, 3 ])
12
+ expect(range.__find_args__).to eq([ 1, 2, 3 ])
13
13
  end
14
14
  end
15
15
 
@@ -22,7 +22,18 @@ describe Mongoid::Extensions::Range do
22
22
  end
23
23
 
24
24
  it "returns an ascending range" do
25
- Range.demongoize(hash).should eq(1..3)
25
+ expect(Range.demongoize(hash)).to eq(1..3)
26
+ end
27
+ end
28
+
29
+ context "when the range is ascending with exclude end" do
30
+
31
+ let(:hash) do
32
+ { "min" => 1, "max" => 3, "exclude_end" => true }
33
+ end
34
+
35
+ it "returns an ascending range" do
36
+ expect(Range.demongoize(hash)).to eq(1...3)
26
37
  end
27
38
  end
28
39
 
@@ -33,7 +44,18 @@ describe Mongoid::Extensions::Range do
33
44
  end
34
45
 
35
46
  it "returns an descending range" do
36
- Range.demongoize(hash).should eq(5..1)
47
+ expect(Range.demongoize(hash)).to eq(5..1)
48
+ end
49
+ end
50
+
51
+ context "when the range is descending with exclude end" do
52
+
53
+ let(:hash) do
54
+ { "min" => 5, "max" => 1, "exclude_end" => true }
55
+ end
56
+
57
+ it "returns an descending range" do
58
+ expect(Range.demongoize(hash)).to eq(5...1)
37
59
  end
38
60
  end
39
61
 
@@ -44,7 +66,18 @@ describe Mongoid::Extensions::Range do
44
66
  end
45
67
 
46
68
  it "returns an alphabetic range" do
47
- Range.demongoize(hash).should eq("a".."z")
69
+ expect(Range.demongoize(hash)).to eq("a".."z")
70
+ end
71
+ end
72
+
73
+ context "when the range is letters with exclude end" do
74
+
75
+ let(:hash) do
76
+ { "min" => "a", "max" => "z", "exclude_end" => true }
77
+ end
78
+
79
+ it "returns an alphabetic range" do
80
+ expect(Range.demongoize(hash)).to eq("a"..."z")
48
81
  end
49
82
  end
50
83
  end
@@ -54,22 +87,38 @@ describe Mongoid::Extensions::Range do
54
87
  context "when the value is not nil" do
55
88
 
56
89
  it "returns the object hash" do
57
- Range.mongoize(1..3).should eq({ "min" => 1, "max" => 3 })
90
+ expect(Range.mongoize(1..3)).to eq({ "min" => 1, "max" => 3 })
91
+ end
92
+
93
+ it "returns the object hash when passed an inverse range" do
94
+ expect(Range.mongoize(5..1)).to eq({ "min" => 5, "max" => 1 })
95
+ end
96
+
97
+ it "returns the object hash when passed a letter range" do
98
+ expect(Range.mongoize("a".."z")).to eq({ "min" => "a", "max" => "z" })
99
+ end
100
+ end
101
+
102
+ context "when the value is not nil with exclude end" do
103
+
104
+ it "returns the object hash" do
105
+ expect(Range.mongoize(1...3)).to eq({ "min" => 1, "max" => 3, "exclude_end" => true })
58
106
  end
59
107
 
60
108
  it "returns the object hash when passed an inverse range" do
61
- Range.mongoize(5..1).should eq({ "min" => 5, "max" => 1 })
109
+ expect(Range.mongoize(5...1)).to eq({ "min" => 5, "max" => 1, "exclude_end" => true })
62
110
  end
63
111
 
64
112
  it "returns the object hash when passed a letter range" do
65
- Range.mongoize("a".."z").should eq({ "min" => "a", "max" => "z" })
113
+ expect(Range.mongoize("a"..."z")).to eq({ "min" => "a", "max" => "z", "exclude_end" => true })
66
114
  end
115
+
67
116
  end
68
117
 
69
118
  context "when the value is nil" do
70
119
 
71
120
  it "returns nil" do
72
- Range.mongoize(nil).should be_nil
121
+ expect(Range.mongoize(nil)).to be_nil
73
122
  end
74
123
  end
75
124
  end
@@ -79,15 +128,15 @@ describe Mongoid::Extensions::Range do
79
128
  context "when the value is not nil" do
80
129
 
81
130
  it "returns the object hash" do
82
- (1..3).mongoize.should eq({ "min" => 1, "max" => 3 })
131
+ expect((1..3).mongoize).to eq({ "min" => 1, "max" => 3 })
83
132
  end
84
133
 
85
134
  it "returns the object hash when passed an inverse range" do
86
- (5..1).mongoize.should eq({ "min" => 5, "max" => 1 })
135
+ expect((5..1).mongoize).to eq({ "min" => 5, "max" => 1 })
87
136
  end
88
137
 
89
138
  it "returns the object hash when passed a letter range" do
90
- ("a".."z").mongoize.should eq({ "min" => "a", "max" => "z" })
139
+ expect(("a".."z").mongoize).to eq({ "min" => "a", "max" => "z" })
91
140
  end
92
141
  end
93
142
  end
@@ -99,7 +148,7 @@ describe Mongoid::Extensions::Range do
99
148
  end
100
149
 
101
150
  it "returns true" do
102
- range.should be_resizable
151
+ expect(range).to be_resizable
103
152
  end
104
153
  end
105
154
  end
@@ -9,7 +9,7 @@ describe Mongoid::Extensions::Regexp do
9
9
  end
10
10
 
11
11
  it "returns the provided value" do
12
- value.should eq(/[^abc]/)
12
+ expect(value).to eq(/[^abc]/)
13
13
  end
14
14
  end
15
15
 
@@ -22,7 +22,7 @@ describe Mongoid::Extensions::Regexp do
22
22
  end
23
23
 
24
24
  it "returns the provided value" do
25
- value.should eq(/[^abc]/)
25
+ expect(value).to eq(/[^abc]/)
26
26
  end
27
27
  end
28
28
 
@@ -33,7 +33,7 @@ describe Mongoid::Extensions::Regexp do
33
33
  end
34
34
 
35
35
  it "returns the provided value as a regex" do
36
- value.should eq(/[^abc]/)
36
+ expect(value).to eq(/[^abc]/)
37
37
  end
38
38
  end
39
39
  end
@@ -41,7 +41,7 @@ describe Mongoid::Extensions::Regexp do
41
41
  describe "#mongoize" do
42
42
 
43
43
  it "returns self" do
44
- /[^abc]/.mongoize.should eq(/[^abc]/)
44
+ expect(/[^abc]/.mongoize).to eq(/[^abc]/)
45
45
  end
46
46
  end
47
47
  end
@@ -5,18 +5,18 @@ describe Mongoid::Extensions::Set do
5
5
  describe "#demongoize" do
6
6
 
7
7
  it "returns the set if Array" do
8
- Set.demongoize([ "test" ]).should eq(Set.new([ "test" ]))
8
+ expect(Set.demongoize([ "test" ])).to eq(Set.new([ "test" ]))
9
9
  end
10
10
  end
11
11
 
12
12
  describe ".mongoize" do
13
13
 
14
14
  it "returns an array" do
15
- Set.mongoize([ "test" ]).should eq([ "test" ])
15
+ expect(Set.mongoize([ "test" ])).to eq([ "test" ])
16
16
  end
17
17
 
18
18
  it "returns an array even if the value is a set" do
19
- Set.mongoize(Set.new([ "test" ])).should eq([ "test" ])
19
+ expect(Set.mongoize(Set.new([ "test" ]))).to eq([ "test" ])
20
20
  end
21
21
  end
22
22
 
@@ -27,7 +27,7 @@ describe Mongoid::Extensions::Set do
27
27
  end
28
28
 
29
29
  it "returns an array" do
30
- set.mongoize.should eq([ "test" ])
30
+ expect(set.mongoize).to eq([ "test" ])
31
31
  end
32
32
  end
33
33
  end
@@ -7,18 +7,18 @@ describe Mongoid::Extensions::String do
7
7
  context "when the string is blank" do
8
8
 
9
9
  it "returns the empty string" do
10
- "".__evolve_object_id__.should be_empty
10
+ expect("".__evolve_object_id__).to be_empty
11
11
  end
12
12
  end
13
13
 
14
14
  context "when the string is a legal object id" do
15
15
 
16
16
  let(:object_id) do
17
- Moped::BSON::ObjectId.new
17
+ BSON::ObjectId.new
18
18
  end
19
19
 
20
20
  it "returns the object id" do
21
- object_id.to_s.__evolve_object_id__.should eq(object_id)
21
+ expect(object_id.to_s.__evolve_object_id__).to eq(object_id)
22
22
  end
23
23
  end
24
24
 
@@ -29,7 +29,7 @@ describe Mongoid::Extensions::String do
29
29
  end
30
30
 
31
31
  it "returns the string" do
32
- string.__evolve_object_id__.should eq(string)
32
+ expect(string.__evolve_object_id__).to eq(string)
33
33
  end
34
34
  end
35
35
  end
@@ -39,18 +39,18 @@ describe Mongoid::Extensions::String do
39
39
  context "when the string is blank" do
40
40
 
41
41
  it "returns nil" do
42
- "".__mongoize_object_id__.should be_nil
42
+ expect("".__mongoize_object_id__).to be_nil
43
43
  end
44
44
  end
45
45
 
46
46
  context "when the string is a legal object id" do
47
47
 
48
48
  let(:object_id) do
49
- Moped::BSON::ObjectId.new
49
+ BSON::ObjectId.new
50
50
  end
51
51
 
52
52
  it "returns the object id" do
53
- object_id.to_s.__mongoize_object_id__.should eq(object_id)
53
+ expect(object_id.to_s.__mongoize_object_id__).to eq(object_id)
54
54
  end
55
55
  end
56
56
 
@@ -61,7 +61,7 @@ describe Mongoid::Extensions::String do
61
61
  end
62
62
 
63
63
  it "returns the string" do
64
- string.__mongoize_object_id__.should eq(string)
64
+ expect(string.__mongoize_object_id__).to eq(string)
65
65
  end
66
66
  end
67
67
  end
@@ -90,11 +90,11 @@ describe Mongoid::Extensions::String do
90
90
  end
91
91
 
92
92
  it "converts to a time" do
93
- time.should eq(Time.configured.parse(string))
93
+ expect(time).to eq(Time.configured.parse(string))
94
94
  end
95
95
 
96
96
  it "converts to the as time zone" do
97
- time.zone.should eq("JST")
97
+ expect(time.zone).to eq("JST")
98
98
  end
99
99
  end
100
100
 
@@ -134,7 +134,7 @@ describe Mongoid::Extensions::String do
134
134
  end
135
135
 
136
136
  it "converts to a time" do
137
- time.should eq(Time.parse(string))
137
+ expect(time).to eq(Time.parse(string))
138
138
  end
139
139
  end
140
140
 
@@ -164,14 +164,14 @@ describe Mongoid::Extensions::String do
164
164
  end
165
165
 
166
166
  it "returns an underscored tableized name" do
167
- Medical::Patient.name.collectionize.should eq("medical_patients")
167
+ expect(Medical::Patient.name.collectionize).to eq("medical_patients")
168
168
  end
169
169
  end
170
170
 
171
171
  context "when class is not namespaced" do
172
172
 
173
173
  it "returns an underscored tableized name" do
174
- MixedDrink.name.collectionize.should eq("mixed_drinks")
174
+ expect(MixedDrink.name.collectionize).to eq("mixed_drinks")
175
175
  end
176
176
  end
177
177
  end
@@ -181,14 +181,14 @@ describe Mongoid::Extensions::String do
181
181
  context "when the object is not a string" do
182
182
 
183
183
  it "returns the string" do
184
- String.demongoize(:test).should eq("test")
184
+ expect(String.demongoize(:test)).to eq("test")
185
185
  end
186
186
  end
187
187
 
188
188
  context "when the object is nil" do
189
189
 
190
190
  it "returns nil" do
191
- String.demongoize(nil).should be_nil
191
+ expect(String.demongoize(nil)).to be_nil
192
192
  end
193
193
  end
194
194
  end
@@ -198,28 +198,28 @@ describe Mongoid::Extensions::String do
198
198
  context "when the string is id" do
199
199
 
200
200
  it "returns true" do
201
- "id".should be_mongoid_id
201
+ expect("id").to be_mongoid_id
202
202
  end
203
203
  end
204
204
 
205
205
  context "when the string is _id" do
206
206
 
207
207
  it "returns true" do
208
- "_id".should be_mongoid_id
208
+ expect("_id").to be_mongoid_id
209
209
  end
210
210
  end
211
211
 
212
212
  context "when the string contains id" do
213
213
 
214
214
  it "returns false" do
215
- "identity".should_not be_mongoid_id
215
+ expect("identity").to_not be_mongoid_id
216
216
  end
217
217
  end
218
218
 
219
219
  context "when the string contains _id" do
220
220
 
221
221
  it "returns false" do
222
- "something_id".should_not be_mongoid_id
222
+ expect("something_id").to_not be_mongoid_id
223
223
  end
224
224
  end
225
225
  end
@@ -229,14 +229,14 @@ describe Mongoid::Extensions::String do
229
229
  context "when the object is not a string" do
230
230
 
231
231
  it "returns the string" do
232
- String.mongoize(:test).should eq("test")
232
+ expect(String.mongoize(:test)).to eq("test")
233
233
  end
234
234
  end
235
235
 
236
236
  context "when the object is nil" do
237
237
 
238
238
  it "returns nil" do
239
- String.mongoize(nil).should be_nil
239
+ expect(String.mongoize(nil)).to be_nil
240
240
  end
241
241
  end
242
242
  end
@@ -244,7 +244,7 @@ describe Mongoid::Extensions::String do
244
244
  describe "#mongoize" do
245
245
 
246
246
  it "returns self" do
247
- "test".mongoize.should eq("test")
247
+ expect("test".mongoize).to eq("test")
248
248
  end
249
249
  end
250
250
 
@@ -253,21 +253,21 @@ describe Mongoid::Extensions::String do
253
253
  context "when string is a reader" do
254
254
 
255
255
  it "returns self" do
256
- "attribute".reader.should eq("attribute")
256
+ expect("attribute".reader).to eq("attribute")
257
257
  end
258
258
  end
259
259
 
260
260
  context "when string is a writer" do
261
261
 
262
262
  it "returns the reader" do
263
- "attribute=".reader.should eq("attribute")
263
+ expect("attribute=".reader).to eq("attribute")
264
264
  end
265
265
  end
266
266
 
267
267
  context "when the string is before_type_cast" do
268
268
 
269
269
  it "returns the reader" do
270
- "attribute_before_type_cast".reader.should eq("attribute")
270
+ expect("attribute_before_type_cast".reader).to eq("attribute")
271
271
  end
272
272
  end
273
273
  end
@@ -277,28 +277,28 @@ describe Mongoid::Extensions::String do
277
277
  context "when the string is an integer" do
278
278
 
279
279
  it "returns true" do
280
- "1234".should be_numeric
280
+ expect("1234").to be_numeric
281
281
  end
282
282
  end
283
283
 
284
284
  context "when string is a float" do
285
285
 
286
286
  it "returns true" do
287
- "1234.123".should be_numeric
287
+ expect("1234.123").to be_numeric
288
288
  end
289
289
  end
290
290
 
291
291
  context "when the string is has exponents" do
292
292
 
293
293
  it "returns true" do
294
- "1234.123123E4".should be_numeric
294
+ expect("1234.123123E4").to be_numeric
295
295
  end
296
296
  end
297
297
 
298
298
  context "when the string is non numeric" do
299
299
 
300
300
  it "returns false" do
301
- "blah".should_not be_numeric
301
+ expect("blah").to_not be_numeric
302
302
  end
303
303
  end
304
304
  end
@@ -308,42 +308,31 @@ describe Mongoid::Extensions::String do
308
308
  context "when string is address" do
309
309
 
310
310
  it "returns address" do
311
- "address".singularize.should eq("address")
311
+ expect("address".singularize).to eq("address")
312
312
  end
313
313
  end
314
314
 
315
315
  context "when string is address_profiles" do
316
316
 
317
317
  it "returns address_profile" do
318
- "address_profiles".singularize.should eq("address_profile")
318
+ expect("address_profiles".singularize).to eq("address_profile")
319
319
  end
320
320
  end
321
321
  end
322
322
 
323
- describe "#to_a" do
324
-
325
- let(:value) do
326
- "Disintegration is the best album ever!"
327
- end
328
-
329
- it "returns an array with the string in it" do
330
- value.to_a.should eq([ value ])
331
- end
332
- end
333
-
334
323
  describe "#writer?" do
335
324
 
336
325
  context "when string is a reader" do
337
326
 
338
327
  it "returns false" do
339
- "attribute".writer?.should be_false
328
+ expect("attribute".writer?).to be false
340
329
  end
341
330
  end
342
331
 
343
332
  context "when string is a writer" do
344
333
 
345
334
  it "returns true" do
346
- "attribute=".writer?.should be_true
335
+ expect("attribute=".writer?).to be true
347
336
  end
348
337
  end
349
338
  end
@@ -353,14 +342,14 @@ describe Mongoid::Extensions::String do
353
342
  context "when string is a reader" do
354
343
 
355
344
  it "returns false" do
356
- "attribute".before_type_cast?.should be_false
345
+ expect("attribute".before_type_cast?).to be false
357
346
  end
358
347
  end
359
348
 
360
349
  context "when string is before_type_cast" do
361
350
 
362
351
  it "returns true" do
363
- "attribute_before_type_cast".before_type_cast?.should be_true
352
+ expect("attribute_before_type_cast".before_type_cast?).to be true
364
353
  end
365
354
  end
366
355
  end