mongoid 3.1.4 → 3.1.5

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 (429) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +34 -0
  3. data/lib/mongoid/contextual.rb +3 -0
  4. data/lib/mongoid/criteria.rb +10 -2
  5. data/lib/mongoid/document.rb +1 -1
  6. data/lib/mongoid/paranoia.rb +4 -0
  7. data/lib/mongoid/persistence/upsertion.rb +1 -0
  8. data/lib/mongoid/relations/bindings/referenced/many_to_many.rb +16 -2
  9. data/lib/mongoid/relations/macros.rb +1 -1
  10. data/lib/mongoid/relations/one.rb +12 -0
  11. data/lib/mongoid/relations/referenced/in.rb +18 -1
  12. data/lib/mongoid/relations/referenced/many_to_many.rb +2 -2
  13. data/lib/mongoid/validations.rb +1 -1
  14. data/lib/mongoid/validations/localizable.rb +1 -1
  15. data/lib/mongoid/validations/presence.rb +1 -1
  16. data/lib/mongoid/validations/uniqueness.rb +1 -1
  17. data/lib/mongoid/version.rb +1 -1
  18. data/lib/support/ruby_version.rb +1 -1
  19. data/spec/app/models/account.rb +32 -0
  20. data/spec/app/models/acolyte.rb +16 -0
  21. data/spec/app/models/actor.rb +19 -0
  22. data/spec/app/models/actor_observer.rb +15 -0
  23. data/spec/app/models/actress.rb +2 -0
  24. data/spec/app/models/address.rb +72 -0
  25. data/spec/app/models/address_component.rb +5 -0
  26. data/spec/app/models/address_number.rb +6 -0
  27. data/spec/app/models/agency.rb +5 -0
  28. data/spec/app/models/agent.rb +12 -0
  29. data/spec/app/models/album.rb +14 -0
  30. data/spec/app/models/alert.rb +5 -0
  31. data/spec/app/models/animal.rb +25 -0
  32. data/spec/app/models/answer.rb +4 -0
  33. data/spec/app/models/appointment.rb +7 -0
  34. data/spec/app/models/article.rb +13 -0
  35. data/spec/app/models/artist.rb +66 -0
  36. data/spec/app/models/artwork.rb +4 -0
  37. data/spec/app/models/augmentation.rb +11 -0
  38. data/spec/app/models/author.rb +6 -0
  39. data/spec/app/models/band.rb +25 -0
  40. data/spec/app/models/bar.rb +9 -0
  41. data/spec/app/models/basic.rb +6 -0
  42. data/spec/app/models/bed.rb +1 -0
  43. data/spec/app/models/big_palette.rb +2 -0
  44. data/spec/app/models/birthday.rb +13 -0
  45. data/spec/app/models/book.rb +12 -0
  46. data/spec/app/models/breed.rb +4 -0
  47. data/spec/app/models/browser.rb +6 -0
  48. data/spec/app/models/building.rb +7 -0
  49. data/spec/app/models/building_address.rb +7 -0
  50. data/spec/app/models/bus.rb +7 -0
  51. data/spec/app/models/business.rb +5 -0
  52. data/spec/app/models/callback_recorder.rb +25 -0
  53. data/spec/app/models/callback_test.rb +9 -0
  54. data/spec/app/models/canvas.rb +25 -0
  55. data/spec/app/models/car.rb +1 -0
  56. data/spec/app/models/cat.rb +8 -0
  57. data/spec/app/models/category.rb +8 -0
  58. data/spec/app/models/child.rb +4 -0
  59. data/spec/app/models/child_doc.rb +22 -0
  60. data/spec/app/models/church.rb +4 -0
  61. data/spec/app/models/circle.rb +3 -0
  62. data/spec/app/models/circuit.rb +4 -0
  63. data/spec/app/models/circus.rb +7 -0
  64. data/spec/app/models/code.rb +5 -0
  65. data/spec/app/models/comment.rb +16 -0
  66. data/spec/app/models/contractor.rb +7 -0
  67. data/spec/app/models/cookie.rb +6 -0
  68. data/spec/app/models/country_code.rb +8 -0
  69. data/spec/app/models/definition.rb +8 -0
  70. data/spec/app/models/description.rb +11 -0
  71. data/spec/app/models/dictionary.rb +10 -0
  72. data/spec/app/models/division.rb +10 -0
  73. data/spec/app/models/doctor.rb +12 -0
  74. data/spec/app/models/dog.rb +7 -0
  75. data/spec/app/models/dokument.rb +5 -0
  76. data/spec/app/models/driver.rb +7 -0
  77. data/spec/app/models/drug.rb +8 -0
  78. data/spec/app/models/email.rb +6 -0
  79. data/spec/app/models/employer.rb +5 -0
  80. data/spec/app/models/entry.rb +6 -0
  81. data/spec/app/models/eraser.rb +1 -0
  82. data/spec/app/models/event.rb +22 -0
  83. data/spec/app/models/exhibition.rb +4 -0
  84. data/spec/app/models/exhibitor.rb +5 -0
  85. data/spec/app/models/eye.rb +9 -0
  86. data/spec/app/models/eye_bowl.rb +9 -0
  87. data/spec/app/models/face.rb +8 -0
  88. data/spec/app/models/favorite.rb +6 -0
  89. data/spec/app/models/filesystem.rb +4 -0
  90. data/spec/app/models/fire_hydrant.rb +6 -0
  91. data/spec/app/models/firefox.rb +4 -0
  92. data/spec/app/models/fish.rb +8 -0
  93. data/spec/app/models/folder.rb +7 -0
  94. data/spec/app/models/folder_item.rb +9 -0
  95. data/spec/app/models/fruits.rb +28 -0
  96. data/spec/app/models/game.rb +21 -0
  97. data/spec/app/models/ghost.rb +7 -0
  98. data/spec/app/models/home.rb +4 -0
  99. data/spec/app/models/house.rb +8 -0
  100. data/spec/app/models/html_writer.rb +3 -0
  101. data/spec/app/models/image.rb +22 -0
  102. data/spec/app/models/implant.rb +16 -0
  103. data/spec/app/models/item.rb +12 -0
  104. data/spec/app/models/jar.rb +7 -0
  105. data/spec/app/models/label.rb +40 -0
  106. data/spec/app/models/language.rb +5 -0
  107. data/spec/app/models/lat_lng.rb +15 -0
  108. data/spec/app/models/league.rb +11 -0
  109. data/spec/app/models/learner.rb +2 -0
  110. data/spec/app/models/line_item.rb +6 -0
  111. data/spec/app/models/location.rb +8 -0
  112. data/spec/app/models/login.rb +8 -0
  113. data/spec/app/models/manufacturer.rb +7 -0
  114. data/spec/app/models/meat.rb +4 -0
  115. data/spec/app/models/membership.rb +4 -0
  116. data/spec/app/models/mixed_drink.rb +4 -0
  117. data/spec/app/models/movie.rb +12 -0
  118. data/spec/app/models/my_hash.rb +2 -0
  119. data/spec/app/models/name.rb +23 -0
  120. data/spec/app/models/node.rb +5 -0
  121. data/spec/app/models/note.rb +12 -0
  122. data/spec/app/models/ordered_post.rb +6 -0
  123. data/spec/app/models/ordered_preference.rb +6 -0
  124. data/spec/app/models/oscar.rb +15 -0
  125. data/spec/app/models/override.rb +16 -0
  126. data/spec/app/models/ownable.rb +6 -0
  127. data/spec/app/models/owner.rb +6 -0
  128. data/spec/app/models/pack.rb +3 -0
  129. data/spec/app/models/page.rb +5 -0
  130. data/spec/app/models/page_question.rb +4 -0
  131. data/spec/app/models/palette.rb +7 -0
  132. data/spec/app/models/paranoid_phone.rb +25 -0
  133. data/spec/app/models/paranoid_post.rb +36 -0
  134. data/spec/app/models/parent.rb +5 -0
  135. data/spec/app/models/parent_doc.rb +6 -0
  136. data/spec/app/models/passport.rb +5 -0
  137. data/spec/app/models/patient.rb +9 -0
  138. data/spec/app/models/pdf_writer.rb +3 -0
  139. data/spec/app/models/pencil.rb +1 -0
  140. data/spec/app/models/person.rb +201 -0
  141. data/spec/app/models/pet.rb +23 -0
  142. data/spec/app/models/pet_owner.rb +6 -0
  143. data/spec/app/models/phone.rb +11 -0
  144. data/spec/app/models/phone_observer.rb +6 -0
  145. data/spec/app/models/pizza.rb +7 -0
  146. data/spec/app/models/player.rb +35 -0
  147. data/spec/app/models/post.rb +43 -0
  148. data/spec/app/models/powerup.rb +11 -0
  149. data/spec/app/models/preference.rb +9 -0
  150. data/spec/app/models/princess.rb +8 -0
  151. data/spec/app/models/product.rb +17 -0
  152. data/spec/app/models/profile.rb +5 -0
  153. data/spec/app/models/pronunciation.rb +5 -0
  154. data/spec/app/models/purchase.rb +4 -0
  155. data/spec/app/models/question.rb +8 -0
  156. data/spec/app/models/quiz.rb +10 -0
  157. data/spec/app/models/rating.rb +8 -0
  158. data/spec/app/models/record.rb +46 -0
  159. data/spec/app/models/registry.rb +4 -0
  160. data/spec/app/models/role.rb +7 -0
  161. data/spec/app/models/root_category.rb +4 -0
  162. data/spec/app/models/sandwich.rb +4 -0
  163. data/spec/app/models/scheduler.rb +7 -0
  164. data/spec/app/models/seo.rb +7 -0
  165. data/spec/app/models/series.rb +4 -0
  166. data/spec/app/models/server.rb +13 -0
  167. data/spec/app/models/service.rb +22 -0
  168. data/spec/app/models/shape.rb +12 -0
  169. data/spec/app/models/shelf.rb +5 -0
  170. data/spec/app/models/shipping_container.rb +5 -0
  171. data/spec/app/models/shipping_pack.rb +3 -0
  172. data/spec/app/models/shop.rb +6 -0
  173. data/spec/app/models/short_agent.rb +4 -0
  174. data/spec/app/models/short_quiz.rb +5 -0
  175. data/spec/app/models/slave.rb +6 -0
  176. data/spec/app/models/song.rb +8 -0
  177. data/spec/app/models/square.rb +4 -0
  178. data/spec/app/models/strategy.rb +3 -0
  179. data/spec/app/models/sub_item.rb +3 -0
  180. data/spec/app/models/subscription.rb +4 -0
  181. data/spec/app/models/survey.rb +5 -0
  182. data/spec/app/models/symptom.rb +6 -0
  183. data/spec/app/models/tag.rb +8 -0
  184. data/spec/app/models/target.rb +5 -0
  185. data/spec/app/models/template.rb +5 -0
  186. data/spec/app/models/thing.rb +9 -0
  187. data/spec/app/models/title.rb +4 -0
  188. data/spec/app/models/tool.rb +8 -0
  189. data/spec/app/models/topping.rb +5 -0
  190. data/spec/app/models/track.rb +38 -0
  191. data/spec/app/models/translation.rb +5 -0
  192. data/spec/app/models/tree.rb +9 -0
  193. data/spec/app/models/truck.rb +3 -0
  194. data/spec/app/models/user.rb +21 -0
  195. data/spec/app/models/user_account.rb +10 -0
  196. data/spec/app/models/validation_callback.rb +10 -0
  197. data/spec/app/models/vehicle.rb +11 -0
  198. data/spec/app/models/version.rb +5 -0
  199. data/spec/app/models/vet_visit.rb +5 -0
  200. data/spec/app/models/video.rb +17 -0
  201. data/spec/app/models/video_game.rb +1 -0
  202. data/spec/app/models/weapon.rb +11 -0
  203. data/spec/app/models/wiki_page.rb +17 -0
  204. data/spec/app/models/word.rb +12 -0
  205. data/spec/app/models/word_origin.rb +11 -0
  206. data/spec/app/models/writer.rb +11 -0
  207. data/spec/config/mongoid.yml +40 -0
  208. data/spec/mongoid/atomic/modifiers_spec.rb +456 -0
  209. data/spec/mongoid/atomic/paths/embedded/many_spec.rb +159 -0
  210. data/spec/mongoid/atomic/paths/embedded/one_spec.rb +152 -0
  211. data/spec/mongoid/atomic/paths/root_spec.rb +106 -0
  212. data/spec/mongoid/atomic/paths_spec.rb +270 -0
  213. data/spec/mongoid/atomic/positionable_spec.rb +227 -0
  214. data/spec/mongoid/atomic_spec.rb +365 -0
  215. data/spec/mongoid/attributes/processing_spec.rb +149 -0
  216. data/spec/mongoid/attributes/readonly_spec.rb +169 -0
  217. data/spec/mongoid/attributes_spec.rb +1705 -0
  218. data/spec/mongoid/callbacks_spec.rb +1564 -0
  219. data/spec/mongoid/components_spec.rb +24 -0
  220. data/spec/mongoid/config/environment_spec.rb +83 -0
  221. data/spec/mongoid/config/options_spec.rb +56 -0
  222. data/spec/mongoid/config_spec.rb +334 -0
  223. data/spec/mongoid/contextual/aggregable/memory_spec.rb +293 -0
  224. data/spec/mongoid/contextual/aggregable/mongo_spec.rb +455 -0
  225. data/spec/mongoid/contextual/atomic_spec.rb +525 -0
  226. data/spec/mongoid/contextual/find_and_modify_spec.rb +220 -0
  227. data/spec/mongoid/contextual/geo_near_spec.rb +405 -0
  228. data/spec/mongoid/contextual/map_reduce_spec.rb +464 -0
  229. data/spec/mongoid/contextual/memory_spec.rb +1236 -0
  230. data/spec/mongoid/contextual/mongo_spec.rb +1757 -0
  231. data/spec/mongoid/copyable_spec.rb +393 -0
  232. data/spec/mongoid/criteria_spec.rb +5140 -0
  233. data/spec/mongoid/criterion/destructive_spec.rb +101 -0
  234. data/spec/mongoid/criterion/inspection_spec.rb +27 -0
  235. data/spec/mongoid/criterion/marshalable_spec.rb +28 -0
  236. data/spec/mongoid/criterion/modifiable_spec.rb +409 -0
  237. data/spec/mongoid/criterion/modification_spec.rb +402 -0
  238. data/spec/mongoid/criterion/scoping_spec.rb +391 -0
  239. data/spec/mongoid/dirty_spec.rb +1508 -0
  240. data/spec/mongoid/document_spec.rb +1146 -0
  241. data/spec/mongoid/equality_spec.rb +241 -0
  242. data/spec/mongoid/errors/ambiguous_relationship_spec.rb +29 -0
  243. data/spec/mongoid/errors/callback_spec.rb +29 -0
  244. data/spec/mongoid/errors/delete_restriction_spec.rb +29 -0
  245. data/spec/mongoid/errors/document_not_found_spec.rb +104 -0
  246. data/spec/mongoid/errors/eager_load_spec.rb +29 -0
  247. data/spec/mongoid/errors/invalid_collection_spec.rb +36 -0
  248. data/spec/mongoid/errors/invalid_config_option_spec.rb +29 -0
  249. data/spec/mongoid/errors/invalid_field_option_spec.rb +29 -0
  250. data/spec/mongoid/errors/invalid_field_spec.rb +37 -0
  251. data/spec/mongoid/errors/invalid_find_spec.rb +29 -0
  252. data/spec/mongoid/errors/invalid_includes_spec.rb +40 -0
  253. data/spec/mongoid/errors/invalid_index_spec.rb +29 -0
  254. data/spec/mongoid/errors/invalid_options_spec.rb +29 -0
  255. data/spec/mongoid/errors/invalid_path_spec.rb +23 -0
  256. data/spec/mongoid/errors/invalid_scope_spec.rb +29 -0
  257. data/spec/mongoid/errors/invalid_set_polymorphic_relation_spec.rb +17 -0
  258. data/spec/mongoid/errors/invalid_storage_options_spec.rb +29 -0
  259. data/spec/mongoid/errors/invalid_time_spec.rb +29 -0
  260. data/spec/mongoid/errors/inverse_not_found_spec.rb +29 -0
  261. data/spec/mongoid/errors/mixed_relations_spec.rb +29 -0
  262. data/spec/mongoid/errors/mixed_session_configuration_spec.rb +29 -0
  263. data/spec/mongoid/errors/mongoid_error_spec.rb +48 -0
  264. data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +29 -0
  265. data/spec/mongoid/errors/no_environment_spec.rb +29 -0
  266. data/spec/mongoid/errors/no_map_reduce_output_spec.rb +29 -0
  267. data/spec/mongoid/errors/no_metadata_spec.rb +23 -0
  268. data/spec/mongoid/errors/no_parent_spec.rb +29 -0
  269. data/spec/mongoid/errors/no_session_config_spec.rb +29 -0
  270. data/spec/mongoid/errors/no_session_database_spec.rb +29 -0
  271. data/spec/mongoid/errors/no_session_hosts_spec.rb +29 -0
  272. data/spec/mongoid/errors/no_sessions_config_spec.rb +29 -0
  273. data/spec/mongoid/errors/readonly_attribute_spec.rb +29 -0
  274. data/spec/mongoid/errors/scope_overwrite_spec.rb +29 -0
  275. data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +29 -0
  276. data/spec/mongoid/errors/unknown_attribute_spec.rb +29 -0
  277. data/spec/mongoid/errors/unsaved_document_spec.rb +37 -0
  278. data/spec/mongoid/errors/unsupported_javascript_spec.rb +29 -0
  279. data/spec/mongoid/errors/validations_spec.rb +45 -0
  280. data/spec/mongoid/errors/versioning_not_on_root_spec.rb +29 -0
  281. data/spec/mongoid/extensions/array_spec.rb +638 -0
  282. data/spec/mongoid/extensions/big_decimal_spec.rb +104 -0
  283. data/spec/mongoid/extensions/binary_spec.rb +60 -0
  284. data/spec/mongoid/extensions/boolean_spec.rb +135 -0
  285. data/spec/mongoid/extensions/date_spec.rb +235 -0
  286. data/spec/mongoid/extensions/date_time_spec.rb +155 -0
  287. data/spec/mongoid/extensions/false_class_spec.rb +42 -0
  288. data/spec/mongoid/extensions/float_spec.rb +133 -0
  289. data/spec/mongoid/extensions/hash_spec.rb +333 -0
  290. data/spec/mongoid/extensions/integer_spec.rb +136 -0
  291. data/spec/mongoid/extensions/module_spec.rb +42 -0
  292. data/spec/mongoid/extensions/nil_class_spec.rb +11 -0
  293. data/spec/mongoid/extensions/object_id_spec.rb +946 -0
  294. data/spec/mongoid/extensions/object_spec.rb +292 -0
  295. data/spec/mongoid/extensions/range_spec.rb +105 -0
  296. data/spec/mongoid/extensions/regexp_spec.rb +47 -0
  297. data/spec/mongoid/extensions/set_spec.rb +33 -0
  298. data/spec/mongoid/extensions/string_spec.rb +368 -0
  299. data/spec/mongoid/extensions/symbol_spec.rb +76 -0
  300. data/spec/mongoid/extensions/time_spec.rb +467 -0
  301. data/spec/mongoid/extensions/time_with_zone_spec.rb +405 -0
  302. data/spec/mongoid/extensions/true_class_spec.rb +42 -0
  303. data/spec/mongoid/factory_spec.rb +185 -0
  304. data/spec/mongoid/fields/foreign_key_spec.rb +694 -0
  305. data/spec/mongoid/fields/internal/foreign_keys/array_spec.rb +184 -0
  306. data/spec/mongoid/fields/internal/foreign_keys/object_spec.rb +201 -0
  307. data/spec/mongoid/fields/localized_spec.rb +386 -0
  308. data/spec/mongoid/fields/standard_spec.rb +166 -0
  309. data/spec/mongoid/fields_spec.rb +1253 -0
  310. data/spec/mongoid/finders_spec.rb +321 -0
  311. data/spec/mongoid/hierarchy_spec.rb +244 -0
  312. data/spec/mongoid/identity_map_spec.rb +564 -0
  313. data/spec/mongoid/indexes_spec.rb +404 -0
  314. data/spec/mongoid/inspection_spec.rb +57 -0
  315. data/spec/mongoid/json_spec.rb +33 -0
  316. data/spec/mongoid/loggable_spec.rb +21 -0
  317. data/spec/mongoid/matchers/all_spec.rb +31 -0
  318. data/spec/mongoid/matchers/and_spec.rb +162 -0
  319. data/spec/mongoid/matchers/default_spec.rb +130 -0
  320. data/spec/mongoid/matchers/exists_spec.rb +57 -0
  321. data/spec/mongoid/matchers/gt_spec.rb +74 -0
  322. data/spec/mongoid/matchers/gte_spec.rb +74 -0
  323. data/spec/mongoid/matchers/in_spec.rb +25 -0
  324. data/spec/mongoid/matchers/lt_spec.rb +74 -0
  325. data/spec/mongoid/matchers/lte_spec.rb +74 -0
  326. data/spec/mongoid/matchers/ne_spec.rb +25 -0
  327. data/spec/mongoid/matchers/nin_spec.rb +25 -0
  328. data/spec/mongoid/matchers/or_spec.rb +106 -0
  329. data/spec/mongoid/matchers/size_spec.rb +25 -0
  330. data/spec/mongoid/matchers_spec.rb +532 -0
  331. data/spec/mongoid/multi_parameter_attributes_spec.rb +128 -0
  332. data/spec/mongoid/nested_attributes_spec.rb +4945 -0
  333. data/spec/mongoid/observer_spec.rb +290 -0
  334. data/spec/mongoid/paranoia_spec.rb +759 -0
  335. data/spec/mongoid/persistence/atomic/add_to_set_spec.rb +262 -0
  336. data/spec/mongoid/persistence/atomic/bit_spec.rb +88 -0
  337. data/spec/mongoid/persistence/atomic/inc_spec.rb +133 -0
  338. data/spec/mongoid/persistence/atomic/pop_spec.rb +111 -0
  339. data/spec/mongoid/persistence/atomic/pull_all_spec.rb +77 -0
  340. data/spec/mongoid/persistence/atomic/pull_spec.rb +80 -0
  341. data/spec/mongoid/persistence/atomic/push_all_spec.rb +77 -0
  342. data/spec/mongoid/persistence/atomic/push_spec.rb +77 -0
  343. data/spec/mongoid/persistence/atomic/rename_spec.rb +42 -0
  344. data/spec/mongoid/persistence/atomic/sets_spec.rb +154 -0
  345. data/spec/mongoid/persistence/atomic/unset_spec.rb +65 -0
  346. data/spec/mongoid/persistence/atomic_spec.rb +216 -0
  347. data/spec/mongoid/persistence/operations/embedded/insert_spec.rb +191 -0
  348. data/spec/mongoid/persistence/operations/embedded/remove_spec.rb +8 -0
  349. data/spec/mongoid/persistence/operations/insert_spec.rb +149 -0
  350. data/spec/mongoid/persistence/operations/remove_spec.rb +113 -0
  351. data/spec/mongoid/persistence/operations/update_spec.rb +141 -0
  352. data/spec/mongoid/persistence/operations/upsert_spec.rb +59 -0
  353. data/spec/mongoid/persistence/operations_spec.rb +313 -0
  354. data/spec/mongoid/persistence_spec.rb +2279 -0
  355. data/spec/mongoid/railties/document_spec.rb +24 -0
  356. data/spec/mongoid/relations/accessors_spec.rb +844 -0
  357. data/spec/mongoid/relations/auto_save_spec.rb +261 -0
  358. data/spec/mongoid/relations/bindings/embedded/in_spec.rb +171 -0
  359. data/spec/mongoid/relations/bindings/embedded/many_spec.rb +54 -0
  360. data/spec/mongoid/relations/bindings/embedded/one_spec.rb +77 -0
  361. data/spec/mongoid/relations/bindings/referenced/in_spec.rb +241 -0
  362. data/spec/mongoid/relations/bindings/referenced/many_spec.rb +153 -0
  363. data/spec/mongoid/relations/bindings/referenced/many_to_many_spec.rb +178 -0
  364. data/spec/mongoid/relations/bindings/referenced/one_spec.rb +131 -0
  365. data/spec/mongoid/relations/builders/embedded/in_spec.rb +34 -0
  366. data/spec/mongoid/relations/builders/embedded/many_spec.rb +132 -0
  367. data/spec/mongoid/relations/builders/embedded/one_spec.rb +99 -0
  368. data/spec/mongoid/relations/builders/nested_attributes/many_spec.rb +234 -0
  369. data/spec/mongoid/relations/builders/nested_attributes/one_spec.rb +250 -0
  370. data/spec/mongoid/relations/builders/referenced/in_spec.rb +241 -0
  371. data/spec/mongoid/relations/builders/referenced/many_spec.rb +137 -0
  372. data/spec/mongoid/relations/builders/referenced/many_to_many_spec.rb +178 -0
  373. data/spec/mongoid/relations/builders/referenced/one_spec.rb +124 -0
  374. data/spec/mongoid/relations/builders_spec.rb +226 -0
  375. data/spec/mongoid/relations/cascading/delete_spec.rb +101 -0
  376. data/spec/mongoid/relations/cascading/destroy_spec.rb +47 -0
  377. data/spec/mongoid/relations/cascading/nullify_spec.rb +32 -0
  378. data/spec/mongoid/relations/cascading/restrict_spec.rb +68 -0
  379. data/spec/mongoid/relations/cascading_spec.rb +355 -0
  380. data/spec/mongoid/relations/constraint_spec.rb +74 -0
  381. data/spec/mongoid/relations/conversions_spec.rb +126 -0
  382. data/spec/mongoid/relations/counter_cache_spec.rb +205 -0
  383. data/spec/mongoid/relations/cyclic_spec.rb +156 -0
  384. data/spec/mongoid/relations/embedded/dirty_spec.rb +65 -0
  385. data/spec/mongoid/relations/embedded/in_spec.rb +580 -0
  386. data/spec/mongoid/relations/embedded/many_spec.rb +3841 -0
  387. data/spec/mongoid/relations/embedded/one_spec.rb +1055 -0
  388. data/spec/mongoid/relations/macros_spec.rb +625 -0
  389. data/spec/mongoid/relations/metadata_spec.rb +2030 -0
  390. data/spec/mongoid/relations/options_spec.rb +35 -0
  391. data/spec/mongoid/relations/polymorphic_spec.rb +132 -0
  392. data/spec/mongoid/relations/proxy_spec.rb +48 -0
  393. data/spec/mongoid/relations/referenced/in_spec.rb +1501 -0
  394. data/spec/mongoid/relations/referenced/many_spec.rb +3632 -0
  395. data/spec/mongoid/relations/referenced/many_to_many_spec.rb +3561 -0
  396. data/spec/mongoid/relations/referenced/one_spec.rb +1331 -0
  397. data/spec/mongoid/relations/reflections_spec.rb +101 -0
  398. data/spec/mongoid/relations/synchronization_spec.rb +453 -0
  399. data/spec/mongoid/relations/targets/enumerable_spec.rb +1710 -0
  400. data/spec/mongoid/relations_spec.rb +188 -0
  401. data/spec/mongoid/reloading_spec.rb +305 -0
  402. data/spec/mongoid/scoping_spec.rb +978 -0
  403. data/spec/mongoid/serialization_spec.rb +833 -0
  404. data/spec/mongoid/sessions/factory_spec.rb +312 -0
  405. data/spec/mongoid/sessions/mongo_uri_spec.rb +103 -0
  406. data/spec/mongoid/sessions_spec.rb +1111 -0
  407. data/spec/mongoid/sharding_spec.rb +61 -0
  408. data/spec/mongoid/state_spec.rb +102 -0
  409. data/spec/mongoid/threaded_spec.rb +296 -0
  410. data/spec/mongoid/timestamps/created/short_spec.rb +51 -0
  411. data/spec/mongoid/timestamps/created_spec.rb +44 -0
  412. data/spec/mongoid/timestamps/timeless_spec.rb +130 -0
  413. data/spec/mongoid/timestamps/updated/short_spec.rb +90 -0
  414. data/spec/mongoid/timestamps/updated_spec.rb +86 -0
  415. data/spec/mongoid/timestamps_spec.rb +112 -0
  416. data/spec/mongoid/unit_of_work_spec.rb +196 -0
  417. data/spec/mongoid/validations/associated_spec.rb +183 -0
  418. data/spec/mongoid/validations/format_spec.rb +83 -0
  419. data/spec/mongoid/validations/length_spec.rb +223 -0
  420. data/spec/mongoid/validations/numericality_spec.rb +30 -0
  421. data/spec/mongoid/validations/presence_spec.rb +592 -0
  422. data/spec/mongoid/validations/uniqueness_spec.rb +2399 -0
  423. data/spec/mongoid/validations_spec.rb +309 -0
  424. data/spec/mongoid/versioning_spec.rb +540 -0
  425. data/spec/mongoid_spec.rb +74 -0
  426. data/spec/rack/mongoid/middleware/identity_map_spec.rb +72 -0
  427. data/spec/rails/mongoid_spec.rb +462 -0
  428. data/spec/spec_helper.rb +93 -0
  429. metadata +826 -6
