solidus_core 3.0.0 → 4.5.1

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 (444) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -2
  3. data/Rakefile +7 -2
  4. data/app/assets/images/logo/solidus.svg +18 -1
  5. data/app/assets/images/logo/solidus_logo.png +0 -0
  6. data/app/controllers/spree/base_controller.rb +1 -3
  7. data/app/helpers/spree/base_helper.rb +3 -3
  8. data/app/helpers/spree/core/controller_helpers/auth.rb +66 -0
  9. data/app/helpers/spree/core/controller_helpers/common.rb +82 -0
  10. data/app/helpers/spree/core/controller_helpers/order.rb +86 -0
  11. data/app/helpers/spree/core/controller_helpers/payment_parameters.rb +165 -0
  12. data/{lib/spree/core/controller_helpers/current_host.rb → app/helpers/spree/core/controller_helpers/pricing.rb} +6 -4
  13. data/app/helpers/spree/core/controller_helpers/search.rb +16 -0
  14. data/app/helpers/spree/core/controller_helpers/store.rb +19 -0
  15. data/app/helpers/spree/core/controller_helpers/strong_parameters.rb +74 -0
  16. data/app/helpers/spree/products_helper.rb +2 -2
  17. data/app/mailers/spree/base_mailer.rb +1 -1
  18. data/app/mailers/spree/carton_mailer.rb +1 -1
  19. data/app/mailers/spree/order_mailer.rb +3 -3
  20. data/app/mailers/spree/reimbursement_mailer.rb +1 -1
  21. data/app/models/concerns/spree/active_storage_adapter/attachment.rb +30 -11
  22. data/app/models/concerns/spree/active_storage_adapter/normalization.rb +1 -1
  23. data/app/models/concerns/spree/active_storage_adapter.rb +1 -18
  24. data/app/models/concerns/spree/default_price.rb +30 -10
  25. data/app/models/concerns/spree/display_money.rb +1 -1
  26. data/app/models/concerns/spree/metadata.rb +64 -0
  27. data/app/models/concerns/spree/named_type.rb +2 -0
  28. data/app/models/concerns/spree/ordered_property_value_list.rb +2 -2
  29. data/app/models/concerns/spree/ransackable_attributes.rb +9 -5
  30. data/app/models/concerns/spree/user_address_book.rb +19 -10
  31. data/app/models/concerns/spree/user_methods.rb +40 -6
  32. data/app/models/spree/address.rb +11 -9
  33. data/app/models/spree/adjustment.rb +15 -76
  34. data/app/models/spree/adjustment_reason.rb +2 -0
  35. data/app/models/spree/calculator/flat_fee.rb +21 -0
  36. data/app/models/spree/calculator/returns/default_refund_amount.rb +1 -1
  37. data/app/models/spree/carton.rb +3 -3
  38. data/app/models/spree/core/state_machines/inventory_unit.rb +42 -0
  39. data/app/models/spree/core/state_machines/order/class_methods.rb +217 -0
  40. data/app/models/spree/core/state_machines/order.rb +42 -0
  41. data/app/models/spree/core/state_machines/payment.rb +61 -0
  42. data/app/models/spree/core/state_machines/reimbursement.rb +33 -0
  43. data/app/models/spree/core/state_machines/return_authorization.rb +32 -0
  44. data/app/models/spree/core/state_machines/return_item/acceptance_status.rb +51 -0
  45. data/app/models/spree/core/state_machines/return_item/reception_status.rb +42 -0
  46. data/app/models/spree/core/state_machines/shipment.rb +58 -0
  47. data/app/models/spree/country.rb +1 -1
  48. data/app/models/spree/credit_card.rb +13 -10
  49. data/app/models/spree/customer_return.rb +6 -3
  50. data/app/models/spree/deprecated_configurable_class.rb +40 -0
  51. data/app/models/spree/fulfilment_changer.rb +56 -29
  52. data/app/models/spree/image/active_storage_attachment.rb +2 -7
  53. data/app/models/spree/image/paperclip_attachment.rb +2 -2
  54. data/app/models/spree/inventory_unit.rb +2 -2
  55. data/app/models/spree/item_total.rb +28 -0
  56. data/app/models/spree/legacy_user.rb +1 -0
  57. data/app/models/spree/line_item.rb +26 -8
  58. data/app/models/spree/log_entry.rb +98 -1
  59. data/app/models/spree/money.rb +120 -0
  60. data/app/models/spree/null_promotion_adjuster.rb +13 -0
  61. data/app/models/spree/null_promotion_advertiser.rb +9 -0
  62. data/app/models/spree/null_promotion_finder.rb +9 -0
  63. data/app/models/spree/null_promotion_handler.rb +44 -0
  64. data/app/models/spree/option_type.rb +1 -1
  65. data/app/models/spree/option_value.rb +4 -3
  66. data/app/models/spree/order/number_generator.rb +7 -1
  67. data/app/models/spree/order.rb +143 -96
  68. data/app/models/spree/order_cancellations.rb +8 -8
  69. data/app/models/spree/order_inventory.rb +7 -5
  70. data/app/models/spree/order_merger.rb +5 -7
  71. data/app/models/spree/order_mutex.rb +2 -2
  72. data/app/models/spree/order_shipping.rb +15 -19
  73. data/app/models/spree/order_taxation.rb +7 -4
  74. data/app/models/spree/order_update_attributes.rb +3 -1
  75. data/app/models/spree/order_updater.rb +25 -63
  76. data/app/models/spree/payment/processing.rb +60 -57
  77. data/app/models/spree/payment.rb +14 -27
  78. data/app/models/spree/payment_create.rb +1 -1
  79. data/app/models/spree/payment_method/bogus_credit_card.rb +18 -14
  80. data/app/models/spree/payment_method/credit_card.rb +0 -4
  81. data/app/models/spree/payment_method/simple_bogus_credit_card.rb +18 -4
  82. data/app/models/spree/payment_method/store_credit.rb +1 -1
  83. data/app/models/spree/payment_method.rb +29 -10
  84. data/app/models/spree/payment_source.rb +5 -1
  85. data/app/models/spree/permission_set.rb +11 -0
  86. data/app/models/spree/permission_sets/base.rb +45 -0
  87. data/app/models/spree/permission_sets/configuration_display.rb +53 -0
  88. data/app/models/spree/permission_sets/configuration_management.rb +52 -0
  89. data/app/models/spree/permission_sets/dashboard_display.rb +28 -0
  90. data/app/models/spree/permission_sets/default_customer.rb +83 -0
  91. data/app/models/spree/permission_sets/order_display.rb +50 -0
  92. data/app/models/spree/permission_sets/order_management.rb +50 -0
  93. data/app/models/spree/permission_sets/product_display.rb +43 -0
  94. data/app/models/spree/permission_sets/product_management.rb +47 -0
  95. data/app/models/spree/permission_sets/restricted_stock_display.rb +33 -0
  96. data/app/models/spree/permission_sets/restricted_stock_management.rb +33 -0
  97. data/app/models/spree/permission_sets/stock_display.rb +26 -0
  98. data/app/models/spree/permission_sets/stock_management.rb +26 -0
  99. data/app/models/spree/permission_sets/super_user.rb +26 -0
  100. data/app/models/spree/permission_sets/user_display.rb +27 -0
  101. data/app/models/spree/permission_sets/user_management.rb +44 -0
  102. data/app/models/spree/preference.rb +1 -1
  103. data/app/models/spree/price.rb +3 -3
  104. data/app/models/spree/product/scopes.rb +23 -10
  105. data/app/models/spree/product.rb +30 -23
  106. data/app/models/spree/product_property.rb +1 -1
  107. data/app/models/spree/property.rb +1 -1
  108. data/app/models/spree/refund.rb +13 -3
  109. data/app/models/spree/refund_reason.rb +6 -1
  110. data/app/models/spree/reimbursement.rb +6 -6
  111. data/app/models/spree/reimbursement_performer.rb +3 -3
  112. data/app/models/spree/reimbursement_tax_calculator.rb +3 -3
  113. data/app/models/spree/reimbursement_type/credit.rb +1 -1
  114. data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +6 -6
  115. data/app/models/spree/reimbursement_type/store_credit.rb +1 -1
  116. data/app/models/spree/reimbursement_type.rb +6 -1
  117. data/app/models/spree/return_authorization.rb +3 -1
  118. data/app/models/spree/return_item.rb +13 -15
  119. data/app/models/spree/return_reason.rb +6 -1
  120. data/app/models/spree/role.rb +3 -1
  121. data/app/models/spree/role_permission.rb +8 -0
  122. data/app/models/spree/shipment.rb +12 -10
  123. data/app/models/spree/shipping_category.rb +2 -0
  124. data/app/models/spree/shipping_rate.rb +2 -3
  125. data/app/models/spree/shipping_rate_tax.rb +1 -1
  126. data/app/models/spree/{order_contents.rb → simple_order_contents.rb} +10 -13
  127. data/app/models/spree/state.rb +1 -1
  128. data/app/models/spree/stock/allocator/on_hand_first.rb +2 -2
  129. data/app/models/spree/stock/availability.rb +11 -3
  130. data/app/models/spree/stock/estimator.rb +1 -1
  131. data/app/models/spree/stock/inventory_unit_builder.rb +1 -1
  132. data/app/models/spree/stock/package.rb +2 -2
  133. data/app/models/spree/stock/quantifier.rb +12 -8
  134. data/app/models/spree/stock/simple_coordinator.rb +38 -28
  135. data/app/models/spree/stock/splitter/shipping_category.rb +1 -1
  136. data/app/models/spree/stock_item.rb +2 -1
  137. data/app/models/spree/stock_location.rb +7 -7
  138. data/app/models/spree/stock_movement.rb +2 -2
  139. data/app/models/spree/store.rb +3 -1
  140. data/app/models/spree/store_credit.rb +31 -16
  141. data/app/models/spree/store_credit_event.rb +4 -3
  142. data/app/models/spree/store_credit_prioritizer.rb +17 -0
  143. data/app/models/spree/store_credit_reason.rb +6 -1
  144. data/app/models/spree/store_selector/by_server_name.rb +1 -1
  145. data/app/models/spree/tax/item_tax.rb +3 -2
  146. data/app/models/spree/tax/order_tax.rb +3 -1
  147. data/app/models/spree/tax/tax_helpers.rb +14 -3
  148. data/app/models/spree/tax/tax_location.rb +4 -7
  149. data/app/models/spree/tax_calculator/default.rb +32 -1
  150. data/app/models/spree/tax_calculator/shipping_rate.rb +2 -2
  151. data/app/models/spree/tax_category.rb +3 -1
  152. data/app/models/spree/tax_rate.rb +14 -1
  153. data/app/models/spree/taxon/active_storage_attachment.rb +2 -2
  154. data/app/models/spree/taxon/paperclip_attachment.rb +4 -4
  155. data/app/models/spree/taxon.rb +25 -3
  156. data/app/models/spree/taxon_brand_selector.rb +22 -0
  157. data/app/models/spree/taxonomy.rb +4 -3
  158. data/app/models/spree/unauthorized_redirect_handler.rb +24 -0
  159. data/app/models/spree/unit_cancel.rb +1 -2
  160. data/app/models/spree/user_address.rb +9 -3
  161. data/app/models/spree/user_last_url_storer/rules/authentication_rule.rb +1 -1
  162. data/app/models/spree/variant/price_selector.rb +25 -8
  163. data/app/models/spree/variant/scopes.rb +4 -0
  164. data/app/models/spree/variant/vat_price_generator.rb +1 -1
  165. data/app/models/spree/variant.rb +64 -37
  166. data/app/models/spree/wallet/add_payment_sources_to_wallet.rb +4 -4
  167. data/app/models/spree/wallet.rb +2 -2
  168. data/app/models/spree/zone.rb +1 -1
  169. data/app/subscribers/spree/order_mailer_subscriber.rb +35 -0
  170. data/app/views/layouts/spree/base_mailer.html.erb +2 -2
  171. data/app/views/spree/order_mailer/cancel_email.html.erb +1 -1
  172. data/app/views/spree/order_mailer/cancel_email.text.erb +1 -1
  173. data/app/views/spree/order_mailer/confirm_email.html.erb +5 -5
  174. data/app/views/spree/order_mailer/confirm_email.text.erb +5 -5
  175. data/app/views/spree/order_mailer/inventory_cancellation_email.html.erb +0 -1
  176. data/config/i18n-tasks.yml +134 -0
  177. data/config/locales/en.yml +439 -338
  178. data/db/default/spree/permission_sets.rb +10 -0
  179. data/db/default/spree/return_reasons.rb +3 -1
  180. data/db/default/spree/states.rb +2 -2
  181. data/db/migrate/20160101010000_solidus_one_four.rb +0 -127
  182. data/db/migrate/20180710170104_create_spree_store_credit_reasons_table.rb +2 -2
  183. data/db/migrate/20201127212108_add_type_before_removal_to_spree_payment_methods.rb +7 -0
  184. data/db/migrate/20210312061050_change_column_null_on_prices.rb +7 -0
  185. data/db/migrate/20210815004823_add_unique_index_to_option_values_variants.rb +16 -0
  186. data/db/migrate/20220419170826_remove_archived_user_addresses.rb +12 -0
  187. data/db/migrate/20220805202442_add_level_to_spree_tax_rates.rb +5 -0
  188. data/db/migrate/20221123152807_add_shipping_category_to_spree_variants.rb +5 -0
  189. data/db/migrate/20230321161854_change_column_null_option_values_option_type_id.rb +5 -0
  190. data/db/migrate/20230425103509_remove_taxon_position.rb +5 -0
  191. data/db/migrate/20230427095534_drop_deprecated_address_id_from_shipments.rb +11 -0
  192. data/db/migrate/20240821173254_create_spree_permission_sets_in_core.rb +9 -0
  193. data/db/migrate/20240821173341_create_spree_roles_permissions_in_core.rb +9 -0
  194. data/db/migrate/20240821173641_add_description_to_spree_roles.rb +5 -0
  195. data/db/migrate/20240904152041_add_privilege_and_category_to_spree_permission_sets.rb +6 -0
  196. data/db/migrate/20250129061658_add_metadata_to_spree_resources.rb +28 -0
  197. data/db/migrate/20250201172950_add_gtin_and_condition_to_spree_variant.rb +6 -0
  198. data/db/migrate/20250207104016_add_primary_taxon_to_products.rb +7 -0
  199. data/db/migrate/20250221152004_add_metadata_to_users.rb +13 -0
  200. data/db/seeds.rb +5 -1
  201. data/lib/generators/solidus/install/app_templates/authentication/custom.rb +16 -0
  202. data/lib/generators/solidus/install/app_templates/authentication/devise.rb +16 -0
  203. data/lib/generators/solidus/install/app_templates/authentication/existing.rb +10 -0
  204. data/lib/generators/solidus/install/app_templates/authentication/none.rb +1 -0
  205. data/lib/generators/solidus/install/app_templates/frontend/none.rb +1 -0
  206. data/lib/generators/solidus/install/app_templates/frontend/starter.rb +1 -0
  207. data/lib/generators/solidus/install/app_templates/payment_method/braintree.rb +5 -0
  208. data/lib/generators/solidus/install/app_templates/payment_method/none.rb +1 -0
  209. data/lib/generators/solidus/install/app_templates/payment_method/paypal.rb +5 -0
  210. data/lib/generators/solidus/install/app_templates/payment_method/stripe.rb +5 -0
  211. data/lib/generators/solidus/install/install_generator.rb +210 -156
  212. data/lib/generators/solidus/install/templates/config/initializers/spree.rb.tt +27 -33
  213. data/lib/generators/solidus/install/templates/vendor/assets/javascripts/spree/backend/all.js +2 -2
  214. data/lib/generators/solidus/update/templates/config/initializers/new_solidus_defaults.rb.tt +30 -0
  215. data/lib/generators/solidus/update/update_generator.rb +124 -0
  216. data/lib/generators/spree/custom_user/custom_user_generator.rb +6 -4
  217. data/lib/generators/spree/custom_user/templates/authentication_helpers.rb.tt +2 -6
  218. data/lib/generators/spree/custom_user/templates/migration.rb.tt +7 -3
  219. data/lib/generators/spree/dummy/dummy_generator.rb +12 -9
  220. data/lib/generators/spree/dummy/templates/rails/application.rb.tt +1 -2
  221. data/lib/generators/spree/dummy/templates/rails/database.yml +48 -63
  222. data/lib/generators/spree/dummy/templates/rails/manifest.js +3 -0
  223. data/lib/generators/spree/dummy/templates/rails/test.rb +7 -2
  224. data/lib/spree/app_configuration.rb +220 -71
  225. data/lib/spree/bus.rb +11 -0
  226. data/lib/spree/core/class_constantizer.rb +2 -2
  227. data/lib/spree/core/controller_helpers/auth.rb +5 -69
  228. data/lib/spree/core/controller_helpers/common.rb +5 -80
  229. data/lib/spree/core/controller_helpers/order.rb +5 -86
  230. data/lib/spree/core/controller_helpers/payment_parameters.rb +5 -165
  231. data/lib/spree/core/controller_helpers/pricing.rb +5 -17
  232. data/lib/spree/core/controller_helpers/search.rb +5 -14
  233. data/lib/spree/core/controller_helpers/store.rb +5 -17
  234. data/lib/spree/core/controller_helpers/strong_parameters.rb +5 -71
  235. data/lib/spree/core/engine.rb +49 -16
  236. data/lib/spree/core/environment/calculators.rb +35 -3
  237. data/lib/spree/core/environment/promotions.rb +25 -4
  238. data/lib/spree/core/environment_extension.rb +16 -2
  239. data/lib/spree/core/importer/order.rb +6 -6
  240. data/lib/spree/core/importer/product.rb +3 -3
  241. data/lib/spree/core/nested_class_set.rb +28 -0
  242. data/lib/spree/core/null_promotion_configuration.rb +84 -0
  243. data/lib/spree/core/product_duplicator.rb +1 -1
  244. data/lib/spree/core/product_filters.rb +2 -2
  245. data/lib/spree/core/search/base.rb +18 -9
  246. data/lib/spree/core/search/variant.rb +2 -2
  247. data/lib/spree/core/state_machines/inventory_unit.rb +5 -40
  248. data/lib/spree/core/state_machines/order.rb +5 -247
  249. data/lib/spree/core/state_machines/payment.rb +5 -59
  250. data/lib/spree/core/state_machines/reimbursement.rb +5 -31
  251. data/lib/spree/core/state_machines/return_authorization.rb +5 -30
  252. data/lib/spree/core/state_machines/return_item/acceptance_status.rb +5 -49
  253. data/lib/spree/core/state_machines/return_item/reception_status.rb +5 -40
  254. data/lib/spree/core/state_machines/shipment.rb +5 -56
  255. data/lib/spree/core/state_machines.rb +48 -81
  256. data/lib/spree/core/stock_configuration.rb +18 -0
  257. data/lib/spree/core/validators/email.rb +2 -4
  258. data/lib/spree/core/version.rb +5 -1
  259. data/lib/spree/core/versioned_value.rb +75 -0
  260. data/lib/spree/core.rb +40 -16
  261. data/lib/spree/deprecated_instance_variable_proxy.rb +57 -0
  262. data/lib/spree/deprecation.rb +3 -51
  263. data/lib/spree/deprecator.rb +9 -0
  264. data/lib/spree/i18n.rb +1 -1
  265. data/lib/spree/mailer_previews/carton_preview.rb +1 -1
  266. data/lib/spree/migration_helpers.rb +3 -3
  267. data/lib/spree/migrations.rb +13 -11
  268. data/lib/spree/money.rb +5 -118
  269. data/lib/spree/permission_sets/base.rb +5 -30
  270. data/lib/spree/permission_sets/configuration_display.rb +5 -23
  271. data/lib/spree/permission_sets/configuration_management.rb +5 -23
  272. data/lib/spree/permission_sets/dashboard_display.rb +5 -9
  273. data/lib/spree/permission_sets/default_customer.rb +5 -35
  274. data/lib/spree/permission_sets/order_display.rb +5 -19
  275. data/lib/spree/permission_sets/order_management.rb +5 -20
  276. data/lib/spree/permission_sets/product_display.rb +5 -17
  277. data/lib/spree/permission_sets/product_management.rb +5 -19
  278. data/lib/spree/permission_sets/restricted_stock_display.rb +5 -16
  279. data/lib/spree/permission_sets/restricted_stock_management.rb +5 -16
  280. data/lib/spree/permission_sets/stock_display.rb +5 -10
  281. data/lib/spree/permission_sets/stock_management.rb +5 -10
  282. data/lib/spree/permission_sets/super_user.rb +5 -9
  283. data/lib/spree/permission_sets/user_display.rb +5 -11
  284. data/lib/spree/permission_sets/user_management.rb +5 -23
  285. data/lib/spree/permission_sets.rb +5 -18
  286. data/lib/spree/permitted_attributes.rb +35 -14
  287. data/lib/spree/preferences/configuration.rb +88 -0
  288. data/lib/spree/preferences/persistable.rb +7 -1
  289. data/lib/spree/preferences/preferable.rb +13 -0
  290. data/lib/spree/preferences/preferable_class_methods.rb +12 -4
  291. data/lib/spree/preferences/preference_differentiator.rb +29 -0
  292. data/lib/spree/preferences/static_model_preferences.rb +25 -10
  293. data/lib/spree/preferences/store.rb +2 -2
  294. data/lib/spree/testing_support/blacklist_urls.rb +1 -1
  295. data/lib/spree/testing_support/bus_helpers.rb +101 -0
  296. data/lib/spree/testing_support/capybara_ext.rb +11 -1
  297. data/lib/spree/testing_support/common_rake.rb +76 -23
  298. data/lib/spree/testing_support/dummy_ability.rb +7 -0
  299. data/lib/spree/testing_support/dummy_app/assets/javascripts/spree/backend/all.js +1 -1
  300. data/lib/spree/testing_support/dummy_app/assets/stylesheets/solidus_admin/tailwind.css +1 -0
  301. data/lib/spree/testing_support/dummy_app/database.yml +39 -28
  302. data/lib/spree/testing_support/dummy_app/migrations.rb +8 -15
  303. data/lib/spree/testing_support/dummy_app/rake_tasks.rb +3 -10
  304. data/lib/spree/testing_support/dummy_app.rb +71 -42
  305. data/lib/spree/testing_support/extension_rake.rb +2 -2
  306. data/lib/spree/testing_support/factories/address_factory.rb +9 -13
  307. data/lib/spree/testing_support/factories/adjustment_factory.rb +1 -13
  308. data/lib/spree/testing_support/factories/adjustment_reason_factory.rb +0 -5
  309. data/lib/spree/testing_support/factories/calculator_factory.rb +4 -10
  310. data/lib/spree/testing_support/factories/carton_factory.rb +2 -10
  311. data/lib/spree/testing_support/factories/country_factory.rb +1 -7
  312. data/lib/spree/testing_support/factories/credit_card_factory.rb +0 -5
  313. data/lib/spree/testing_support/factories/customer_return_factory.rb +2 -11
  314. data/lib/spree/testing_support/factories/image_factory.rb +0 -5
  315. data/lib/spree/testing_support/factories/inventory_unit_factory.rb +4 -14
  316. data/lib/spree/testing_support/factories/line_item_factory.rb +0 -8
  317. data/lib/spree/testing_support/factories/option_type_factory.rb +0 -8
  318. data/lib/spree/testing_support/factories/option_value_factory.rb +0 -5
  319. data/lib/spree/testing_support/factories/order_factory.rb +19 -38
  320. data/lib/spree/testing_support/factories/payment_factory.rb +0 -10
  321. data/lib/spree/testing_support/factories/payment_method_factory.rb +0 -5
  322. data/lib/spree/testing_support/factories/price_factory.rb +0 -7
  323. data/lib/spree/testing_support/factories/product_factory.rb +5 -13
  324. data/lib/spree/testing_support/factories/product_option_type_factory.rb +0 -8
  325. data/lib/spree/testing_support/factories/product_property_factory.rb +0 -8
  326. data/lib/spree/testing_support/factories/property_factory.rb +0 -5
  327. data/lib/spree/testing_support/factories/refund_factory.rb +0 -8
  328. data/lib/spree/testing_support/factories/refund_reason_factory.rb +0 -5
  329. data/lib/spree/testing_support/factories/reimbursement_factory.rb +0 -7
  330. data/lib/spree/testing_support/factories/reimbursement_type_factory.rb +0 -5
  331. data/lib/spree/testing_support/factories/return_authorization_factory.rb +0 -9
  332. data/lib/spree/testing_support/factories/return_item_factory.rb +0 -9
  333. data/lib/spree/testing_support/factories/return_reason_factory.rb +0 -5
  334. data/lib/spree/testing_support/factories/role_factory.rb +0 -5
  335. data/lib/spree/testing_support/factories/shipment_factory.rb +1 -11
  336. data/lib/spree/testing_support/factories/shipping_category_factory.rb +0 -5
  337. data/lib/spree/testing_support/factories/shipping_method_factory.rb +0 -9
  338. data/lib/spree/testing_support/factories/shipping_rate_factory.rb +0 -8
  339. data/lib/spree/testing_support/factories/state_factory.rb +8 -10
  340. data/lib/spree/testing_support/factories/stock_item_factory.rb +5 -9
  341. data/lib/spree/testing_support/factories/stock_location_factory.rb +0 -9
  342. data/lib/spree/testing_support/factories/stock_movement_factory.rb +0 -7
  343. data/lib/spree/testing_support/factories/stock_package_factory.rb +1 -9
  344. data/lib/spree/testing_support/factories/store_credit_category_factory.rb +0 -5
  345. data/lib/spree/testing_support/factories/store_credit_event_factory.rb +0 -8
  346. data/lib/spree/testing_support/factories/store_credit_factory.rb +4 -13
  347. data/lib/spree/testing_support/factories/store_credit_reason_factory.rb +0 -5
  348. data/lib/spree/testing_support/factories/store_credit_type_factory.rb +0 -5
  349. data/lib/spree/testing_support/factories/store_factory.rb +0 -5
  350. data/lib/spree/testing_support/factories/tax_category_factory.rb +0 -8
  351. data/lib/spree/testing_support/factories/tax_rate_factory.rb +0 -9
  352. data/lib/spree/testing_support/factories/taxon_factory.rb +5 -10
  353. data/lib/spree/testing_support/factories/taxonomy_factory.rb +3 -6
  354. data/lib/spree/testing_support/factories/user_factory.rb +6 -9
  355. data/lib/spree/testing_support/factories/variant_factory.rb +0 -10
  356. data/lib/spree/testing_support/factories/variant_property_rule_condition_factory.rb +0 -8
  357. data/lib/spree/testing_support/factories/variant_property_rule_factory.rb +0 -9
  358. data/lib/spree/testing_support/factories/variant_property_rule_value_factory.rb +0 -8
  359. data/lib/spree/testing_support/factories/zone_factory.rb +1 -9
  360. data/lib/spree/testing_support/factory_bot.rb +6 -29
  361. data/lib/spree/testing_support/flaky.rb +22 -0
  362. data/lib/spree/testing_support/order_walkthrough.rb +7 -6
  363. data/lib/spree/testing_support/sequences.rb +0 -5
  364. data/lib/spree/testing_support/shared_examples/calculator.rb +10 -0
  365. data/lib/spree/testing_support/shared_examples/order_factory.rb +141 -0
  366. data/lib/spree/testing_support/shared_examples/working_factory.rb +15 -0
  367. data/lib/spree/testing_support/silence_deprecations.rb +9 -0
  368. data/lib/spree/user_class_handle.rb +2 -2
  369. data/lib/tasks/colorado_delivery_fee.rake +28 -0
  370. data/lib/tasks/payment_method.rake +29 -0
  371. data/lib/tasks/solidus/delete_prices_with_nil_amount.rake +8 -0
  372. data/solidus_core.gemspec +18 -8
  373. metadata +233 -117
  374. data/app/jobs/spree/promotion_code_batch_job.rb +0 -26
  375. data/app/mailers/spree/promotion_code_batch_mailer.rb +0 -15
  376. data/app/models/spree/calculator/distributed_amount.rb +0 -33
  377. data/app/models/spree/calculator/flat_percent_item_total.rb +0 -23
  378. data/app/models/spree/calculator/flexi_rate.rb +0 -22
  379. data/app/models/spree/calculator/percent_on_line_item.rb +0 -13
  380. data/app/models/spree/calculator/tiered_flat_rate.rb +0 -52
  381. data/app/models/spree/calculator/tiered_percent.rb +0 -62
  382. data/app/models/spree/line_item_action.rb +0 -8
  383. data/app/models/spree/order_promotion.rb +0 -27
  384. data/app/models/spree/promotion/actions/create_adjustment.rb +0 -77
  385. data/app/models/spree/promotion/actions/create_item_adjustments.rb +0 -99
  386. data/app/models/spree/promotion/actions/create_quantity_adjustments.rb +0 -139
  387. data/app/models/spree/promotion/actions/free_shipping.rb +0 -58
  388. data/app/models/spree/promotion/rules/first_order.rb +0 -38
  389. data/app/models/spree/promotion/rules/first_repeat_purchase_since.rb +0 -36
  390. data/app/models/spree/promotion/rules/item_total.rb +0 -53
  391. data/app/models/spree/promotion/rules/nth_order.rb +0 -45
  392. data/app/models/spree/promotion/rules/one_use_per_user.rb +0 -25
  393. data/app/models/spree/promotion/rules/option_value.rb +0 -50
  394. data/app/models/spree/promotion/rules/product.rb +0 -74
  395. data/app/models/spree/promotion/rules/store.rb +0 -22
  396. data/app/models/spree/promotion/rules/taxon.rb +0 -87
  397. data/app/models/spree/promotion/rules/user.rb +0 -30
  398. data/app/models/spree/promotion/rules/user_logged_in.rb +0 -20
  399. data/app/models/spree/promotion/rules/user_role.rb +0 -45
  400. data/app/models/spree/promotion.rb +0 -284
  401. data/app/models/spree/promotion_action.rb +0 -43
  402. data/app/models/spree/promotion_category.rb +0 -8
  403. data/app/models/spree/promotion_chooser.rb +0 -34
  404. data/app/models/spree/promotion_code/batch_builder.rb +0 -64
  405. data/app/models/spree/promotion_code.rb +0 -50
  406. data/app/models/spree/promotion_code_batch.rb +0 -27
  407. data/app/models/spree/promotion_handler/cart.rb +0 -55
  408. data/app/models/spree/promotion_handler/coupon.rb +0 -123
  409. data/app/models/spree/promotion_handler/page.rb +0 -26
  410. data/app/models/spree/promotion_handler/shipping.rb +0 -61
  411. data/app/models/spree/promotion_rule.rb +0 -55
  412. data/app/models/spree/promotion_rule_role.rb +0 -8
  413. data/app/models/spree/promotion_rule_store.rb +0 -10
  414. data/app/models/spree/promotion_rule_taxon.rb +0 -8
  415. data/app/models/spree/promotion_rule_user.rb +0 -10
  416. data/app/models/spree/tax/shipping_rate_taxer.rb +0 -24
  417. data/app/subscribers/spree/mailer_subscriber.rb +0 -25
  418. data/app/views/spree/promotion_code_batch_mailer/promotion_code_batch_errored.text.erb +0 -2
  419. data/app/views/spree/promotion_code_batch_mailer/promotion_code_batch_finished.text.erb +0 -2
  420. data/db/migrate/20161017102621_create_spree_promotion_code_batch.rb +0 -38
  421. data/db/migrate/20180202190713_create_promotion_rule_stores.rb +0 -12
  422. data/db/migrate/20180328172631_add_join_characters_to_promotion_code_batch.rb +0 -11
  423. data/db/migrate/20190106184413_remove_code_from_spree_promotions.rb +0 -42
  424. data/lib/generators/solidus/install/templates/vendor/assets/javascripts/spree/frontend/all.js +0 -10
  425. data/lib/generators/solidus/install/templates/vendor/assets/stylesheets/spree/frontend/all.css +0 -9
  426. data/lib/generators/spree/dummy/templates/rails/script/rails +0 -6
  427. data/lib/solidus/migrations/promotions_with_code_handlers.rb +0 -66
  428. data/lib/spree/event/adapters/active_support_notifications.rb +0 -67
  429. data/lib/spree/event/configuration.rb +0 -25
  430. data/lib/spree/event/subscriber.rb +0 -86
  431. data/lib/spree/event/subscriber_registry.rb +0 -94
  432. data/lib/spree/event.rb +0 -119
  433. data/lib/spree/permission_sets/promotion_display.rb +0 -15
  434. data/lib/spree/permission_sets/promotion_management.rb +0 -15
  435. data/lib/spree/testing_support/dummy_app/assets/javascripts/spree/frontend/all.js +0 -10
  436. data/lib/spree/testing_support/dummy_app/assets/stylesheets/spree/frontend/all.css +0 -9
  437. data/lib/spree/testing_support/dummy_app/views/layouts/application.html.erb +0 -1
  438. data/lib/spree/testing_support/factories/order_promotion_factory.rb +0 -16
  439. data/lib/spree/testing_support/factories/promotion_category_factory.rb +0 -12
  440. data/lib/spree/testing_support/factories/promotion_code_factory.rb +0 -16
  441. data/lib/spree/testing_support/factories/promotion_factory.rb +0 -92
  442. data/lib/spree/testing_support/factories.rb +0 -11
  443. data/lib/spree/testing_support.rb +0 -31
  444. data/lib/tasks/upgrade.rake +0 -15
