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
@@ -52,7 +52,7 @@ module Mrss
52
52
  end
53
53
 
54
54
  def require_topology(*topologies)
55
- invalid_topologies = topologies - [:single, :replica_set, :sharded, :load_balanced]
55
+ invalid_topologies = topologies - [:single, :replica_set, :sharded]
56
56
 
57
57
  unless invalid_topologies.empty?
58
58
  raise ArgumentError, "Invalid topologies requested: #{invalid_topologies.join(', ')}"
@@ -82,7 +82,7 @@ module Mrss
82
82
  unless ClusterConfig.instance.server_version >= '4.0'
83
83
  skip 'Transactions tests in a replica set topology require server 4.0+'
84
84
  end
85
- when :sharded, :load_balanced
85
+ when :sharded
86
86
  unless ClusterConfig.instance.server_version >= '4.2'
87
87
  skip 'Transactions tests in a sharded cluster topology require server 4.2+'
88
88
  end
@@ -113,14 +113,6 @@ module Mrss
113
113
  end
114
114
  end
115
115
 
116
- def require_retry_writes
117
- before(:all) do
118
- unless SpecConfig.instance.retry_writes?
119
- skip "Retry writes is disabled"
120
- end
121
- end
122
- end
123
-
124
116
  def require_no_retry_writes
125
117
  before(:all) do
126
118
  if SpecConfig.instance.retry_writes?
@@ -155,33 +147,6 @@ module Mrss
155
147
  end
156
148
  end
157
149
 
158
- def require_no_snappy_compression
159
- before(:all) do
160
- compressors = SpecConfig.instance.compressors
161
- if compressors && compressors.include?('snappy')
162
- skip "Snappy compression is enabled"
163
- end
164
- end
165
- end
166
-
167
- def require_zstd_compression
168
- before(:all) do
169
- compressors = SpecConfig.instance.compressors
170
- unless compressors && compressors.include?('zstd')
171
- skip "Zstd compression is not enabled"
172
- end
173
- end
174
- end
175
-
176
- def require_no_zstd_compression
177
- before(:all) do
178
- compressors = SpecConfig.instance.compressors
179
- if compressors && compressors.include?('zstd')
180
- skip "Zstd compression is enabled"
181
- end
182
- end
183
- end
184
-
185
150
  def require_no_compression
186
151
  before(:all) do
187
152
  if SpecConfig.instance.compressors
@@ -249,52 +214,31 @@ module Mrss
249
214
  # (mongos 4.0+ overrides the write concern)
250
215
  def require_set_write_concern
251
216
  before(:all) do
252
- if %i(sharded load_balanced).include?(ClusterConfig.instance.topology) &&
253
- ClusterConfig.instance.short_server_version >= '4.0'
254
- then
217
+ if ClusterConfig.instance.topology == :sharded && ClusterConfig.instance.short_server_version >= '4.0'
255
218
  skip "mongos 4.0+ overrides write concern"
256
219
  end
257
220
  end
258
221
  end
259
222
 
260
- def require_multi_mongos
223
+ def require_multi_shard
261
224
  before(:all) do
262
225
  if ClusterConfig.instance.topology == :sharded && SpecConfig.instance.addresses.length == 1
263
- skip 'Test requires a minimum of two mongoses if run in sharded topology'
264
- end
265
-
266
- if ClusterConfig.instance.topology == :load_balanced && SpecConfig.instance.single_mongos?
267
- skip 'Test requires a minimum of two mongoses if run in load-balanced topology'
226
+ skip 'Test requires a minimum of two shards if run in sharded topology'
268
227
  end
269
228
  end
270
229
  end
271
230
 
272
- # In sharded topology operations are distributed to the mongoses.
273
- # When we set fail points, the fail point may be set on one mongos and
274
- # operation may be executed on another mongos, causing failures.
275
- # Tests that are not setting targeted fail points should utilize this
276
- # method to restrict themselves to single mongos.
277
- #
278
- # In load-balanced topology, the same problem can happen when there is
279
- # more than one mongos behind the load balancer.
280
- def require_no_multi_mongos
231
+ def require_no_multi_shard
281
232
  before(:all) do
282
233
  if ClusterConfig.instance.topology == :sharded && SpecConfig.instance.addresses.length > 1
