solidus_core 2.9.6 → 2.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (575) 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/helpers/spree/base_helper.rb +4 -4
  5. data/app/helpers/spree/products_helper.rb +2 -1
  6. data/app/jobs/spree/promotion_code_batch_job.rb +2 -2
  7. data/app/mailers/spree/base_mailer.rb +4 -0
  8. data/app/mailers/spree/order_mailer.rb +1 -1
  9. data/app/models/concerns/spree/active_storage_adapter.rb +116 -0
  10. data/app/models/concerns/spree/active_storage_adapter/attachment.rb +69 -0
  11. data/app/models/concerns/spree/active_storage_adapter/normalization.rb +39 -0
  12. data/app/models/concerns/spree/default_price.rb +1 -1
  13. data/app/models/concerns/spree/soft_deletable.rb +18 -0
  14. data/app/models/concerns/spree/user_address_book.rb +87 -33
  15. data/app/models/concerns/spree/user_methods.rb +5 -4
  16. data/app/models/spree/ability.rb +34 -10
  17. data/app/models/spree/address.rb +103 -30
  18. data/app/models/spree/address/name.rb +49 -0
  19. data/app/models/spree/address/state_validator.rb +71 -0
  20. data/app/models/spree/adjustment.rb +21 -10
  21. data/app/models/spree/asset.rb +1 -1
  22. data/app/models/spree/base.rb +1 -2
  23. data/app/models/spree/calculator.rb +1 -1
  24. data/app/models/spree/calculator/default_tax.rb +1 -1
  25. data/app/models/spree/calculator/percent_per_item.rb +4 -4
  26. data/app/models/spree/calculator/price_sack.rb +1 -1
  27. data/app/models/spree/calculator/shipping/flexi_rate.rb +2 -2
  28. data/app/models/spree/calculator/tiered_flat_rate.rb +5 -5
  29. data/app/models/spree/calculator/tiered_percent.rb +6 -6
  30. data/app/models/spree/carton.rb +3 -3
  31. data/app/models/spree/classification.rb +2 -2
  32. data/app/models/spree/credit_card.rb +6 -6
  33. data/app/models/spree/customer_return.rb +5 -3
  34. data/app/models/spree/exchange.rb +1 -1
  35. data/app/models/spree/image/active_storage_attachment.rb +21 -0
  36. data/app/models/spree/image/paperclip_attachment.rb +1 -1
  37. data/app/models/spree/inventory_unit.rb +5 -23
  38. data/app/models/spree/line_item.rb +16 -7
  39. data/app/models/spree/line_item_action.rb +2 -2
  40. data/app/models/spree/log_entry.rb +1 -1
  41. data/app/models/spree/option_type.rb +1 -1
  42. data/app/models/spree/option_value.rb +3 -3
  43. data/app/models/spree/option_values_variant.rb +2 -2
  44. data/app/models/spree/order.rb +85 -30
  45. data/app/models/spree/order/checkout.rb +2 -1
  46. data/app/models/spree/order/payments.rb +2 -2
  47. data/app/models/spree/order_cancellations.rb +1 -1
  48. data/app/models/spree/order_capturing.rb +2 -2
  49. data/app/models/spree/order_contents.rb +2 -2
  50. data/app/models/spree/order_inventory.rb +16 -4
  51. data/app/models/spree/order_merger.rb +6 -4
  52. data/app/models/spree/order_mutex.rb +1 -1
  53. data/app/models/spree/order_promotion.rb +4 -4
  54. data/app/models/spree/order_shipping.rb +1 -1
  55. data/app/models/spree/order_taxation.rb +3 -3
  56. data/app/models/spree/order_updater.rb +11 -10
  57. data/app/models/spree/payment.rb +10 -47
  58. data/app/models/spree/payment/cancellation.rb +3 -3
  59. data/app/models/spree/payment/processing.rb +57 -33
  60. data/app/models/spree/payment_capture_event.rb +1 -1
  61. data/app/models/spree/payment_method.rb +13 -11
  62. data/app/models/spree/payment_method/bogus_credit_card.rb +1 -1
  63. data/app/models/spree/payment_source.rb +1 -1
  64. data/app/models/spree/preference.rb +1 -1
  65. data/app/models/spree/price.rb +3 -9
  66. data/app/models/spree/product.rb +24 -19
  67. data/app/models/spree/product/scopes.rb +223 -210
  68. data/app/models/spree/product_option_type.rb +2 -2
  69. data/app/models/spree/product_promotion_rule.rb +2 -2
  70. data/app/models/spree/product_property.rb +2 -2
  71. data/app/models/spree/promotion.rb +46 -20
  72. data/app/models/spree/promotion/actions/create_quantity_adjustments.rb +1 -1
  73. data/app/models/spree/promotion/actions/free_shipping.rb +6 -5
  74. data/app/models/spree/promotion/rules/option_value.rb +2 -2
  75. data/app/models/spree/promotion/rules/product.rb +3 -3
  76. data/app/models/spree/promotion_action.rb +3 -9
  77. data/app/models/spree/promotion_chooser.rb +2 -2
  78. data/app/models/spree/promotion_code.rb +17 -11
  79. data/app/models/spree/promotion_code/batch_builder.rb +3 -3
  80. data/app/models/spree/promotion_code_batch.rb +2 -2
  81. data/app/models/spree/promotion_handler/coupon.rb +2 -2
  82. data/app/models/spree/promotion_rule.rb +3 -3
  83. data/app/models/spree/promotion_rule_role.rb +3 -3
  84. data/app/models/spree/promotion_rule_store.rb +2 -2
  85. data/app/models/spree/promotion_rule_taxon.rb +2 -2
  86. data/app/models/spree/promotion_rule_user.rb +2 -2
  87. data/app/models/spree/refund.rb +59 -17
  88. data/app/models/spree/reimbursement.rb +32 -13
  89. data/app/models/spree/reimbursement/credit.rb +2 -2
  90. data/app/models/spree/reimbursement/reimbursement_type_engine.rb +1 -1
  91. data/app/models/spree/reimbursement_tax_calculator.rb +1 -1
  92. data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +12 -5
  93. data/app/models/spree/return_authorization.rb +5 -11
  94. data/app/models/spree/return_item.rb +33 -61
  95. data/app/models/spree/return_item/eligibility_validator/default.rb +1 -1
  96. data/app/models/spree/return_item/exchange_variant_eligibility/same_option_value.rb +1 -1
  97. data/app/models/spree/role.rb +1 -1
  98. data/app/models/spree/role_user.rb +2 -2
  99. data/app/models/spree/shipment.rb +9 -43
  100. data/app/models/spree/shipping_calculator.rb +1 -5
  101. data/app/models/spree/shipping_manifest.rb +5 -5
  102. data/app/models/spree/shipping_method.rb +3 -10
  103. data/app/models/spree/shipping_method_category.rb +2 -2
  104. data/app/models/spree/shipping_method_stock_location.rb +2 -2
  105. data/app/models/spree/shipping_method_zone.rb +2 -2
  106. data/app/models/spree/shipping_rate.rb +2 -2
  107. data/app/models/spree/shipping_rate_tax.rb +3 -3
  108. data/app/models/spree/state.rb +2 -2
  109. data/app/models/spree/state_change.rb +2 -2
  110. data/app/models/spree/stock/differentiator.rb +1 -1
  111. data/app/models/spree/stock/inventory_unit_builder.rb +18 -7
  112. data/app/models/spree/stock/inventory_units_finalizer.rb +3 -5
  113. data/app/models/spree/stock/package.rb +2 -2
  114. data/app/models/spree/stock/simple_coordinator.rb +1 -3
  115. data/app/models/spree/stock_item.rb +4 -10
  116. data/app/models/spree/stock_location.rb +2 -2
  117. data/app/models/spree/stock_movement.rb +4 -2
  118. data/app/models/spree/stock_quantities.rb +13 -12
  119. data/app/models/spree/store.rb +1 -1
  120. data/app/models/spree/store_credit.rb +9 -15
  121. data/app/models/spree/store_credit_category.rb +30 -3
  122. data/app/models/spree/store_credit_event.rb +4 -10
  123. data/app/models/spree/store_credit_reason.rb +0 -4
  124. data/app/models/spree/store_payment_method.rb +2 -2
  125. data/app/models/spree/store_shipping_method.rb +2 -2
  126. data/app/models/spree/tax/tax_helpers.rb +1 -1
  127. data/app/models/spree/tax_calculator/default.rb +0 -4
  128. data/app/models/spree/tax_calculator/shipping_rate.rb +0 -3
  129. data/app/models/spree/tax_category.rb +2 -8
  130. data/app/models/spree/tax_rate.rb +12 -8
  131. data/app/models/spree/tax_rate_tax_category.rb +2 -2
  132. data/app/models/spree/taxon.rb +1 -1
  133. data/app/models/spree/taxon/active_storage_attachment.rb +19 -0
  134. data/app/models/spree/taxon/paperclip_attachment.rb +13 -0
  135. data/app/models/spree/unit_cancel.rb +5 -2
  136. data/app/models/spree/user_address.rb +10 -4
  137. data/app/models/spree/user_last_url_storer.rb +46 -0
  138. data/app/models/spree/user_last_url_storer/rules/authentication_rule.rb +36 -0
  139. data/app/models/spree/user_stock_location.rb +2 -2
  140. data/app/models/spree/variant.rb +17 -23
  141. data/app/models/spree/variant/scopes.rb +37 -29
  142. data/app/models/spree/variant_property_rule.rb +6 -2
  143. data/app/models/spree/variant_property_rule_condition.rb +2 -2
  144. data/app/models/spree/variant_property_rule_value.rb +2 -2
  145. data/app/models/spree/wallet/add_payment_sources_to_wallet.rb +9 -4
  146. data/app/models/spree/wallet_payment_source.rb +2 -2
  147. data/app/models/spree/zone.rb +2 -2
  148. data/app/models/spree/zone_member.rb +2 -2
  149. data/config/initializers/inflections.rb +5 -0
  150. data/config/initializers/money.rb +2 -0
  151. data/config/locales/en.yml +78 -8
  152. data/db/default/spree/countries.rb +1 -1
  153. data/db/default/spree/states.rb +12 -4
  154. data/db/default/spree/store_credit.rb +2 -2
  155. data/db/migrate/20180416083007_add_apply_to_all_to_variant_property_rule.rb +12 -0
  156. data/db/migrate/20200320144521_add_default_billng_flag_to_user_addresses.rb +6 -0
  157. data/db/migrate/20200530111458_add_bcc_email_to_spree_stores.rb +7 -0
  158. data/db/migrate/20201008213609_add_discontinue_on_to_spree_products.rb +7 -0
  159. data/lib/generators/solidus/install/install_generator.rb +253 -0
  160. data/lib/generators/{spree → solidus}/install/templates/config/initializers/spree.rb.tt +42 -3
  161. data/lib/generators/{spree → solidus}/install/templates/vendor/assets/javascripts/spree/backend/all.js +0 -0
  162. data/lib/generators/{spree → solidus}/install/templates/vendor/assets/javascripts/spree/frontend/all.js +0 -0
  163. data/lib/generators/{spree → solidus}/install/templates/vendor/assets/stylesheets/spree/backend/all.css +0 -0
  164. data/lib/generators/{spree → solidus}/install/templates/vendor/assets/stylesheets/spree/frontend/all.css +0 -0
  165. data/lib/generators/spree/dummy/dummy_generator.rb +2 -0
  166. data/lib/generators/spree/install/install_generator.rb +7 -189
  167. data/lib/solidus/migrations/promotions_with_code_handlers.rb +1 -1
  168. data/lib/spree/app_configuration.rb +135 -54
  169. data/lib/spree/awesome_nested_set_override.rb +44 -0
  170. data/lib/spree/core.rb +6 -0
  171. data/lib/spree/core/controller_helpers/auth.rb +18 -17
  172. data/lib/spree/core/controller_helpers/current_host.rb +17 -0
  173. data/lib/spree/core/controller_helpers/order.rb +8 -7
  174. data/lib/spree/core/engine.rb +41 -4
  175. data/lib/spree/core/importer/order.rb +47 -33
  176. data/lib/spree/core/importer/product.rb +2 -2
  177. data/lib/spree/core/permalinks.rb +1 -3
  178. data/lib/spree/core/product_filters.rb +16 -15
  179. data/lib/spree/core/role_configuration.rb +2 -2
  180. data/lib/spree/core/search/variant.rb +1 -1
  181. data/lib/spree/core/state_machines.rb +97 -0
  182. data/lib/spree/core/state_machines/inventory_unit.rb +42 -0
  183. data/lib/spree/core/state_machines/order.rb +249 -0
  184. data/lib/spree/core/state_machines/payment.rb +61 -0
  185. data/lib/spree/core/state_machines/reimbursement.rb +33 -0
  186. data/lib/spree/core/state_machines/return_authorization.rb +32 -0
  187. data/lib/spree/core/state_machines/return_item/acceptance_status.rb +51 -0
  188. data/lib/spree/core/state_machines/return_item/reception_status.rb +42 -0
  189. data/lib/spree/core/state_machines/shipment.rb +58 -0
  190. data/lib/spree/core/stock_configuration.rb +1 -0
  191. data/lib/spree/core/validators/email.rb +1 -8
  192. data/lib/spree/core/version.rb +1 -1
  193. data/lib/spree/encryptor.rb +25 -0
  194. data/lib/spree/event.rb +40 -7
  195. data/lib/spree/event/adapters/active_support_notifications.rb +32 -0
  196. data/lib/spree/event/configuration.rb +11 -6
  197. data/lib/spree/event/subscriber.rb +38 -18
  198. data/lib/spree/event/subscriber_registry.rb +92 -0
  199. data/lib/spree/i18n.rb +1 -1
  200. data/lib/spree/mailer_previews/carton_preview.rb +2 -1
  201. data/lib/spree/money.rb +2 -2
  202. data/lib/spree/paranoia_deprecations.rb +32 -12
  203. data/lib/spree/permission_sets/configuration_display.rb +14 -14
  204. data/lib/spree/permission_sets/default_customer.rb +16 -16
  205. data/lib/spree/permission_sets/order_display.rb +11 -11
  206. data/lib/spree/permission_sets/order_management.rb +1 -1
  207. data/lib/spree/permission_sets/product_display.rb +9 -9
  208. data/lib/spree/permission_sets/promotion_display.rb +5 -5
  209. data/lib/spree/permission_sets/restricted_stock_display.rb +2 -2
  210. data/lib/spree/permission_sets/restricted_stock_management.rb +1 -1
  211. data/lib/spree/permission_sets/stock_display.rb +2 -2
  212. data/lib/spree/permission_sets/stock_management.rb +1 -1
  213. data/lib/spree/permission_sets/user_display.rb +3 -3
  214. data/lib/spree/permission_sets/user_management.rb +7 -3
  215. data/lib/spree/permitted_attributes.rb +7 -6
  216. data/lib/spree/preferences/preferable.rb +4 -3
  217. data/lib/spree/preferences/preferable_class_methods.rb +22 -3
  218. data/lib/spree/preferences/static_model_preferences.rb +2 -2
  219. data/lib/spree/testing_support/ability_helpers.rb +9 -9
  220. data/lib/spree/testing_support/authorization_helpers.rb +1 -0
  221. data/lib/spree/testing_support/blacklist_urls.rb +23 -0
  222. data/lib/spree/testing_support/capybara_ext.rb +3 -0
  223. data/lib/spree/testing_support/common_rake.rb +3 -3
  224. data/lib/spree/testing_support/dummy_app.rb +45 -21
  225. data/lib/spree/testing_support/dummy_app/migrations.rb +5 -6
  226. data/lib/spree/testing_support/dummy_app/rake_tasks.rb +6 -4
  227. data/lib/spree/testing_support/factories/address_factory.rb +1 -2
  228. data/lib/spree/testing_support/factories/image_factory.rb +1 -1
  229. data/lib/spree/testing_support/factories/inventory_unit_factory.rb +8 -1
  230. data/lib/spree/testing_support/factories/promotion_factory.rb +13 -0
  231. data/lib/spree/testing_support/factories/refund_factory.rb +1 -0
  232. data/lib/spree/testing_support/factories/reimbursement_factory.rb +1 -1
  233. data/lib/spree/testing_support/factories/return_item_factory.rb +0 -1
  234. data/lib/spree/testing_support/factories/stock_package_factory.rb +1 -1
  235. data/lib/spree/testing_support/factories/store_credit_category_factory.rb +8 -0
  236. data/lib/spree/testing_support/factories/store_credit_event_factory.rb +1 -0
  237. data/lib/spree/testing_support/factories/store_credit_reason_factory.rb +3 -1
  238. data/lib/spree/testing_support/factories/taxon_factory.rb +4 -0
  239. data/lib/spree/testing_support/factories/user_factory.rb +4 -1
  240. data/lib/spree/testing_support/factories/zone_factory.rb +1 -1
  241. data/lib/spree/testing_support/job_helpers.rb +24 -0
  242. data/lib/spree/testing_support/precompiled_assets.rb +15 -0
  243. data/lib/spree/testing_support/preferences.rb +3 -1
  244. data/lib/spree/testing_support/shared_examples/gallery.rb +1 -1
  245. data/lib/spree/testing_support/translations.rb +25 -0
  246. data/solidus_core.gemspec +12 -9
  247. metadata +120 -393
  248. data/script/rails +0 -10
  249. data/spec/fixtures/thinking-cat.jpg +0 -0
  250. data/spec/helpers/base_helper_spec.rb +0 -168
  251. data/spec/helpers/products_helper_spec.rb +0 -202
  252. data/spec/helpers/taxons_helper_spec.rb +0 -43
  253. data/spec/jobs/promotion_code_batch_job_spec.rb +0 -96
  254. data/spec/lib/calculated_adjustments_spec.rb +0 -133
  255. data/spec/lib/i18n_spec.rb +0 -97
  256. data/spec/lib/search/base_spec.rb +0 -87
  257. data/spec/lib/search/variant_spec.rb +0 -115
  258. data/spec/lib/spree/app_configuration_spec.rb +0 -140
  259. data/spec/lib/spree/core/class_constantizer_spec.rb +0 -91
  260. data/spec/lib/spree/core/controller_helpers/auth_spec.rb +0 -73
  261. data/spec/lib/spree/core/controller_helpers/order_spec.rb +0 -126
  262. data/spec/lib/spree/core/controller_helpers/payment_parameters_spec.rb +0 -195
  263. data/spec/lib/spree/core/controller_helpers/pricing_spec.rb +0 -94
  264. data/spec/lib/spree/core/controller_helpers/search_spec.rb +0 -21
  265. data/spec/lib/spree/core/controller_helpers/store_spec.rb +0 -18
  266. data/spec/lib/spree/core/controller_helpers/strong_parameters_spec.rb +0 -48
  267. data/spec/lib/spree/core/current_store_spec.rb +0 -33
  268. data/spec/lib/spree/core/environment_extension_spec.rb +0 -46
  269. data/spec/lib/spree/core/importer/order_spec.rb +0 -484
  270. data/spec/lib/spree/core/role_configuration_spec.rb +0 -155
  271. data/spec/lib/spree/core/stock_configuration_spec.rb +0 -59
  272. data/spec/lib/spree/core/testing_support/factories/address_factory_spec.rb +0 -61
  273. data/spec/lib/spree/core/testing_support/factories/adjustment_factory_spec.rb +0 -20
  274. data/spec/lib/spree/core/testing_support/factories/adjustment_reason_factory_spec.rb +0 -14
  275. data/spec/lib/spree/core/testing_support/factories/calculator_factory_spec.rb +0 -44
  276. data/spec/lib/spree/core/testing_support/factories/carton_factory_spec.rb +0 -14
  277. data/spec/lib/spree/core/testing_support/factories/country_factory_spec.rb +0 -14
  278. data/spec/lib/spree/core/testing_support/factories/credit_card_factory_spec.rb +0 -14
  279. data/spec/lib/spree/core/testing_support/factories/customer_return_factory_spec.rb +0 -39
  280. data/spec/lib/spree/core/testing_support/factories/image_factory_spec.rb +0 -14
  281. data/spec/lib/spree/core/testing_support/factories/inventory_unit_factory_spec.rb +0 -14
  282. data/spec/lib/spree/core/testing_support/factories/line_item_factory_spec.rb +0 -14
  283. data/spec/lib/spree/core/testing_support/factories/option_type_factory_spec.rb +0 -14
  284. data/spec/lib/spree/core/testing_support/factories/option_value_factory_spec.rb +0 -14
  285. data/spec/lib/spree/core/testing_support/factories/order_factory_spec.rb +0 -376
  286. data/spec/lib/spree/core/testing_support/factories/order_promotion_factory_spec.rb +0 -14
  287. data/spec/lib/spree/core/testing_support/factories/payment_factory_spec.rb +0 -40
  288. data/spec/lib/spree/core/testing_support/factories/payment_method_factory_spec.rb +0 -32
  289. data/spec/lib/spree/core/testing_support/factories/price_factory_spec.rb +0 -14
  290. data/spec/lib/spree/core/testing_support/factories/product_factory_spec.rb +0 -32
  291. data/spec/lib/spree/core/testing_support/factories/product_option_type_factory_spec.rb +0 -14
  292. data/spec/lib/spree/core/testing_support/factories/product_property_factory_spec.rb +0 -14
  293. data/spec/lib/spree/core/testing_support/factories/promotion_category_factory_spec.rb +0 -14
  294. data/spec/lib/spree/core/testing_support/factories/promotion_code_factory_spec.rb +0 -14
  295. data/spec/lib/spree/core/testing_support/factories/promotion_factory_spec.rb +0 -32
  296. data/spec/lib/spree/core/testing_support/factories/property_factory_spec.rb +0 -14
  297. data/spec/lib/spree/core/testing_support/factories/refund_factory_spec.rb +0 -14
  298. data/spec/lib/spree/core/testing_support/factories/refund_reason_factory_spec.rb +0 -14
  299. data/spec/lib/spree/core/testing_support/factories/reimbursement_factory_spec.rb +0 -20
  300. data/spec/lib/spree/core/testing_support/factories/reimbursement_type_factory_spec.rb +0 -14
  301. data/spec/lib/spree/core/testing_support/factories/return_authorization_factory_spec.rb +0 -14
  302. data/spec/lib/spree/core/testing_support/factories/return_item_factory_spec.rb +0 -20
  303. data/spec/lib/spree/core/testing_support/factories/return_reason_factory_spec.rb +0 -14
  304. data/spec/lib/spree/core/testing_support/factories/role_factory_spec.rb +0 -20
  305. data/spec/lib/spree/core/testing_support/factories/shipment_factory_spec.rb +0 -14
  306. data/spec/lib/spree/core/testing_support/factories/shipping_category_factory_spec.rb +0 -14
  307. data/spec/lib/spree/core/testing_support/factories/shipping_method_factory_spec.rb +0 -44
  308. data/spec/lib/spree/core/testing_support/factories/shipping_rate_factory_spec.rb +0 -14
  309. data/spec/lib/spree/core/testing_support/factories/state_factory_spec.rb +0 -59
  310. data/spec/lib/spree/core/testing_support/factories/stock_item_factory_spec.rb +0 -14
  311. data/spec/lib/spree/core/testing_support/factories/stock_location_factory_spec.rb +0 -35
  312. data/spec/lib/spree/core/testing_support/factories/stock_movement_factory_spec.rb +0 -14
  313. data/spec/lib/spree/core/testing_support/factories/stock_package_factory_spec.rb +0 -28
  314. data/spec/lib/spree/core/testing_support/factories/store_credit_category_factory_spec.rb +0 -14
  315. data/spec/lib/spree/core/testing_support/factories/store_credit_event_factory_spec.rb +0 -43
  316. data/spec/lib/spree/core/testing_support/factories/store_credit_factory_spec.rb +0 -14
  317. data/spec/lib/spree/core/testing_support/factories/store_credit_reason_factory_spec.rb +0 -14
  318. data/spec/lib/spree/core/testing_support/factories/store_credit_type_factory_spec.rb +0 -20
  319. data/spec/lib/spree/core/testing_support/factories/store_factory_spec.rb +0 -14
  320. data/spec/lib/spree/core/testing_support/factories/tax_category_factory_spec.rb +0 -14
  321. data/spec/lib/spree/core/testing_support/factories/tax_rate_factory_spec.rb +0 -14
  322. data/spec/lib/spree/core/testing_support/factories/taxon_factory_spec.rb +0 -14
  323. data/spec/lib/spree/core/testing_support/factories/taxonomy_factory_spec.rb +0 -14
  324. data/spec/lib/spree/core/testing_support/factories/user_factory_spec.rb +0 -24
  325. data/spec/lib/spree/core/testing_support/factories/variant_factory_spec.rb +0 -56
  326. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_condition_factory_spec.rb +0 -14
  327. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_factory_spec.rb +0 -14
  328. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_value_factory_spec.rb +0 -14
  329. data/spec/lib/spree/core/testing_support/factories/zone_factory_spec.rb +0 -20
  330. data/spec/lib/spree/core/testing_support/preferences_spec.rb +0 -61
  331. data/spec/lib/spree/core/validators/email_spec.rb +0 -53
  332. data/spec/lib/spree/core/version_spec.rb +0 -19
  333. data/spec/lib/spree/event/subscriber_spec.rb +0 -85
  334. data/spec/lib/spree/event_spec.rb +0 -118
  335. data/spec/lib/spree/localized_number_spec.rb +0 -45
  336. data/spec/lib/spree/migrations_spec.rb +0 -32
  337. data/spec/lib/spree/money_spec.rb +0 -298
  338. data/spec/lib/spree/permission_sets/default_customer_spec.rb +0 -22
  339. data/spec/lib/spree/permitted_attributes_spec.rb +0 -41
  340. data/spec/lib/spree/promo/environment_spec.rb +0 -53
  341. data/spec/lib/tasks/dummy_task.rake +0 -12
  342. data/spec/lib/tasks/dummy_task_spec.rb +0 -30
  343. data/spec/lib/tasks/migrations/migrate_shipping_rate_taxes_spec.rb +0 -21
  344. data/spec/mailers/carton_mailer_spec.rb +0 -44
  345. data/spec/mailers/order_mailer_spec.rb +0 -117
  346. data/spec/mailers/promotion_code_batch_mailer_spec.rb +0 -47
  347. data/spec/mailers/reimbursement_mailer_spec.rb +0 -36
  348. data/spec/mailers/test_mailer_spec.rb +0 -13
  349. data/spec/migrate/20190106184413_remove_code_from_spree_promotions_spec.rb +0 -148
  350. data/spec/models/spree/ability_spec.rb +0 -279
  351. data/spec/models/spree/address_spec.rb +0 -376
  352. data/spec/models/spree/adjustment_reason_spec.rb +0 -11
  353. data/spec/models/spree/adjustment_spec.rb +0 -339
  354. data/spec/models/spree/asset_spec.rb +0 -25
  355. data/spec/models/spree/calculator/default_tax_spec.rb +0 -260
  356. data/spec/models/spree/calculator/distributed_amount_spec.rb +0 -82
  357. data/spec/models/spree/calculator/flat_percent_item_total_spec.rb +0 -39
  358. data/spec/models/spree/calculator/flat_rate_spec.rb +0 -52
  359. data/spec/models/spree/calculator/flexi_rate_spec.rb +0 -158
  360. data/spec/models/spree/calculator/free_shipping_spec.rb +0 -8
  361. data/spec/models/spree/calculator/percent_on_line_item_spec.rb +0 -20
  362. data/spec/models/spree/calculator/percent_per_item_spec.rb +0 -12
  363. data/spec/models/spree/calculator/price_sack_spec.rb +0 -35
  364. data/spec/models/spree/calculator/refunds/default_refund_amount_spec.rb +0 -70
  365. data/spec/models/spree/calculator/shipping/flat_percent_item_total_spec.rb +0 -44
  366. data/spec/models/spree/calculator/shipping/flat_rate_spec.rb +0 -18
  367. data/spec/models/spree/calculator/shipping/flexi_rate_spec.rb +0 -56
  368. data/spec/models/spree/calculator/shipping/per_item_spec.rb +0 -25
  369. data/spec/models/spree/calculator/shipping/price_sack_spec.rb +0 -35
  370. data/spec/models/spree/calculator/tiered_flat_rate_spec.rb +0 -99
  371. data/spec/models/spree/calculator/tiered_percent_spec.rb +0 -197
  372. data/spec/models/spree/calculator_spec.rb +0 -43
  373. data/spec/models/spree/carton_spec.rb +0 -137
  374. data/spec/models/spree/classification_spec.rb +0 -114
  375. data/spec/models/spree/concerns/display_money_spec.rb +0 -44
  376. data/spec/models/spree/concerns/ordered_property_value_list_spec.rb +0 -52
  377. data/spec/models/spree/concerns/user_address_book_spec.rb +0 -358
  378. data/spec/models/spree/concerns/user_methods_spec.rb +0 -121
  379. data/spec/models/spree/country_spec.rb +0 -154
  380. data/spec/models/spree/credit_card_spec.rb +0 -373
  381. data/spec/models/spree/customer_return_spec.rb +0 -294
  382. data/spec/models/spree/distributed_amounts_handler_spec.rb +0 -83
  383. data/spec/models/spree/exchange_spec.rb +0 -76
  384. data/spec/models/spree/fulfilment_changer_spec.rb +0 -340
  385. data/spec/models/spree/gallery/product_gallery_spec.rb +0 -21
  386. data/spec/models/spree/gallery/variant_gallery_spec.rb +0 -21
  387. data/spec/models/spree/gateway/bogus_simple.rb +0 -14
  388. data/spec/models/spree/gateway/bogus_spec.rb +0 -14
  389. data/spec/models/spree/gateway_spec.rb +0 -14
  390. data/spec/models/spree/image_spec.rb +0 -25
  391. data/spec/models/spree/inventory_unit_spec.rb +0 -309
  392. data/spec/models/spree/line_item_spec.rb +0 -240
  393. data/spec/models/spree/option_type_spec.rb +0 -16
  394. data/spec/models/spree/option_value_spec.rb +0 -52
  395. data/spec/models/spree/order/address_spec.rb +0 -52
  396. data/spec/models/spree/order/adjustments_spec.rb +0 -29
  397. data/spec/models/spree/order/callbacks_spec.rb +0 -44
  398. data/spec/models/spree/order/checkout_spec.rb +0 -740
  399. data/spec/models/spree/order/finalizing_spec.rb +0 -92
  400. data/spec/models/spree/order/number_generator_spec.rb +0 -47
  401. data/spec/models/spree/order/outstanding_balance_integration_spec.rb +0 -138
  402. data/spec/models/spree/order/payment_spec.rb +0 -280
  403. data/spec/models/spree/order/risk_assessment_spec.rb +0 -70
  404. data/spec/models/spree/order/state_machine_spec.rb +0 -122
  405. data/spec/models/spree/order/totals_spec.rb +0 -26
  406. data/spec/models/spree/order/updating_spec.rb +0 -18
  407. data/spec/models/spree/order/validations_spec.rb +0 -17
  408. data/spec/models/spree/order_cancellations_spec.rb +0 -233
  409. data/spec/models/spree/order_capturing_spec.rb +0 -16
  410. data/spec/models/spree/order_contents_spec.rb +0 -362
  411. data/spec/models/spree/order_inventory_spec.rb +0 -285
  412. data/spec/models/spree/order_merger_spec.rb +0 -162
  413. data/spec/models/spree/order_mutex_spec.rb +0 -89
  414. data/spec/models/spree/order_promotion_spec.rb +0 -33
  415. data/spec/models/spree/order_shipping_spec.rb +0 -247
  416. data/spec/models/spree/order_spec.rb +0 -1694
  417. data/spec/models/spree/order_taxation_spec.rb +0 -128
  418. data/spec/models/spree/order_update_attributes_spec.rb +0 -49
  419. data/spec/models/spree/order_updater_spec.rb +0 -555
  420. data/spec/models/spree/payment/cancellation_spec.rb +0 -84
  421. data/spec/models/spree/payment_create_spec.rb +0 -205
  422. data/spec/models/spree/payment_method/bogus_credit_card_spec.rb +0 -10
  423. data/spec/models/spree/payment_method/check_spec.rb +0 -80
  424. data/spec/models/spree/payment_method/credit_card_spec.rb +0 -68
  425. data/spec/models/spree/payment_method/simple_bogus_credit_card_spec.rb +0 -20
  426. data/spec/models/spree/payment_method/store_credit_spec.rb +0 -325
  427. data/spec/models/spree/payment_method_spec.rb +0 -408
  428. data/spec/models/spree/payment_spec.rb +0 -1270
  429. data/spec/models/spree/permission_sets/base_spec.rb +0 -14
  430. data/spec/models/spree/permission_sets/configuration_display.rb +0 -79
  431. data/spec/models/spree/permission_sets/configuration_management_spec.rb +0 -49
  432. data/spec/models/spree/permission_sets/dashboard_display_spec.rb +0 -23
  433. data/spec/models/spree/permission_sets/order_display_spec.rb +0 -56
  434. data/spec/models/spree/permission_sets/order_management_spec.rb +0 -43
  435. data/spec/models/spree/permission_sets/product_display_spec.rb +0 -57
  436. data/spec/models/spree/permission_sets/product_management_spec.rb +0 -39
  437. data/spec/models/spree/permission_sets/promotion_display_spec.rb +0 -41
  438. data/spec/models/spree/permission_sets/promotion_management_spec.rb +0 -29
  439. data/spec/models/spree/permission_sets/restricted_stock_display_spec.rb +0 -42
  440. data/spec/models/spree/permission_sets/restricted_stock_management_spec.rb +0 -42
  441. data/spec/models/spree/permission_sets/stock_display_spec.rb +0 -25
  442. data/spec/models/spree/permission_sets/stock_management_spec.rb +0 -23
  443. data/spec/models/spree/permission_sets/user_display_spec.rb +0 -39
  444. data/spec/models/spree/permission_sets/user_management_spec.rb +0 -56
  445. data/spec/models/spree/preference_spec.rb +0 -79
  446. data/spec/models/spree/preferences/configuration_spec.rb +0 -27
  447. data/spec/models/spree/preferences/preferable_spec.rb +0 -334
  448. data/spec/models/spree/preferences/scoped_store_spec.rb +0 -62
  449. data/spec/models/spree/preferences/static_model_preferences_spec.rb +0 -79
  450. data/spec/models/spree/preferences/statically_configurable_spec.rb +0 -67
  451. data/spec/models/spree/preferences/store_spec.rb +0 -40
  452. data/spec/models/spree/price_spec.rb +0 -150
  453. data/spec/models/spree/product/scopes_spec.rb +0 -164
  454. data/spec/models/spree/product_duplicator_spec.rb +0 -92
  455. data/spec/models/spree/product_filter_spec.rb +0 -28
  456. data/spec/models/spree/product_property_spec.rb +0 -20
  457. data/spec/models/spree/product_spec.rb +0 -584
  458. data/spec/models/spree/promotion/actions/create_adjustment_spec.rb +0 -126
  459. data/spec/models/spree/promotion/actions/create_item_adjustments_spec.rb +0 -198
  460. data/spec/models/spree/promotion/actions/create_quantity_adjustments_spec.rb +0 -298
  461. data/spec/models/spree/promotion/actions/free_shipping_spec.rb +0 -61
  462. data/spec/models/spree/promotion/rules/first_order_spec.rb +0 -87
  463. data/spec/models/spree/promotion/rules/first_repeat_purchase_since_spec.rb +0 -71
  464. data/spec/models/spree/promotion/rules/item_total_spec.rb +0 -128
  465. data/spec/models/spree/promotion/rules/nth_order_spec.rb +0 -72
  466. data/spec/models/spree/promotion/rules/one_use_per_user_spec.rb +0 -54
  467. data/spec/models/spree/promotion/rules/option_value_spec.rb +0 -96
  468. data/spec/models/spree/promotion/rules/product_spec.rb +0 -193
  469. data/spec/models/spree/promotion/rules/store_spec.rb +0 -35
  470. data/spec/models/spree/promotion/rules/taxon_spec.rb +0 -227
  471. data/spec/models/spree/promotion/rules/user_logged_in_spec.rb +0 -33
  472. data/spec/models/spree/promotion/rules/user_role_spec.rb +0 -88
  473. data/spec/models/spree/promotion/rules/user_spec.rb +0 -39
  474. data/spec/models/spree/promotion_action_spec.rb +0 -44
  475. data/spec/models/spree/promotion_category_spec.rb +0 -19
  476. data/spec/models/spree/promotion_code/batch_builder_spec.rb +0 -107
  477. data/spec/models/spree/promotion_code_batch_spec.rb +0 -54
  478. data/spec/models/spree/promotion_code_spec.rb +0 -206
  479. data/spec/models/spree/promotion_handler/cart_spec.rb +0 -132
  480. data/spec/models/spree/promotion_handler/coupon_spec.rb +0 -419
  481. data/spec/models/spree/promotion_handler/page_spec.rb +0 -45
  482. data/spec/models/spree/promotion_handler/shipping_spec.rb +0 -96
  483. data/spec/models/spree/promotion_rule_spec.rb +0 -34
  484. data/spec/models/spree/promotion_spec.rb +0 -928
  485. data/spec/models/spree/refund_spec.rb +0 -200
  486. data/spec/models/spree/reimbursement/credit_spec.rb +0 -38
  487. data/spec/models/spree/reimbursement/reimbursement_type_engine_spec.rb +0 -144
  488. data/spec/models/spree/reimbursement/reimbursement_type_validator_spec.rb +0 -85
  489. data/spec/models/spree/reimbursement_performer_spec.rb +0 -33
  490. data/spec/models/spree/reimbursement_spec.rb +0 -278
  491. data/spec/models/spree/reimbursement_tax_calculator_spec.rb +0 -52
  492. data/spec/models/spree/reimbursement_type/credit_spec.rb +0 -56
  493. data/spec/models/spree/reimbursement_type/exchange_spec.rb +0 -48
  494. data/spec/models/spree/reimbursement_type/original_payment_spec.rb +0 -110
  495. data/spec/models/spree/reimbursement_type/store_credit_spec.rb +0 -111
  496. data/spec/models/spree/return_authorization_spec.rb +0 -226
  497. data/spec/models/spree/return_item/eligibility_validator/default_spec.rb +0 -79
  498. data/spec/models/spree/return_item/eligibility_validator/inventory_shipped_spec.rb +0 -59
  499. data/spec/models/spree/return_item/eligibility_validator/no_reimbursements_spec.rb +0 -86
  500. data/spec/models/spree/return_item/eligibility_validator/order_completed_spec.rb +0 -35
  501. data/spec/models/spree/return_item/eligibility_validator/rma_required_spec.rb +0 -31
  502. data/spec/models/spree/return_item/eligibility_validator/time_since_purchase_spec.rb +0 -42
  503. data/spec/models/spree/return_item/exchange_variant_eligibility/same_option_value_spec.rb +0 -66
  504. data/spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb +0 -43
  505. data/spec/models/spree/return_item_spec.rb +0 -785
  506. data/spec/models/spree/returns_calculator_spec.rb +0 -16
  507. data/spec/models/spree/shipment_spec.rb +0 -914
  508. data/spec/models/spree/shipping_calculator_spec.rb +0 -57
  509. data/spec/models/spree/shipping_manifest_spec.rb +0 -110
  510. data/spec/models/spree/shipping_method_spec.rb +0 -260
  511. data/spec/models/spree/shipping_rate_spec.rb +0 -154
  512. data/spec/models/spree/shipping_rate_tax_spec.rb +0 -79
  513. data/spec/models/spree/state_spec.rb +0 -43
  514. data/spec/models/spree/stock/allocator/on_hand_first_spec.rb +0 -146
  515. data/spec/models/spree/stock/availability_spec.rb +0 -143
  516. data/spec/models/spree/stock/availability_validator_spec.rb +0 -140
  517. data/spec/models/spree/stock/content_item_spec.rb +0 -70
  518. data/spec/models/spree/stock/differentiator_spec.rb +0 -41
  519. data/spec/models/spree/stock/estimator_spec.rb +0 -241
  520. data/spec/models/spree/stock/inventory_unit_builder_spec.rb +0 -34
  521. data/spec/models/spree/stock/inventory_units_finalizer_spec.rb +0 -58
  522. data/spec/models/spree/stock/location_filter/active_spec.rb +0 -22
  523. data/spec/models/spree/stock/location_sorter/default_first_spec.rb +0 -22
  524. data/spec/models/spree/stock/location_sorter/unsorted_spec.rb +0 -21
  525. data/spec/models/spree/stock/package_spec.rb +0 -182
  526. data/spec/models/spree/stock/quantifier_spec.rb +0 -113
  527. data/spec/models/spree/stock/shipping_rate_selector_spec.rb +0 -18
  528. data/spec/models/spree/stock/shipping_rate_sorter_spec.rb +0 -18
  529. data/spec/models/spree/stock/simple_coordinator_spec.rb +0 -264
  530. data/spec/models/spree/stock/splitter/backordered_spec.rb +0 -31
  531. data/spec/models/spree/stock/splitter/base_spec.rb +0 -22
  532. data/spec/models/spree/stock/splitter/shipping_category_spec.rb +0 -48
  533. data/spec/models/spree/stock/splitter/weight_spec.rb +0 -31
  534. data/spec/models/spree/stock/splitter_chain_spec.rb +0 -66
  535. data/spec/models/spree/stock_item_spec.rb +0 -348
  536. data/spec/models/spree/stock_location_spec.rb +0 -288
  537. data/spec/models/spree/stock_movement_spec.rb +0 -58
  538. data/spec/models/spree/stock_quantities_spec.rb +0 -249
  539. data/spec/models/spree/store_credit_category_spec.rb +0 -19
  540. data/spec/models/spree/store_credit_event_spec.rb +0 -328
  541. data/spec/models/spree/store_credit_spec.rb +0 -900
  542. data/spec/models/spree/store_selector/by_server_name_spec.rb +0 -28
  543. data/spec/models/spree/store_selector/legacy_spec.rb +0 -46
  544. data/spec/models/spree/store_spec.rb +0 -156
  545. data/spec/models/spree/tax/order_adjuster_spec.rb +0 -35
  546. data/spec/models/spree/tax/shipping_rate_taxer_spec.rb +0 -59
  547. data/spec/models/spree/tax/tax_location_spec.rb +0 -79
  548. data/spec/models/spree/tax/taxation_integration_spec.rb +0 -815
  549. data/spec/models/spree/tax_calculator/default_spec.rb +0 -56
  550. data/spec/models/spree/tax_category_spec.rb +0 -50
  551. data/spec/models/spree/tax_rate_spec.rb +0 -316
  552. data/spec/models/spree/taxon_spec.rb +0 -197
  553. data/spec/models/spree/taxonomy_spec.rb +0 -15
  554. data/spec/models/spree/unit_cancel_spec.rb +0 -121
  555. data/spec/models/spree/user_spec.rb +0 -247
  556. data/spec/models/spree/validations/db_maximum_length_validator_spec.rb +0 -33
  557. data/spec/models/spree/variant/price_selector_spec.rb +0 -90
  558. data/spec/models/spree/variant/pricing_options_spec.rb +0 -204
  559. data/spec/models/spree/variant/scopes_spec.rb +0 -94
  560. data/spec/models/spree/variant/vat_price_generator_spec.rb +0 -77
  561. data/spec/models/spree/variant_property_rule_condition_spec.rb +0 -17
  562. data/spec/models/spree/variant_property_rule_spec.rb +0 -85
  563. data/spec/models/spree/variant_property_rule_value_spec.rb +0 -20
  564. data/spec/models/spree/variant_spec.rb +0 -862
  565. data/spec/models/spree/wallet_payment_source_spec.rb +0 -77
  566. data/spec/models/spree/wallet_spec.rb +0 -155
  567. data/spec/models/spree/zone_spec.rb +0 -248
  568. data/spec/rails_helper.rb +0 -46
  569. data/spec/shared_examples/calculator_shared_examples.rb +0 -10
  570. data/spec/spec_helper.rb +0 -36
  571. data/spec/support/big_decimal.rb +0 -7
  572. data/spec/support/concerns/default_price.rb +0 -44
  573. data/spec/support/concerns/payment_source.rb +0 -66
  574. data/spec/support/concerns/working_factories.rb +0 -15
  575. data/spec/support/dummy_ability.rb +0 -7