@@ -1,17 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spree/testing_support/factory_bot'
4
- Spree::TestingSupport::FactoryBot.when_cherry_picked do
5
- Spree::TestingSupport::FactoryBot.deprecate_cherry_picking
6
-
7
- require 'spree/testing_support/factories/address_factory'
8
- require 'spree/testing_support/factories/shipment_factory'
9
- require 'spree/testing_support/factories/store_factory'
10
- require 'spree/testing_support/factories/user_factory'
11
- require 'spree/testing_support/factories/line_item_factory'
12
- require 'spree/testing_support/factories/payment_factory'
13
- end
14
-
15
3
  FactoryBot.define do
16
4
  factory :order, class: 'Spree::Order' do
17
5
  user
@@ -19,7 +7,7 @@ FactoryBot.define do
19
7
  ship_address
20
8
  completed_at { nil }
21
9
  email { user.try(:email) }
22
- store
10
+ association :store, strategy: :create
23
11
 
24
12
  transient do
25
13
  line_items_price { BigDecimal(10) }
@@ -55,35 +43,25 @@ FactoryBot.define do
55
43
  evaluator.stock_location # must evaluate before creating line items
56
44
 
57
45
  evaluator.line_items_attributes.each do |attributes|
58
- attributes = { order: order, price: evaluator.line_items_price }.merge(attributes)
46
+ attributes = { order:, price: evaluator.line_items_price }.merge(attributes).tap do |attrs|
47
+ tax_category = attributes.delete(:tax_category)
48
+ if attrs[:variant] && tax_category
49
+ attrs[:variant].update(tax_category: )
50
+ elsif tax_category
51
+ attrs[:variant] = create(:variant, tax_category: )
52
+ end
53
+ end
54
+
59
55
  create(:line_item, attributes)