283
- skip 'Test requires a single mongos if run in sharded topology'
284
- end
285
- if ClusterConfig.instance.topology == :load_balanced && !SpecConfig.instance.single_mongos?
286
- skip 'Test requires a single mongos, as indicated by SINGLE_MONGOS=1 environment variable, if run in load-balanced topology'
234
+ skip 'Test requires a single shard if run in sharded topology'
287
235
  end
288
236
  end
289
237
  end
290
238
 
291
- alias :require_no_multi_shard :require_no_multi_mongos
292
-
293
239
  def require_wired_tiger
294
240
  before(:all) do
295
- # Storage detection fails for serverless instances. However, it is safe to
296
- # assume that a serverless instance uses WiredTiger Storage Engine.
297
- if !SpecConfig.instance.serverless? && ClusterConfig.instance.storage_engine != :wired_tiger
241
+ if ClusterConfig.instance.storage_engine != :wired_tiger
298
242
  skip 'Test requires WiredTiger storage engine'
299
243
  end
300
244
  end
@@ -303,9 +247,7 @@ module Mrss
303
247
  def require_wired_tiger_on_36
304
248
  before(:all) do
305
249
  if ClusterConfig.instance.short_server_version >= '3.6'
306
- # Storage detection fails for serverless instances. However, it is safe to
307
- # assume that a serverless instance uses WiredTiger Storage Engine.
308
- if !SpecConfig.instance.serverless? && ClusterConfig.instance.storage_engine != :wired_tiger
250
+ if ClusterConfig.instance.storage_engine != :wired_tiger
309
251
  skip 'Test requires WiredTiger storage engine on 3.6+ servers'
310
252
  end
311
253
  end
@@ -314,7 +256,7 @@ module Mrss
314
256
 
315
257
  def require_mmapv1
316
258
  before(:all) do
317
- if SpecConfig.instance.serverless? || ClusterConfig.instance.storage_engine != :mmapv1
259
+ if ClusterConfig.instance.storage_engine != :mmapv1
318
260
  skip 'Test requires MMAPv1 storage engine'
319
261
  end
320
262
  end
@@ -357,29 +299,5 @@ module Mrss
357
299
  end
358
300
  end
359
301
  end
360
-
361
- def require_required_api_version
362
- before(:all) do
363
- unless ENV['API_VERSION_REQUIRED'] == '1'
364
- skip 'Set API_VERSION_REQUIRED=1 to run this test'
365
- end
366
- end
367
- end
368
-
369
- def require_no_required_api_version
370
- before(:all) do
371
- if ENV['API_VERSION_REQUIRED'] == '1'
372
- skip 'Cannot have API_VERSION_REQUIRED=1 to run this test'
373
- end
374
- end
375
- end
376
-
377
- def require_unix_socket
378
- before(:all) do
379
- if ENV['TOPOLOGY'] == 'load-balanced'
380
- skip 'Load balancer does not listen on Unix sockets'
381
- end
382
- end
383
- end
384
302
  end
385
303
  end
@@ -171,21 +171,5 @@ module Mrss
171
171
  end
172
172
  end
173
173
  end
174
-
175
- def require_active_support
176
- before(:all) do
177
- if !SpecConfig.instance.active_support?
178
- skip 'This test requires ActiveSupport; set WITH_ACTIVE_SUPPORT=1 in environment'
179
- end
180
- end
181
- end
182
-
183
- def no_active_support
184
- before(:all) do
185
- if SpecConfig.instance.active_support?
186
- skip 'This test requires no ActiveSupport; unset WITH_ACTIVE_SUPPORT in environment'
187
- end
188
- end
189
- end
190
174
  end
191
175
  end
@@ -1,6 +1,3 @@
1
- # frozen_string_literal: true
2
- # encoding: utf-8
3
-
4
1
  autoload :JSON, 'json'
5
2
  autoload :FileUtils, 'fileutils'
6
3
  autoload :Find, 'find'
@@ -25,28 +22,18 @@ module Mrss
25
22
  end
26
23
 
27
24
  def initialize(root: nil, classifiers:, priority_order:,
28
- spec_root: nil, rspec_json_path: nil, rspec_all_json_path: nil,
29
- randomize: false
25
+ spec_root: nil, rspec_json_path: nil, rspec_all_json_path: nil
30
26
  )
31
27
  @spec_root = spec_root || File.join(root, 'spec')
32
28
  @classifiers = classifiers
33
29
  @priority_order = priority_order
34
30
  @rspec_json_path = rspec_json_path || File.join(root, 'tmp/rspec.json')
