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,5 +1,5 @@
1
1
  // This is a manifest file that'll be compiled into including all the files listed below.
2
- // Add new JavaScript/Coffee code in separate files in this directory and they'll automatically
2
+ // Add new JavaScript code in separate files in this directory and they'll automatically
3
3
  // be included in the compiled file accessible from http://example.com/assets/application.js
4
4
  // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
5
5
  // the compiled file.
@@ -0,0 +1 @@
1
+ /* Placeholder for compiled tailwind.css file */
@@ -1,34 +1,45 @@
1
1
  <%
2
- database_prefix = ENV['LIB_NAME'].presence || "solidus"
3
- %>
4
- <% case ENV['DB']
5
- when 'mysql' %>
2
+ adapter =
3
+ case ENV['DB']
4
+ when 'mysql2', 'mysql' then 'mysql2'
5
+ when 'postgresql', 'postgres' then 'postgresql'
6
+ when 'sqlite3', 'sqlite', '', nil then 'sqlite3'
7
+ else raise "Invalid DB specified " + ENV['DB'].inspect
8
+ end
9
+
10
+ db_host =
11
+ case adapter
12
+ when 'mysql2' then ENV['DB_MYSQL_HOST'] || ENV['DB_HOST']
13
+ when 'postgresql' then ENV['DB_POSTGRES_HOST'] || ENV['DB_HOST']
14
+ else ENV['DB_HOST']
15
+ end
16
+
17
+ db_prefix = ENV['LIB_NAME'].presence || "solidus"
18
+ db_username = ENV['DB_USERNAME']
19
+ db_password = ENV['DB_PASSWORD'] %>
20
+
21
+ default: &default
22
+ adapter: <%= adapter %>
23
+ <% unless db_username.blank? %>username: <%= db_username %><% end %>
24
+ <% unless db_password.blank? %>password: <%= db_password %><% end %>
25
+ <% unless db_host.blank? %>host: <%= db_host %><% end %>
26
+ <% if adapter == 'mysql2' %>encoding: utf8<% end %>
27
+ <% if adapter == 'postgresql' %>min_messages: warning<% end %>
28
+
29
+ <% if adapter == 'mysql2' %>
6
30
  test:
7
- adapter: mysql2
8
- <% if ENV['CI'] %>
9
- username: root
10
- password:
11
- <% end %>
12
- database: <%= database_prefix %>_test
13
- encoding: utf8
14
- <% unless ENV['DB_HOST'].blank? %>
15
- host: <%= ENV['DB_HOST'] %>
16
- <% end %>
17
- <% when 'postgres', 'postgresql' %>
18
- <% db_host = ENV['DB_HOST'] %>
31
+ <<: *default
32
+ database: <%= db_prefix %>_test
33
+
34
+ <% elsif adapter == 'postgresql' %>
19
35
  test:
20
- adapter: postgresql
21
- database: <%= database_prefix %>_test
22
- username: postgres
23
- min_messages: warning
24
- <% unless db_host.blank? %>
25
- host: <%= db_host %>
26
- <% end %>
27
- <% when 'sqlite', '', nil %>
36
+ <<: *default
37
+ database: <%= db_prefix %>_test
38
+
39
+ <% elsif adapter == 'sqlite3' %>
28
40
  test:
29
- adapter: sqlite3
30
- database: db/<%= database_prefix %>_test.sqlite3
41
+ <<: *default
42
+ database: db/<%= db_prefix %>_test.sqlite3
31
43
  timeout: 10000
32
- <% else %>
33
- <% raise "Invalid DB specified: #{ENV['DB']}" %>
44
+
34
45
  <% end %>
@@ -4,21 +4,6 @@ module DummyApp
4
4
  module Migrations
5
5
  extend self
6
6
 
7
- # Ensure database exists
8
- def database_exists?
9
- ActiveRecord::Base.connection
10
- rescue ActiveRecord::NoDatabaseError
11
- false
12
- else
13
- true
14
- end
15
-
16
- def needs_migration?
17
- return true if !database_exists?
18
-
19
- ActiveRecord::Base.connection.migration_context.needs_migration?
20
- end
21
-
22
7
  def auto_migrate
23
8
  if needs_migration?
24
9
  puts "Configuration changed. Re-running migrations"
@@ -35,6 +20,14 @@ module DummyApp
35
20
 
36
21
  private
37
22
 
23
+ def needs_migration?
24
+ ActiveRecord::Migration.check_all_pending!
25
+ rescue ActiveRecord::PendingMigrationError, ActiveRecord::NoDatabaseError
26
+ true
27
+ else
28
+ false
29
+ end
30
+
38
31
  def sh(cmd)