60
56
  end
61
57
  order.line_items.reload
62
58
 
63
- create(:shipment, order: order, cost: evaluator.shipment_cost, shipping_method: evaluator.shipping_method, stock_location: evaluator.stock_location)
59
+ create(:shipment, order:, cost: evaluator.shipment_cost, shipping_method: evaluator.shipping_method, stock_location: evaluator.stock_location)
64
60
  order.shipments.reload
65
61
 
66
62
  order.recalculate
67
63
  end
68
64
 
69
- factory :completed_order_with_promotion do
70
- transient do
71
- promotion { nil }
72
- end
73
-
74
- after(:create) do |order, evaluator|
75
- promotion = evaluator.promotion || create(:promotion, code: "test")
76
- promotion_code = promotion.codes.first || create(:promotion_code, promotion: promotion)
77
-
78
- promotion.activate(order: order, promotion_code: promotion_code)
79
- order.order_promotions.create!(promotion: promotion, promotion_code: promotion_code)
80
-
81
- # Complete the order after the promotion has been activated
82
- order.update_column(:completed_at, Time.current)
83
- order.update_column(:state, "complete")
84
- end
85
- end
86
-
87
65
  factory :order_ready_to_complete do
88
66
  state { 'confirm' }
89
67
  payment_state { 'checkout' }
