solidus_core 2.10.3 → 2.11.4

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.

Potentially problematic release.


This version of solidus_core might be problematic. Click here for more details.

Files changed (552) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/spree.js.erb +31 -2
  3. data/app/controllers/spree/base_controller.rb +1 -0
  4. data/app/mailers/spree/base_mailer.rb +4 -0
  5. data/app/mailers/spree/order_mailer.rb +1 -1
  6. data/app/models/concerns/spree/active_storage_adapter.rb +116 -0
  7. data/app/models/concerns/spree/active_storage_adapter/attachment.rb +69 -0
  8. data/app/models/concerns/spree/active_storage_adapter/normalization.rb +39 -0
  9. data/app/models/concerns/spree/default_price.rb +1 -1
  10. data/app/models/concerns/spree/soft_deletable.rb +18 -0
  11. data/app/models/concerns/spree/user_address_book.rb +86 -32
  12. data/app/models/concerns/spree/user_methods.rb +3 -2
  13. data/app/models/spree/ability.rb +34 -10
  14. data/app/models/spree/address.rb +94 -17
  15. data/app/models/spree/address/name.rb +49 -0
  16. data/app/models/spree/address/state_validator.rb +71 -0
  17. data/app/models/spree/adjustment.rb +1 -1
  18. data/app/models/spree/base.rb +2 -2
  19. data/app/models/spree/calculator.rb +4 -4
  20. data/app/models/spree/calculator/default_tax.rb +1 -1
  21. data/app/models/spree/calculator/free_shipping.rb +1 -0
  22. data/app/models/spree/calculator/percent_per_item.rb +6 -4
  23. data/app/models/spree/calculator/price_sack.rb +2 -1
  24. data/app/models/spree/credit_card.rb +2 -2
  25. data/app/models/spree/customer_return.rb +4 -2
  26. data/app/models/spree/exchange.rb +1 -1
  27. data/app/models/spree/image/active_storage_attachment.rb +21 -0
  28. data/app/models/spree/inventory_unit.rb +1 -1
  29. data/app/models/spree/line_item.rb +13 -4
  30. data/app/models/spree/option_type.rb +1 -1
  31. data/app/models/spree/option_value.rb +2 -2
  32. data/app/models/spree/order.rb +91 -20
  33. data/app/models/spree/order/checkout.rb +1 -0
  34. data/app/models/spree/order/payments.rb +2 -2
  35. data/app/models/spree/order_inventory.rb +16 -4
  36. data/app/models/spree/order_merger.rb +6 -4
  37. data/app/models/spree/order_promotion.rb +1 -1
  38. data/app/models/spree/order_updater.rb +11 -10
  39. data/app/models/spree/payment.rb +3 -3
  40. data/app/models/spree/payment/cancellation.rb +3 -22
  41. data/app/models/spree/payment/processing.rb +54 -30
  42. data/app/models/spree/payment_method.rb +8 -9
  43. data/app/models/spree/payment_source.rb +2 -2
  44. data/app/models/spree/preference.rb +1 -1
  45. data/app/models/spree/price.rb +2 -8
  46. data/app/models/spree/product.rb +19 -14
  47. data/app/models/spree/product/scopes.rb +9 -5
  48. data/app/models/spree/promotion.rb +18 -7
  49. data/app/models/spree/promotion/actions/free_shipping.rb +6 -5
  50. data/app/models/spree/promotion_action.rb +1 -7
  51. data/app/models/spree/promotion_code.rb +6 -1
  52. data/app/models/spree/promotion_code_batch.rb +1 -1
  53. data/app/models/spree/promotion_handler/coupon.rb +2 -2
  54. data/app/models/spree/promotion_rule.rb +1 -1
  55. data/app/models/spree/promotion_rule_role.rb +1 -1
  56. data/app/models/spree/refund.rb +60 -12
  57. data/app/models/spree/reimbursement.rb +27 -0
  58. data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +10 -3
  59. data/app/models/spree/return_authorization.rb +1 -1
  60. data/app/models/spree/return_item.rb +21 -10
  61. data/app/models/spree/return_item/exchange_variant_eligibility/same_option_value.rb +1 -1
  62. data/app/models/spree/role.rb +1 -1
  63. data/app/models/spree/shipment.rb +2 -2
  64. data/app/models/spree/shipping_calculator.rb +1 -1
  65. data/app/models/spree/shipping_manifest.rb +2 -2
  66. data/app/models/spree/shipping_method.rb +2 -9
  67. data/app/models/spree/shipping_rate.rb +1 -1
  68. data/app/models/spree/shipping_rate_tax.rb +1 -1
  69. data/app/models/spree/stock/inventory_unit_builder.rb +18 -7
  70. data/app/models/spree/stock/inventory_units_finalizer.rb +3 -5
  71. data/app/models/spree/stock/package.rb +1 -1
  72. data/app/models/spree/stock/simple_coordinator.rb +1 -3
  73. data/app/models/spree/stock_item.rb +2 -8
  74. data/app/models/spree/stock_movement.rb +2 -0
  75. data/app/models/spree/store.rb +1 -1
  76. data/app/models/spree/store_credit.rb +1 -7
  77. data/app/models/spree/store_credit_category.rb +30 -3
  78. data/app/models/spree/store_credit_event.rb +1 -7
  79. data/app/models/spree/store_credit_reason.rb +0 -4
  80. data/app/models/spree/tax/tax_helpers.rb +1 -1
  81. data/app/models/spree/tax_category.rb +2 -8
  82. data/app/models/spree/tax_rate.rb +7 -7
  83. data/app/models/spree/taxon.rb +1 -1
  84. data/app/models/spree/taxon/active_storage_attachment.rb +19 -0
  85. data/app/models/spree/user_address.rb +8 -2
  86. data/app/models/spree/variant.rb +7 -13
  87. data/app/models/spree/variant_property_rule.rb +5 -1
  88. data/app/models/spree/wallet/add_payment_sources_to_wallet.rb +8 -3
  89. data/app/models/spree/zone.rb +1 -1
  90. data/config/locales/en.yml +44 -5
  91. data/db/default/spree/countries.rb +1 -1
  92. data/db/default/spree/states.rb +12 -4
  93. data/db/default/spree/store_credit.rb +2 -2
  94. data/db/migrate/20180416083007_add_apply_to_all_to_variant_property_rule.rb +12 -0
  95. data/db/migrate/20200320144521_add_default_billng_flag_to_user_addresses.rb +6 -0
  96. data/db/migrate/20200530111458_add_bcc_email_to_spree_stores.rb +7 -0
  97. data/db/migrate/20201008213609_add_discontinue_on_to_spree_products.rb +7 -0
  98. data/lib/generators/solidus/install/install_generator.rb +253 -0
  99. data/lib/generators/{spree → solidus}/install/templates/config/initializers/spree.rb.tt +36 -5
  100. data/lib/generators/{spree → solidus}/install/templates/vendor/assets/javascripts/spree/backend/all.js +0 -0
  101. data/lib/generators/{spree → solidus}/install/templates/vendor/assets/javascripts/spree/frontend/all.js +0 -0
  102. data/lib/generators/{spree → solidus}/install/templates/vendor/assets/stylesheets/spree/backend/all.css +0 -0
  103. data/lib/generators/{spree → solidus}/install/templates/vendor/assets/stylesheets/spree/frontend/all.css +0 -0
  104. data/lib/generators/spree/dummy/templates/rails/test.rb +1 -1
  105. data/lib/generators/spree/install/install_generator.rb +7 -189
  106. data/lib/solidus/migrations/promotions_with_code_handlers.rb +1 -1
  107. data/lib/spree/app_configuration.rb +117 -51
  108. data/lib/spree/awesome_nested_set_override.rb +44 -0
  109. data/lib/spree/core.rb +6 -11
  110. data/lib/spree/core/controller_helpers/auth.rb +17 -4
  111. data/lib/spree/core/controller_helpers/current_host.rb +17 -0
  112. data/lib/spree/core/controller_helpers/order.rb +8 -7
  113. data/lib/spree/core/engine.rb +39 -2
  114. data/lib/spree/core/importer/order.rb +24 -10
  115. data/lib/spree/core/permalinks.rb +1 -3
  116. data/lib/spree/core/product_filters.rb +6 -5
  117. data/lib/spree/core/state_machines.rb +20 -1
  118. data/lib/spree/core/state_machines/order.rb +249 -0
  119. data/lib/spree/core/state_machines/return_item/reception_status.rb +2 -2
  120. data/lib/spree/core/version.rb +1 -1
  121. data/lib/spree/encryptor.rb +25 -0
  122. data/lib/spree/event.rb +40 -7
  123. data/lib/spree/event/adapters/active_support_notifications.rb +32 -0
  124. data/lib/spree/event/configuration.rb +11 -6
  125. data/lib/spree/event/subscriber.rb +38 -18
  126. data/lib/spree/event/subscriber_registry.rb +92 -0
  127. data/lib/spree/i18n.rb +1 -1
  128. data/lib/spree/mailer_previews/carton_preview.rb +2 -1
  129. data/lib/spree/paranoia_deprecations.rb +32 -12
  130. data/lib/spree/permission_sets/configuration_display.rb +14 -14
  131. data/lib/spree/permission_sets/default_customer.rb +16 -16
  132. data/lib/spree/permission_sets/order_display.rb +11 -11
  133. data/lib/spree/permission_sets/order_management.rb +1 -1
  134. data/lib/spree/permission_sets/product_display.rb +9 -9
  135. data/lib/spree/permission_sets/promotion_display.rb +5 -5
  136. data/lib/spree/permission_sets/restricted_stock_display.rb +2 -2
  137. data/lib/spree/permission_sets/restricted_stock_management.rb +1 -1
  138. data/lib/spree/permission_sets/stock_display.rb +2 -2
  139. data/lib/spree/permission_sets/stock_management.rb +1 -1
  140. data/lib/spree/permission_sets/user_display.rb +3 -3
  141. data/lib/spree/permission_sets/user_management.rb +4 -3
  142. data/lib/spree/permitted_attributes.rb +9 -8
  143. data/lib/spree/preferences/preferable.rb +4 -3
  144. data/lib/spree/preferences/preferable_class_methods.rb +22 -3
  145. data/lib/spree/testing_support.rb +40 -0
  146. data/lib/spree/testing_support/ability_helpers.rb +9 -9
  147. data/lib/spree/testing_support/authorization_helpers.rb +1 -0
  148. data/lib/spree/testing_support/blacklist_urls.rb +23 -0
  149. data/lib/spree/testing_support/capybara_ext.rb +3 -0
  150. data/lib/spree/testing_support/common_rake.rb +3 -3
  151. data/lib/spree/testing_support/dummy_app.rb +44 -23
  152. data/lib/spree/testing_support/dummy_app/migrations.rb +5 -6
  153. data/lib/spree/testing_support/dummy_app/rake_tasks.rb +1 -3
  154. data/lib/spree/testing_support/factories.rb +2 -4
  155. data/lib/spree/testing_support/factories/address_factory.rb +3 -4
  156. data/lib/spree/testing_support/factories/adjustment_factory.rb +2 -5
  157. data/lib/spree/testing_support/factories/adjustment_reason_factory.rb +3 -0
  158. data/lib/spree/testing_support/factories/calculator_factory.rb +3 -0
  159. data/lib/spree/testing_support/factories/carton_factory.rb +2 -2
  160. data/lib/spree/testing_support/factories/country_factory.rb +3 -0
  161. data/lib/spree/testing_support/factories/credit_card_factory.rb +3 -0
  162. data/lib/spree/testing_support/factories/customer_return_factory.rb +2 -3
  163. data/lib/spree/testing_support/factories/image_factory.rb +4 -1
  164. data/lib/spree/testing_support/factories/inventory_unit_factory.rb +2 -4
  165. data/lib/spree/testing_support/factories/line_item_factory.rb +2 -2
  166. data/lib/spree/testing_support/factories/option_type_factory.rb +3 -0
  167. data/lib/spree/testing_support/factories/option_value_factory.rb +3 -0
  168. data/lib/spree/testing_support/factories/order_factory.rb +2 -6
  169. data/lib/spree/testing_support/factories/order_promotion_factory.rb +2 -2
  170. data/lib/spree/testing_support/factories/payment_factory.rb +2 -4
  171. data/lib/spree/testing_support/factories/payment_method_factory.rb +3 -0
  172. data/lib/spree/testing_support/factories/price_factory.rb +2 -1
  173. data/lib/spree/testing_support/factories/product_factory.rb +2 -5
  174. data/lib/spree/testing_support/factories/product_option_type_factory.rb +2 -2
  175. data/lib/spree/testing_support/factories/product_property_factory.rb +2 -2
  176. data/lib/spree/testing_support/factories/promotion_category_factory.rb +3 -0
  177. data/lib/spree/testing_support/factories/promotion_code_factory.rb +2 -2
  178. data/lib/spree/testing_support/factories/promotion_factory.rb +8 -2
  179. data/lib/spree/testing_support/factories/property_factory.rb +3 -0
  180. data/lib/spree/testing_support/factories/refund_factory.rb +3 -2
  181. data/lib/spree/testing_support/factories/refund_reason_factory.rb +3 -0
  182. data/lib/spree/testing_support/factories/reimbursement_factory.rb +3 -2
  183. data/lib/spree/testing_support/factories/reimbursement_type_factory.rb +3 -0
  184. data/lib/spree/testing_support/factories/return_authorization_factory.rb +2 -3
  185. data/lib/spree/testing_support/factories/return_item_factory.rb +2 -4
  186. data/lib/spree/testing_support/factories/return_reason_factory.rb +3 -0
  187. data/lib/spree/testing_support/factories/role_factory.rb +3 -0
  188. data/lib/spree/testing_support/factories/shipment_factory.rb +2 -3
  189. data/lib/spree/testing_support/factories/shipping_category_factory.rb +3 -0
  190. data/lib/spree/testing_support/factories/shipping_method_factory.rb +2 -3
  191. data/lib/spree/testing_support/factories/shipping_rate_factory.rb +2 -2
  192. data/lib/spree/testing_support/factories/state_factory.rb +2 -1
  193. data/lib/spree/testing_support/factories/stock_item_factory.rb +2 -2
  194. data/lib/spree/testing_support/factories/stock_location_factory.rb +2 -3
  195. data/lib/spree/testing_support/factories/stock_movement_factory.rb +2 -1
  196. data/lib/spree/testing_support/factories/stock_package_factory.rb +2 -2
  197. data/lib/spree/testing_support/factories/store_credit_category_factory.rb +11 -0
  198. data/lib/spree/testing_support/factories/store_credit_event_factory.rb +3 -2
  199. data/lib/spree/testing_support/factories/store_credit_factory.rb +2 -3
  200. data/lib/spree/testing_support/factories/store_credit_reason_factory.rb +6 -1
  201. data/lib/spree/testing_support/factories/store_credit_type_factory.rb +3 -0
  202. data/lib/spree/testing_support/factories/store_factory.rb +4 -1
  203. data/lib/spree/testing_support/factories/tax_category_factory.rb +2 -1
  204. data/lib/spree/testing_support/factories/tax_rate_factory.rb +2 -3
  205. data/lib/spree/testing_support/factories/taxon_factory.rb +6 -1
  206. data/lib/spree/testing_support/factories/taxonomy_factory.rb +3 -0
  207. data/lib/spree/testing_support/factories/user_factory.rb +2 -3
  208. data/lib/spree/testing_support/factories/variant_factory.rb +2 -4
  209. data/lib/spree/testing_support/factories/variant_property_rule_condition_factory.rb +2 -2
  210. data/lib/spree/testing_support/factories/variant_property_rule_factory.rb +2 -3
  211. data/lib/spree/testing_support/factories/variant_property_rule_value_factory.rb +2 -2
  212. data/lib/spree/testing_support/factories/zone_factory.rb +3 -3
  213. data/lib/spree/testing_support/fixtures/blank.jpg +0 -0
  214. data/lib/spree/testing_support/job_helpers.rb +24 -0
  215. data/lib/spree/testing_support/order_walkthrough.rb +1 -1
  216. data/lib/spree/testing_support/precompiled_assets.rb +15 -0
  217. data/lib/spree/testing_support/preferences.rb +3 -1
  218. data/lib/spree/testing_support/shared_examples/gallery.rb +1 -1
  219. data/lib/spree/testing_support/translations.rb +25 -0
  220. data/{app/models → lib}/spree/user_class_handle.rb +0 -0
  221. data/lib/tasks/email.rake +3 -2
  222. data/solidus_core.gemspec +8 -5
  223. metadata +97 -374
  224. data/script/rails +0 -10
  225. data/spec/fixtures/thinking-cat.jpg +0 -0
  226. data/spec/helpers/base_helper_spec.rb +0 -168
  227. data/spec/helpers/products_helper_spec.rb +0 -202
  228. data/spec/helpers/taxons_helper_spec.rb +0 -43
  229. data/spec/jobs/promotion_code_batch_job_spec.rb +0 -96
  230. data/spec/lib/calculated_adjustments_spec.rb +0 -133
  231. data/spec/lib/i18n_spec.rb +0 -97
  232. data/spec/lib/search/base_spec.rb +0 -91
  233. data/spec/lib/search/variant_spec.rb +0 -115
  234. data/spec/lib/spree/app_configuration_spec.rb +0 -140
  235. data/spec/lib/spree/core/class_constantizer_spec.rb +0 -91
  236. data/spec/lib/spree/core/controller_helpers/auth_spec.rb +0 -73
  237. data/spec/lib/spree/core/controller_helpers/order_spec.rb +0 -126
  238. data/spec/lib/spree/core/controller_helpers/payment_parameters_spec.rb +0 -195
  239. data/spec/lib/spree/core/controller_helpers/pricing_spec.rb +0 -94
  240. data/spec/lib/spree/core/controller_helpers/search_spec.rb +0 -21
  241. data/spec/lib/spree/core/controller_helpers/store_spec.rb +0 -18
  242. data/spec/lib/spree/core/controller_helpers/strong_parameters_spec.rb +0 -48
  243. data/spec/lib/spree/core/current_store_spec.rb +0 -33
  244. data/spec/lib/spree/core/environment_extension_spec.rb +0 -46
  245. data/spec/lib/spree/core/importer/order_spec.rb +0 -484
  246. data/spec/lib/spree/core/role_configuration_spec.rb +0 -155
  247. data/spec/lib/spree/core/stock_configuration_spec.rb +0 -95
  248. data/spec/lib/spree/core/testing_support/factories/address_factory_spec.rb +0 -61
  249. data/spec/lib/spree/core/testing_support/factories/adjustment_factory_spec.rb +0 -20
  250. data/spec/lib/spree/core/testing_support/factories/adjustment_reason_factory_spec.rb +0 -14
  251. data/spec/lib/spree/core/testing_support/factories/calculator_factory_spec.rb +0 -44
  252. data/spec/lib/spree/core/testing_support/factories/carton_factory_spec.rb +0 -14
  253. data/spec/lib/spree/core/testing_support/factories/country_factory_spec.rb +0 -14
  254. data/spec/lib/spree/core/testing_support/factories/credit_card_factory_spec.rb +0 -14
  255. data/spec/lib/spree/core/testing_support/factories/customer_return_factory_spec.rb +0 -39
  256. data/spec/lib/spree/core/testing_support/factories/image_factory_spec.rb +0 -14
  257. data/spec/lib/spree/core/testing_support/factories/inventory_unit_factory_spec.rb +0 -14
  258. data/spec/lib/spree/core/testing_support/factories/line_item_factory_spec.rb +0 -14
  259. data/spec/lib/spree/core/testing_support/factories/option_type_factory_spec.rb +0 -14
  260. data/spec/lib/spree/core/testing_support/factories/option_value_factory_spec.rb +0 -14
  261. data/spec/lib/spree/core/testing_support/factories/order_factory_spec.rb +0 -376
  262. data/spec/lib/spree/core/testing_support/factories/order_promotion_factory_spec.rb +0 -14
  263. data/spec/lib/spree/core/testing_support/factories/payment_factory_spec.rb +0 -40
  264. data/spec/lib/spree/core/testing_support/factories/payment_method_factory_spec.rb +0 -32
  265. data/spec/lib/spree/core/testing_support/factories/price_factory_spec.rb +0 -14
  266. data/spec/lib/spree/core/testing_support/factories/product_factory_spec.rb +0 -32
  267. data/spec/lib/spree/core/testing_support/factories/product_option_type_factory_spec.rb +0 -14
  268. data/spec/lib/spree/core/testing_support/factories/product_property_factory_spec.rb +0 -14
  269. data/spec/lib/spree/core/testing_support/factories/promotion_category_factory_spec.rb +0 -14
  270. data/spec/lib/spree/core/testing_support/factories/promotion_code_factory_spec.rb +0 -14
  271. data/spec/lib/spree/core/testing_support/factories/promotion_factory_spec.rb +0 -32
  272. data/spec/lib/spree/core/testing_support/factories/property_factory_spec.rb +0 -14
  273. data/spec/lib/spree/core/testing_support/factories/refund_factory_spec.rb +0 -14
  274. data/spec/lib/spree/core/testing_support/factories/refund_reason_factory_spec.rb +0 -14
  275. data/spec/lib/spree/core/testing_support/factories/reimbursement_factory_spec.rb +0 -20
  276. data/spec/lib/spree/core/testing_support/factories/reimbursement_type_factory_spec.rb +0 -14
  277. data/spec/lib/spree/core/testing_support/factories/return_authorization_factory_spec.rb +0 -14
  278. data/spec/lib/spree/core/testing_support/factories/return_item_factory_spec.rb +0 -20
  279. data/spec/lib/spree/core/testing_support/factories/return_reason_factory_spec.rb +0 -14
  280. data/spec/lib/spree/core/testing_support/factories/role_factory_spec.rb +0 -20
  281. data/spec/lib/spree/core/testing_support/factories/shipment_factory_spec.rb +0 -14
  282. data/spec/lib/spree/core/testing_support/factories/shipping_category_factory_spec.rb +0 -14
  283. data/spec/lib/spree/core/testing_support/factories/shipping_method_factory_spec.rb +0 -44
  284. data/spec/lib/spree/core/testing_support/factories/shipping_rate_factory_spec.rb +0 -14
  285. data/spec/lib/spree/core/testing_support/factories/state_factory_spec.rb +0 -59
  286. data/spec/lib/spree/core/testing_support/factories/stock_item_factory_spec.rb +0 -14
  287. data/spec/lib/spree/core/testing_support/factories/stock_location_factory_spec.rb +0 -35
  288. data/spec/lib/spree/core/testing_support/factories/stock_movement_factory_spec.rb +0 -14
  289. data/spec/lib/spree/core/testing_support/factories/stock_package_factory_spec.rb +0 -28
  290. data/spec/lib/spree/core/testing_support/factories/store_credit_category_factory_spec.rb +0 -14
  291. data/spec/lib/spree/core/testing_support/factories/store_credit_event_factory_spec.rb +0 -43
  292. data/spec/lib/spree/core/testing_support/factories/store_credit_factory_spec.rb +0 -14
  293. data/spec/lib/spree/core/testing_support/factories/store_credit_reason_factory_spec.rb +0 -14
  294. data/spec/lib/spree/core/testing_support/factories/store_credit_type_factory_spec.rb +0 -20
  295. data/spec/lib/spree/core/testing_support/factories/store_factory_spec.rb +0 -14
  296. data/spec/lib/spree/core/testing_support/factories/tax_category_factory_spec.rb +0 -14
  297. data/spec/lib/spree/core/testing_support/factories/tax_rate_factory_spec.rb +0 -14
  298. data/spec/lib/spree/core/testing_support/factories/taxon_factory_spec.rb +0 -14
  299. data/spec/lib/spree/core/testing_support/factories/taxonomy_factory_spec.rb +0 -14
  300. data/spec/lib/spree/core/testing_support/factories/user_factory_spec.rb +0 -24
  301. data/spec/lib/spree/core/testing_support/factories/variant_factory_spec.rb +0 -56
  302. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_condition_factory_spec.rb +0 -14
  303. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_factory_spec.rb +0 -14
  304. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_value_factory_spec.rb +0 -14
  305. data/spec/lib/spree/core/testing_support/factories/zone_factory_spec.rb +0 -20
  306. data/spec/lib/spree/core/testing_support/preferences_spec.rb +0 -61
  307. data/spec/lib/spree/core/validators/email_spec.rb +0 -53
  308. data/spec/lib/spree/core/version_spec.rb +0 -19
  309. data/spec/lib/spree/event/subscriber_spec.rb +0 -85
  310. data/spec/lib/spree/event_spec.rb +0 -130
  311. data/spec/lib/spree/localized_number_spec.rb +0 -45
  312. data/spec/lib/spree/migrations_spec.rb +0 -32
  313. data/spec/lib/spree/money_spec.rb +0 -298
  314. data/spec/lib/spree/permission_sets/default_customer_spec.rb +0 -22
  315. data/spec/lib/spree/permitted_attributes_spec.rb +0 -41
  316. data/spec/lib/spree/promo/environment_spec.rb +0 -53
  317. data/spec/lib/tasks/dummy_task.rake +0 -12
  318. data/spec/lib/tasks/dummy_task_spec.rb +0 -30
  319. data/spec/lib/tasks/migrations/migrate_shipping_rate_taxes_spec.rb +0 -21
  320. data/spec/mailers/carton_mailer_spec.rb +0 -44
  321. data/spec/mailers/order_mailer_spec.rb +0 -117
  322. data/spec/mailers/promotion_code_batch_mailer_spec.rb +0 -47
  323. data/spec/mailers/reimbursement_mailer_spec.rb +0 -36
  324. data/spec/mailers/test_mailer_spec.rb +0 -13
  325. data/spec/models/spree/ability_spec.rb +0 -279
  326. data/spec/models/spree/address_spec.rb +0 -399
  327. data/spec/models/spree/adjustment_reason_spec.rb +0 -11
  328. data/spec/models/spree/adjustment_spec.rb +0 -339
  329. data/spec/models/spree/asset_spec.rb +0 -25
  330. data/spec/models/spree/calculator/default_tax_spec.rb +0 -260
  331. data/spec/models/spree/calculator/distributed_amount_spec.rb +0 -82
  332. data/spec/models/spree/calculator/flat_percent_item_total_spec.rb +0 -39
  333. data/spec/models/spree/calculator/flat_rate_spec.rb +0 -52
  334. data/spec/models/spree/calculator/flexi_rate_spec.rb +0 -158
  335. data/spec/models/spree/calculator/free_shipping_spec.rb +0 -8
  336. data/spec/models/spree/calculator/percent_on_line_item_spec.rb +0 -20
  337. data/spec/models/spree/calculator/percent_per_item_spec.rb +0 -12
  338. data/spec/models/spree/calculator/price_sack_spec.rb +0 -35
  339. data/spec/models/spree/calculator/refunds/default_refund_amount_spec.rb +0 -70
  340. data/spec/models/spree/calculator/shipping/flat_percent_item_total_spec.rb +0 -44
  341. data/spec/models/spree/calculator/shipping/flat_rate_spec.rb +0 -18
  342. data/spec/models/spree/calculator/shipping/flexi_rate_spec.rb +0 -56
  343. data/spec/models/spree/calculator/shipping/per_item_spec.rb +0 -25
  344. data/spec/models/spree/calculator/shipping/price_sack_spec.rb +0 -44
  345. data/spec/models/spree/calculator/tiered_flat_rate_spec.rb +0 -99
  346. data/spec/models/spree/calculator/tiered_percent_spec.rb +0 -197
  347. data/spec/models/spree/calculator_spec.rb +0 -43
  348. data/spec/models/spree/carton_spec.rb +0 -145
  349. data/spec/models/spree/classification_spec.rb +0 -126
  350. data/spec/models/spree/concerns/display_money_spec.rb +0 -44
  351. data/spec/models/spree/concerns/ordered_property_value_list_spec.rb +0 -52
  352. data/spec/models/spree/concerns/user_address_book_spec.rb +0 -358
  353. data/spec/models/spree/concerns/user_methods_spec.rb +0 -122
  354. data/spec/models/spree/country_spec.rb +0 -154
  355. data/spec/models/spree/credit_card_spec.rb +0 -373
  356. data/spec/models/spree/customer_return_spec.rb +0 -294
  357. data/spec/models/spree/distributed_amounts_handler_spec.rb +0 -83
  358. data/spec/models/spree/exchange_spec.rb +0 -76
  359. data/spec/models/spree/fulfilment_changer_spec.rb +0 -340
  360. data/spec/models/spree/gallery/product_gallery_spec.rb +0 -21
  361. data/spec/models/spree/gallery/variant_gallery_spec.rb +0 -21
  362. data/spec/models/spree/gateway/bogus_simple.rb +0 -14
  363. data/spec/models/spree/gateway/bogus_spec.rb +0 -14
  364. data/spec/models/spree/gateway_spec.rb +0 -14
  365. data/spec/models/spree/image_spec.rb +0 -25
  366. data/spec/models/spree/inventory_unit_spec.rb +0 -309
  367. data/spec/models/spree/line_item_spec.rb +0 -240
  368. data/spec/models/spree/option_type_spec.rb +0 -16
  369. data/spec/models/spree/option_value_spec.rb +0 -52
  370. data/spec/models/spree/order/address_spec.rb +0 -52
  371. data/spec/models/spree/order/adjustments_spec.rb +0 -29
  372. data/spec/models/spree/order/callbacks_spec.rb +0 -44
  373. data/spec/models/spree/order/checkout_spec.rb +0 -740
  374. data/spec/models/spree/order/finalizing_spec.rb +0 -92
  375. data/spec/models/spree/order/number_generator_spec.rb +0 -47
  376. data/spec/models/spree/order/outstanding_balance_integration_spec.rb +0 -138
  377. data/spec/models/spree/order/payment_spec.rb +0 -280
  378. data/spec/models/spree/order/risk_assessment_spec.rb +0 -70
  379. data/spec/models/spree/order/state_machine_spec.rb +0 -122
  380. data/spec/models/spree/order/totals_spec.rb +0 -26
  381. data/spec/models/spree/order/validations_spec.rb +0 -17
  382. data/spec/models/spree/order_cancellations_spec.rb +0 -233
  383. data/spec/models/spree/order_capturing_spec.rb +0 -16
  384. data/spec/models/spree/order_contents_spec.rb +0 -362
  385. data/spec/models/spree/order_inventory_spec.rb +0 -285
  386. data/spec/models/spree/order_merger_spec.rb +0 -162
  387. data/spec/models/spree/order_mutex_spec.rb +0 -89
  388. data/spec/models/spree/order_promotion_spec.rb +0 -33
  389. data/spec/models/spree/order_shipping_spec.rb +0 -247
  390. data/spec/models/spree/order_spec.rb +0 -1687
  391. data/spec/models/spree/order_taxation_spec.rb +0 -128
  392. data/spec/models/spree/order_update_attributes_spec.rb +0 -49
  393. data/spec/models/spree/order_updater_spec.rb +0 -556
  394. data/spec/models/spree/payment/cancellation_spec.rb +0 -84
  395. data/spec/models/spree/payment_create_spec.rb +0 -195
  396. data/spec/models/spree/payment_method/bogus_credit_card_spec.rb +0 -10
  397. data/spec/models/spree/payment_method/check_spec.rb +0 -80
  398. data/spec/models/spree/payment_method/credit_card_spec.rb +0 -68
  399. data/spec/models/spree/payment_method/simple_bogus_credit_card_spec.rb +0 -20
  400. data/spec/models/spree/payment_method/store_credit_spec.rb +0 -325
  401. data/spec/models/spree/payment_method_spec.rb +0 -408
  402. data/spec/models/spree/payment_spec.rb +0 -1270
  403. data/spec/models/spree/permission_sets/base_spec.rb +0 -14
  404. data/spec/models/spree/permission_sets/configuration_display.rb +0 -79
  405. data/spec/models/spree/permission_sets/configuration_management_spec.rb +0 -49
  406. data/spec/models/spree/permission_sets/dashboard_display_spec.rb +0 -23
  407. data/spec/models/spree/permission_sets/order_display_spec.rb +0 -56
  408. data/spec/models/spree/permission_sets/order_management_spec.rb +0 -43
  409. data/spec/models/spree/permission_sets/product_display_spec.rb +0 -57
  410. data/spec/models/spree/permission_sets/product_management_spec.rb +0 -39
  411. data/spec/models/spree/permission_sets/promotion_display_spec.rb +0 -41
  412. data/spec/models/spree/permission_sets/promotion_management_spec.rb +0 -29
  413. data/spec/models/spree/permission_sets/restricted_stock_display_spec.rb +0 -42
  414. data/spec/models/spree/permission_sets/restricted_stock_management_spec.rb +0 -42
  415. data/spec/models/spree/permission_sets/stock_display_spec.rb +0 -25
  416. data/spec/models/spree/permission_sets/stock_management_spec.rb +0 -23
  417. data/spec/models/spree/permission_sets/user_display_spec.rb +0 -39
  418. data/spec/models/spree/permission_sets/user_management_spec.rb +0 -58
  419. data/spec/models/spree/preference_spec.rb +0 -79
  420. data/spec/models/spree/preferences/configuration_spec.rb +0 -27
  421. data/spec/models/spree/preferences/preferable_spec.rb +0 -334
  422. data/spec/models/spree/preferences/scoped_store_spec.rb +0 -62
  423. data/spec/models/spree/preferences/static_model_preferences_spec.rb +0 -79
  424. data/spec/models/spree/preferences/statically_configurable_spec.rb +0 -67
  425. data/spec/models/spree/preferences/store_spec.rb +0 -40
  426. data/spec/models/spree/price_spec.rb +0 -150
  427. data/spec/models/spree/product/scopes_spec.rb +0 -164
  428. data/spec/models/spree/product_duplicator_spec.rb +0 -92
  429. data/spec/models/spree/product_filter_spec.rb +0 -28
  430. data/spec/models/spree/product_property_spec.rb +0 -20
  431. data/spec/models/spree/product_spec.rb +0 -584
  432. data/spec/models/spree/promotion/actions/create_adjustment_spec.rb +0 -126
  433. data/spec/models/spree/promotion/actions/create_item_adjustments_spec.rb +0 -198
  434. data/spec/models/spree/promotion/actions/create_quantity_adjustments_spec.rb +0 -298
  435. data/spec/models/spree/promotion/actions/free_shipping_spec.rb +0 -61
  436. data/spec/models/spree/promotion/rules/first_order_spec.rb +0 -87
  437. data/spec/models/spree/promotion/rules/first_repeat_purchase_since_spec.rb +0 -71
  438. data/spec/models/spree/promotion/rules/item_total_spec.rb +0 -128
  439. data/spec/models/spree/promotion/rules/nth_order_spec.rb +0 -72
  440. data/spec/models/spree/promotion/rules/one_use_per_user_spec.rb +0 -54
  441. data/spec/models/spree/promotion/rules/option_value_spec.rb +0 -96
  442. data/spec/models/spree/promotion/rules/product_spec.rb +0 -193
  443. data/spec/models/spree/promotion/rules/store_spec.rb +0 -35
  444. data/spec/models/spree/promotion/rules/taxon_spec.rb +0 -227
  445. data/spec/models/spree/promotion/rules/user_logged_in_spec.rb +0 -33
  446. data/spec/models/spree/promotion/rules/user_role_spec.rb +0 -88
  447. data/spec/models/spree/promotion/rules/user_spec.rb +0 -39
  448. data/spec/models/spree/promotion_action_spec.rb +0 -44
  449. data/spec/models/spree/promotion_category_spec.rb +0 -19
  450. data/spec/models/spree/promotion_code/batch_builder_spec.rb +0 -107
  451. data/spec/models/spree/promotion_code_batch_spec.rb +0 -54
  452. data/spec/models/spree/promotion_code_spec.rb +0 -206
  453. data/spec/models/spree/promotion_handler/cart_spec.rb +0 -132
  454. data/spec/models/spree/promotion_handler/coupon_spec.rb +0 -419
  455. data/spec/models/spree/promotion_handler/page_spec.rb +0 -45
  456. data/spec/models/spree/promotion_handler/shipping_spec.rb +0 -96
  457. data/spec/models/spree/promotion_rule_spec.rb +0 -34
  458. data/spec/models/spree/promotion_spec.rb +0 -945
  459. data/spec/models/spree/refund_spec.rb +0 -200
  460. data/spec/models/spree/reimbursement/credit_spec.rb +0 -38
  461. data/spec/models/spree/reimbursement/reimbursement_type_engine_spec.rb +0 -144
  462. data/spec/models/spree/reimbursement/reimbursement_type_validator_spec.rb +0 -85
  463. data/spec/models/spree/reimbursement_performer_spec.rb +0 -33
  464. data/spec/models/spree/reimbursement_spec.rb +0 -278
  465. data/spec/models/spree/reimbursement_tax_calculator_spec.rb +0 -52
  466. data/spec/models/spree/reimbursement_type/credit_spec.rb +0 -56
  467. data/spec/models/spree/reimbursement_type/exchange_spec.rb +0 -48
  468. data/spec/models/spree/reimbursement_type/original_payment_spec.rb +0 -110
  469. data/spec/models/spree/reimbursement_type/store_credit_spec.rb +0 -111
  470. data/spec/models/spree/return_authorization_spec.rb +0 -226
  471. data/spec/models/spree/return_item/eligibility_validator/default_spec.rb +0 -79
  472. data/spec/models/spree/return_item/eligibility_validator/inventory_shipped_spec.rb +0 -59
  473. data/spec/models/spree/return_item/eligibility_validator/no_reimbursements_spec.rb +0 -86
  474. data/spec/models/spree/return_item/eligibility_validator/order_completed_spec.rb +0 -35
  475. data/spec/models/spree/return_item/eligibility_validator/rma_required_spec.rb +0 -31
  476. data/spec/models/spree/return_item/eligibility_validator/time_since_purchase_spec.rb +0 -42
  477. data/spec/models/spree/return_item/exchange_variant_eligibility/same_option_value_spec.rb +0 -66
  478. data/spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb +0 -43
  479. data/spec/models/spree/return_item_spec.rb +0 -785
  480. data/spec/models/spree/returns_calculator_spec.rb +0 -16
  481. data/spec/models/spree/shipment_spec.rb +0 -914
  482. data/spec/models/spree/shipping_calculator_spec.rb +0 -45
  483. data/spec/models/spree/shipping_manifest_spec.rb +0 -110
  484. data/spec/models/spree/shipping_method_spec.rb +0 -292
  485. data/spec/models/spree/shipping_rate_spec.rb +0 -154
  486. data/spec/models/spree/shipping_rate_tax_spec.rb +0 -79
  487. data/spec/models/spree/state_spec.rb +0 -43
  488. data/spec/models/spree/stock/allocator/on_hand_first_spec.rb +0 -146
  489. data/spec/models/spree/stock/availability_spec.rb +0 -143
  490. data/spec/models/spree/stock/availability_validator_spec.rb +0 -140
  491. data/spec/models/spree/stock/content_item_spec.rb +0 -70
  492. data/spec/models/spree/stock/differentiator_spec.rb +0 -41
  493. data/spec/models/spree/stock/estimator_spec.rb +0 -241
  494. data/spec/models/spree/stock/inventory_unit_builder_spec.rb +0 -34
  495. data/spec/models/spree/stock/inventory_units_finalizer_spec.rb +0 -58
  496. data/spec/models/spree/stock/location_filter/active_spec.rb +0 -22
  497. data/spec/models/spree/stock/location_sorter/default_first_spec.rb +0 -22
  498. data/spec/models/spree/stock/location_sorter/unsorted_spec.rb +0 -21
  499. data/spec/models/spree/stock/package_spec.rb +0 -182
  500. data/spec/models/spree/stock/quantifier_spec.rb +0 -113
  501. data/spec/models/spree/stock/shipping_rate_selector_spec.rb +0 -18
  502. data/spec/models/spree/stock/shipping_rate_sorter_spec.rb +0 -18
  503. data/spec/models/spree/stock/simple_coordinator_spec.rb +0 -264
  504. data/spec/models/spree/stock/splitter/backordered_spec.rb +0 -31
  505. data/spec/models/spree/stock/splitter/base_spec.rb +0 -22
  506. data/spec/models/spree/stock/splitter/shipping_category_spec.rb +0 -48
  507. data/spec/models/spree/stock/splitter/weight_spec.rb +0 -31
  508. data/spec/models/spree/stock/splitter_chain_spec.rb +0 -66
  509. data/spec/models/spree/stock_item_spec.rb +0 -348
  510. data/spec/models/spree/stock_location_spec.rb +0 -288
  511. data/spec/models/spree/stock_movement_spec.rb +0 -58
  512. data/spec/models/spree/stock_quantities_spec.rb +0 -249
  513. data/spec/models/spree/store_credit_category_spec.rb +0 -19
  514. data/spec/models/spree/store_credit_event_spec.rb +0 -328
  515. data/spec/models/spree/store_credit_spec.rb +0 -900
  516. data/spec/models/spree/store_selector/by_server_name_spec.rb +0 -28
  517. data/spec/models/spree/store_selector/legacy_spec.rb +0 -46
  518. data/spec/models/spree/store_spec.rb +0 -156
  519. data/spec/models/spree/tax/order_adjuster_spec.rb +0 -35
  520. data/spec/models/spree/tax/shipping_rate_taxer_spec.rb +0 -59
  521. data/spec/models/spree/tax/tax_location_spec.rb +0 -79
  522. data/spec/models/spree/tax/taxation_integration_spec.rb +0 -815
  523. data/spec/models/spree/tax_calculator/default_spec.rb +0 -56
  524. data/spec/models/spree/tax_category_spec.rb +0 -50
  525. data/spec/models/spree/tax_rate_spec.rb +0 -317
  526. data/spec/models/spree/taxon_spec.rb +0 -197
  527. data/spec/models/spree/taxonomy_spec.rb +0 -15
  528. data/spec/models/spree/taxons/paperclip_attachment_spec.rb +0 -29
  529. data/spec/models/spree/unit_cancel_spec.rb +0 -126
  530. data/spec/models/spree/user_last_url_storer/rules/authentication_rule_spec.rb +0 -31
  531. data/spec/models/spree/user_last_url_storer_spec.rb +0 -60
  532. data/spec/models/spree/user_spec.rb +0 -247
  533. data/spec/models/spree/validations/db_maximum_length_validator_spec.rb +0 -33
  534. data/spec/models/spree/variant/price_selector_spec.rb +0 -90
  535. data/spec/models/spree/variant/pricing_options_spec.rb +0 -204
  536. data/spec/models/spree/variant/scopes_spec.rb +0 -94
  537. data/spec/models/spree/variant/vat_price_generator_spec.rb +0 -77
  538. data/spec/models/spree/variant_property_rule_condition_spec.rb +0 -17
  539. data/spec/models/spree/variant_property_rule_spec.rb +0 -85
  540. data/spec/models/spree/variant_property_rule_value_spec.rb +0 -20
  541. data/spec/models/spree/variant_spec.rb +0 -862
  542. data/spec/models/spree/wallet_payment_source_spec.rb +0 -77
  543. data/spec/models/spree/wallet_spec.rb +0 -155
  544. data/spec/models/spree/zone_spec.rb +0 -248
  545. data/spec/rails_helper.rb +0 -46
  546. data/spec/shared_examples/calculator_shared_examples.rb +0 -10
  547. data/spec/spec_helper.rb +0 -36
  548. data/spec/support/big_decimal.rb +0 -7
  549. data/spec/support/concerns/default_price.rb +0 -44
  550. data/spec/support/concerns/payment_source.rb +0 -66
  551. data/spec/support/concerns/working_factories.rb +0 -15
  552. data/spec/support/dummy_ability.rb +0 -7
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ module AwesomeNestedSetOvveride
4
+ # Add :polimorphic key option only when used to make it work with Rails 6.1+,
5
+ # required since rails/rails@2c008d9
6
+ # This can be removed when upgrading to an awesome_nested_set version
7
+ # compliant with Rails 6.1+, already addressed in
8
+ # collectiveidea/awesome_nested_set#421
9
+ module RelateParent
10
+ def acts_as_nested_set_relate_parent!
11
+ # Disable Rubocop to keep original code for diffs
12
+ # rubocop:disable
13
+ options = {
14
+ :class_name => self.base_class.to_s,
15
+ :foreign_key => parent_column_name,
16
+ :primary_key => primary_column_name,
17
+ :counter_cache => acts_as_nested_set_options[:counter_cache],
18
+ :inverse_of => (:children unless acts_as_nested_set_options[:polymorphic]),
19
+ :touch => acts_as_nested_set_options[:touch]
20
+ }
21
+ options[:polymorphic] = true if acts_as_nested_set_options[:polymorphic]
22
+ options[:optional] = true if ActiveRecord::VERSION::MAJOR >= 5
23
+ belongs_to :parent, options
24
+ # rubocop:enable
25
+ end
26
+
27
+ CollectiveIdea::Acts::NestedSet.prepend self
28
+ end
29
+
30
+ # Skip breaking model reload before update depth. Already addressed in
31
+ # collectiveidea/awesome_nested_set#413
32
+ # This can be removed when a new version of awesome_nested_set is released.
33
+ module Model
34
+ def set_depth!
35
+ return unless has_depth_column?
36
+
37
+ in_tenacious_transaction do
38
+ update_depth(level)
39
+ end
40
+ end
41
+
42
+ CollectiveIdea::Acts::NestedSet::Model.prepend self
43
+ end
44
+ end
@@ -53,17 +53,6 @@ module Spree
53
53
  end
