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
@@ -0,0 +1,49 @@
1
+ require "spec_helper"
2
+
3
+ describe Mongoid::Matchable::In do
4
+
5
+ describe "#matches?" do
6
+
7
+ context 'when the attribute is not nil' do
8
+
9
+ let(:matcher) do
10
+ described_class.new("first")
11
+ end
12
+
13
+ context "when the values include the attribute" do
14
+
15
+ it "returns true" do
16
+ expect(matcher.matches?("$in" => [/\Afir.*\z/, "second"])).to be true
17
+ end
18
+ end
19
+
20
+ context "when the values don't include the attribute" do
21
+
22
+ it "returns false" do
23
+ expect(matcher.matches?("$in" => ["third"])).to be false
24
+ end
25
+ end
26
+ end
27
+
28
+ context 'when the attribute is nil' do
29
+
30
+ let(:matcher) do
31
+ described_class.new(nil)
32
+ end
33
+
34
+ context "when the values include the attribute" do
35
+
36
+ it "returns true" do
37
+ expect(matcher.matches?("$in" => [/\Afir.*\z/, nil])).to be true
38
+ end
39
+ end
40
+
41
+ context "when the values don't include the attribute" do
42
+
43
+ it "returns false" do
44
+ expect(matcher.matches?("$in" => ["third"])).to be false
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
@@ -1,6 +1,6 @@
1
1
  require "spec_helper"
2
2
 
3
- describe Mongoid::Matchers::Lt do
3
+ describe Mongoid::Matchable::Lt do
4
4
 
5
5
  describe "#matches?" do
6
6
 
@@ -11,7 +11,7 @@ describe Mongoid::Matchers::Lt do
11
11
  end
12
12
 
13
13
  it "returns false" do
14
- matcher.matches?("$lt" => 3).should be_false
14
+ expect(matcher.matches?("$lt" => 3)).to be false
15
15
  end
16
16
  end
17
17
 
@@ -22,7 +22,7 @@ describe Mongoid::Matchers::Lt do
22
22
  end
23
23
 
24
24
  it "returns false" do
25
- matcher.matches?("$lt" => 3).should be_false
25
+ expect(matcher.matches?("$lt" => 3)).to be false
26
26
  end
27
27
  end
28
28
 
@@ -33,7 +33,7 @@ describe Mongoid::Matchers::Lt do
33
33
  end
34
34
 
35
35
  it "returns true" do
36
- matcher.matches?("$lt" => 10).should be_true
36
+ expect(matcher.matches?("$lt" => 10)).to be true
37
37
  end
38
38
  end
39
39
 
@@ -44,7 +44,7 @@ describe Mongoid::Matchers::Lt do
44
44
  end
45
45
 
46
46
  it "returns false" do
47
- matcher.matches?("$lt" => 5).should be_false
47
+ expect(matcher.matches?("$lt" => 5)).to be false
48
48
  end
49
49
  end
50
50
 
@@ -55,7 +55,7 @@ describe Mongoid::Matchers::Lt do
55
55
  end
56
56
 
57
57
  it "returns true" do
58
- matcher.matches?("$lt" => 5).should be_true
58
+ expect(matcher.matches?("$lt" => 5)).to be true
59
59
  end
60
60
  end
61
61
 
@@ -65,7 +65,7 @@ describe Mongoid::Matchers::Lt do
65
65
  end
66
66
 
67
67
  it "returns false" do
68
- matcher.matches?("$lt" => 5).should be_false
68
+ expect(matcher.matches?("$lt" => 5)).to be false
69
69
  end
70
70
 
71
71
  end
@@ -1,6 +1,6 @@
1
1
  require "spec_helper"
2
2
 
3
- describe Mongoid::Matchers::Lte do
3
+ describe Mongoid::Matchable::Lte do
4
4
 
5
5
  describe "#matches?" do
6
6
 
@@ -11,7 +11,7 @@ describe Mongoid::Matchers::Lte do
11
11
  end
12
12
 
13
13
  it "returns false" do
14
- matcher.matches?("$lte" => 3).should be_false
14
+ expect(matcher.matches?("$lte" => 3)).to be false
15
15
  end
16
16
  end
17
17
 
@@ -22,7 +22,7 @@ describe Mongoid::Matchers::Lte do
22
22
  end
23
23
 
24
24
  it "returns true" do
25
- matcher.matches?("$lte" => 10).should be_true
25
+ expect(matcher.matches?("$lte" => 10)).to be true
26
26
  end
27
27
  end
28
28
 