@@ -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
@@ -11,8 +11,8 @@ module Spree
11
11
  isolate_namespace Spree
12
12
  engine_name 'spree'
13
13
 
14
- config.generators do |g|
15
- g.test_framework :rspec
14
+ config.generators do |generator|
15
+ generator.test_framework :rspec
16
16
  end
17
17
 
18
18
  initializer "spree.environment", before: :load_config_initializers do |app|
@@ -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 true to start
90
+ using the external validation class.
91
+ DEPRECATION
55
92
  end
56
93
  end
57
94
 
@@ -29,7 +29,7 @@ module Spree
29
29
 
30
30
  completed_at = params.delete(:completed_at)
31
31
 
32
- order.update_attributes!(params)
32
+ order.update!(params)
33
33
 
34
34
  order.create_proposed_shipments unless shipments_attrs.present?
35
35
 
@@ -53,17 +53,19 @@ module Spree
53
53
  def self.create_shipments_from_params(shipments_hash, order)
54
54
  return [] unless shipments_hash
55
55
 
56
- shipments_hash.each do |s|
56
+ shipments_hash.each do |target|
57
57
  shipment = Shipment.new
58
- shipment.tracking = s[:tracking]
59
- shipment.stock_location = Spree::StockLocation.find_by(admin_name: s[:stock_location]) || Spree::StockLocation.find_by!(name: s[:stock_location])
58
+ shipment.tracking = target[:tracking]
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
- inventory_units = s[:inventory_units] || []
62
- inventory_units.each do |iu|
63
- ensure_variant_id_from_params(iu)
63
+ inventory_units = target[:inventory_units] || []
64
+ inventory_units.each do |inventory_unit|
65
+ ensure_variant_id_from_params(inventory_unit)
64
66
 