54
54
  end
55
55
 
56
- if Gem::Version.new(Rails.version) < Gem::Version.new('5.2')
57
- warn <<~HEREDOC
58
- Rails 5.1 (EOL) is deprecated and will not be supported anymore from the next Solidus version.
59
- Please, upgrade to a more recent Rails version.
60
-
61
- Read more on upgrading from Rails 5.1 to Rails 5.2 here:
62
- https://guides.rubyonrails.org/upgrading_ruby_on_rails.html#upgrading-from-rails-5-1-to-rails-5-2
63
-
64
- HEREDOC
65
- end
66
-
67
56
  require 'spree/core/version'
68
57
 
69
58
  require 'spree/core/active_merchant_dependencies'
@@ -89,6 +78,7 @@ require 'spree/core/product_duplicator'
89
78
  require 'spree/core/current_store'
90
79
  require 'spree/core/controller_helpers/auth'
91
80
  require 'spree/core/controller_helpers/common'
81
+ require 'spree/core/controller_helpers/current_host'
92
82
  require 'spree/core/controller_helpers/order'
93
83
  require 'spree/core/controller_helpers/payment_parameters'
94
84
  require 'spree/core/controller_helpers/pricing'
@@ -100,7 +90,12 @@ require 'spree/core/state_machines'
100
90
  require 'spree/core/stock_configuration'