39
32
  puts cmd
40
33
  system cmd
@@ -10,8 +10,8 @@ module DummyApp
10
10
  require lib_name
11
11
  require 'spree/testing_support/dummy_app'
12
12
  DummyApp.setup(
13
- gem_root: gem_root,
14
- lib_name: lib_name,
13
+ gem_root:,
14
+ lib_name:,
15
15
  auto_migrate: false
16
16
  )
17
17
  end
@@ -38,14 +38,7 @@ namespace :db do
38
38
  # railties:install:migrations and then db:migrate.
39
39
  # Migrations should be run one directory at a time
40
40
  ActiveRecord::Migrator.migrations_paths.each do |path|
41
- if Rails.gem_version >= Gem::Version.new('6.0.0')
42
- ActiveRecord::MigrationContext.new(
43
- [path],
44
- ActiveRecord::SchemaMigration
45
- ).migrate
46
- else
47
- ActiveRecord::MigrationContext.new([path]).migrate
48
- end
41
+ ActiveRecord::MigrationContext.new([path]).migrate
49
42
  end
50
43
 
51
44
  ActiveRecord::Base.clear_cache!
@@ -13,8 +13,6 @@ Rails.env = 'test'
13
13
 
14
14
  require 'solidus_core'
15
15
 
16
- RAILS_6_OR_ABOVE = Rails.gem_version >= Gem::Version.new('6.0')
17
-
18
16
  # @private
19
17
  class ApplicationController < ActionController::Base
20
18
  protect_from_forgery with: :exception
@@ -22,6 +20,7 @@ end
22
20
 
23
21
  # @private
24
22
  class ApplicationRecord < ActiveRecord::Base
23
+ self.abstract_class = true
25
24
  end
26
25
 
27
26
  # @private
@@ -36,9 +35,18 @@ end
36
35
  module DummyApp
37
36
  def self.setup(gem_root:, lib_name:, auto_migrate: true)
38
37
  ENV["LIB_NAME"] = lib_name
39
- DummyApp::Application.config.root = File.join(gem_root, 'spec', 'dummy')
38
+ root = Pathname(gem_root).join('spec/dummy')
39
+ root.join("app/assets/config").mkpath
40
+ root.join("app/assets/config/manifest.js").write("// Intentionally empty\n")
41
+
42
+ DummyApp::Application.config.root = root
43
+ DummyApp::Application.initialize! unless DummyApp::Application.initialized?
40
44
 
41
- DummyApp::Application.initialize!
45
+ # Raise on deprecation warnings.
46
+ # NOTE: This needs to happen after the application is initialized.
47
+ if ENV['SOLIDUS_RAISE_DEPRECATIONS'].present?
48
+ Spree.deprecator.behavior = :raise
49
+ end
42
50
 
43
51
  if auto_migrate
44
52
  DummyApp::Migrations.auto_migrate
@@ -46,38 +54,68 @@ module DummyApp
46
54
  end
47
55
 
48
56
  class Application < ::Rails::Application
49
- config.eager_load = false
50
- config.cache_classes = true
51
- config.cache_store = :memory_store
52
- config.serve_static_assets = true
53
- config.public_file_server.headers = { 'Cache-Control' => 'public, max-age=3600' }
54
- config.whiny_nils = true
55
- config.consider_all_requests_local = true
57
+ config.load_defaults("#{Rails::VERSION::MAJOR}.#{Rails::VERSION::MINOR}")
58
+
59
+ # Make the test environment more production-like:
56
60
  config.action_controller.allow_forgery_protection = false
57
61
  config.action_controller.default_protect_from_forgery = false
62
+ config.action_mailer.perform_caching = false
63
+ config.i18n.fallbacks = true
64
+
65
+ # In the test environment, we use the `caching: true` RSpec metadata to
66
+ # enable caching on select specs. See
67
+ # core/lib/spree/testing_support/caching.rb. See also
68
+ # https://github.com/solidusio/solidus/issues/4110
58
69
  config.action_controller.perform_caching = false