65
- unless line_item = order.line_items.find_by(variant_id: iu[:variant_id])
66
- line_item = order.contents.add(Spree::Variant.find(iu[:variant_id]), 1)
67
+ unless line_item = order.line_items.find_by(variant_id: inventory_unit[:variant_id])
68
+ line_item = order.contents.add(Spree::Variant.find(inventory_unit[:variant_id]), 1)
67
69
  end
68
70
 
69
71
  # Spree expects a Inventory Unit to always reference a line
@@ -71,14 +73,14 @@ module Spree
71
73
  # trying to view these units. Note the Importer might not be
72
74
  # able to find the line item if line_item.variant_id |= iu.variant_id
73
75
  shipment.inventory_units.new(
74
- variant_id: iu[:variant_id],
76
+ variant_id: inventory_unit[:variant_id],
75
77
  line_item: line_item
76
78
  )
77
79
  end
78
80
 
79
81
  # Mark shipped if it should be.
80
- if s[:shipped_at].present?
81
- shipment.shipped_at = s[:shipped_at]
82
+ if target[:shipped_at].present?
83
+ shipment.shipped_at = target[:shipped_at]
82
84
  shipment.state = 'shipped'
83
85
  shipment.inventory_units.each do |unit|
84
86
  unit.state = 'shipped'