101
91
  require 'spree/core/validators/email'
102
92
  require 'spree/permission_sets'
93
+ require 'spree/user_class_handle'
103
94
 
104
95
  require 'spree/preferences/store'
105
96
  require 'spree/preferences/static_model_preferences'
106
97
  require 'spree/preferences/scoped_store'
98
+
99
+ if Rails.gem_version >= Gem::Version.new('6.1.0.alpha')
100
+ require 'spree/awesome_nested_set_override'
101
+ end
@@ -11,7 +11,7 @@ module Spree
11
11
  # @!attribute [rw] unauthorized_redirect
12
12
  # @!scope class
13
13
  # Extension point for overriding behaviour of access denied errors.
14
- # Default behaviour is to redirect to "/unauthorized" with a flash
14
+ # Default behaviour is to redirect back or to "/unauthorized" with a flash
15
15
  # message.
16
16
  # @return [Proc] action to take when access denied error is raised.
17
17
 
@@ -22,7 +22,20 @@ module Spree
22
22
  class_attribute :unauthorized_redirect
23
23
  self.unauthorized_redirect = -> do
24
24
  flash[:error] = I18n.t('spree.authorization_failure')
25
- redirect_to "/unauthorized"
25
+ if Spree::Config.redirect_back_on_unauthorized
26
+ redirect_back(fallback_location: "/unauthorized")
27
+ else
28
+ Spree::Deprecation.warn <<-WARN.strip_heredoc, caller
29
+ Having Spree::Config.redirect_back_on_unauthorized set
30
+ to `false` is deprecated and will not be supported in Solidus 3.0.
31
+
32
+ Please change this configuration to `true` and be sure that your
33
+ application does not break trying to redirect back when there is
34
+ an unauthorized access.
35
+ WARN
36
+
37
+ redirect_to "/unauthorized"
38
+ end
26
39
  end