@@ -95,7 +73,7 @@ FactoryBot.define do
95
73
  after(:create) do |order, evaluator|
96
74
  create(evaluator.payment_type, {
97
75
  amount: order.total,
98
- order: order,
76
+ order:,
99
77
  state: order.payment_state
100
78
  })
101
79
 
@@ -104,18 +82,21 @@ FactoryBot.define do
104
82
  end
105
83
 
106
84
  factory :completed_order_with_totals do
85
+ transient do
86
+ completed_at { Time.current }
87
+ end
107
88
  state { 'complete' }
108
89
 
109
- after(:create) do |order|
90
+ after(:create) do |order, evaluator|
110
91
  order.shipments.each do |shipment|
111
92
  shipment.inventory_units.update_all state: 'on_hand', pending: false
112
93
  end
113
- order.update_column(:completed_at, Time.current)
94
+ order.update_column(:completed_at, evaluator.completed_at)
114
95
  end
115
96
 
116
97
  factory :completed_order_with_pending_payment do
117
98
  after(:create) do |order|
118
- create(:payment, amount: order.total, order: order, state: 'pending')
99
+ create(:payment, amount: order.total, order:, state: 'pending')
119
100
  end
120
101
  end
121
102
 
@@ -128,7 +109,7 @@ FactoryBot.define do
128
109
  end