35
31
  @rspec_all_json_path = rspec_all_json_path || File.join(root, 'tmp/rspec-all.json')
36
- @randomize = !!randomize
37
32
  end
38
33
 
39
34
  attr_reader :spec_root, :classifiers, :priority_order
40
35
  attr_reader :rspec_json_path, :rspec_all_json_path
41
36
 
42
- def randomize?
43
- @randomize
44
- end
45
-
46
- def seed
47
- @seed ||= (rand * 100_000).to_i
48
- end
49
-
50
37
  def buckets
51
38
  @buckets ||= {}.tap do |buckets|
52
39
  Find.find(spec_root) do |path|
@@ -91,20 +78,10 @@ module Mrss
91
78
  end
92
79
 
93
80
  def run
94
- run_buckets(*buckets.keys)
95
- end
96
-
97
- def run_buckets(*buckets)
98
81
  FileUtils.rm_f(rspec_all_json_path)
99
82
 
100
- buckets.each do |bucket|
101
- if bucket && !self.buckets[bucket]
102
- raise "Unknown bucket #{bucket}"
103
- end
104
- end
105
- buckets = Hash[self.buckets.select { |k, v| buckets.include?(k) }]
106
-
107
83
  failed = []
84
+ buckets = self.buckets.dup
108
85
 
109
86
  priority_order.each do |category|
110
87
  if files = buckets.delete(category)
@@ -132,12 +109,8 @@ module Mrss
132
109
  puts "Running #{category.to_s.gsub('_', ' ')} tests"
133
110
  FileUtils.rm_f(rspec_json_path)
134
111
  cmd = %w(rspec) + paths