@@ -33,7 +33,7 @@ describe Mongoid::Matchers::Lte do
33
33
  end
34
34
 
35
35
  it "returns true" do
36
- matcher.matches?("$lte" => 5).should be_true
36
+ expect(matcher.matches?("$lte" => 5)).to be true
37
37
  end
38
38
  end
39
39
 
@@ -44,7 +44,7 @@ describe Mongoid::Matchers::Lte do
44
44
  end
45
45
 
46
46
  it "returns false" do
47
- matcher.matches?("$lte" => 5).should be_false
47
+ expect(matcher.matches?("$lte" => 5)).to be false
48
48
  end
49
49
  end
50
50
 
@@ -55,7 +55,7 @@ describe Mongoid::Matchers::Lte do
55
55
  end
56
56
 
57
57
  it "returns true" do
58
- matcher.matches?("$lte" => 5).should be_true
58
+ expect(matcher.matches?("$lte" => 5)).to be true
59
59
  end
60
60
  end
61
61
 
@@ -65,7 +65,7 @@ describe Mongoid::Matchers::Lte do
65
65
  end
66
66
 
67
67
  it "returns false" do
68
- matcher.matches?("$lte" => 5).should be_false
68
+ expect(matcher.matches?("$lte" => 5)).to be false
69
69
  end
70
70
 
71
71
  end
@@ -0,0 +1,46 @@
1
+ require "spec_helper"
2
+
3
+ describe Mongoid::Matchable::Ne do
4
+
5
+ let(:matcher) do
6
+ described_class.new("first")
7
+ end
8
+
9
+ describe "#matches?" do
10
+
11
+ context "when the values are not equal" do
12
+
13
+ it "returns true" do
14
+ expect(matcher.matches?("$ne" => "second")).to be true
15
+ end
16
+ end
17
+
18
+ context "when the values are equal" do
19
+
20
+ it "returns false" do
21
+ expect(matcher.matches?("$ne" => "first")).to be false
22
+ end
23
+ end
24
+
25
+ context "when the value is an array" do
26
+
27
+ let(:array_matcher) do
28
+ described_class.new([ "first" ])
29
+ end
30
+
31
+ context "when the value is in the array" do
32
+
33
+ it "returns false" do
34
+ expect(array_matcher.matches?("$ne" => "first")).to be false
35
+ end
36
+ end
37
+
38
+ context "when the value is not in the array" do
39
+
40
+ it "returns true" do
41
+ expect(array_matcher.matches?("$ne" => "second")).to be true
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,48 @@
1
+ require "spec_helper"
2
+
3
+ describe Mongoid::Matchable::Nin do
4
+
5
+ describe "#matches?" do
6
+
7
+ context 'when the attribute is not nil' do
8
+
9
+ let(:matcher) do
10
+ described_class.new("first")
11
+ end
12
+
13
+ context "when the values do not contain the attribute" do
14
+
15
+ it "returns true" do
16
+ expect(matcher.matches?("$nin" => ["second", "third"])).to be true
17
+ end
18
+ end
19
+
20
+ context "when the values contain the attribute" do
21
+
22
+ it "returns false" do
23
+ expect(matcher.matches?("$nin" => ["first"])).to be false
24
+ end
25
+ end
26
+ end
27
+
28
+ context 'when the attribute is nil' do
29
+ let(:matcher) do
30
+ described_class.new(nil)
31
+ end
32
+
33
+ context "when the values do not contain the attribute" do
34
+
35
+ it "returns true" do
36
+ expect(matcher.matches?("$nin" => ["third"])).to be true
37
+ end
38
+ end
39
+
40
+ context "when the values contain the attribute" do
41
+
42
+ it "returns false" do
43
+ expect(matcher.matches?("$nin" => [/\Afir.*\z/, nil])).to be false
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -1,6 +1,6 @@
1
1
  require "spec_helper"
2
2
 
3
- describe Mongoid::Matchers::Or do
3
+ describe Mongoid::Matchable::Or do
4
4
 
5
5
  let(:person) do
6
6
  Person.new
@@ -27,14 +27,14 @@ describe Mongoid::Matchers::Or do
27
27
  end
28
28
 
29
29
  it "returns true" do
30
- matches.should be_true
30
+ expect(matches).to be true
31
31
  end
32
32
  end
33
33
 
34
34
  context "when none of the values are equal" do
35
35
 
36
36
  it "returns false" do
37
- matcher.matches?([]).should be_false
37
+ expect(matcher.matches?([])).to be false
38
38
  end
39
39
  end
40
40
  end