129
110
 
130
111
  after(:create) do |order, evaluator|
131
- create(evaluator.payment_type, amount: order.total, order: order, state: 'completed')
112
+ create(evaluator.payment_type, amount: order.total, order:, state: 'completed')
132
113
  order.shipments.each do |shipment|
133
114
  shipment.update_column('state', 'ready')
134
115
  end
@@ -1,15 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spree/testing_support/factory_bot'
4
- Spree::TestingSupport::FactoryBot.when_cherry_picked do
5
- Spree::TestingSupport::FactoryBot.deprecate_cherry_picking
6
-
7
- require 'spree/testing_support/factories/payment_method_factory'
8
- require 'spree/testing_support/factories/credit_card_factory'
9
- require 'spree/testing_support/factories/order_factory'
10
- require 'spree/testing_support/factories/store_credit_factory'
11
- end
12
-
13
3
  FactoryBot.define do
14
4
  factory :payment, aliases: [:credit_card_payment], class: 'Spree::Payment' do
15
5
  association(:payment_method, factory: :credit_card_payment_method)
@@ -1,10 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spree/testing_support/factory_bot'
4
- Spree::TestingSupport::FactoryBot.when_cherry_picked do
5
- Spree::TestingSupport::FactoryBot.deprecate_cherry_picking
6
- end
7
-
8
3
  FactoryBot.define do
