mongoid 7.1.11 → 7.2.0

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 (485) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/README.md +10 -3
  4. data/lib/config/locales/en.yml +37 -14
  5. data/lib/mongoid/association/depending.rb +1 -6
  6. data/lib/mongoid/association/embedded/embeds_many/proxy.rb +1 -1
  7. data/lib/mongoid/association/many.rb +3 -3
  8. data/lib/mongoid/association/proxy.rb +1 -1
  9. data/lib/mongoid/association/referenced/belongs_to/buildable.rb +1 -1
  10. data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +1 -1
  11. data/lib/mongoid/association/referenced/has_many/enumerable.rb +37 -2
  12. data/lib/mongoid/association/referenced/has_many/proxy.rb +9 -2
  13. data/lib/mongoid/association/referenced/has_one/buildable.rb +9 -1
  14. data/lib/mongoid/atomic/modifiers.rb +1 -1
  15. data/lib/mongoid/attributes/dynamic.rb +1 -1
  16. data/lib/mongoid/attributes.rb +1 -8
  17. data/lib/mongoid/clients/factory.rb +17 -0
  18. data/lib/mongoid/composable.rb +1 -0
  19. data/lib/mongoid/config/environment.rb +1 -9
  20. data/lib/mongoid/config.rb +3 -0
  21. data/lib/mongoid/contextual/atomic.rb +2 -7
  22. data/lib/mongoid/contextual/mongo.rb +23 -4
  23. data/lib/mongoid/contextual/none.rb +0 -3
  24. data/lib/mongoid/copyable.rb +7 -3
  25. data/lib/mongoid/criteria/queryable/key.rb +1 -1
  26. data/lib/mongoid/criteria/queryable/mergeable.rb +2 -2
  27. data/lib/mongoid/criteria/queryable/selectable.rb +23 -8
  28. data/lib/mongoid/criteria/queryable/selector.rb +7 -3
  29. data/lib/mongoid/criteria/queryable/storable.rb +7 -7
  30. data/lib/mongoid/criteria.rb +58 -8
  31. data/lib/mongoid/document.rb +19 -9
  32. data/lib/mongoid/errors/invalid_discriminator_key_target.rb +25 -0
  33. data/lib/mongoid/errors/invalid_elem_match_operator.rb +33 -0
  34. data/lib/mongoid/errors/invalid_estimated_count_criteria.rb +26 -0
  35. data/lib/mongoid/errors/invalid_expression_operator.rb +28 -0
  36. data/lib/mongoid/errors/invalid_field_operator.rb +33 -0
  37. data/lib/mongoid/errors/invalid_query.rb +41 -0
  38. data/lib/mongoid/errors/mongoid_error.rb +1 -1
  39. data/lib/mongoid/errors.rb +7 -2
  40. data/lib/mongoid/extensions.rb +1 -0
  41. data/lib/mongoid/factory.rb +27 -10
  42. data/lib/mongoid/fields/validators/macro.rb +22 -9
  43. data/lib/mongoid/fields.rb +3 -0
  44. data/lib/mongoid/findable.rb +50 -14
  45. data/lib/mongoid/indexable.rb +2 -2
  46. data/lib/mongoid/interceptable.rb +2 -4
  47. data/lib/mongoid/matchable.rb +1 -149
  48. data/lib/mongoid/matcher/all.rb +22 -0
  49. data/lib/mongoid/matcher/and.rb +21 -0
  50. data/lib/mongoid/matcher/elem_match.rb +35 -0
  51. data/lib/mongoid/matcher/elem_match_expression.rb +20 -0
  52. data/lib/mongoid/matcher/eq.rb +11 -0
  53. data/lib/mongoid/matcher/eq_impl.rb +32 -0
  54. data/lib/mongoid/matcher/eq_impl_with_regexp.rb +21 -0
  55. data/lib/mongoid/matcher/exists.rb +15 -0
  56. data/lib/mongoid/matcher/expression.rb +40 -0
  57. data/lib/mongoid/matcher/expression_operator.rb +19 -0
  58. data/lib/mongoid/matcher/field_expression.rb +63 -0
  59. data/lib/mongoid/matcher/field_operator.rb +52 -0
  60. data/lib/mongoid/matcher/gt.rb +17 -0
  61. data/lib/mongoid/matcher/gte.rb +17 -0
  62. data/lib/mongoid/matcher/in.rb +25 -0
  63. data/lib/mongoid/matcher/lt.rb +17 -0
  64. data/lib/mongoid/matcher/lte.rb +17 -0
  65. data/lib/mongoid/matcher/ne.rb +16 -0
  66. data/lib/mongoid/matcher/nin.rb +11 -0
  67. data/lib/mongoid/matcher/nor.rb +25 -0
  68. data/lib/mongoid/matcher/not.rb +29 -0
  69. data/lib/mongoid/matcher/or.rb +21 -0
  70. data/lib/mongoid/matcher/regex.rb +41 -0
  71. data/lib/mongoid/matcher/size.rb +26 -0
  72. data/lib/mongoid/matcher.rb +127 -0
  73. data/lib/mongoid/persistable/deletable.rb +1 -1
  74. data/lib/mongoid/persistence_context.rb +1 -3
  75. data/lib/mongoid/query_cache.rb +64 -62
  76. data/lib/mongoid/reloadable.rb +2 -7
  77. data/lib/mongoid/serializable.rb +1 -1
  78. data/lib/mongoid/stringified_symbol.rb +53 -0
  79. data/lib/mongoid/tasks/database.rb +1 -1
  80. data/lib/mongoid/traversable.rb +111 -4
  81. data/lib/mongoid/validatable/associated.rb +1 -1
  82. data/lib/mongoid/validatable/presence.rb +3 -3
  83. data/lib/mongoid/validatable/uniqueness.rb +1 -1
  84. data/lib/mongoid/version.rb +1 -1
  85. data/lib/mongoid.rb +23 -1
  86. data/lib/rails/generators/mongoid/config/config_generator.rb +1 -8
  87. data/lib/rails/generators/mongoid/config/templates/mongoid.yml +1 -1
  88. data/spec/README.md +19 -4
  89. data/spec/integration/app_spec.rb +84 -174
  90. data/spec/integration/associations/embedded_spec.rb +94 -0
  91. data/spec/integration/associations/has_many_spec.rb +67 -14
  92. data/spec/integration/associations/has_one_spec.rb +67 -14
  93. data/spec/integration/associations/nested_attributes_assignment_spec.rb +116 -0
  94. data/spec/integration/atomic/modifiers_spec.rb +117 -0
  95. data/spec/integration/discriminator_key_spec.rb +354 -0
  96. data/spec/integration/discriminator_value_spec.rb +207 -0
  97. data/spec/integration/document_spec.rb +0 -21
  98. data/spec/integration/{matchable_spec.rb → matcher_examples_spec.rb} +120 -41
  99. data/spec/integration/matcher_operator_data/all.yml +140 -0
  100. data/spec/integration/matcher_operator_data/and.yml +93 -0
  101. data/spec/integration/matcher_operator_data/elem_match.yml +363 -0
  102. data/spec/integration/matcher_operator_data/elem_match_expr.yml +213 -0
  103. data/spec/integration/matcher_operator_data/eq.yml +191 -0
  104. data/spec/integration/matcher_operator_data/exists.yml +213 -0
  105. data/spec/integration/matcher_operator_data/generic_op.yml +17 -0
  106. data/spec/integration/matcher_operator_data/gt.yml +132 -0
  107. data/spec/integration/matcher_operator_data/gte.yml +132 -0
  108. data/spec/integration/matcher_operator_data/implicit.yml +331 -0
  109. data/spec/integration/matcher_operator_data/implicit_traversal.yml +16 -0
  110. data/spec/integration/matcher_operator_data/in.yml +194 -0
  111. data/spec/integration/matcher_operator_data/invalid_op.yml +59 -0
  112. data/spec/integration/matcher_operator_data/invalid_syntax.yml +39 -0
  113. data/spec/integration/matcher_operator_data/lt.yml +132 -0
  114. data/spec/integration/matcher_operator_data/lte.yml +132 -0
  115. data/spec/integration/matcher_operator_data/multiple.yml +29 -0
  116. data/spec/integration/matcher_operator_data/ne.yml +150 -0
  117. data/spec/integration/matcher_operator_data/nin.yml +114 -0
  118. data/spec/integration/matcher_operator_data/nor.yml +126 -0
  119. data/spec/integration/matcher_operator_data/not.yml +196 -0
  120. data/spec/integration/matcher_operator_data/or.yml +137 -0
  121. data/spec/integration/matcher_operator_data/regex.yml +174 -0
  122. data/spec/integration/matcher_operator_data/regex_options.yml +72 -0
  123. data/spec/integration/matcher_operator_data/size.yml +174 -0
  124. data/spec/integration/matcher_operator_spec.rb +100 -0
  125. data/spec/integration/matcher_spec.rb +189 -0
  126. data/spec/integration/server_query_spec.rb +142 -0
  127. data/spec/integration/stringified_symbol_field_spec.rb +190 -0
  128. data/spec/lite_spec_helper.rb +4 -3
  129. data/spec/mongoid/association/depending_spec.rb +78 -26
  130. data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +0 -50
  131. data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +37 -17
  132. data/spec/mongoid/association/embedded/embeds_many_models.rb +1 -0
  133. data/spec/mongoid/association/embedded/embeds_one_models.rb +1 -0
  134. data/spec/mongoid/association/referenced/belongs_to/proxy_spec.rb +0 -17
  135. data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +460 -186
  136. data/spec/mongoid/association/referenced/has_many_models.rb +21 -0
  137. data/spec/mongoid/association/referenced/has_one_models.rb +21 -0
  138. data/spec/mongoid/association/referenced/has_one_spec.rb +1 -1
  139. data/spec/mongoid/atomic/modifiers_spec.rb +47 -0
  140. data/spec/mongoid/atomic/paths_spec.rb +0 -41
  141. data/spec/mongoid/atomic_spec.rb +23 -0
  142. data/spec/mongoid/attributes/nested_spec.rb +1 -1
  143. data/spec/mongoid/attributes_spec.rb +0 -241
  144. data/spec/mongoid/clients/factory_spec.rb +35 -9
  145. data/spec/mongoid/clients/options_spec.rb +3 -11
  146. data/spec/mongoid/clients/sessions_spec.rb +1 -6
  147. data/spec/mongoid/config/environment_spec.rb +8 -86
  148. data/spec/mongoid/config_spec.rb +28 -0
  149. data/spec/mongoid/contextual/atomic_spec.rb +29 -81
  150. data/spec/mongoid/contextual/geo_near_spec.rb +1 -1
  151. data/spec/mongoid/contextual/mongo_spec.rb +70 -16
  152. data/spec/mongoid/copyable_spec.rb +197 -18
  153. data/spec/mongoid/copyable_spec_models.rb +28 -0
  154. data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +0 -36
  155. data/spec/mongoid/criteria/queryable/selectable_spec.rb +84 -82
  156. data/spec/mongoid/criteria_spec.rb +204 -43
  157. data/spec/mongoid/document_query_spec.rb +0 -51
  158. data/spec/mongoid/document_spec.rb +90 -36
  159. data/spec/mongoid/equality_spec.rb +0 -1
  160. data/spec/mongoid/errors/delete_restriction_spec.rb +1 -1
  161. data/spec/mongoid/errors/mongoid_error_spec.rb +8 -20
  162. data/spec/mongoid/extensions/stringified_symbol_spec.rb +85 -0
  163. data/spec/mongoid/factory_spec.rb +261 -28
  164. data/spec/mongoid/fields_spec.rb +48 -2
  165. data/spec/mongoid/findable_spec.rb +32 -0
  166. data/spec/mongoid/indexable_spec.rb +28 -2
  167. data/spec/mongoid/inspectable_spec.rb +29 -2
  168. data/spec/mongoid/interceptable_spec.rb +2 -2
  169. data/spec/mongoid/matcher/extract_attribute_data/traversal.yml +259 -0
  170. data/spec/mongoid/matcher/extract_attribute_spec.rb +47 -0
  171. data/spec/mongoid/persistable/creatable_spec.rb +108 -25
  172. data/spec/mongoid/persistable/deletable_spec.rb +86 -0
  173. data/spec/mongoid/persistable/savable_spec.rb +174 -16
  174. data/spec/mongoid/persistable/settable_spec.rb +0 -30
  175. data/spec/mongoid/persistable/updatable_spec.rb +0 -2
  176. data/spec/mongoid/persistable_spec.rb +2 -2
  177. data/spec/mongoid/query_cache_middleware_spec.rb +16 -3
  178. data/spec/mongoid/query_cache_spec.rb +442 -41
  179. data/spec/mongoid/reloadable_spec.rb +72 -0
  180. data/spec/mongoid/serializable_spec.rb +21 -3
  181. data/spec/mongoid/traversable_spec.rb +1100 -0
  182. data/spec/shared/lib/mrss/constraints.rb +10 -92
  183. data/spec/shared/lib/mrss/lite_constraints.rb +0 -16
  184. data/spec/shared/lib/mrss/spec_organizer.rb +2 -32
  185. data/spec/spec_helper.rb +3 -3
  186. data/spec/support/constraints.rb +24 -0
  187. data/spec/support/helpers.rb +1 -1
  188. data/spec/{app → support}/models/actor.rb +1 -1
  189. data/spec/{app → support}/models/address.rb +0 -4
  190. data/spec/support/models/armrest.rb +10 -0
  191. data/spec/{app → support}/models/browser.rb +1 -1
  192. data/spec/{app → support}/models/canvas.rb +1 -1
  193. data/spec/{app → support}/models/coding.rb +1 -1
  194. data/spec/support/models/crate.rb +13 -0
  195. data/spec/support/models/deed.rb +8 -0
  196. data/spec/{app → support}/models/dictionary.rb +0 -6
  197. data/spec/{app → support}/models/driver.rb +1 -1
  198. data/spec/support/models/guitar.rb +5 -0
  199. data/spec/support/models/idnodef.rb +8 -0
  200. data/spec/support/models/instrument.rb +9 -0
  201. data/spec/{app → support}/models/item.rb +1 -1
  202. data/spec/{app → support}/models/mop.rb +0 -10
  203. data/spec/support/models/order.rb +11 -0
  204. data/spec/{app → support}/models/owner.rb +2 -0
  205. data/spec/{app → support}/models/palette.rb +1 -1
  206. data/spec/{app → support}/models/person.rb +1 -10
  207. data/spec/support/models/piano.rb +5 -0
  208. data/spec/support/models/profile.rb +18 -0
  209. data/spec/support/models/publication.rb +5 -0
  210. data/spec/{app/models/profile.rb → support/models/scribe.rb} +2 -2
  211. data/spec/support/models/seat.rb +25 -0
  212. data/spec/{app → support}/models/shape.rb +2 -2
  213. data/spec/support/models/system_role.rb +7 -0
  214. data/spec/{app → support}/models/tool.rb +2 -2
  215. data/spec/support/models/toy.rb +10 -0
  216. data/spec/{app → support}/models/truck.rb +2 -0
  217. data/spec/{app → support}/models/vehicle.rb +7 -2
  218. data/spec/{app → support}/models/writer.rb +2 -2
  219. data/spec/support/spec_config.rb +1 -9
  220. data.tar.gz.sig +0 -0
  221. metadata +839 -820
  222. metadata.gz.sig +2 -2
  223. data/lib/mongoid/errors/empty_config_file.rb +0 -26
  224. data/lib/mongoid/errors/invalid_config_file.rb +0 -26
  225. data/lib/mongoid/matchable/all.rb +0 -30
  226. data/lib/mongoid/matchable/and.rb +0 -32
  227. data/lib/mongoid/matchable/default.rb +0 -121
  228. data/lib/mongoid/matchable/elem_match.rb +0 -36
  229. data/lib/mongoid/matchable/eq.rb +0 -23
  230. data/lib/mongoid/matchable/exists.rb +0 -25
  231. data/lib/mongoid/matchable/gt.rb +0 -25
  232. data/lib/mongoid/matchable/gte.rb +0 -25
  233. data/lib/mongoid/matchable/in.rb +0 -26
  234. data/lib/mongoid/matchable/lt.rb +0 -25
  235. data/lib/mongoid/matchable/lte.rb +0 -25
  236. data/lib/mongoid/matchable/ne.rb +0 -23
  237. data/lib/mongoid/matchable/nin.rb +0 -24
  238. data/lib/mongoid/matchable/nor.rb +0 -38
  239. data/lib/mongoid/matchable/or.rb +0 -35
  240. data/lib/mongoid/matchable/regexp.rb +0 -30
  241. data/lib/mongoid/matchable/size.rb +0 -23
  242. data/spec/app/models/customer.rb +0 -11
  243. data/spec/app/models/customer_address.rb +0 -12
  244. data/spec/app/models/publication.rb +0 -5
  245. data/spec/integration/callbacks_models.rb +0 -49
  246. data/spec/integration/callbacks_spec.rb +0 -216
  247. data/spec/integration/contextual/empty_spec.rb +0 -142
  248. data/spec/mongoid/errors/invalid_config_file_spec.rb +0 -32
  249. data/spec/mongoid/matchable/all_spec.rb +0 -34
  250. data/spec/mongoid/matchable/and_spec.rb +0 -190
  251. data/spec/mongoid/matchable/default_spec.rb +0 -140
  252. data/spec/mongoid/matchable/elem_match_spec.rb +0 -109
  253. data/spec/mongoid/matchable/eq_spec.rb +0 -49
  254. data/spec/mongoid/matchable/exists_spec.rb +0 -60
  255. data/spec/mongoid/matchable/gt_spec.rb +0 -89
  256. data/spec/mongoid/matchable/gte_spec.rb +0 -87
  257. data/spec/mongoid/matchable/in_spec.rb +0 -52
  258. data/spec/mongoid/matchable/lt_spec.rb +0 -88
  259. data/spec/mongoid/matchable/lte_spec.rb +0 -88
  260. data/spec/mongoid/matchable/ne_spec.rb +0 -49
  261. data/spec/mongoid/matchable/nin_spec.rb +0 -51
  262. data/spec/mongoid/matchable/nor_spec.rb +0 -210
  263. data/spec/mongoid/matchable/or_spec.rb +0 -134
  264. data/spec/mongoid/matchable/regexp_spec.rb +0 -62
  265. data/spec/mongoid/matchable/size_spec.rb +0 -28
  266. data/spec/mongoid/matchable_spec.rb +0 -856
  267. data/spec/shared/bin/get-mongodb-download-url +0 -17
  268. data/spec/shared/bin/s3-copy +0 -45
  269. data/spec/shared/bin/s3-upload +0 -69
  270. data/spec/shared/lib/mrss/cluster_config.rb +0 -226
  271. data/spec/shared/lib/mrss/docker_runner.rb +0 -271
  272. data/spec/shared/lib/mrss/event_subscriber.rb +0 -200
  273. data/spec/shared/lib/mrss/server_version_registry.rb +0 -120
  274. data/spec/shared/lib/mrss/utils.rb +0 -15
  275. data/spec/shared/share/Dockerfile.erb +0 -323
  276. data/spec/shared/share/haproxy-1.conf +0 -16
  277. data/spec/shared/share/haproxy-2.conf +0 -17
  278. data/spec/shared/shlib/distro.sh +0 -73
  279. data/spec/shared/shlib/server.sh +0 -367
  280. data/spec/shared/shlib/set_env.sh +0 -131
  281. /data/spec/{app → support}/models/account.rb +0 -0
  282. /data/spec/{app → support}/models/acolyte.rb +0 -0
  283. /data/spec/{app → support}/models/actress.rb +0 -0
  284. /data/spec/{app → support}/models/address_component.rb +0 -0
  285. /data/spec/{app → support}/models/address_number.rb +0 -0
  286. /data/spec/{app → support}/models/agency.rb +0 -0
  287. /data/spec/{app → support}/models/agent.rb +0 -0
  288. /data/spec/{app → support}/models/album.rb +0 -0
  289. /data/spec/{app → support}/models/alert.rb +0 -0
  290. /data/spec/{app → support}/models/animal.rb +0 -0
  291. /data/spec/{app → support}/models/answer.rb +0 -0
  292. /data/spec/{app → support}/models/appointment.rb +0 -0
  293. /data/spec/{app → support}/models/array_field.rb +0 -0
  294. /data/spec/{app → support}/models/article.rb +0 -0
  295. /data/spec/{app → support}/models/artist.rb +0 -0
  296. /data/spec/{app → support}/models/artwork.rb +0 -0
  297. /data/spec/{app → support}/models/audio.rb +0 -0
  298. /data/spec/{app → support}/models/augmentation.rb +0 -0
  299. /data/spec/{app → support}/models/author.rb +0 -0
  300. /data/spec/{app → support}/models/baby.rb +0 -0
  301. /data/spec/{app → support}/models/band.rb +0 -0
  302. /data/spec/{app → support}/models/bar.rb +0 -0
  303. /data/spec/{app → support}/models/basic.rb +0 -0
  304. /data/spec/{app → support}/models/bed.rb +0 -0
  305. /data/spec/{app → support}/models/big_palette.rb +0 -0
  306. /data/spec/{app → support}/models/birthday.rb +0 -0
  307. /data/spec/{app → support}/models/bomb.rb +0 -0
  308. /data/spec/{app → support}/models/book.rb +0 -0
  309. /data/spec/{app → support}/models/breed.rb +0 -0
  310. /data/spec/{app → support}/models/building.rb +0 -0
  311. /data/spec/{app → support}/models/building_address.rb +0 -0
  312. /data/spec/{app → support}/models/bus.rb +0 -0
  313. /data/spec/{app → support}/models/business.rb +0 -0
  314. /data/spec/{app → support}/models/callback_test.rb +0 -0
  315. /data/spec/{app → support}/models/car.rb +0 -0
  316. /data/spec/{app → support}/models/cat.rb +0 -0
  317. /data/spec/{app → support}/models/category.rb +0 -0
  318. /data/spec/{app → support}/models/child.rb +0 -0
  319. /data/spec/{app → support}/models/child_doc.rb +0 -0
  320. /data/spec/{app → support}/models/church.rb +0 -0
  321. /data/spec/{app → support}/models/circle.rb +0 -0
  322. /data/spec/{app → support}/models/circuit.rb +0 -0
  323. /data/spec/{app → support}/models/circus.rb +0 -0
  324. /data/spec/{app → support}/models/code.rb +0 -0
  325. /data/spec/{app → support}/models/coding/pull_request.rb +0 -0
  326. /data/spec/{app → support}/models/comment.rb +0 -0
  327. /data/spec/{app → support}/models/company.rb +0 -0
  328. /data/spec/{app → support}/models/consumption_period.rb +0 -0
  329. /data/spec/{app → support}/models/contextable_item.rb +0 -0
  330. /data/spec/{app → support}/models/contractor.rb +0 -0
  331. /data/spec/{app → support}/models/cookie.rb +0 -0
  332. /data/spec/{app → support}/models/country_code.rb +0 -0
  333. /data/spec/{app → support}/models/courier_job.rb +0 -0
  334. /data/spec/{app → support}/models/definition.rb +0 -0
  335. /data/spec/{app → support}/models/delegating_patient.rb +0 -0
  336. /data/spec/{app → support}/models/description.rb +0 -0
  337. /data/spec/{app → support}/models/division.rb +0 -0
  338. /data/spec/{app → support}/models/doctor.rb +0 -0
  339. /data/spec/{app → support}/models/dog.rb +0 -0
  340. /data/spec/{app → support}/models/dokument.rb +0 -0
  341. /data/spec/{app → support}/models/draft.rb +0 -0
  342. /data/spec/{app → support}/models/dragon.rb +0 -0
  343. /data/spec/{app → support}/models/drug.rb +0 -0
  344. /data/spec/{app → support}/models/dungeon.rb +0 -0
  345. /data/spec/{app → support}/models/edit.rb +0 -0
  346. /data/spec/{app → support}/models/email.rb +0 -0
  347. /data/spec/{app → support}/models/employer.rb +0 -0
  348. /data/spec/{app → support}/models/entry.rb +0 -0
  349. /data/spec/{app → support}/models/eraser.rb +0 -0
  350. /data/spec/{app → support}/models/even.rb +0 -0
  351. /data/spec/{app → support}/models/event.rb +0 -0
  352. /data/spec/{app → support}/models/exhibition.rb +0 -0
  353. /data/spec/{app → support}/models/exhibitor.rb +0 -0
  354. /data/spec/{app → support}/models/explosion.rb +0 -0
  355. /data/spec/{app → support}/models/eye.rb +0 -0
  356. /data/spec/{app → support}/models/eye_bowl.rb +0 -0
  357. /data/spec/{app → support}/models/face.rb +0 -0
  358. /data/spec/{app → support}/models/favorite.rb +0 -0
  359. /data/spec/{app → support}/models/filesystem.rb +0 -0
  360. /data/spec/{app → support}/models/fire_hydrant.rb +0 -0
  361. /data/spec/{app → support}/models/firefox.rb +0 -0
  362. /data/spec/{app → support}/models/fish.rb +0 -0
  363. /data/spec/{app → support}/models/folder.rb +0 -0
  364. /data/spec/{app → support}/models/folder_item.rb +0 -0
  365. /data/spec/{app → support}/models/fruits.rb +0 -0
  366. /data/spec/{app → support}/models/game.rb +0 -0
  367. /data/spec/{app → support}/models/ghost.rb +0 -0
  368. /data/spec/{app → support}/models/home.rb +0 -0
  369. /data/spec/{app → support}/models/house.rb +0 -0
  370. /data/spec/{app → support}/models/html_writer.rb +0 -0
  371. /data/spec/{app → support}/models/id_key.rb +0 -0
  372. /data/spec/{app → support}/models/image.rb +0 -0
  373. /data/spec/{app → support}/models/implant.rb +0 -0
  374. /data/spec/{app → support}/models/jar.rb +0 -0
  375. /data/spec/{app → support}/models/kaleidoscope.rb +0 -0
  376. /data/spec/{app → support}/models/kangaroo.rb +0 -0
  377. /data/spec/{app → support}/models/label.rb +0 -0
  378. /data/spec/{app → support}/models/language.rb +0 -0
  379. /data/spec/{app → support}/models/lat_lng.rb +0 -0
  380. /data/spec/{app → support}/models/league.rb +0 -0
  381. /data/spec/{app → support}/models/learner.rb +0 -0
  382. /data/spec/{app → support}/models/line_item.rb +0 -0
  383. /data/spec/{app → support}/models/location.rb +0 -0
  384. /data/spec/{app → support}/models/login.rb +0 -0
  385. /data/spec/{app → support}/models/manufacturer.rb +0 -0
  386. /data/spec/{app → support}/models/meat.rb +0 -0
  387. /data/spec/{app → support}/models/membership.rb +0 -0
  388. /data/spec/{app → support}/models/message.rb +0 -0
  389. /data/spec/{app → support}/models/minim.rb +0 -0
  390. /data/spec/{app → support}/models/mixed_drink.rb +0 -0
  391. /data/spec/{app → support}/models/movie.rb +0 -0
  392. /data/spec/{app → support}/models/my_hash.rb +0 -0
  393. /data/spec/{app → support}/models/name.rb +0 -0
  394. /data/spec/{app → support}/models/name_only.rb +0 -0
  395. /data/spec/{app → support}/models/node.rb +0 -0
  396. /data/spec/{app → support}/models/note.rb +0 -0
  397. /data/spec/{app → support}/models/odd.rb +0 -0
  398. /data/spec/{app → support}/models/ordered_post.rb +0 -0
  399. /data/spec/{app → support}/models/ordered_preference.rb +0 -0
  400. /data/spec/{app → support}/models/oscar.rb +0 -0
  401. /data/spec/{app → support}/models/other_owner_object.rb +0 -0
  402. /data/spec/{app → support}/models/override.rb +0 -0
  403. /data/spec/{app → support}/models/ownable.rb +0 -0
  404. /data/spec/{app → support}/models/pack.rb +0 -0
  405. /data/spec/{app → support}/models/page.rb +0 -0
  406. /data/spec/{app → support}/models/page_question.rb +0 -0
  407. /data/spec/{app → support}/models/parent.rb +0 -0
  408. /data/spec/{app → support}/models/parent_doc.rb +0 -0
  409. /data/spec/{app → support}/models/passport.rb +0 -0
  410. /data/spec/{app → support}/models/patient.rb +0 -0
  411. /data/spec/{app → support}/models/pdf_writer.rb +0 -0
  412. /data/spec/{app → support}/models/pencil.rb +0 -0
  413. /data/spec/{app → support}/models/pet.rb +0 -0
  414. /data/spec/{app → support}/models/pet_owner.rb +0 -0
  415. /data/spec/{app → support}/models/phone.rb +0 -0
  416. /data/spec/{app → support}/models/pizza.rb +0 -0
  417. /data/spec/{app → support}/models/player.rb +0 -0
  418. /data/spec/{app → support}/models/post.rb +0 -0
  419. /data/spec/{app → support}/models/post_genre.rb +0 -0
  420. /data/spec/{app → support}/models/powerup.rb +0 -0
  421. /data/spec/{app → support}/models/preference.rb +0 -0
  422. /data/spec/{app → support}/models/princess.rb +0 -0
  423. /data/spec/{app → support}/models/product.rb +0 -0
  424. /data/spec/{app → support}/models/pronunciation.rb +0 -0
  425. /data/spec/{app → support}/models/pub.rb +0 -0
  426. /data/spec/{app → support}/models/publication/encyclopedia.rb +0 -0
  427. /data/spec/{app → support}/models/publication/review.rb +0 -0
  428. /data/spec/{app → support}/models/purchase.rb +0 -0
  429. /data/spec/{app → support}/models/question.rb +0 -0
  430. /data/spec/{app → support}/models/quiz.rb +0 -0
  431. /data/spec/{app → support}/models/rating.rb +0 -0
  432. /data/spec/{app → support}/models/record.rb +0 -0
  433. /data/spec/{app → support}/models/registry.rb +0 -0
  434. /data/spec/{app → support}/models/role.rb +0 -0
  435. /data/spec/{app → support}/models/root_category.rb +0 -0
  436. /data/spec/{app → support}/models/sandwich.rb +0 -0
  437. /data/spec/{app → support}/models/scheduler.rb +0 -0
  438. /data/spec/{app → support}/models/seo.rb +0 -0
  439. /data/spec/{app → support}/models/series.rb +0 -0
  440. /data/spec/{app → support}/models/server.rb +0 -0
  441. /data/spec/{app → support}/models/service.rb +0 -0
  442. /data/spec/{app → support}/models/shelf.rb +0 -0
  443. /data/spec/{app → support}/models/shipment_address.rb +0 -0
  444. /data/spec/{app → support}/models/shipping_container.rb +0 -0
  445. /data/spec/{app → support}/models/shipping_pack.rb +0 -0
  446. /data/spec/{app → support}/models/shop.rb +0 -0
  447. /data/spec/{app → support}/models/short_agent.rb +0 -0
  448. /data/spec/{app → support}/models/short_quiz.rb +0 -0
  449. /data/spec/{app → support}/models/simple.rb +0 -0
  450. /data/spec/{app → support}/models/slave.rb +0 -0
  451. /data/spec/{app → support}/models/song.rb +0 -0
  452. /data/spec/{app → support}/models/sound.rb +0 -0
  453. /data/spec/{app → support}/models/square.rb +0 -0
  454. /data/spec/{app → support}/models/staff.rb +0 -0
  455. /data/spec/{app → support}/models/store_as_dup_test1.rb +0 -0
  456. /data/spec/{app → support}/models/store_as_dup_test2.rb +0 -0
  457. /data/spec/{app → support}/models/store_as_dup_test3.rb +0 -0
  458. /data/spec/{app → support}/models/store_as_dup_test4.rb +0 -0
  459. /data/spec/{app → support}/models/strategy.rb +0 -0
  460. /data/spec/{app → support}/models/sub_item.rb +0 -0
  461. /data/spec/{app → support}/models/subscription.rb +0 -0
  462. /data/spec/{app → support}/models/survey.rb +0 -0
  463. /data/spec/{app → support}/models/symptom.rb +0 -0
  464. /data/spec/{app → support}/models/tag.rb +0 -0
  465. /data/spec/{app → support}/models/target.rb +0 -0
  466. /data/spec/{app → support}/models/template.rb +0 -0
  467. /data/spec/{app → support}/models/thing.rb +0 -0
  468. /data/spec/{app → support}/models/title.rb +0 -0
  469. /data/spec/{app → support}/models/topping.rb +0 -0
  470. /data/spec/{app → support}/models/track.rb +0 -0
  471. /data/spec/{app → support}/models/translation.rb +0 -0
  472. /data/spec/{app → support}/models/tree.rb +0 -0
  473. /data/spec/{app → support}/models/updatable.rb +0 -0
  474. /data/spec/{app → support}/models/user.rb +0 -0
  475. /data/spec/{app → support}/models/user_account.rb +0 -0
  476. /data/spec/{app → support}/models/validation_callback.rb +0 -0
  477. /data/spec/{app → support}/models/version.rb +0 -0
  478. /data/spec/{app → support}/models/vertex.rb +0 -0
  479. /data/spec/{app → support}/models/vet_visit.rb +0 -0
  480. /data/spec/{app → support}/models/video.rb +0 -0
  481. /data/spec/{app → support}/models/video_game.rb +0 -0
  482. /data/spec/{app → support}/models/weapon.rb +0 -0
  483. /data/spec/{app → support}/models/wiki_page.rb +0 -0
  484. /data/spec/{app → support}/models/word.rb +0 -0
  485. /data/spec/{app → support}/models/word_origin.rb +0 -0