59
- config.action_dispatch.show_exceptions = false
60
- config.active_support.deprecation = :stderr
70
+
71
+ # It needs to be explicitly set from Rails 7
72
+ # https://guides.rubyonrails.org/upgrading_ruby_on_rails.html#upgrading-from-rails-6-1-to-rails-7-0-spring
73
+ config.cache_classes = true
74
+
75
+ # Make debugging easier:
76
+ if Rails.gem_version >= Gem::Version.new('7.1')
77
+ config.action_controller.raise_on_missing_callback_actions = true
78
+ config.action_dispatch.show_exceptions = :none
79
+ else
80
+ config.action_dispatch.show_exceptions = false
81
+ end
82
+ config.consider_all_requests_local = true
83
+ config.active_support.deprecation = ENV['RAILS_DEPRECATIONS_BEHAVIOR'].presence&.to_sym || :stderr
84
+ config.log_level = :debug
85
+
86
+ # Improve test suite performance:
87
+ config.eager_load = false
88
+ config.public_file_server.headers = { 'Cache-Control' => 'public, max-age=3600' }
89
+ config.cache_store = :memory_store
90
+
91
+ # We don't use a web server, so we let Rails serve assets.
92
+ config.public_file_server.enabled = true
93
+
94
+ # We don't want to send email in the test environment.
61
95
  config.action_mailer.delivery_method = :test
62
- config.active_support.deprecation = :stderr
96
+
97
+ # No need to use credentials file in a test environment.
63
98
  config.secret_key_base = 'SECRET_TOKEN'
64
99
 
65
- config.action_mailer.delivery_job = "ActionMailer::MailDeliveryJob" if RAILS_6_OR_ABOVE
66
- config.action_mailer.preview_path = File.expand_path('dummy_app/mailer_previews', __dir__)
67
- config.active_record.sqlite3.represent_boolean_as_integer = true unless RAILS_6_OR_ABOVE
100
+ # Set the preview path within the dummy app:
101
+ if ActionMailer::Base.respond_to? :preview_paths # Rails 7.1+
102
+ config.action_mailer.preview_paths << File.expand_path('dummy_app/mailer_previews', __dir__)
103
+ else
104
+ config.action_mailer.preview_path = File.expand_path('dummy_app/mailer_previews', __dir__)
105
+ end
68
106
 
69
- config.storage_path = Rails.root.join('tmp', 'storage')
107
+ config.active_record.dump_schema_after_migration = false
70
108
 