135
- if randomize?
136
- cmd += %W(--order rand:#{seed})
137
- end
138
112
 
139
113
  begin
140
- puts "Running #{cmd.join(' ')}"
141
114
  ChildProcessHelper.check_call(cmd)
142
115
  ensure
143
116
  if File.exist?(rspec_json_path)
@@ -163,9 +136,6 @@ module Mrss
163
136
  end
164
137
  new.delete('version')
165
138
  new.delete('summary_line')
166
- # The spec organizer runs all buckets with the same seed, hence
167
- # we can drop the seed from new results.
168
- new.delete('seed')
169
139
  unless new.empty?
170
140
  raise "Unhandled rspec results keys: #{new.keys.join(', ')}"
171
141
  end
data/spec/spec_helper.rb CHANGED
@@ -3,7 +3,7 @@
3
3
 
4
4
  require 'lite_spec_helper'
5
5
 
6
- MODELS = File.join(File.dirname(__FILE__), "app/models")
6
+ MODELS = File.join(File.dirname(__FILE__), "support/models")
7
7
  $LOAD_PATH.unshift(MODELS)
8
8
 
9
9
  require "action_controller"
@@ -43,7 +43,7 @@ if SpecConfig.instance.ci?
43
43
  client = Mongo::Client.new(SpecConfig.instance.addresses)
44
44
  while starting
45
45
  begin
46
- client.command(ping: 1)
46
+ client.command(Mongo::Server::Monitor::Connection::ISMASTER)
47
47
  break
48
48
  rescue Mongo::Error::OperationFailure => e
49
49
  sleep(2)
@@ -83,7 +83,7 @@ Mongoid.configure do |config|
83
83
  config.load_configuration(CONFIG)
84
84
  end
85
85
 
86
- # Autoload every model for the test suite that sits in spec/app/models.
86
+ # Autoload every model for the test suite that sits in spec/support/models.
87
87
  Dir[ File.join(MODELS, "*.rb") ].sort.each do |file|
88
88
  name = File.basename(file, ".rb")
89
89
  autoload name.camelize.to_sym, name
@@ -4,6 +4,30 @@
4
4
  module Constraints
5
5
  RAILS_VERSION = ActiveSupport.version.to_s.split('.')[0..1].join('.').freeze
6
6
 
7
+ def min_driver_version(version)
8
+ required_version = version.split('.').map(&:to_i)
9
+ actual_version = driver_version(required_version.length)
10
+ before(:all) do
11
+ if (actual_version <=> required_version) < 0
12
+ skip "Driver version #{version} or higher is required"
13
+ end
14
+ end
15
+ end
16
+
17
+ def max_driver_version(version)
18
+ required_version = version.split('.').map(&:to_i)
19
+ actual_version = driver_version(required_version.length)
20
+ before(:all) do
21
+ if (actual_version <=> required_version) > 0
22
+ skip "Driver version #{version} or lower is required"
23
+ end
24
+ end
25
+ end
26
+
27
+ def driver_version(precision)
28
+ Mongo::VERSION.split('.')[0...precision].map(&:to_i)
29
+ end
30
+
7
31
  def min_rails_version(version)
8
32
  unless version =~ /\A\d+\.\d+\z/
9
33
  raise ArgumentError, "Version can only be major.minor: #{version}"
@@ -6,6 +6,6 @@ module Helpers
6
6
  Object.class_eval do
7
7
  remove_const(name)
8
8
  end
9
- load "spec/app/models/#{name.to_s.underscore}.rb"
9
+ load "spec/support/models/#{name.to_s.underscore}.rb"
10
10
  end
11
11
  end
@@ -18,4 +18,4 @@ class Actor
18
18
  end
19
19
  end
20
20
 
21
- require "app/models/actress"
21
+ require "support/models/actress"
@@ -78,9 +78,5 @@ class Address
78
78
  def streets
79
79
  all.map(&:street)
80
80
  end
81
-
82
- def city_and_state(city:, state:)
83
- where(city: city, state: state)
84
- end
85
81
  end
86
82
  end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+ # encoding: utf-8
3
+
4
+ class Armrest
5
+ include Mongoid::Document
6
+
7
+ embedded_in :seat
8
+
9
+ field :side
10
+ end
@@ -6,4 +6,4 @@ class Browser < Canvas
6
6
  def render; end
7
7
  end
8
8
 
9
- require "app/models/firefox"
9
+ require "support/models/firefox"
@@ -25,4 +25,4 @@ class Canvas
25
25
  end
26
26
  end
27
27
 
28
- require "app/models/browser"
28
+ require "support/models/browser"
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  # encoding: utf-8
3
3
 
4
- require 'app/models/coding/pull_request'
4
+ require 'support/models/coding/pull_request'
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+ # encoding: utf-8
3
+
4
+ class Crate
5
+ include Mongoid::Document
6
+
7
+ embedded_in :vehicle
8
+ embeds_many :toys
9
+
10
+ accepts_nested_attributes_for :toys
11
+
12
+ field :volume
13
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+ # encoding: utf-8
3
+
4
+ class Deed
5
+ include Mongoid::Document
6
+ field :title, type: String
7
+ embedded_in :owner
8
+ end
@@ -6,13 +6,7 @@ class Dictionary
6
6
  field :name, type: String
7
7
  field :publisher, type: String
8
8
  field :year, type: Integer
9
-
10
- # This field must be a Time
11
9
  field :published, type: Time
12
-
13
- # This field must be a Date
14
- field :submitted_on, type: Date
15
-
16
10
  field :description, type: String, localize: true
17
11
  field :l, type: String, as: :language
18
12
  has_many :words, validate: false
@@ -7,4 +7,4 @@ class Driver
7
7
  accepts_nested_attributes_for :vehicle
8
8
  end
9
9
 
10
- require "app/models/learner"
10
+ require "support/models/learner"
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+ # encoding: utf-8
3
+
4
+ class Guitar < Instrument
5
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+ # encoding: utf-8
3
+
4
+ class Idnodef
5
+ include Mongoid::Document
6
+
7
+ field :_id, type: String, overwrite: true
8
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+ # encoding: utf-8
3
+
4
+ class Instrument
5
+ include Mongoid::Document
6
+ end
7
+
8
+ require "support/models/guitar"
9
+ require "support/models/piano"
@@ -8,4 +8,4 @@ class Item
8
8
  field :user_login, type: String
9
9
  end
10
10
 
11
- require "app/models/sub_item"
11
+ require "support/models/sub_item"
@@ -13,14 +13,4 @@ class Mop
13
13
  # transformed differently based on the type of field being queried.
14
14
  field :int_field, type: Integer
15
15
  field :array_field, type: Array
16
- field :date_field, type: Date
17
- field :time_field, type: Time
18
- field :datetime_field, type: DateTime
19
- field :big_decimal_field, type: BigDecimal
20
- field :decimal128_field, type: BSON::Decimal128
21
- field :symbol_field, type: Symbol
22
- field :bson_symbol_field, type: BSON::Symbol::Raw
23
- field :regexp_field, type: Regexp
24
- field :bson_regexp_field, type: BSON::Regexp::Raw
25
16
  end
26
-
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+ # encoding: utf-8
3
+
4
+ class Order
5
+ include Mongoid::Document
6
+ field :status, type: Mongoid::StringifiedSymbol
7
+
8
+ # This is a dummy field that verifies the Mongoid::Fields::StringifiedSymbol
9
+ # alias.
10
+ field :saved_status, type: StringifiedSymbol
11
+ end
@@ -6,4 +6,6 @@ class Owner
6
6
  field :name
7
7
  has_many :events
8
8
  embeds_many :birthdays
9
+ embeds_many :deeds
10
+ embeds_one :scribe
9
11
  end
@@ -7,4 +7,4 @@ class Palette
7
7
  embeds_many :tools
8
8
  end
9
9
 
10
- require "app/models/big_palette"
10
+ require "support/models/big_palette"
@@ -136,10 +136,6 @@ class Person
136
136
  scope :without_ssn, ->{ without(:ssn) }
137
137
  scope :search, ->(query){ any_of({ title: query }) }
138
138
 
139
- def self.older_than(age:)
140
- where(:age.gt => age)
141
- end
142
-
143
139
  def score_with_rescoring=(score)
144
140
  @rescored = score.to_i + 20
145
141
  self.score_without_rescoring = score
@@ -210,15 +206,10 @@ class Person
210
206
  self.map_with_default["key"] = value
211
207
  end
212
208
 
213
- def set_personal_data(ssn:, age:)
214
- self.ssn = ssn
215
- self.age = age
216
- end
217
-
218
209
  reset_callbacks(:validate)
219
210
  reset_callbacks(:create)
220
211
  reset_callbacks(:save)
221
212
  reset_callbacks(:destroy)
222
213
  end
223
214
 
224
- require "app/models/doctor"
215
+ require "support/models/doctor"
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+ # encoding: utf-8
3
+
4
+ class Piano < Instrument
5
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+ # encoding: utf-8
3
+
4
+ class Profile
5
+ include Mongoid::Document
6
+ field :name, type: String
7
+
8
+ embeds_one :profile_image
9
+
10
+ shard_key :name
11
+ end
12
+
13
+ class ProfileImage
14
+ include Mongoid::Document
15
+ field :url, type: String
16
+
17
+ embedded_in :profile
18
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+ # encoding: utf-8
3
+
4
+ require 'support/models/publication/encyclopedia'
5
+ require 'support/models/publication/review'
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
  # encoding: utf-8
3
3
 
4
- class Profile
4
+ class Scribe
5
5
  include Mongoid::Document
6
6
  field :name, type: String
7
- shard_key :name
7
+ embedded_in :owner
8
8
  end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+ # encoding: utf-8
3
+
4
+ class Seat
5
+ include Mongoid::Document
6
+
7
+ embedded_in :vehicle
8
+
9
+ field :rating, type: Integer
10
+
11
+ embeds_many :armrests
12
+
13
+ before_create :set_rating
14
+ before_update :update_rating
15
+
16
+ private
17
+
18
+ def set_rating
19
+ self.rating ||= 100
20
+ end
21
+
22
+ def update_rating
23
+ self.rating += 1
24
+ end
25
+ end
@@ -11,5 +11,5 @@ class Shape
11
11
  def render; end
12
12
  end
13
13
 
14
- require "app/models/circle"
15
- require "app/models/square"
14
+ require "support/models/circle"
15
+ require "support/models/square"
@@ -0,0 +1,7 @@
1
+ class SystemRole
2
+ include Mongoid::Document
3
+
4
+ # NOTE: this model is for test purposes only. It is not recommended that you
5
+ # store Mongoid documents in system collections.
6
+ store_in collection: "system.roles", database: "admin"
7
+ end
@@ -7,5 +7,5 @@ class Tool
7
7
  accepts_nested_attributes_for :palette
8
8
  end
9
9
 
10
- require "app/models/eraser"
11
- require "app/models/pencil"
10
+ require "support/models/eraser"
11
+ require "support/models/pencil"
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+ # encoding: utf-8
3
+
4
+ class Toy
5
+ include Mongoid::Document
6
+
7
+ embedded_in :crate
8
+
9
+ field :name
10
+ end
@@ -3,4 +3,6 @@
3
3
 
4
4
  class Truck < Vehicle
5
5
  embeds_one :bed
6
+
7
+ field :capacity, type: Integer
6
8
  end