@@ -88,9 +90,9 @@ module Spree
88
90
  order.shipments << shipment
89
91
  shipment.save!
90
92
 
91
- shipping_method = Spree::ShippingMethod.find_by(name: s[:shipping_method]) || Spree::ShippingMethod.find_by!(admin_name: s[:shipping_method])
93
+ shipping_method = Spree::ShippingMethod.find_by(name: target[:shipping_method]) || Spree::ShippingMethod.find_by!(admin_name: target[:shipping_method])
92
94
  rate = shipment.shipping_rates.create!(shipping_method: shipping_method,
93
- cost: s[:cost])
95
+ cost: target[:cost])
94
96
  shipment.selected_shipping_rate_id = rate.id
95
97
  shipment.update_amounts
96
98
  end
@@ -98,26 +100,38 @@ 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 |k|
102
- extra_params = line_items_hash[k].except(:variant_id, :quantity, :sku)
103
- line_item = ensure_variant_id_from_params(line_items_hash[k])
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_attributes!(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
- adjustments.each do |a|
130
+ adjustments.each do |target|
117
131
  adjustment = order.adjustments.build(
118
132
  order: order,
119
- amount: a[:amount].to_d,
120
- label: a[:label]
133
+ amount: target[:amount].to_d,
134
+ label: target[:label]
121
135
  )
122
136
  adjustment.save!
123
137
  adjustment.finalize!
@@ -126,14 +140,14 @@ module Spree
126
140
 
127
141
  def self.create_payments_from_params(payments_hash, order)
128
142
  return [] unless payments_hash
129
- payments_hash.each do |p|
143
+ payments_hash.each do |target|
130
144
  payment = order.payments.build order: order
131
- payment.amount = p[:amount].to_f
145
+ payment.amount = target[:amount].to_f
132
146
  # Order API should be using state as that's the normal payment field.
133
147
  # spree_wombat serializes payment state as status so imported orders should fall back to status field.
134
- payment.state = p[:state] || p[:status] || 'completed'
135
- payment.payment_method = Spree::PaymentMethod.find_by!(name: p[:payment_method])
136
- source_attributes = p[:source] || p[:source_attributes]
148
+ payment.state = target[:state] || target[:status] || 'completed'
149
+ payment.payment_method = Spree::PaymentMethod.find_by!(name: target[:payment_method])
150
+ source_attributes = target[:source] || target[:source_attributes]
137
151
  payment.source = create_source_payment_from_params(source_attributes, payment) if source_attributes
138
152
  payment.save!
139
153
  end
@@ -171,8 +185,8 @@ module Spree
171
185
  search[:iso_name] = iso_name.upcase
172
186
  elsif iso = address[:country]['iso']
173
187
  search[:iso] = iso.upcase
174
- elsif iso3 = address[:country]['iso3']
175
- search[:iso3] = iso3.upcase
188
+ elsif iso_three = address[:country]['iso3']
189
+ search[:iso3] = iso_three.upcase
176
190
  end
177
191
 
178
192
  address.delete(:country)
@@ -28,11 +28,11 @@ module Spree
28
28
  end
29
29
 
30
30
  def update
31
- if product.update_attributes(product_attrs)
31
+ if product.update(product_attrs)
32
32
  variants_attrs.each do |variant_attribute|
33
33
  # update the variant if the id is present in the payload
34
34
  if variant_attribute['id'].present?
35
- product.variants.find(variant_attribute['id'].to_i).update_attributes(variant_attribute)
35
+ product.variants.find(variant_attribute['id'].to_i).update(variant_attribute)
36
36
  else
37
37
  # make sure the product is assigned before the options=
38
38
  product.variants.create({ product: product }.merge(variant_attribute))
@@ -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
@@ -55,11 +55,12 @@ module Spree
55
55
  # below scope would be something like ["$10 - $15", "$15 - $18", "$18 - $20"]
56
56
  #
57
57
  Spree::Product.add_search_scope :price_range_any do |*opts|
58
- conds = opts.map { |o| Spree::Core::ProductFilters.price_filter[:conds][o] }.reject(&:nil?)
58
+ conds = opts.map { |element| Spree::Core::ProductFilters.price_filter[:conds][element] }.reject(&:nil?)
59
59
  scope = conds.shift
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
 
@@ -68,17 +69,17 @@ module Spree
68
69
  end
69
70
 
70
71
  def self.price_filter
71
- v = Spree::Price.arel_table
72
- conds = [[I18n.t('spree.under_price', price: format_price(10)), v[:amount].lteq(10)],
73
- ["#{format_price(10)} - #{format_price(15)}", v[:amount].in(10..15)],
74
- ["#{format_price(15)} - #{format_price(18)}", v[:amount].in(15..18)],
75
- ["#{format_price(18)} - #{format_price(20)}", v[:amount].in(18..20)],
76
- [I18n.t('spree.or_over_price', price: format_price(20)), v[:amount].gteq(20)]]
72
+ value = Spree::Price.arel_table
73
+ conds = [[I18n.t('spree.under_price', price: format_price(10)), value[:amount].lteq(10)],
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)],
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'),
79
80
  scope: :price_range_any,