71
- unless ENV['DISABLE_ACTIVE_STORAGE']
72
- initializer 'solidus.active_storage' do
73
- config.active_storage.service_configurations = {
74
- test: {
75
- service: 'Disk',
76
- root: config.storage_path
77
- }
109
+ # Configure active storage to use storage within tmp folder
110
+ initializer 'solidus.active_storage' do
111
+ config.active_storage.service_configurations = {
112
+ test: {
113
+ service: 'Disk',
114
+ root: Rails.root.join('tmp', 'storage')
78
115
  }
79
- config.active_storage.service = :test
80
- end
116
+ }
117
+ config.active_storage.service = :test
118
+ config.active_storage.variant_processor = ENV.fetch('ACTIVE_STORAGE_VARIANT_PROCESSOR', :vips).to_sym
81
119
  end
82
120
 
83
121
  # Avoid issues if an old spec/dummy still exists
@@ -93,16 +131,13 @@ module DummyApp
93
131
  end
94
132
  config.paths['db/migrate'] = migration_dirs
95
133
  ActiveRecord::Migrator.migrations_paths = migration_dirs
134
+ ActiveRecord::Migration.verbose = false
96
135
 
97
- config.action_controller.include_all_helpers = false
98
-
99
- if config.respond_to?(:assets)
100
- config.assets.paths << File.expand_path('dummy_app/assets/javascripts', __dir__)
101
- config.assets.paths << File.expand_path('dummy_app/assets/stylesheets', __dir__)
102
- end
136
+ config.assets.paths << File.expand_path('dummy_app/assets/javascripts', __dir__)
137
+ config.assets.paths << File.expand_path('dummy_app/assets/stylesheets', __dir__)
138
+ config.assets.css_compressor = nil
103
139
 
104
140
  config.paths["config/database"] = File.expand_path('dummy_app/database.yml', __dir__)
105
- config.paths['app/views'] = File.expand_path('dummy_app/views', __dir__)
106
141
  config.paths['config/routes.rb'] = File.expand_path('dummy_app/routes.rb', __dir__)
107
142
 
108
143
  ActionMailer::Base.default from: "store@example.com"
@@ -116,16 +151,10 @@ ActiveSupport.on_load(:action_controller) do
116
151
  end
117
152
 
118
153
  Spree.user_class = 'Spree::LegacyUser'
154
+ Spree.load_defaults(Spree.solidus_version)
119
155
  Spree.config do |config|
120
- config.mails_from = "store@example.com"
121
-
122
- if ENV['DISABLE_ACTIVE_STORAGE']
156
+ if (ENV['DISABLE_ACTIVE_STORAGE'] == 'true')
123
157
  config.image_attachment_module = 'Spree::Image::PaperclipAttachment'
124
158
  config.taxon_attachment_module = 'Spree::Taxon::PaperclipAttachment'
125
159
  end
126
160
  end
127
-
128
- # Raise on deprecation warnings
129
- if ENV['SOLIDUS_RAISE_DEPRECATIONS'].present?
130
- Spree::Deprecation.behavior = :raise
131
- end
@@ -4,8 +4,8 @@ require 'spree/testing_support/common_rake'
4
4
 
5
5
  desc "Generates a dummy app for testing an extension"
6
6
  namespace :extension do
7
- task :test_app, [:user_class] do |_t, _args|
7
+ task :test_app, [:user_class] do |_t, args|
8
8
  Spree::DummyGeneratorHelper.inject_extension_requirements = true
9
- Rake::Task['common:test_app'].invoke
9
+ Rake::Task['common:test_app'].invoke(args[:user_class])
10
10
  end
11
11
  end
@@ -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/state_factory'
8
- require 'spree/testing_support/factories/country_factory'
9
- end
10
3
  FactoryBot.define do
11
4
  factory :address, class: 'Spree::Address' do
12
5
  transient do
@@ -24,16 +17,19 @@ FactoryBot.define do
24
17
  phone { '555-555-0199' }
25
18
  alternative_phone { '555-555-0199' }
26
19
 
27
- state do |address|
28
- Spree::State.joins(:country).where('spree_countries.iso = (?)', country_iso_code).find_by(abbr: state_code) ||
29
- address.association(:state, country_iso: country_iso_code, state_code: state_code)
30
- end
31
-
32
20
  country do |address|
33
21
  if address.state
34
22
  address.state.country
35
23
  else
36
- address.association(:country, iso: country_iso_code)
24
+ Spree::Country.find_by(iso: country_iso_code) ||
25
+ address.association(:country, strategy: :create, iso: country_iso_code)
26
+ end
27
+ end
28
+
29
+ after(:build) do |address, evaluator|
30
+ if address&.country&.states_required? && address.state.nil? && address.state_name.nil?
31
+ address.state = address.country.states.find_by(abbr: evaluator.state_code) ||
32
+ create(:state, country_iso: address.country.iso, state_code: evaluator.state_code)
37
33
  end
38
34
  end
39
35
  end
@@ -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/factories/line_item_factory'
8
- require 'spree/testing_support/factories/order_factory'
9
- require 'spree/testing_support/factories/tax_category_factory'
10
- require 'spree/testing_support/factories/tax_rate_factory'
11
- require 'spree/testing_support/factories/zone_factory'
12
- end
13
-
14
3
  FactoryBot.define do
15
4
  factory :adjustment, class: 'Spree::Adjustment' do
16
5
  order
@@ -18,7 +7,6 @@ FactoryBot.define do
18
7
  amount { 100.0 }
19
8
  label { 'Shipping' }
20
9
  association(:source, factory: :tax_rate)
21
- eligible { true }
22
10
 
23
11
  after(:build) do |adjustment|
24
12
  adjustments = adjustment.adjustable.adjustments
@@ -42,7 +30,7 @@ FactoryBot.define do
42
30
  adjustment.source.tax_categories = []
43
31
  end
44
32
  adjustment.source.save
45
- adjustment.recalculate
33
+ adjustment.update!(amount: adjustment.source.compute_amount(adjustment.adjustable))
46
34
  end
47
35
  end
48
36
  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 :adjustment_reason, class: 'Spree::AdjustmentReason' do
10
5
  sequence(:name) { |n| "Refund for return ##{n}" }
@@ -1,12 +1,7 @@
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
- factory :calculator, aliases: [:flat_rate_calculator], class: 'Spree::Calculator::FlatRate' do
4
+ factory :flat_rate_calculator, aliases: [:calculator], class: 'Spree::Calculator::FlatRate' do
10
5
  preferred_amount { 10.0 }
11
6
  end
12
7
 
@@ -17,6 +12,9 @@ FactoryBot.define do
17
12
  factory :default_tax_calculator, class: 'Spree::Calculator::DefaultTax' do
18
13
  end
19
14
 
15
+ factory :flat_fee_calculator, class: 'Spree::Calculator::FlatFee' do
16
+ end
17
+
20
18
  factory :shipping_calculator, class: 'Spree::Calculator::Shipping::FlatRate' do
21
19
  preferred_amount { 10.0 }
22
20
  end
@@ -24,8 +22,4 @@ FactoryBot.define do
24
22
  factory :shipping_no_amount_calculator, class: 'Spree::Calculator::Shipping::FlatRate' do
25
23
  preferred_amount { 0 }
26
24
  end
27
-
28
- factory :percent_on_item_calculator, class: 'Spree::Calculator::PercentOnLineItem' do
29
- preferred_percent { 10 }
30
- end
31
25
  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/shipment_factory'
8
- require 'spree/testing_support/factories/inventory_unit_factory'
9
- end
10
-
11
3
  FactoryBot.define do
12
4
  factory :carton, class: 'Spree::Carton' do
13
5
  address
@@ -21,8 +13,8 @@ FactoryBot.define do
21
13
  # ensure the shipment uses the same stock location as the carton
22
14
  shipment: build(
23
15
  :shipment,
24
- stock_location: stock_location,
25
- shipping_method: shipping_method
16
+ stock_location:,
17
+ shipping_method:
26
18
  )
27
19
  )
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
  require 'carmen'