9
4
  factory :payment_method, aliases: [:credit_card_payment_method], class: 'Spree::PaymentMethod::BogusCreditCard' do
10
5
  name { 'Credit Card' }
@@ -1,12 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spree/testing_support/factory_bot'
4
- Spree::TestingSupport::FactoryBot.when_cherry_picked do
5
- Spree::TestingSupport::FactoryBot.deprecate_cherry_picking
6
-
7
- require 'spree/testing_support/factories/variant_factory'
8
- end
9
-
10
3
  FactoryBot.define do
11
4
  factory :price, class: 'Spree::Price' do
12
5
  variant
@@ -1,16 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spree/testing_support/factory_bot'
4
- Spree::TestingSupport::FactoryBot.when_cherry_picked do
5
- Spree::TestingSupport::FactoryBot.deprecate_cherry_picking
6
-
7
- require 'spree/testing_support/sequences'
8
- require 'spree/testing_support/factories/shipping_category_factory'
9
- require 'spree/testing_support/factories/stock_location_factory'
10
- require 'spree/testing_support/factories/tax_category_factory'
11
- require 'spree/testing_support/factories/product_option_type_factory'
12
- end
13
-
14
3
  FactoryBot.define do
15
4
  factory :base_product, class: 'Spree::Product' do
16
5
  sequence(:name) { |n| "Product ##{n} - #{Kernel.rand(9999)}" }
@@ -20,7 +9,10 @@ FactoryBot.define do
20
9
  sku { generate(:sku) }
21
10
  available_on { 1.year.ago }
22
11
  deleted_at { nil }
23
- shipping_category { |r| Spree::ShippingCategory.first || r.association(:shipping_category) }
12
+ shipping_category do |r|
13
+ Spree::ShippingCategory.first ||
14
+ r.association(:shipping_category, strategy: :create)
15
+ end
24
16
 
25
17
  # ensure stock item will be created for this products master
26
18
  before(:create) { create(:stock_location) if Spree::StockLocation.count == 0 }
@@ -48,7 +40,7 @@ FactoryBot.define do
48
40
  end
49
41
 
50
42
  factory :product_with_option_types do
51
- after(:create) { |product| create(:product_option_type, product: product) }
43
+ after(:create) { |product| create(:product_option_type, product:) }
52
44
  end
53
45
  end
54
46
  end
@@ -1,13 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spree/testing_support/factory_bot'
4
- Spree::TestingSupport::FactoryBot.when_cherry_picked do
5
- Spree::TestingSupport::FactoryBot.deprecate_cherry_picking
6
-
7
- require 'spree/testing_support/factories/product_factory'
8
- require 'spree/testing_support/factories/option_type_factory'
9
- end
10
-
11
3
  FactoryBot.define do
12
4
  factory :product_option_type, class: 'Spree::ProductOptionType' do
13
5
  product
@@ -1,13 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spree/testing_support/factory_bot'
4
- Spree::TestingSupport::FactoryBot.when_cherry_picked do
5
- Spree::TestingSupport::FactoryBot.deprecate_cherry_picking
6
-
7
- require 'spree/testing_support/factories/product_factory'
8
- require 'spree/testing_support/factories/property_factory'
9
- end
10
-
11
3
  FactoryBot.define do
12
4
  factory :product_property, class: 'Spree::ProductProperty' do
13
5
  product
@@ -1,10 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spree/testing_support/factory_bot'
4
- Spree::TestingSupport::FactoryBot.when_cherry_picked do
5
- Spree::TestingSupport::FactoryBot.deprecate_cherry_picking
6
- end
7
-
8
3
  FactoryBot.define do
9
4
  factory :property, class: 'Spree::Property' do
10
5
  name { 'baseball_cap_color' }
@@ -1,13 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spree/testing_support/factory_bot'
4
- Spree::TestingSupport::FactoryBot.when_cherry_picked do
5
- Spree::TestingSupport::FactoryBot.deprecate_cherry_picking
6
-
7
- require 'spree/testing_support/factories/payment_factory'
8
- require 'spree/testing_support/factories/refund_reason_factory'
9
- end
10
-
11
3
  FactoryBot.define do