27
40
 
28
41
  rescue_from CanCan::AccessDenied do
@@ -42,10 +55,10 @@ module Spree
42
55
 
43
56
  def set_guest_token
44
57
  unless cookies.signed[:guest_token].present?
45
- cookies.permanent.signed[:guest_token] = {
58
+ cookies.permanent.signed[:guest_token] = Spree::Config[:guest_token_cookie_options].merge(
46
59
  value: SecureRandom.urlsafe_base64(nil, false),
47
60
  httponly: true
48
- }
61
+ )
49
62
  end
50
63
  end
51
64
 
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spree
4
+ module Core
5
+ module ControllerHelpers
6
+ module CurrentHost
7
+ extend ActiveSupport::Concern
8
+
9
+ included do
10
+ before_action do
11
+ ActiveStorage::Current.host = request.base_url
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -30,18 +30,19 @@ module Spree
30
30
 
31
31
  # The current incomplete order from the guest_token for use in cart and during checkout
32
32
  def current_order(options = {})
33
- options[:create_order_if_necessary] ||= false
33
+ should_create = options[:create_order_if_necessary] || false
34
+ should_build = options[:build_order_if_necessary] || should_create
34
35
 
35
36
  return @current_order if @current_order
36
37
 
37
- @current_order = find_order_by_token_or_user(options)
38
+ @current_order = find_order_by_token_or_user(lock: options[:lock])
38
39
 