9
4
 
10
5
  FactoryBot.define do
@@ -20,7 +15,6 @@ FactoryBot.define do
20
15
  iso3 { carmen_country.alpha_3_code }
21
16
  numcode { carmen_country.numeric_code }
22
17
 
23
- # FIXME: We should set states required, but it causes failing tests
24
- # states_required { carmen_country.subregions? }
18
+ states_required { carmen_country.subregions? }
25
19
  end
26
20
  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 :credit_card, class: 'Spree::CreditCard' do
10
5
  verification_value { 123 }
@@ -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/stock_location_factory'
8
- require 'spree/testing_support/factories/order_factory'
9
- require 'spree/testing_support/factories/return_item_factory'
10
- end
11
-
12
3
  FactoryBot.define do
13
4
  factory :customer_return, class: 'Spree::CustomerReturn' do
14
5
  association(:stock_location, factory: :stock_location)
@@ -16,13 +7,13 @@ FactoryBot.define do
16
7
  transient do
17
8
  line_items_count { 1 }
18
9
  return_items_count { line_items_count }
19
- shipped_order { create :shipped_order, line_items_count: line_items_count }
10
+ shipped_order { create :shipped_order, line_items_count: }
20
11
  return_authorization { create :return_authorization, order: shipped_order }
21
12
  end
22
13
 
23
14
  before(:create) do |customer_return, evaluator|
24
15
  evaluator.shipped_order.inventory_units.take(evaluator.return_items_count).each do |inventory_unit|
25
- customer_return.return_items << build(:return_item, inventory_unit: inventory_unit, return_authorization: evaluator.return_authorization)
16
+ customer_return.return_items << build(:return_item, inventory_unit:, return_authorization: evaluator.return_authorization)
26
17
  end
27
18
  end
28
19
 
@@ -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 :image, class: 'Spree::Image' do
10
5
  attachment { Spree::Core::Engine.root.join('lib', 'spree', 'testing_support', 'fixtures', 'blank.jpg').open }
@@ -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/line_item_factory'
8
- require 'spree/testing_support/factories/variant_factory'
9
- require 'spree/testing_support/factories/order_factory'
10
- require 'spree/testing_support/factories/shipment_factory'
11
- end
12
-
13
3
  FactoryBot.define do
14
4
  factory :inventory_unit, class: 'Spree::InventoryUnit' do
15
5
  transient do
@@ -17,18 +7,18 @@ FactoryBot.define do
17
7
  stock_location { nil }
18
8
  end
19
9
 
20
- variant
10
+ association :variant, strategy: :create
21
11
  line_item do
22
12
  if order
23
- build(:line_item, variant: variant, order: order)
13
+ build(:line_item, variant:, order:)
24
14
  else
25
- build(:line_item, variant: variant)
15
+ build(:line_item, variant:)
26
16
  end
27
17
  end
28
18
  state { 'on_hand' }
29
19
  shipment do
30
20
  if stock_location
31
- build(:shipment, state: 'pending', order: line_item.order, stock_location: stock_location)
21
+ build(:shipment, state: 'pending', order: line_item.order, stock_location:)
32
22
  else
33
23
  build(:shipment, state: 'pending', order: line_item.order)
34
24
  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/order_factory'
8
- require 'spree/testing_support/factories/product_factory'
9
- end
10
-
11
3
  FactoryBot.define do
12
4
  factory :line_item, class: 'Spree::LineItem' do
13
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/product_factory'
8
- require 'spree/testing_support/factories/option_type_factory'
9
- end
10
-
11
3
  FactoryBot.define do
12
4
  factory :option_type, class: 'Spree::OptionType' do
13
5
  sequence(:name) { |n| "foo-size-#{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 :option_value, class: 'Spree::OptionValue' do
10
5
  sequence(:name) { |n| "Size-#{n}" }