@@ -0,0 +1,104 @@
1
+ require "spec_helper"
2
+
3
+ describe Mongoid::Extensions::BigDecimal do
4
+
5
+ let(:number) do
6
+ BigDecimal.new("123456.789")
7
+ end
8
+
9
+ describe ".demongoize" do
10
+
11
+ context "when the the value is a string" do
12
+
13
+ it "returns a big decimal" do
14
+ BigDecimal.demongoize(number.to_s).should eq(number)
15
+ end
16
+ end
17
+
18
+ context "when the value is nil" do
19
+
20
+ it "returns nil" do
21
+ BigDecimal.demongoize(nil).should be_nil
22
+ end
23
+ end
24
+
25
+ context "when the value is a float" do
26
+
27
+ let(:float) do
28
+ 123456.789
29
+ end
30
+
31
+ it "returns a float" do
32
+ BigDecimal.demongoize(float).should eq(float)
33
+ end
34
+ end
35
+
36
+ context "when the value is an integer" do
37
+
38
+ let(:integer) do
39
+ 123456
40
+ end
41
+
42
+ it "returns an integer" do
43
+ BigDecimal.demongoize(integer).should eq(integer)
44
+ end
45
+ end
46
+
47
+ context "when the value is NaN" do
48
+
49
+ let(:nan) do
50
+ "NaN"
51
+ end
52
+
53
+ let(:demongoized) do
54
+ BigDecimal.demongoize(nan)
55
+ end
56
+
57
+ it "returns a big decimal" do
58
+ demongoized.should be_a(BigDecimal)
59
+ end
60
+
61
+ it "is a NaN big decimal" do
62
+ demongoized.should be_nan
63
+ end
64
+ end
65
+ end
66
+
67
+ describe ".mongoize" do
68
+
69
+ context "when the value is a big decimal" do
70
+
71
+ it "returns a string" do
72
+ BigDecimal.mongoize(number).should eq(number.to_s)
73
+ end
74
+ end
75
+
76
+ context "when the value is nil" do
77
+
78
+ it "returns nil" do
79
+ BigDecimal.mongoize(nil).should be_nil
80
+ end
81
+ end
82
+
83
+ context "when the value is an integer" do
84
+
85
+ it "returns a string" do
86
+ BigDecimal.mongoize(123456).should eq("123456")
87
+ end
88
+ end
89
+
90
+ context "when the value is a float" do
91
+
92
+ it "returns a string" do
93
+ BigDecimal.mongoize(123456.789).should eq("123456.789")
94
+ end
95
+ end
96
+ end
97
+
98
+ describe "#mongoize" do
99
+
100
+ it "returns a string" do
101
+ number.mongoize.should eq(number.to_s)
102
+ end
103
+ end
104
+ end
@@ -0,0 +1,60 @@
1
+ require "spec_helper"
2
+
3
+ describe Moped::BSON::Binary do
4
+
5
+ describe "#mongoize" do
6
+
7
+ let(:binary) do
8
+ Moped::BSON::Binary.new(:md5, "testing")
9
+ end
10
+
11
+ it "returns the binary" do
12
+ binary.mongoize.should eq(binary)
13
+ end
14
+ end
15
+
16
+ describe ".demongoize" do
17
+
18
+ let(:binary) do
19
+ Moped::BSON::Binary.new(:md5, "testing")
20
+ end
21
+
22
+ let(:demongoized) do
23
+ Moped::BSON::Binary.demongoize(binary)
24
+ end
25
+
26
+ it "returns the binary" do
27
+ demongoized.should eq(binary)
28
+ end
29
+ end
30
+
31
+ describe ".evolve" do
32
+
33
+ let(:binary) do
34
+ Moped::BSON::Binary.new(:md5, "testing")
35
+ end
36
+
37
+ let(:evolved) do
38
+ Moped::BSON::Binary.evolve(binary)
39
+ end
40
+
41
+ it "returns the binary" do
42
+ evolved.should eq(binary)
43
+ end
44
+ end
45
+
46
+ describe ".mongoize" do
47
+
48
+ let(:binary) do
49
+ Moped::BSON::Binary.new(:md5, "testing")
50
+ end
51
+
52
+ let(:mongoized) do
53
+ Moped::BSON::Binary.mongoize(binary)
54
+ end
55
+
56
+ it "returns the binary" do
57
+ mongoized.should eq(binary)
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,135 @@
1
+ require "spec_helper"
2
+
3
+ describe Mongoid::Extensions::Boolean do
4
+
5
+ describe ".demongoize" do
6
+
7
+ context "when provided true" do
8
+
9
+ it "returns true" do
10
+ Boolean.demongoize(true).should eq(true)
11
+ end
12
+ end
13
+
14
+ context "when provided false" do
15
+
16
+ it "returns false" do
17
+ Boolean.demongoize(false).should eq(false)
18
+ end
19
+ end
20
+ end
21
+
22
+ describe ".mongoize" do
23
+
24
+ context "when provided a boolean" do
25
+
26
+ context "when provided true" do
27
+
28
+ it "returns true" do
29
+ Boolean.mongoize(true).should eq(true)
30
+ end
31
+ end
32
+
33
+ context "when provided false" do
34
+
35
+ it "returns false" do
36
+ Boolean.mongoize(false).should eq(false)
37
+ end
38
+ end
39
+ end
40
+
41
+ context "when provided a string" do
42
+
43
+ context "when provided true" do
44
+
45
+ it "returns true" do
46
+ Boolean.mongoize("true").should eq(true)
47
+ end
48
+ end
49
+
50
+ context "when provided t" do
51
+
52
+ it "returns true" do
53
+ Boolean.mongoize("t").should eq(true)
54
+ end
55
+ end
56
+
57
+ context "when provided 1" do
58
+
59
+ it "returns true" do
60
+ Boolean.mongoize("1").should eq(true)
61
+ end
62
+ end
63
+
64
+ context "when provided 1.0" do
65
+
66
+ it "returns true" do
67
+ Boolean.mongoize("1.0").should eq(true)
68
+ end
69
+ end
70
+
71
+ context "when provided yes" do
72
+
73
+ it "returns true" do
74
+ Boolean.mongoize("yes").should eq(true)
75
+ end
76
+ end
77
+
78
+ context "when provided y" do
79
+
80
+ it "returns true" do
81
+ Boolean.mongoize("y").should eq(true)
82
+ end
83
+ end
84
+
85
+ context "when provided false" do
86
+
87
+ it "returns false" do
88
+ Boolean.mongoize("false").should eq(false)
89
+ end
90
+ end
91
+
92
+ context "when provided f" do
93
+
94
+ it "returns false" do
95
+ Boolean.mongoize("f").should eq(false)
96
+ end
97
+ end
98
+
99
+ context "when provided 0" do
100
+
101
+ it "returns false" do
102
+ Boolean.mongoize("0").should eq(false)
103
+ end
104
+ end
105
+
106
+ context "when provided 0.0" do
107
+
108
+ it "returns false" do
109
+ Boolean.mongoize("0.0").should eq(false)
110
+ end
111
+ end
112
+
113
+ context "when provided no" do
114
+
115
+ it "returns false" do
116
+ Boolean.mongoize("no").should eq(false)
117
+ end
118
+ end
119
+
120
+ context "when provided n" do
121
+
122
+ it "returns false" do
123
+ Boolean.mongoize("n").should eq(false)
124
+ end
125
+ end
126
+ end
127
+ end
128
+
129
+ describe "#mongoize" do
130
+
131
+ it "returns self" do
132
+ true.mongoize.should eq(true)
133
+ end
134
+ end
135
+ end
@@ -0,0 +1,235 @@
1
+ require "spec_helper"
2
+
3
+ describe Mongoid::Extensions::Date do
4
+
5
+ describe "__mongoize_time__" do
6
+
7
+ context "when using active support's time zone" do
8
+
9
+ before do
10
+ Mongoid.use_activesupport_time_zone = true
11
+ Time.zone = "Tokyo"
12
+ end
13
+
14
+ after do
15
+ Time.zone = nil
16
+ end
17
+
18
+ let(:date) do
19
+ Date.new(2010, 1, 1)
20
+ end
21
+
22
+ let(:expected) do
23
+ Time.zone.local(2010, 1, 1, 0, 0, 0, 0)
24
+ end
25
+
26
+ let(:mongoized) do
27
+ date.__mongoize_time__
28
+ end
29
+
30
+ it "returns the date as a local time" do
31
+ mongoized.should eq(expected)
32
+ end
33
+ end
34
+
35
+ context "when not using active support's time zone" do
36
+
37
+ before do
38
+ Mongoid.use_activesupport_time_zone = false
39
+ end
40
+
41
+ after do
42
+ Mongoid.use_activesupport_time_zone = true
43
+ Time.zone = nil
44
+ end
45
+
46
+ let(:date) do
47
+ Date.new(2010, 1, 1)
48
+ end
49
+
50
+ let(:expected) do
51
+ Time.local(2010, 1, 1, 0, 0, 0, 0)
52
+ end
53
+
54
+ let(:mongoized) do
55
+ date.__mongoize_time__
56
+ end
57
+
58
+ it "returns the date as a local time" do
59
+ mongoized.should eq(expected)
60
+ end
61
+ end
62
+ end
63
+
64
+ describe ".demongoize" do
65
+
66
+ let(:time) do
67
+ Time.utc(2010, 1, 1, 0, 0, 0, 0)
68
+ end
69
+
70
+ let(:expected) do
71
+ Date.new(2010, 1, 1)
72
+ end
73
+
74
+ it "keeps the date" do
75
+ Date.demongoize(time).should eq(expected)
76
+ end
77
+
78
+ it "converts to a date" do
79
+ Date.demongoize(time).should be_a(Date)
80
+ end
81
+ end
82
+
83
+ describe ".mongoize" do
84
+
85
+ context "when provided a date" do
86
+
87
+ let(:date) do
88
+ Date.new(2010, 1, 1)
89
+ end
90
+
91
+ let(:evolved) do
92
+ Date.mongoize(date)
93
+ end
94
+
95
+ let(:expected) do
96
+ Time.utc(2010, 1, 1, 0, 0, 0)
97
+ end
98
+
99
+ it "returns the time" do
100
+ evolved.should eq(expected)
101
+ end
102
+ end
103
+
104
+ context "when provided a string" do
105
+
106
+ context "when the string is a valid date" do
107
+
108
+ let(:date) do
109
+ Date.parse("1st Jan 2010")
110
+ end
111
+
112
+ let(:evolved) do
113
+ Date.mongoize(date.to_s)
114
+ end
115
+
116
+ let(:expected) do
117
+ Time.utc(2010, 1, 1, 0, 0, 0, 0)
118
+ end
119
+
120
+ it "returns the string as a time" do
121
+ evolved.should eq(expected)
122
+ end
123
+ end
124
+
125
+ context "when the string is empty" do
126
+
127
+ let(:evolved) do
128
+ Date.mongoize("")
129
+ end
130
+
131
+ it "returns nil" do
132
+ evolved.should be_nil
133
+ end
134
+ end
135
+
136
+ context "when the string is an invalid time" do
137
+
138
+ let(:epoch) do
139
+ Date.new(1970, 1, 1)
140
+ end
141
+
142
+ it "returns epoch" do
143
+ Date.mongoize("time").should eq(epoch)
144
+ end
145
+ end
146
+ end
147
+
148
+ context "when provided a float" do
149
+
150
+ let(:time) do
151
+ Time.utc(2010, 1, 1, 1, 0, 0, 0)
152
+ end
153
+
154
+ let(:float) do
155
+ time.to_f
156
+ end
157
+
158
+ let(:evolved) do
159
+ Date.mongoize(float)
160
+ end
161
+
162
+ let(:expected) do
163
+ Time.at(float)
164
+ end
165
+
166
+ it "returns the float as a time" do
167
+ evolved.should eq(Time.utc(expected.year, expected.month, expected.day))
168
+ end
169
+ end
170
+
171
+ context "when provided an integer" do
172
+
173
+ let(:time) do
174
+ Time.utc(2010, 1, 1, 0, 0, 0, 0)
175
+ end
176
+
177
+ let(:integer) do
178
+ time.to_i
179
+ end
180
+
181
+ let(:evolved) do
182
+ Date.mongoize(integer)
183
+ end
184
+
185
+ let(:expected) do
186
+ Time.at(integer)
187
+ end
188
+
189
+ it "returns the integer as a time" do
190
+ evolved.should eq(Time.utc(expected.year, expected.month, expected.day))
191
+ end
192
+ end
193
+
194
+ context "when provided an array" do
195
+
196
+ let(:time) do
197
+ Time.utc(2010, 1, 1, 0, 0, 0, 0)
198
+ end
199
+
200
+ let(:array) do
201
+ [ 2010, 1, 1, 0, 0, 0, 0 ]
202
+ end
203
+
204
+ let(:evolved) do
205
+ Date.mongoize(array)
206
+ end
207
+
208
+ it "returns the array as a time" do
209
+ evolved.should eq(time)
210
+ end
211
+ end
212
+
213
+ context "when provided nil" do
214
+
215
+ it "returns nil" do
216
+ Date.mongoize(nil).should be_nil
217
+ end
218
+ end
219
+ end
220
+
221
+ describe "#mongoize" do
222
+
223
+ let(:date) do
224
+ Date.new(2010, 1, 1)
225
+ end
226
+
227
+ let(:time) do
228
+ Time.utc(2010, 1, 1, 0, 0, 0, 0)
229
+ end
230
+
231
+ it "returns the date as a time at midnight" do
232
+ date.mongoize.should eq(time)
233
+ end
234
+ end
235
+ end