39
- if options[:create_order_if_necessary] && (@current_order.nil? || @current_order.completed?)
40
+ if should_build && (@current_order.nil? || @current_order.completed?)
40
41
  @current_order = Spree::Order.new(new_order_params)
41
42
  @current_order.user ||= try_spree_current_user
42
43
  # See issue https://github.com/spree/spree/issues/3346 for reasons why this line is here
43
44
  @current_order.created_by ||= try_spree_current_user
44
- @current_order.save!
45
+ @current_order.save! if should_create
45
46
  end
46
47
 
47
48
  if @current_order
@@ -84,14 +85,14 @@ module Spree
84
85
  end
85
86
 
86
87
  def find_order_by_token_or_user(options = {}, with_adjustments = false)
87
- options[:lock] ||= false
88
+ should_lock = options[:lock] || false
88
89
 
89
90
  # Find any incomplete orders for the guest_token
90
91
  if with_adjustments
91
92
  Spree::Deprecation.warn "The second argument to find_order_by_token_or_user is deprecated, and will be removed in a future version."
92
- order = Spree::Order.incomplete.includes(:adjustments).lock(options[:lock]).find_by(current_order_params)
93
+ order = Spree::Order.incomplete.includes(:adjustments).lock(should_lock).find_by(current_order_params)
93
94
  else