80
81
  conds: Hash[*conds.flatten],
81
- labels: conds.map { |k, _v| [k, k] }
82
+ labels: conds.map { |key, _value| [key, key] }
82
83
  }
83
84
  end
84
85
 
@@ -95,7 +96,7 @@ module Spree
95
96
  # being blank: note that this relies on with_property doing a left outer join
96
97
  # rather than an inner join.
97
98
  Spree::Product.add_search_scope :brand_any do |*opts|
98
- conds = opts.map { |o| ProductFilters.brand_filter[:conds][o] }.reject(&:nil?)
99
+ conds = opts.map { |value| ProductFilters.brand_filter[:conds][value] }.reject(&:nil?)
99
100
  scope = conds.shift
100
101
  conds.each do |new_scope|
101
102
  scope = scope.or(new_scope)
@@ -107,12 +108,12 @@ 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 { |b| [b, pp[:value].eq(b)] }.flatten]
111
+ conds = Hash[*brands.flat_map { |brand| [brand, pp[:value].eq(brand)] }]
111
112
  {
112
113
  name: 'Brands',
113
114
  scope: :brand_any,
114
115
  conds: conds,
115
- labels: brands.sort.map { |k| [k, k] }
116
+ labels: brands.sort.map { |key| [key, key] }
116
117
  }