@@ -1,49 +0,0 @@
1
- class Galaxy
2
- include Mongoid::Document
3
-
4
- field :age, type: Integer
5
-
6
- before_validation :set_age
7
-
8
- embeds_many :stars
9
-
10
- private
11
-
12
- def set_age
13
- self.age ||= 100_000
14
- end
15
- end
16
-
17
- class Star
18
- include Mongoid::Document
19
-
20
- embedded_in :galaxy
21
-
22
- field :age, type: Integer
23
-
24
- before_validation :set_age
25
-
26
- embeds_many :planets
27
-
28
- private
29
-
30
- def set_age
31
- self.age ||= 42_000
32
- end
33
- end
34
-
35
- class Planet
36
- include Mongoid::Document
37
-
38
- embedded_in :star
39
-
40
- field :age, type: Integer
41
-
42
- before_validation :set_age
43
-
44
- private
45
-
46
- def set_age
47
- self.age ||= 2_000
48
- end
49
- end
@@ -1,216 +0,0 @@
1
- # frozen_string_literal: true
2
- # encoding: utf-8
3
-
4
- require 'spec_helper'
5
- require_relative './callbacks_models'
6
-
7
- describe 'callbacks integration tests' do
8
- context 'when modifying attributes in a callback' do
9
-
10
- context 'when creating top-level document' do
11
- context 'top level document' do
12
- let(:instance) do
13
- Galaxy.create!
14
- end
15
-
16
- it 'writes the attribute value into the model' do
17
- instance.age.should == 100_000
18
- end
19
-
20
- it 'persists the attribute value' do
21
- Galaxy.find(instance.id).age.should == 100_000
22
- end
23
- end
24
-
25
- context 'embedded document' do
26
- shared_examples 'persists the attribute value' do
27
- it 'writes the attribute value into the model' do
28
- instance.stars.first.age.should == 42_000
29
- end
30
-
31
- it 'persists the attribute value' do
32
- Galaxy.find(instance.id).stars.first.age.should == 42_000
33
- end
34
- end
35
-
36
- context 'set as a document instance' do
37
- let(:instance) do
38
- Galaxy.create!(stars: [Star.new])
39
- end
40
-
41
- include_examples 'persists the attribute value'
42
- end
43
-
44
- context 'set as attributes on parent' do
45
- let(:instance) do
46
- Galaxy.create!(stars: [{}])
47
- end
48
-
49
- include_examples 'persists the attribute value'
50
- end
51
- end
52
-
53
- context 'nested embedded document' do
54
- shared_examples 'persists the attribute value' do
55
- it 'writes the attribute value into the model' do
56
- instance.stars.first.planets.first.age.should == 2_000
57
- end
58
-
59
- it 'persists the attribute value' do
60
- Galaxy.find(instance.id).stars.first.planets.first.age.should == 2_000
61
- end
62
- end
63
-
64
- context 'set as a document instance' do
65
- let(:instance) do
66
- Galaxy.create!(stars: [Star.new(
67
- planets: [Planet.new],
68
- )])
69
- end
70
-
71
- include_examples 'persists the attribute value'
72
- end
73
-
74
- context 'set as attributes on parent' do
75
- let(:instance) do
76
- Galaxy.create!(stars: [
77
- planets: [{}],
78
- ])
79
- end
80
-
81
- include_examples 'persists the attribute value'
82
- end
83
- end
84
- end
85
-
86
- context 'when updating top-level document via #save' do
87
- let!(:instance) do
88
- Galaxy.create!
89
- end
90
-
91
- context 'embedded document' do
92
- shared_examples 'persists the attribute value' do
93
- it 'writes the attribute value into the model' do
94
- instance.stars.first.age.should == 42_000
95
- end
96
-
97
- it 'persists the attribute value' do
98
- Galaxy.find(instance.id).stars.first.age.should == 42_000
99
- end
100
- end
101
-
102
- context 'set as a document instance' do
103
- before do
104
- instance.stars = [Star.new]
105
- instance.save!
106
- end
107
-
108
- include_examples 'persists the attribute value'
109
- end
110
-
111
- context 'set as attributes on parent' do
112
- before do
113
- instance.stars = [{}]
114
- instance.save!
115
- end
116
-
117
- include_examples 'persists the attribute value'
118
- end
119
- end
120
-
121
- context 'nested embedded document' do
122
- shared_examples 'persists the attribute value' do
123
- it 'writes the attribute value into the model' do
124
- instance.stars.first.planets.first.age.should == 2_000
125
- end
126
-
127
- it 'persists the attribute value' do
128
- Galaxy.find(instance.id).stars.first.planets.first.age.should == 2_000
129
- end
130
- end
131
-
132
- context 'set as a document instance' do
133
- before do
134
- instance.stars = [Star.new(planets: [Planet.new])]
135
- instance.save!
136
- end
137
-
138
- include_examples 'persists the attribute value'
139
- end
140
-
141
- context 'set as attributes on parent' do
142
- before do
143
- instance.stars = [planets: [{}]]
144
- instance.save!
145
- end
146
-
147
- include_examples 'persists the attribute value'
148
- end
149
- end
150
- end
151
-
152
- context 'when updating top-level document via #update_attributes' do
153
- let!(:instance) do
154
- Galaxy.create!
155
- end
156
-
157
- context 'embedded document' do
158
- shared_examples 'persists the attribute value' do
159
- it 'writes the attribute value into the model' do
160
- instance.stars.first.age.should == 42_000
161
- end
162
-
163
- it 'persists the attribute value' do
164
- Galaxy.find(instance.id).stars.first.age.should == 42_000
165
- end
166
- end
167
-
168
- context 'set as a document instance' do
169
- before do
170
- instance.update_attributes(stars: [Star.new])
171
- end
172
-
173
- include_examples 'persists the attribute value'
174
- end
175
-
176
- context 'set as attributes on parent' do
177
- before do
178
- instance.update_attributes(stars: [{}])
179
- end
180
-
181
- include_examples 'persists the attribute value'
182
- end
183
- end
184
-
185
- context 'nested embedded document' do
186
- shared_examples 'persists the attribute value' do
187
- it 'writes the attribute value into the model' do
188
- instance.stars.first.planets.first.age.should == 2_000
189
- end
190
-
191
- it 'persists the attribute value' do
192
- pending 'MONGOID-4476'
193
-
194
- Galaxy.find(instance.id).stars.first.planets.first.age.should == 2_000
195
- end
196
- end
197
-
198
- context 'set as a document instance' do
199
- before do
200
- instance.update_attributes(stars: [Star.new(planets: [Planet.new])])
201
- end
202
-
203
- include_examples 'persists the attribute value'
204
- end
205
-
206
- context 'set as attributes on parent' do
207
- before do
208
- instance.update_attributes(stars: [planets: [{}]])
209
- end
210
-
211
- include_examples 'persists the attribute value'
212
- end
213
- end
214
- end
215
- end
216
- end
@@ -1,142 +0,0 @@
1
- # frozen_string_literal: true
2
- # encoding: utf-8
3
-
4
- require 'spec_helper'
5
-
6
- describe 'Contextual classes when dealing with empty result set' do
7
- shared_examples 'behave as expected' do
8
- context '#exists?' do
9
- it 'is false' do
10
- context.exists?.should be false
11
- end
12
- end
13
-
14
- context '#count' do
15
- it 'is 0' do
16
- context.count.should == 0
17
- end
18
- end
19
-
20
- context '#length' do
21
- it 'is 0' do
22
- context.length.should == 0
23
- end
24
- end
25
-
26
- # #estimated_count only exists for Mongo
27
-
28
- context '#distinct' do
29
- it 'is empty array' do
30
- context.distinct(:foo).should == []
31
- end
32
- end
33
-
34
- context '#each' do
35
- context 'with block' do
36
- it 'does not invoke the block' do
37
- called = false
38
- context.each do
39
- called = true
40
- end
41
- called.should be false
42
- end
43
- end
44
-
45
- context 'without block' do
46
- it 'returns Enumerable' do
47
- context.each.should be_a(Enumerable)
48
- end
49
-
50
- it 'returns empty Enumerable' do
51
- context.each.to_a.should == []
52
- end
53
- end
54
- end
55
-
56
- context '#map' do
57
- context 'with block' do
58
- it 'does not invoke the block' do
59
- called = false
60
- context.map do
61
- called = true
62
- end
63
- called.should be false
64
- end
65
- end
66
-
67
- context 'without block' do
68
- it 'returns empty array' do
69
- skip 'MONGOID-5148'
70
-
71
- context.map(:field).should == []
72
- end
73
- end
74
- end
75
-
76
- context '#first' do
77
- it 'is nil' do
78
- context.first.should be nil
79
- end
80
- end
81
-
82
- context '#find_first' do
83
- it 'is nil' do
84
- context.find_first.should be nil
85
- end
86
- end
87
-
88
- context '#one' do
89
- it 'is nil' do
90
- context.one.should be nil
91
- end
92
- end
93
-
94
- context '#last' do
95
- it 'is nil' do
96
- context.last.should be nil
97
- end
98
- end
99
- end
100
-
101
- let(:context) do
102
- context_cls.new(criteria)
103
- end
104
-
105
- before do
106
- # Create an object of the same class used in the Criteria instance
107
- # to verify we are using the Contextual classes.
108
- Mop.create!
109
- end
110
-
111
- context 'Mongo' do
112
- let(:context_cls) { Mongoid::Contextual::Mongo }
113
-
114
- let(:criteria) do
115
- Mop.and(Mop.where(a: 1), Mop.where(a: 2))
116
- end
117
-
118
- include_examples 'behave as expected'
119
- end
120
-
121
- context 'Memory' do
122
- let(:context_cls) { Mongoid::Contextual::Memory }
123
-
124
- let(:criteria) do
125
- Mop.all.tap do |criteria|
126
- criteria.documents = []
127
- end
128
- end
129
-
130
- include_examples 'behave as expected'
131
- end
132
-
133
- context 'None' do
134
- let(:context_cls) { Mongoid::Contextual::None }
135
-
136
- let(:criteria) do
137
- Mop.none
138
- end
139
-
140
- include_examples 'behave as expected'
141
- end
142
- end
@@ -1,32 +0,0 @@
1
- # frozen_string_literal: true
2
- # encoding: utf-8
3
-
4
- require "spec_helper"
5
-
6
- describe Mongoid::Errors::InvalidConfigFile do
7
-
8
- describe "#message" do
9
-
10
- let(:error) do
11
- described_class.new('/my/path')
12
- end
13
-
14
- it "contains the problem in the message" do
15
- expect(error.message).to include(
16
- "Invalid configuration file: /my/path."
17
- )
18
- end
19
-
20
- it "contains the summary in the message" do
21
- expect(error.message).to include(
22
- "Your mongoid.yml configuration file does not contain the"
23
- )
24
- end
25
-
26
- it "contains the resolution in the message" do
27
- expect(error.message).to include(
28
- "Ensure your configuration file contains the correct contents."
29
- )
30
- end
31
- end
32
- end
@@ -1,34 +0,0 @@
1
- # frozen_string_literal: true
2
- # encoding: utf-8
3
-
4
- require "spec_helper"
5
-
6
- describe Mongoid::Matchable::All do
7
-
8
- let(:matcher) do
9
- described_class.new(["first", "second", "third"])
10
- end
11
-
12
- describe "#_matches?" do
13
-
14
- context "when the attribute includes all of the values" do
15
-
16
- it "returns true" do
17
- expect(matcher._matches?("$all" => ["first", /\Asec.*\z/])).to be true
18
- end
19
- end
20
-
21
- context "when the attributes doesn't include all of the values" do
22
-
23
- it "returns false" do
24
- expect(matcher._matches?("$all" => ["second", "third", "fourth"])).to be false
25
- end
26
- end
27
-
28
- context "when the value is empty" do
29
- it "returns false" do
30
- expect(matcher._matches?("$all" => [])).to be false
31
- end
32
- end
33
- end
34
- end
@@ -1,190 +0,0 @@
1
- # frozen_string_literal: true
2
- # encoding: utf-8
3
-
4
- require "spec_helper"
5
-
6
- describe Mongoid::Matchable::And do
7
-
8
- let(:person) do
9
- Person.new
10
- end
11
-
12
- let(:matcher) do
13
- described_class.new("value", person)
14
- end
15
-
16
- describe "#_matches?" do
17
-
18
- context "when provided a simple expression" do
19
-
20
- context "when only one expression provided" do
21
-
22
- context "when the value matches" do
23
-
24
- let(:matches) do
25
- matcher._matches?([ { title: "Sir" } ])
26
- end
27
-
28
- before do
29
- person.title = "Sir"
30
- end
31
-
32
- it "returns true" do
33
- expect(matches).to be true
34
- end
35
- end
36
-
37
- context "when the expression is a $not" do
38
-
39
- let(:matches) do
40
- matcher._matches?([ { title: {:$not => /Foobar/ } }])
41
- end
42
-
43
- context "when the value matches" do
44
-
45
- it "returns true" do
46
- expect(matches).to be true
47
- end
48
- end
49
-
50
- context "when the value does not match" do
51
-
52
- before do
53
- person.title = "Foobar baz"
54
- end
55
-
56
- it "returns false" do
57
- expect(matches).to be false
58
- end
59
- end
60
- end
61
-
62
- context "when the value does not match" do
63
-
64
- let(:matches) do
65
- matcher._matches?([ { title: "Sir" } ])
66
- end
67
-
68
- it "returns false" do
69
- expect(matches).to be false
70
- end
71
- end
72
- end
73
-
74
- context "when multiple expressions provided" do
75
-
76
- context "when all of the values are equal" do
77
-
78
- let(:matches) do
79
- matcher._matches?(
80
- [ { title: "Sir" }, { _id: person.id } ]
81
- )
82
- end
83
-
84
- before do
85
- person.title = "Sir"
86
- end
87
-
88
- it "returns true" do
89
- expect(matches).to be true
90
- end
91
- end
92
-
93
- context "when one of the values does not match" do
94
-
95
- let(:matches) do
96
- matcher._matches?(
97
- [ { title: "Sir" }, { _id: BSON::ObjectId.new } ]
98
- )
99
- end
100
-
101
- before do
102
- person.title = "Sir"
103
- end
104
-
105
- it "returns false" do
106
- expect(matches).to be false
107
- end
108
- end
109
-
110
- context "when provided no expressions" do
111
-
112
- let(:matches) do
113
- matcher._matches?([])
114
- end
115
-
116
- it "returns true" do
117
- expect(matches).to be true
118
- end
119
- end
120
- end
121
- end
122
-
123
- context "when provided a complex expression" do
124
-
125
- context "when all of the values are equal" do
126
-
127
- let(:matches) do
128
- matcher._matches?(
129
- [
130
- { title: { "$in" => [ "Sir", "Madam" ] } },
131
- { _id: person.id }
132
- ]
133
- )
134
- end
135
-
136
- before do
137
- person.title = "Sir"
138
- end
139
-
140
- it "returns true" do
141
- expect(matches).to be true
142
- end
143
- end
144
-
145
- context "when one of the values does not match" do
146
-
147
- let(:matches) do
148
- matcher._matches?(
149
- [
150
- { title: { "$in" => [ "Prince", "Madam" ] } },
151
- { _id: BSON::ObjectId.new }
152
- ]
153
- )
154
- end
155
-
156
- before do
157
- person.title = "Sir"
158
- end
159
-
160
- it "returns false" do
161
- expect(matches).to be false
162
- end
163
- end
164
-
165
- context "when expression contain multiple fields" do
166
-
167
- context "when all the expressions match" do
168
-
169
- let(:matches) do
170
- matcher._matches?(
171
- [
172
- { title: "Sir", age: 23 },
173
- { _id: person.id }
174
- ]
175
- )
176
- end
177
-
178
- before do
179
- person.title = "Sir"
180
- person.age = 23
181
- end
182
-
183
- it "returns true" do
184
- expect(matches).to be true
185
- end
186
- end
187
- end
188
- end
189
- end
190
- end