94
- order = Spree::Order.incomplete.lock(options[:lock]).find_by(current_order_params)
95
+ order = Spree::Order.incomplete.lock(should_lock).find_by(current_order_params)
95
96
  end
96
97
 
97
98
  # Find any incomplete orders for the current user
@@ -47,11 +47,48 @@ module Spree
47
47
  # Setup Event Subscribers
48
48
  initializer 'spree.core.initialize_subscribers' do |app|
49
49
  app.reloader.to_prepare do
50
- Spree::Event.subscribers.each(&:subscribe!)
50
+ Spree::Event.activate_autoloadable_subscribers
51
51
  end
52
52
 
53
53
  app.reloader.before_class_unload do
54
- Spree::Event.subscribers.each(&:unsubscribe!)
54
+ Spree::Event.deactivate_all_subscribers
55
+ end
56
+ end
57
+
58
+ config.after_initialize do
59
+ if Spree::Config.raise_with_invalid_currency == true
60
+ Spree::Deprecation.warn(
61
+ 'Spree::Config.raise_with_invalid_currency set to true is ' \
62
+ 'deprecated. Please note that by switching this value, ' \
63
+ 'Spree::LineItem::CurrencyMismatch will not be raised anymore.',
64
+ caller
65
+ )
66
+ end
67
+ if Spree::Config.consider_actionless_promotion_active == true
68
+ Spree::Deprecation.warn(
69
+ 'Spree::Config.consider_actionless_promotion_active set to true is ' \
70
+ 'deprecated. Please note that by switching this value, ' \
71
+ 'promotions with no actions will be considered active.',
72
+ caller
73
+ )
74
+ end
75
+ if Spree::Config.run_order_validations_on_order_updater != true
76
+ Spree::Deprecation.warn(
77
+ 'Spree::Config.run_order_validations_on_order_updater set to false is ' \
78
+ 'deprecated and will not be possibile in Solidus 3.0. Please switch this ' \
79
+ 'value to true and check that everything works as expected.',
80
+ caller
81
+ )
82
+ end
83
+
84
+ if Spree::Config.use_legacy_address_state_validator != false
85
+ Spree::Deprecation.warn(<<~DEPRECATION.squish, caller)
86
+ Spree::Config.use_legacy_address_state_validator set to true has been
87
+ deprecated and will be removed in Solidus 3.0. The Spree::Address state
88
+ validation has been extracted into a configurable external class.
89
+ Switch Spree::Config.use_legacy_address_state_validator to false to start
90
+ using the external validation class.
91
+ DEPRECATION
55
92
  end