117
118
  end
118
119
 
@@ -149,7 +150,7 @@ module Spree
149
150
  {
150
151
  name: 'Applicable Brands',
151
152
  scope: :selective_brand_any,
152
- labels: brands.sort.map { |k| [k, k] }
153
+ labels: brands.sort.map { |key| [key, key] }
153
154
  }
154
155
  end
155
156
 
@@ -171,7 +172,7 @@ module Spree
171
172
  {
172
173
  name: 'Taxons under ' + taxon.name,
173
174
  scope: :taxons_id_in_tree_any,
174
- labels: taxon.children.sort_by(&:position).map { |t| [t.name, t.id] },
175
+ labels: taxon.children.sort_by(&:position).map { |element| [element.name, element.id] },
175
176
  conds: nil
176
177
  }
177
178
  end
@@ -184,11 +185,11 @@ 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 { |t| [t.root] + t.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,
191
- labels: taxons.sort_by(&:name).map { |t| [t.name, t.id] },
192
+ labels: taxons.sort_by(&:name).map { |element| [element.name, element.id] },
192
193
  conds: nil # not needed
193
194
  }
194
195
  end
@@ -69,8 +69,8 @@ module Spree
69
69
  # Not public due to the fact this class is a Singleton
70
70
  # @!visibility private