12
4
  sequence(:refund_transaction_id) { |n| "fake-refund-transaction-#{n}" }
13
5
 
@@ -1,10 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spree/testing_support/factory_bot'
4
- Spree::TestingSupport::FactoryBot.when_cherry_picked do
5
- Spree::TestingSupport::FactoryBot.deprecate_cherry_picking
6
- end
7
-
8
3
  FactoryBot.define do
9
4
  factory :refund_reason, class: 'Spree::RefundReason' do
10
5
  sequence(:name) { |n| "Refund for return ##{n}" }
@@ -1,12 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spree/testing_support/factory_bot'
4
- Spree::TestingSupport::FactoryBot.when_cherry_picked do
5
- Spree::TestingSupport::FactoryBot.deprecate_cherry_picking
6
-
7
- require 'spree/testing_support/factories/customer_return_factory'
8
- end
9
-
10
3
  FactoryBot.define do
11
4
  factory :reimbursement, class: 'Spree::Reimbursement' do
12
5
  transient do
@@ -1,10 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spree/testing_support/factory_bot'
4
- Spree::TestingSupport::FactoryBot.when_cherry_picked do
5
- Spree::TestingSupport::FactoryBot.deprecate_cherry_picking
6
- end
7
-
8
3
  FactoryBot.define do
9
4
  factory :reimbursement_type, class: 'Spree::ReimbursementType' do
10
5
  sequence(:name) { |n| "Reimbursement Type #{n}" }
@@ -1,14 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spree/testing_support/factory_bot'
4
- Spree::TestingSupport::FactoryBot.when_cherry_picked do
5
- Spree::TestingSupport::FactoryBot.deprecate_cherry_picking
6
-
7
- require 'spree/testing_support/factories/order_factory'
8
- require 'spree/testing_support/factories/stock_location_factory'
9
- require 'spree/testing_support/factories/return_reason_factory'
10
- end
11
-
12
3
  FactoryBot.define do
13
4
  factory :return_authorization, class: 'Spree::ReturnAuthorization' do
14
5
  association(:order, factory: :shipped_order)
@@ -1,14 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spree/testing_support/factory_bot'
4
- Spree::TestingSupport::FactoryBot.when_cherry_picked do
5
- Spree::TestingSupport::FactoryBot.deprecate_cherry_picking
6
-
7
- require 'spree/testing_support/factories/inventory_unit_factory'
8
- require 'spree/testing_support/factories/return_reason_factory'
9
- require 'spree/testing_support/factories/return_authorization_factory'
10
- end
11
-
12
3
  FactoryBot.define do
13
4
  factory :return_item, class: 'Spree::ReturnItem' do
14
5
  association(:inventory_unit, factory: :inventory_unit, state: :shipped)
@@ -1,10 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spree/testing_support/factory_bot'
4
- Spree::TestingSupport::FactoryBot.when_cherry_picked do
5
- Spree::TestingSupport::FactoryBot.deprecate_cherry_picking
6
- end
7
-
8
3
  FactoryBot.define do
9
4
  factory :return_reason, class: 'Spree::ReturnReason' do
10
5
  sequence(:name) { |n| "Defect ##{n}" }
@@ -1,10 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spree/testing_support/factory_bot'
4
- Spree::TestingSupport::FactoryBot.when_cherry_picked do
5
- Spree::TestingSupport::FactoryBot.deprecate_cherry_picking
6
- end
7
-
8
3
  FactoryBot.define do
9
4
  factory :role, class: 'Spree::Role' do
10
5
  sequence(:name) { |n| "Role ##{n}" }
@@ -1,15 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spree/testing_support/factory_bot'
4
- Spree::TestingSupport::FactoryBot.when_cherry_picked do
5
- Spree::TestingSupport::FactoryBot.deprecate_cherry_picking
6
-
7
- require 'spree/testing_support/factories/order_factory'
8
- require 'spree/testing_support/factories/stock_location_factory'
9
- require 'spree/testing_support/factories/shipping_method_factory'
10
- end
11
-
12
-
13
3
  FactoryBot.define do
14
4
  factory :shipment, class: 'Spree::Shipment' do
15
5
  tracking { 'U10000' }
@@ -25,7 +15,7 @@ FactoryBot.define do
25
15
  after(:create) do |shipment, evaluator|
26
16
  shipping_method = evaluator.shipping_method || create(:shipping_method, cost: evaluator.cost)
27
17
  shipment.shipping_rates.create!(
28
- shipping_method: shipping_method,
18
+ shipping_method:,
29
19
  cost: evaluator.cost,
30
20
  selected: true
31
21
  )
@@ -1,10 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spree/testing_support/factory_bot'
4
- Spree::TestingSupport::FactoryBot.when_cherry_picked do
5
- Spree::TestingSupport::FactoryBot.deprecate_cherry_picking
6
- end
7
-
8
3
  FactoryBot.define do
9
4
  factory :shipping_category, class: 'Spree::ShippingCategory' do
10
5
  sequence(:name) { |n| "ShippingCategory ##{n}" }
@@ -1,14 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spree/testing_support/factory_bot'
4
- Spree::TestingSupport::FactoryBot.when_cherry_picked do
5
- Spree::TestingSupport::FactoryBot.deprecate_cherry_picking
6
-
7
- require 'spree/testing_support/factories/calculator_factory'
8
- require 'spree/testing_support/factories/shipping_category_factory'
9
- require 'spree/testing_support/factories/zone_factory'
10
- end
11
-
12
3
  FactoryBot.define do