@@ -57,7 +57,7 @@ describe Mongoid::Matchers::Or do
57
57
  end
58
58
 
59
59
  it "returns true" do
60
- matches.should be_true
60
+ expect(matches).to be true
61
61
  end
62
62
  end
63
63
 
@@ -77,7 +77,7 @@ describe Mongoid::Matchers::Or do
77
77
  end
78
78
 
79
79
  it "returns false" do
80
- matches.should be_false
80
+ expect(matches).to be false
81
81
  end
82
82
  end
83
83
 
@@ -98,7 +98,7 @@ describe Mongoid::Matchers::Or do
98
98
  end
99
99
 
100
100
  it "returns false" do
101
- matches.should be_false
101
+ expect(matches).to be false
102
102
  end
103
103
  end
104
104
  end
@@ -1,6 +1,6 @@
1
1
  require "spec_helper"
2
2
 
3
- describe Mongoid::Matchers::Size do
3
+ describe Mongoid::Matchable::Size do
4
4
 
5
5
  let(:matcher) do
6
6
  described_class.new(["first", "second"])
@@ -11,14 +11,14 @@ describe Mongoid::Matchers::Size do
11
11
  context "when the attribute is the same size" do
12
12
 
13
13
  it "returns true" do
14
- matcher.matches?("$size" => 2).should be_true
14
+ expect(matcher.matches?("$size" => 2)).to be true
15
15
  end
16
16
  end
17
17
 
18
18
  context "when the attribute is not the same size" do
19
19
 
20
20
  it "returns false" do
21
- matcher.matches?("$size" => 5).should be_false
21
+ expect(matcher.matches?("$size" => 5)).to be false
22
22
  end
23
23
  end
24
24
  end
@@ -1,6 +1,6 @@
1
1
  require "spec_helper"
2
2
 
3
- describe Mongoid::Matchers do
3
+ describe Mongoid::Matchable do
4
4
 
5
5
  describe "#matches?" do
6
6
 
@@ -25,7 +25,7 @@ describe Mongoid::Matchers do
25
25
  end
26
26
 
27
27
  it "returns false" do
28
- document.locations.first.matches?(selector).should be_false
28
+ expect(document.locations.first.matches?(selector)).to be false
29
29
  end
30
30
 
31
31
  context "when just change the selector order" do
@@ -35,7 +35,7 @@ describe Mongoid::Matchers do
35
35
  end
36
36
 
37
37
  it "returns false " do
38
- document.locations.first.matches?(selector).should be_false
38
+ expect(document.locations.first.matches?(selector)).to be false
39
39
  end
40
40
  end
41
41
  end
@@ -49,7 +49,7 @@ describe Mongoid::Matchers do
49
49
  end
50
50
 
51
51
  it "returns true" do
52
- document.locations.first.matches?(selector).should be_true
52
+ expect(document.locations.first.matches?(selector)).to be true
53
53
  end
54
54
  end
55
55
 
@@ -60,7 +60,7 @@ describe Mongoid::Matchers do
60
60
  end
61
61
 
62
62
  it "returns false" do
63
- document.locations.first.matches?(selector).should be_false
63
+ expect(document.locations.first.matches?(selector)).to be false
64
64
  end
65
65
  end
66
66
 
@@ -71,7 +71,7 @@ describe Mongoid::Matchers do
71
71
  end
72
72
 
73
73
  it "returns false" do
74
- document.locations.first.matches?(selector).should be_false
74
+ expect(document.locations.first.matches?(selector)).to be false
75
75
  end
76
76
  end
77
77
  end
@@ -85,7 +85,7 @@ describe Mongoid::Matchers do
85
85
  end
86
86
 
87
87
  it "returns true" do
88
- document.locations.first.matches?(selector).should be_true
88
+ expect(document.locations.first.matches?(selector)).to be true
89
89
  end
90
90
  end
91
91
 
@@ -96,7 +96,7 @@ describe Mongoid::Matchers do
96
96
  end
97
97
 
98
98
  it "returns false" do
99
- document.locations.first.matches?(selector).should be_false
99
+ expect(document.locations.first.matches?(selector)).to be false
100
100
  end
101
101
  end
102
102
 
@@ -107,7 +107,7 @@ describe Mongoid::Matchers do
107
107
  end
108
108
 
109
109
  it "returns false" do
110
- document.locations.first.matches?(selector).should be_false
110
+ expect(document.locations.first.matches?(selector)).to be false
111
111
  end
112
112
  end
113
113
  end
@@ -127,7 +127,7 @@ describe Mongoid::Matchers do
127
127
  end
128
128
 