56
93
  end
57
94
 
@@ -56,7 +56,9 @@ module Spree
56
56
  shipments_hash.each do |target|
57
57
  shipment = Shipment.new
58
58
  shipment.tracking = target[:tracking]
59
- shipment.stock_location = Spree::StockLocation.find_by(admin_name: target[:stock_location]) || Spree::StockLocation.find_by!(name: target[:stock_location])
59
+ shipment.stock_location = Spree::StockLocation.find_by(id: target[:stock_location_id]) ||
60
+ Spree::StockLocation.find_by(admin_name: target[:stock_location]) ||
61
+ Spree::StockLocation.find_by!(name: target[:stock_location])
60
62
 
61
63
  inventory_units = target[:inventory_units] || []
62
64
  inventory_units.each do |inventory_unit|
@@ -98,19 +100,31 @@ module Spree
98
100
 
99
101
  def self.create_line_items_from_params(line_items_hash, order)
100
102
  return {} unless line_items_hash
101
- line_items_hash.each_key do |key|
102
- extra_params = line_items_hash[key].except(:variant_id, :quantity, :sku)
103
- line_item = ensure_variant_id_from_params(line_items_hash[key])
104
- line_item = order.contents.add(Spree::Variant.find(line_item[:variant_id]), line_item[:quantity])
105
- # Raise any errors with saving to prevent import succeeding with line items failing silently.
106
- if extra_params.present?
107
- line_item.update!(extra_params)
108
- else
109
- line_item.save!
103
+
104
+ case line_items_hash
105
+ when Hash
106
+ line_items_hash.each_key do |key|
107
+ create_line_item(line_items_hash[key], order)
108
+ end
109
+ when Array
110
+ line_items_hash.each do |line_item_hash|
111
+ create_line_item(line_item_hash, order)
110
112
  end
111
113
  end
112
114
  end
113
115
 
116
+ def self.create_line_item(line_item_hash, order)
117
+ extra_params = line_item_hash.except(:variant_id, :quantity, :sku)
118
+ line_item = ensure_variant_id_from_params(line_item_hash)
119
+ line_item = order.contents.add(Spree::Variant.find(line_item[:variant_id]), line_item[:quantity])
120
+ # Raise any errors with saving to prevent import succeeding with line items failing silently.
121
+ if extra_params.present?
122
+ line_item.update!(extra_params)
123
+ else
124
+ line_item.save!
125
+ end
126
+ end
127
+
114
128
  def self.create_adjustments_from_params(adjustments, order)
115
129
  return [] unless adjustments
116
130
  adjustments.each do |target|
@@ -9,7 +9,7 @@ module Spree
9
9
  class_attribute :permalink_options
10
10
  end
11
11
 
12
- module ClassMethods
12
+ class_methods do
13
13
  def make_permalink(options = {})
14
14
  options[:field] ||= :permalink
15
15
  self.permalink_options = options
@@ -63,5 +63,3 @@ module Spree
63
63
  end
64
64
  end
65
65
  end
66
-
67
- ActiveRecord::Base.send :include, Spree::Core::Permalinks
@@ -60,6 +60,7 @@ module Spree
60
60
  conds.each do |new_scope|
61
61
  scope = scope.or(new_scope)
62
62
  end
63
+
63
64
  Spree::Product.joins(master: :default_price).where(scope)
64
65
  end
65
66
 
@@ -70,9 +71,9 @@ module Spree
70
71
  def self.price_filter
71
72
  value = Spree::Price.arel_table
72
73
  conds = [[I18n.t('spree.under_price', price: format_price(10)), value[:amount].lteq(10)],
73
- ["#{format_price(10)} - #{format_price(15)}", value[:amount].in(10..15)],
74
- ["#{format_price(15)} - #{format_price(18)}", value[:amount].in(15..18)],
75
- ["#{format_price(18)} - #{format_price(20)}", value[:amount].in(18..20)],
74
+ ["#{format_price(10)} - #{format_price(15)}", value[:amount].between(10..15)],
75
+ ["#{format_price(15)} - #{format_price(18)}", value[:amount].between(15..18)],
76
+ ["#{format_price(18)} - #{format_price(20)}", value[:amount].between(18..20)],
76
77
  [I18n.t('spree.or_over_price', price: format_price(20)), value[:amount].gteq(20)]]