13
4
  factory(
14
5
  :shipping_method,
@@ -1,13 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spree/testing_support/factory_bot'
4
- Spree::TestingSupport::FactoryBot.when_cherry_picked do
5
- Spree::TestingSupport::FactoryBot.deprecate_cherry_picking
6
-
7
- require 'spree/testing_support/factories/shipping_method_factory'
8
- require 'spree/testing_support/factories/shipment_factory'
9
- end
10
-
11
3
  FactoryBot.define do
12
4
  factory :shipping_rate, class: 'Spree::ShippingRate' do
13
5
  shipping_method
@@ -1,13 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spree/testing_support/factory_bot'
4
- Spree::TestingSupport::FactoryBot.when_cherry_picked do
5
- Spree::TestingSupport::FactoryBot.deprecate_cherry_picking
6
-
7
- require 'spree/testing_support/factories/country_factory'
8
- end
9
-
10
-
11
3
  FactoryBot.define do
12
4
  factory :state, class: 'Spree::State' do
13
5
  transient do
@@ -17,9 +9,15 @@ FactoryBot.define do
17
9
  carmen_subregion do
18
10
  carmen_country = Carmen::Country.coded(country.iso)
19
11
 
20
- carmen_country.subregions.coded(state_code) ||
21
- carmen_country.subregions.sort_by(&:name).first ||
12
+ unless carmen_country.subregions?
22
13
  fail("Country #{country.iso} has no subregions")
14
+ end
15
+
16
+ carmen_regions = carmen_country.subregions
17
+ carmen_regions = carmen_regions.flat_map(&:subregions) if carmen_regions.first.subregions?
18
+ region_collection = Carmen::RegionCollection.new(carmen_regions)
19
+
20
+ region_collection.coded(state_code) || region_collection.sort_by(&:name).first
23
21
  end
24
22
  end
25
23
 
@@ -1,19 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spree/testing_support/factory_bot'
4
- Spree::TestingSupport::FactoryBot.when_cherry_picked do
5
- Spree::TestingSupport::FactoryBot.deprecate_cherry_picking
6
-
7
- require 'spree/testing_support/factories/stock_location_factory'
8
- require 'spree/testing_support/factories/variant_factory'
9
- end
10
-
11
3
  FactoryBot.define do
12
4
  factory :stock_item, class: 'Spree::StockItem' do
13
5
  backorderable { true }
14
6
  association :stock_location, factory: :stock_location_without_variant_propagation
15
7
  variant
16
8
 
17
- after(:create) { |object| object.adjust_count_on_hand(10) }
9
+ transient do
10
+ on_hand { 10 }
11
+ end
12
+
13
+ after(:create) { |object, evaluator| object.adjust_count_on_hand(evaluator.on_hand) }
18
14
  end
19
15
  end
@@ -1,14 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spree/testing_support/factory_bot'
4
- Spree::TestingSupport::FactoryBot.when_cherry_picked do
5
- Spree::TestingSupport::FactoryBot.deprecate_cherry_picking
6
-
7
- require 'spree/testing_support/factories/country_factory'
8
- require 'spree/testing_support/factories/state_factory'
9
- require 'spree/testing_support/factories/product_factory'
10
- end
11
-
12
3
  FactoryBot.define do
13
4
  factory :stock_location, class: 'Spree::StockLocation' do
14
5
  name { 'NY Warehouse' }
@@ -1,12 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spree/testing_support/factory_bot'
4
- Spree::TestingSupport::FactoryBot.when_cherry_picked do
5
- Spree::TestingSupport::FactoryBot.deprecate_cherry_picking
6
-
7
- require 'spree/testing_support/factories/stock_item_factory'
8
- end
9
-
10
3
  FactoryBot.define do
11
4
  factory :stock_movement, class: 'Spree::StockMovement' do
12
5
  quantity { 1 }
@@ -1,13 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spree/testing_support/factory_bot'
4
- Spree::TestingSupport::FactoryBot.when_cherry_picked do
5
- Spree::TestingSupport::FactoryBot.deprecate_cherry_picking
6
-
7
- require 'spree/testing_support/factories/inventory_unit_factory'
8
- require 'spree/testing_support/factories/variant_factory'
9
- end
10
-
11
3
  FactoryBot.define do
12
4
  factory :stock_package, class: 'Spree::Stock::Package' do
13
5
  skip_create
@@ -22,7 +14,7 @@ FactoryBot.define do
22
14
 
23
15
  after(:build) do |package, evaluator|
24
16
  evaluator.variants_contents.each do |variant, count|
25
- package.add_multiple build_list(:inventory_unit, count, variant: variant, stock_location: evaluator.stock_location)
17
+ package.add_multiple build_list(:inventory_unit, count, variant:, stock_location: evaluator.stock_location)
26
18
  end
27
19
  end
28
20
 
@@ -1,10 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spree/testing_support/factory_bot'
4
- Spree::TestingSupport::FactoryBot.when_cherry_picked do
5
- Spree::TestingSupport::FactoryBot.deprecate_cherry_picking
6
- end
7
-
8
3
  FactoryBot.define do
9
4
  factory :store_credit_category, class: 'Spree::StoreCreditCategory' do
10
5
  name { "Exchange" }
@@ -1,13 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spree/testing_support/factory_bot'
4
- Spree::TestingSupport::FactoryBot.when_cherry_picked do
5
- Spree::TestingSupport::FactoryBot.deprecate_cherry_picking
6
-
7
- require 'spree/testing_support/factories/store_credit_factory'
8
- require 'spree/testing_support/factories/store_credit_reason_factory'
9
- end
10
-
11
3
  FactoryBot.define do
12
4
  factory :store_credit_event, class: 'Spree::StoreCreditEvent' do
13
5
  store_credit
@@ -1,21 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spree/testing_support/factory_bot'
4
- Spree::TestingSupport::FactoryBot.when_cherry_picked do
5
- Spree::TestingSupport::FactoryBot.deprecate_cherry_picking
6
-
7
- require 'spree/testing_support/factories/store_credit_category_factory'
8
- require 'spree/testing_support/factories/store_credit_type_factory'
9
- require 'spree/testing_support/factories/user_factory'
10
- end
11
-
12
3
  FactoryBot.define do
13
4
  factory :store_credit, class: 'Spree::StoreCredit' do
14
- user
15
- association :created_by, factory: :user
16
- association :category, factory: :store_credit_category
5
+ association :user, strategy: :create
6
+ association :created_by, factory: :user, strategy: :create
7
+ association :category, factory: :store_credit_category, strategy: :create
17
8
  amount { 150.00 }
18
9
  currency { "USD" }
19
- association :credit_type, factory: :primary_credit_type
10
+ association :credit_type, factory: :primary_credit_type, strategy: :create
20
11
  end
21
12
  end
@@ -1,10 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spree/testing_support/factory_bot'
4
- Spree::TestingSupport::FactoryBot.when_cherry_picked do
5
- Spree::TestingSupport::FactoryBot.deprecate_cherry_picking
6
- end
7
-
8
3
  FactoryBot.define do
9
4
  factory :store_credit_reason, class: 'Spree::StoreCreditReason' do
10
5
  sequence :name do |n|
@@ -1,10 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spree/testing_support/factory_bot'
4
- Spree::TestingSupport::FactoryBot.when_cherry_picked do
5
- Spree::TestingSupport::FactoryBot.deprecate_cherry_picking
6
- end
7
-
8
3
  FactoryBot.define do
9
4
  factory :primary_credit_type, class: 'Spree::StoreCreditType' do
10
5
  name { Spree::StoreCreditType::DEFAULT_TYPE_NAME }
@@ -1,10 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spree/testing_support/factory_bot'
4
- Spree::TestingSupport::FactoryBot.when_cherry_picked do
5
- Spree::TestingSupport::FactoryBot.deprecate_cherry_picking
6
- end
7
-
8
3
  FactoryBot.define do
9
4
  factory :store, class: 'Spree::Store' do
10
5
  sequence(:code) { |i| "spree_#{i}" }
@@ -1,13 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spree/testing_support/factory_bot'
4
- Spree::TestingSupport::FactoryBot.when_cherry_picked do
5
- Spree::TestingSupport::FactoryBot.deprecate_cherry_picking
6
-
7
- require 'spree/testing_support/sequences'
8
- end
9
-
10
-
11
3
  FactoryBot.define do
12
4
  factory :tax_category, class: 'Spree::TaxCategory' do
13
5
  name { "TaxCategory - #{rand(999_999)}" }
@@ -1,14 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spree/testing_support/factory_bot'
4
- Spree::TestingSupport::FactoryBot.when_cherry_picked do
5
- Spree::TestingSupport::FactoryBot.deprecate_cherry_picking
6
-
7
- require 'spree/testing_support/factories/calculator_factory'
8
- require 'spree/testing_support/factories/tax_category_factory'
9
- require 'spree/testing_support/factories/zone_factory'
10
- end
11
-
12
3
  FactoryBot.define do
13
4
  factory :tax_rate, class: 'Spree::TaxRate' do
14
5
  zone