129
129
  it "returns true" do
130
- document.matches?(selector).should be_true
130
+ expect(document.matches?(selector)).to be true
131
131
  end
132
132
  end
133
133
 
@@ -138,7 +138,7 @@ describe Mongoid::Matchers do
138
138
  end
139
139
 
140
140
  it "returns false" do
141
- document.matches?(selector).should be_false
141
+ expect(document.matches?(selector)).to be false
142
142
  end
143
143
  end
144
144
  end
@@ -162,7 +162,7 @@ describe Mongoid::Matchers do
162
162
  end
163
163
 
164
164
  it "returns true" do
165
- document.matches?(selector).should be_true
165
+ expect(document.matches?(selector)).to be true
166
166
  end
167
167
  end
168
168
 
@@ -173,7 +173,7 @@ describe Mongoid::Matchers do
173
173
  end
174
174
 
175
175
  it "returns false" do
176
- document.matches?(selector).should be_false
176
+ expect(document.matches?(selector)).to be false
177
177
  end
178
178
  end
179
179
  end
@@ -187,7 +187,7 @@ describe Mongoid::Matchers do
187
187
  end
188
188
 
189
189
  it "returns true" do
190
- document.matches?(selector).should be_true
190
+ expect(document.matches?(selector)).to be true
191
191
  end
192
192
  end
193
193
 
@@ -198,7 +198,7 @@ describe Mongoid::Matchers do
198
198
  end
199
199
 
200
200
  it "returns false" do
201
- document.matches?(selector).should be_false
201
+ expect(document.matches?(selector)).to be false
202
202
  end
203
203
  end
204
204
  end
@@ -212,7 +212,7 @@ describe Mongoid::Matchers do
212
212
  end
213
213
 
214
214
  it "returns true" do
215
- document.matches?(selector).should be_true
215
+ expect(document.matches?(selector)).to be true
216
216
  end
217
217
  end
218
218
 
@@ -223,7 +223,7 @@ describe Mongoid::Matchers do
223
223
  end
224
224
 
225
225
  it "returns false" do
226
- document.matches?(selector).should be_false
226
+ expect(document.matches?(selector)).to be false
227
227
  end
228
228
  end
229
229
  end
@@ -237,7 +237,7 @@ describe Mongoid::Matchers do
237
237
  end
238
238
 
239
239
  it "returns true" do
240
- document.matches?(selector).should be_true
240
+ expect(document.matches?(selector)).to be true
241
241
  end
242
242
  end
243
243
 
@@ -248,7 +248,7 @@ describe Mongoid::Matchers do
248
248
  end
249
249
 
250
250
  it "returns false" do
251
- document.matches?(selector).should be_false
251
+ expect(document.matches?(selector)).to be false
252
252
  end
253
253
  end
254
254
  end
@@ -262,7 +262,7 @@ describe Mongoid::Matchers do
262
262
  end
263
263
 
264
264
  it "returns true" do
265
- document.matches?(selector).should be_true
265
+ expect(document.matches?(selector)).to be true
266
266
  end
267
267
  end
268
268
 
@@ -273,7 +273,7 @@ describe Mongoid::Matchers do
273
273
  end
274
274
 
275
275
  it "returns false" do
276
- document.matches?(selector).should be_false
276
+ expect(document.matches?(selector)).to be false
277
277
  end
278
278
  end
279
279
  end
@@ -287,7 +287,7 @@ describe Mongoid::Matchers do
287
287
  end
288
288
 
289
289
  it "returns true" do
290
- document.matches?(selector).should be_true
290
+ expect(document.matches?(selector)).to be true
291
291
  end
292
292
  end
293
293
 
@@ -298,7 +298,7 @@ describe Mongoid::Matchers do
298
298
  end
299
299
 
300
300
  it "returns false" do
301
- document.matches?(selector).should be_false
301
+ expect(document.matches?(selector)).to be false
302
302
  end
303
303
  end
304
304
  end
@@ -312,7 +312,7 @@ describe Mongoid::Matchers do
312
312
  end
313
313
 
314
314
  it "returns true" do
315
- document.matches?(selector).should be_true
315
+ expect(document.matches?(selector)).to be true
316
316
  end
317
317
  end
318
318
 
@@ -323,7 +323,7 @@ describe Mongoid::Matchers do
323
323
  end
324
324
 
325
325
  it "returns false" do
326
- document.matches?(selector).should be_false
326
+ expect(document.matches?(selector)).to be false
327
327
  end
328
328
  end
329
329
  end
@@ -337,7 +337,7 @@ describe Mongoid::Matchers do
337
337
  end