77
78
  {
78
79
  name: I18n.t('spree.price_range'),
@@ -107,7 +108,7 @@ module Spree
107
108
  brand_property = Spree::Property.find_by(name: 'brand')
108
109
  brands = brand_property ? Spree::ProductProperty.where(property_id: brand_property.id).pluck(:value).uniq.map(&:to_s) : []
109
110
  pp = Spree::ProductProperty.arel_table
110
- conds = Hash[*brands.map { |brand| [brand, pp[:value].eq(brand)] }.flatten]
111
+ conds = Hash[*brands.flat_map { |brand| [brand, pp[:value].eq(brand)] }]
111
112
  {
112
113
  name: 'Brands',
113
114
  scope: :brand_any,
@@ -184,7 +185,7 @@ module Spree
184
185
  # idea: expand the format to allow nesting of labels?
185
186
  def self.all_taxons
186
187
  Spree::Deprecation.warn "all_taxons is deprecated in solidus_core. Please add it to your own application to continue using it."
187
- taxons = Spree::Taxonomy.all.map { |element| [element.root] + element.root.descendants }.flatten
188
+ taxons = Spree::Taxonomy.all.flat_map { |element| [element.root] + element.root.descendants }
188
189
  {
189
190
  name: 'All taxons',
190
191
  scope: :taxons_id_equals_any,
@@ -9,7 +9,8 @@ module Spree
9
9
  :return_item_reception,
10
10
  :payment,
11
11
  :inventory_unit,
12
- :shipment
12
+ :shipment,
13
+ :order
13
14
 
14
15
  def return_authorization
15
16
  @return_authorization ||= begin
@@ -65,6 +66,24 @@ module Spree
65
66
  @shipment.constantize
66
67
  end
67
68
 
69
+ def order
70
+ @order ||= begin
71
+ if Spree::Config.use_legacy_order_state_machine
72
+ Spree::Deprecation.warn(
73
+ "Spree::Order state machine defined in Spree::Order::Checkout is deprecated. " \
74
+ "Future versions of Solidus will use Spree::Core::StateMachines::Order}",
75
+ caller
76
+ )
77
+ 'Spree::Order::Checkout'
78
+ else
79
+ require 'spree/core/state_machines/order'
80
+ 'Spree::Core::StateMachines::Order'
81
+ end
82
+ end
83
+
84
+ @order.constantize
85
+ end
86
+
68
87
  def reimbursement
69
88
  @reimbursement ||= begin
70
89
  require 'spree/core/state_machines/reimbursement'
@@ -0,0 +1,249 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spree
4
+ module Core
5
+ class StateMachines
6
+ module Order
7
+ def self.included(klass)
8
+ klass.extend ClassMethods
9
+ end
10
+
11
+ module ClassMethods
12
+ attr_accessor :previous_states
13
+ attr_writer :next_event_transitions
14
+ attr_writer :checkout_steps
15
+ attr_writer :removed_transitions
16
+
17
+ def checkout_flow(&block)
18
+ if block_given?
19
+ @checkout_flow = block
20
+ define_state_machine!
21
+ else
22
+ @checkout_flow
23
+ end
24
+ end
25
+
26
+ def define_state_machine!
27
+ self.checkout_steps = {}
28
+ self.next_event_transitions = []
29
+ self.previous_states = [:cart]
30
+ self.removed_transitions = []
31
+
32
+ # Build the checkout flow using the checkout_flow defined either
33
+ # within the Order class, or a decorator for that class.
34
+ #
35
+ # This method may be called multiple times depending on if the
36
+ # checkout_flow is re-defined in a decorator or not.
37
+ instance_eval(&checkout_flow)
38
+
39
+ klass = self
40
+
41
+ # To avoid multiple occurrences of the same transition being defined
42
+ # On first definition, state_machines will not be defined
43
+ state_machines.clear if respond_to?(:state_machines)
44
+ state_machine :state, initial: :cart, use_transactions: false do
45
+ klass.next_event_transitions.each { |state| transition(state.merge(on: :next)) }
46
+
47
+ # Persist the state on the order
48
+ after_transition do |order, transition|
49
+ order.state = order.state
50
+ order.state_changes.create(
51
+ previous_state: transition.from,
52
+ next_state: transition.to,
53
+ name: 'order',
54
+ user_id: order.user_id
55
+ )
56
+ order.save
57
+ end
58
+
59
+ event :cancel do
60
+ transition to: :canceled, if: :allow_cancel?, from: :complete
61
+ end
62
+
63
+ event :return do
64
+ transition to: :returned, from: [:complete, :awaiting_return], if: :all_inventory_units_returned?
65
+ end
66
+
67
+ event :resume do
68
+ transition to: :resumed, from: :canceled, if: :canceled?
69
+ end
70
+
71
+ event :authorize_return do
72
+ transition to: :awaiting_return, from: :complete
73
+ end
74
+
75
+ event :complete do
76
+ transition to: :complete, from: :confirm
77
+ end
78
+
79
+ if states[:payment]
80
+ event :payment_failed do
81
+ transition to: :payment, from: :confirm
82
+ end
83
+
84
+ after_transition to: :complete, do: :add_payment_sources_to_wallet
85
+ before_transition to: :payment, do: :add_default_payment_from_wallet
86
+ before_transition to: :payment, do: :ensure_billing_address
87
+
88
+ before_transition to: :confirm, do: :add_store_credit_payments
89
+
90
+ # see also process_payments_before_complete below which needs to
91
+ # be added in the correct sequence.
92
+ end
93
+
94
+ before_transition from: :cart, do: :ensure_line_items_present
95
+
96
+ if states[:address]
97
+ before_transition to: :address, do: :assign_default_user_addresses
98
+ before_transition from: :address, do: :persist_user_address!
99
+ end
100
+
101
+ if states[:delivery]
102
+ before_transition to: :delivery, do: :ensure_shipping_address
103
+ before_transition to: :delivery, do: :create_proposed_shipments
104
+ before_transition to: :delivery, do: :ensure_available_shipping_rates
105
+ before_transition from: :delivery, do: :apply_shipping_promotions
106
+ end
107
+
108
+ before_transition to: :resumed, do: :ensure_line_item_variants_are_not_deleted
109
+ before_transition to: :resumed, do: :validate_line_item_availability
110
+
111
+ # Sequence of before_transition to: :complete
112
+ # calls matter so that we do not process payments
113
+ # until validations have passed
114
+ before_transition to: :complete, do: :validate_line_item_availability
115
+ before_transition to: :complete, do: :ensure_promotions_eligible
116
+ before_transition to: :complete, do: :ensure_line_item_variants_are_not_deleted
117
+ before_transition to: :complete, do: :ensure_inventory_units
118
+ if states[:payment]
119
+ before_transition to: :complete, do: :process_payments_before_complete
120
+ end
121
+
122
+ after_transition to: :complete, do: :finalize!
123
+ after_transition to: :resumed, do: :after_resume
124
+ after_transition to: :canceled, do: :after_cancel
125
+
126
+ after_transition from: any - :cart, to: any - [:confirm, :complete] do |order|
127
+ order.recalculate
128
+ end
129
+
130
+ after_transition do |order, transition|
131
+ order.logger.debug "Order #{order.number} transitioned from #{transition.from} to #{transition.to} via #{transition.event}"
132
+ end
133
+
134
+ after_failure do |order, transition|
135
+ order.logger.debug "Order #{order.number} halted transition on event #{transition.event} state #{transition.from}: #{order.errors.full_messages.join}"
136
+ end
137
+ end
138
+ end
139
+
140
+ def go_to_state(name, options = {})
141
+ checkout_steps[name] = options
142
+ previous_states.each do |state|
143
+ add_transition({ from: state, to: name }.merge(options))
144
+ end
145
+ if options[:if]
146
+ previous_states << name
147
+ else
148
+ self.previous_states = [name]
149
+ end
150
+ end
151
+
152
+ def insert_checkout_step(name, options = {})
153
+ before = options.delete(:before)
154
+ after = options.delete(:after) unless before
155
+ after = checkout_steps.keys.last unless before || after
156
+
157
+ cloned_steps = checkout_steps.clone
158
+ cloned_removed_transitions = removed_transitions.clone
159
+ checkout_flow do
160
+ cloned_steps.each_pair do |key, value|
161
+ go_to_state(name, options) if key == before
162
+ go_to_state(key, value)
163
+ go_to_state(name, options) if key == after
164
+ end
165
+ cloned_removed_transitions.each do |transition|
166
+ remove_transition(transition)
167
+ end
168
+ end
169
+ end
170
+
171
+ def remove_checkout_step(name)
172
+ cloned_steps = checkout_steps.clone
173
+ cloned_removed_transitions = removed_transitions.clone
174
+ checkout_flow do
175
+ cloned_steps.each_pair do |key, value|
176
+ go_to_state(key, value) unless key == name
177
+ end
178
+ cloned_removed_transitions.each do |transition|
179
+ remove_transition(transition)
180
+ end
181
+ end
182
+ end
183
+
184
+ def remove_transition(options = {})
185
+ removed_transitions << options
186
+ next_event_transitions.delete(find_transition(options))
187
+ end
188
+
189
+ def find_transition(options = {})
190
+ return nil if options.nil? || !options.include?(:from) || !options.include?(:to)
191
+
192
+ next_event_transitions.detect do |transition|
193
+ transition[options[:from].to_sym] == options[:to].to_sym
194
+ end
195
+ end
196
+
197
+ def next_event_transitions
198
+ @next_event_transitions ||= []
199
+ end
200
+
201
+ def checkout_steps
202
+ @checkout_steps ||= {}
203
+ end
204
+
205
+ def checkout_step_names
206
+ checkout_steps.keys
207
+ end
208
+
209
+ def add_transition(options)
210
+ next_event_transitions << { options.delete(:from) => options.delete(:to) }.merge(options)
211
+ end
212
+
213
+ def removed_transitions
214
+ @removed_transitions ||= []
215
+ end
216
+ end
217
+
218
+ def checkout_steps
219
+ steps = self.class.checkout_steps.each_with_object([]) { |(step, options), checkout_steps|
220
+ next if options.include?(:if) && !options[:if].call(self)
221
+
222
+ checkout_steps << step
223
+ }.map(&:to_s)
224
+ # Ensure there is always a complete step
225
+ steps << "complete" unless steps.include?("complete")
226
+ steps
227
+ end
228
+
229
+ def has_checkout_step?(step)
230
+ step.present? && checkout_steps.include?(step)
231
+ end
232
+
233
+ def passed_checkout_step?(step)
234
+ has_checkout_step?(step) && checkout_step_index(step) < checkout_step_index(state)
235
+ end
236
+
237
+ def checkout_step_index(step)
238
+ checkout_steps.index(step).to_i
239
+ end
240
+
241
+ def can_go_to_state?(state)
242
+ return false unless has_checkout_step?(self.state) && has_checkout_step?(state)
243
+
244
+ checkout_step_index(state) > checkout_step_index(self.state)
245
+ end
246
+ end
247
+ end
248
+ end
249
+ end