71
71
  def initialize
72
- @roles = Hash.new do |h, name|
73
- h[name] = Role.new(name, Set.new)
72
+ @roles = Hash.new do |hash, name|
73
+ hash[name] = Role.new(name, Set.new)
74
74
  end
75
75
  end
76
76
 
@@ -57,7 +57,7 @@ module Spree
57
57
  end
58
58
 
59
59
  def search_term_params(word)
60
- terms = Hash[search_terms(word).map { |t| [t, word] }]
60
+ terms = Hash[search_terms(word).map { |term| [term, word] }]
61
61
  terms.merge(m: 'or')
62
62
  end
63
63
  end
@@ -0,0 +1,97 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spree
4
+ module Core
5
+ class StateMachines
6
+ attr_writer :reimbursement,
7
+ :return_authorization,
8
+ :return_item_acceptance,
9
+ :return_item_reception,
10
+ :payment,
11
+ :inventory_unit,
12
+ :shipment,
13
+ :order
14
+
15
+ def return_authorization
16
+ @return_authorization ||= begin
17
+ require 'spree/core/state_machines/return_authorization'
18
+ 'Spree::Core::StateMachines::ReturnAuthorization'
19
+ end
20
+
21
+ @return_authorization.constantize
22
+ end
23
+
24
+ def return_item_reception
25
+ @return_item_reception_status ||= begin
26
+ require 'spree/core/state_machines/return_item/reception_status'
27
+ 'Spree::Core::StateMachines::ReturnItem::ReceptionStatus'
28
+ end
29
+
30
+ @return_item_reception_status.constantize
31
+ end
32
+
33
+ def return_item_acceptance
34
+ @return_item_acceptance_status ||= begin
35
+ require 'spree/core/state_machines/return_item/acceptance_status'
36
+ 'Spree::Core::StateMachines::ReturnItem::AcceptanceStatus'
37
+ end
38
+
39
+ @return_item_acceptance_status.constantize
40
+ end
41
+
42
+ def payment
43
+ @payment ||= begin
44
+ require 'spree/core/state_machines/payment'
45
+ 'Spree::Core::StateMachines::Payment'
46
+ end
47
+
48
+ @payment.constantize
49
+ end
50
+
51
+ def inventory_unit
52
+ @inventory_unit ||= begin
53
+ require 'spree/core/state_machines/inventory_unit'
54
+ 'Spree::Core::StateMachines::InventoryUnit'
55
+ end
56
+
57
+ @inventory_unit.constantize
58
+ end
59
+
60
+ def shipment
61
+ @shipment ||= begin
62
+ require 'spree/core/state_machines/shipment'
63
+ 'Spree::Core::StateMachines::Shipment'
64
+ end
65
+
66
+ @shipment.constantize
67
+ end
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
+
87
+ def reimbursement
88
+ @reimbursement ||= begin
89
+ require 'spree/core/state_machines/reimbursement'
90
+ 'Spree::Core::StateMachines::Reimbursement'
91
+ end
92
+
93
+ @reimbursement.constantize
94
+ end
95
+ end
96
+ end
97
+ end