338
338
 
339
339
  it "returns true" do
340
- document.matches?(selector).should be_true
340
+ expect(document.matches?(selector)).to be true
341
341
  end
342
342
  end
343
343
 
@@ -348,7 +348,7 @@ describe Mongoid::Matchers do
348
348
  end
349
349
 
350
350
  it "returns false" do
351
- document.matches?(selector).should be_false
351
+ expect(document.matches?(selector)).to be false
352
352
  end
353
353
  end
354
354
  end
@@ -362,7 +362,7 @@ describe Mongoid::Matchers do
362
362
  end
363
363
 
364
364
  it "returns true" do
365
- document.matches?(selector).should be_true
365
+ expect(document.matches?(selector)).to be true
366
366
  end
367
367
  end
368
368
 
@@ -373,7 +373,7 @@ describe Mongoid::Matchers do
373
373
  end
374
374
 
375
375
  it "returns false" do
376
- document.matches?(selector).should be_false
376
+ expect(document.matches?(selector)).to be false
377
377
  end
378
378
  end
379
379
  end
@@ -387,7 +387,7 @@ describe Mongoid::Matchers do
387
387
  end
388
388
 
389
389
  it "returns true" do
390
- document.matches?(selector).should be_true
390
+ expect(document.matches?(selector)).to be true
391
391
  end
392
392
  end
393
393
 
@@ -398,7 +398,7 @@ describe Mongoid::Matchers do
398
398
  end
399
399
 
400
400
  it "returns false" do
401
- document.matches?(selector).should be_false
401
+ expect(document.matches?(selector)).to be false
402
402
  end
403
403
  end
404
404
  end
@@ -412,7 +412,7 @@ describe Mongoid::Matchers do
412
412
  end
413
413
 
414
414
  it "returns true" do
415
- document.matches?(selector).should be_true
415
+ expect(document.matches?(selector)).to be true
416
416
  end
417
417
  end
418
418
 
@@ -423,7 +423,7 @@ describe Mongoid::Matchers do
423
423
  end
424
424
 
425
425
  it "returns false" do
426
- document.matches?(selector).should be_false
426
+ expect(document.matches?(selector)).to be false
427
427
  end
428
428
  end
429
429
  end
@@ -437,7 +437,7 @@ describe Mongoid::Matchers do
437
437
  end
438
438
 
439
439
  it "returns true" do
440
- document.matches?(selector).should be_true
440
+ expect(document.matches?(selector)).to be true
441
441
  end
442
442
  end
443
443
 
@@ -448,7 +448,7 @@ describe Mongoid::Matchers do
448
448
  end
449
449
 
450
450
  it "returns false" do
451
- document.matches?(selector).should be_false
451
+ expect(document.matches?(selector)).to be false
452
452
  end
453
453
  end
454
454
  end
@@ -462,7 +462,7 @@ describe Mongoid::Matchers do
462
462
  end
463
463
 
464
464
  it "returns true" do
465
- document.matches?(selector).should be_true
465
+ expect(document.matches?(selector)).to be true
466
466
  end
467
467
  end
468
468
 
@@ -473,7 +473,7 @@ describe Mongoid::Matchers do
473
473
  end
474
474
 
475
475
  it "returns false" do
476
- document.matches?(selector).should be_false
476
+ expect(document.matches?(selector)).to be false
477
477
  end
478
478
  end
479
479
  end
@@ -487,7 +487,7 @@ describe Mongoid::Matchers do
487
487
  end
488
488
 
489
489
  it "returns true" do
490
- document.matches?(selector).should be_true
490
+ expect(document.matches?(selector)).to be true
491
491
  end
492
492
  end
493
493
 
@@ -498,7 +498,7 @@ describe Mongoid::Matchers do
498
498
  end
499
499
 
500
500
  it "returns false" do
501
- document.matches?(selector).should be_false
501
+ expect(document.matches?(selector)).to be false
502
502
  end
503
503
  end
504
504
  end
@@ -512,7 +512,7 @@ describe Mongoid::Matchers do
512
512
  end
513
513
 
514
514
  it "returns true" do
515
- document.matches?(selector).should be_true
515
+ expect(document.matches?(selector)).to be true
516
516
  end
517
517
  end
518
518
 
@@ -523,7 +523,7 @@ describe Mongoid::Matchers do
523
523
  end
524
524
 
525
525
  it "returns false" do
526
- document.matches?(selector).should be_false
526
+ expect(document.matches?(selector)).to be false
527
527
  end
528
528
  end
529
529
  end