solidus_core 2.10.0 → 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 (495) 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/attachment.rb +69 -0
  7. data/app/models/concerns/spree/active_storage_adapter/normalization.rb +39 -0
  8. data/app/models/concerns/spree/active_storage_adapter.rb +116 -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/name.rb +49 -0
  15. data/app/models/spree/address/state_validator.rb +71 -0
  16. data/app/models/spree/address.rb +94 -17
  17. data/app/models/spree/adjustment.rb +1 -1
  18. data/app/models/spree/base.rb +1 -0
  19. data/app/models/spree/calculator/default_tax.rb +1 -1
  20. data/app/models/spree/calculator/percent_per_item.rb +4 -4
  21. data/app/models/spree/calculator/price_sack.rb +1 -1
  22. data/app/models/spree/credit_card.rb +2 -2
  23. data/app/models/spree/customer_return.rb +4 -2
  24. data/app/models/spree/exchange.rb +1 -1
  25. data/app/models/spree/image/active_storage_attachment.rb +21 -0
  26. data/app/models/spree/inventory_unit.rb +1 -1
  27. data/app/models/spree/line_item.rb +13 -4
  28. data/app/models/spree/option_type.rb +1 -1
  29. data/app/models/spree/option_value.rb +2 -2
  30. data/app/models/spree/order/checkout.rb +1 -0
  31. data/app/models/spree/order.rb +91 -20
  32. data/app/models/spree/order_inventory.rb +16 -4
  33. data/app/models/spree/order_merger.rb +6 -4
  34. data/app/models/spree/order_promotion.rb +1 -1
  35. data/app/models/spree/order_updater.rb +11 -10
  36. data/app/models/spree/payment/cancellation.rb +3 -3
  37. data/app/models/spree/payment/processing.rb +54 -30
  38. data/app/models/spree/payment.rb +3 -3
  39. data/app/models/spree/payment_method.rb +8 -9
  40. data/app/models/spree/preference.rb +1 -1
  41. data/app/models/spree/price.rb +2 -8
  42. data/app/models/spree/product/scopes.rb +10 -5
  43. data/app/models/spree/product.rb +19 -14
  44. data/app/models/spree/promotion/actions/free_shipping.rb +6 -5
  45. data/app/models/spree/promotion.rb +18 -7
  46. data/app/models/spree/promotion_action.rb +1 -7
  47. data/app/models/spree/promotion_code.rb +6 -1
  48. data/app/models/spree/promotion_code_batch.rb +1 -1
  49. data/app/models/spree/promotion_handler/coupon.rb +2 -2
  50. data/app/models/spree/promotion_rule.rb +1 -1
  51. data/app/models/spree/promotion_rule_role.rb +1 -1
  52. data/app/models/spree/refund.rb +54 -12
  53. data/app/models/spree/reimbursement.rb +27 -0
  54. data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +10 -3
  55. data/app/models/spree/return_authorization.rb +1 -1
  56. data/app/models/spree/return_item/exchange_variant_eligibility/same_option_value.rb +1 -1
  57. data/app/models/spree/return_item.rb +21 -10
  58. data/app/models/spree/role.rb +1 -1
  59. data/app/models/spree/shipment.rb +2 -2
  60. data/app/models/spree/shipping_calculator.rb +1 -1
  61. data/app/models/spree/shipping_manifest.rb +2 -2
  62. data/app/models/spree/shipping_method.rb +2 -9
  63. data/app/models/spree/shipping_rate.rb +1 -1
  64. data/app/models/spree/shipping_rate_tax.rb +1 -1
  65. data/app/models/spree/stock/inventory_unit_builder.rb +18 -7
  66. data/app/models/spree/stock/inventory_units_finalizer.rb +3 -5
  67. data/app/models/spree/stock/package.rb +1 -1
  68. data/app/models/spree/stock/simple_coordinator.rb +1 -3
  69. data/app/models/spree/stock_item.rb +2 -8
  70. data/app/models/spree/stock_movement.rb +2 -0
  71. data/app/models/spree/store.rb +1 -1
  72. data/app/models/spree/store_credit.rb +1 -7
  73. data/app/models/spree/store_credit_category.rb +30 -3
  74. data/app/models/spree/store_credit_event.rb +1 -7
  75. data/app/models/spree/store_credit_reason.rb +0 -4
  76. data/app/models/spree/tax/tax_helpers.rb +1 -1
  77. data/app/models/spree/tax_category.rb +2 -8
  78. data/app/models/spree/tax_rate.rb +7 -7
  79. data/app/models/spree/taxon/active_storage_attachment.rb +19 -0
  80. data/app/models/spree/taxon.rb +1 -1
  81. data/app/models/spree/user_address.rb +8 -2
  82. data/app/models/spree/variant.rb +7 -13
  83. data/app/models/spree/variant_property_rule.rb +5 -1
  84. data/app/models/spree/wallet/add_payment_sources_to_wallet.rb +8 -3
  85. data/app/models/spree/zone.rb +1 -1
  86. data/config/locales/en.yml +44 -5
  87. data/db/default/spree/countries.rb +1 -1
  88. data/db/default/spree/states.rb +12 -4
  89. data/db/default/spree/store_credit.rb +2 -2
  90. data/db/migrate/20180416083007_add_apply_to_all_to_variant_property_rule.rb +12 -0
  91. data/db/migrate/20200320144521_add_default_billng_flag_to_user_addresses.rb +6 -0
  92. data/db/migrate/20200530111458_add_bcc_email_to_spree_stores.rb +7 -0
  93. data/db/migrate/20201008213609_add_discontinue_on_to_spree_products.rb +7 -0
  94. data/lib/generators/solidus/install/install_generator.rb +253 -0
  95. data/lib/generators/{spree → solidus}/install/templates/config/initializers/spree.rb.tt +36 -5
  96. data/lib/generators/spree/install/install_generator.rb +7 -189
  97. data/lib/solidus/migrations/promotions_with_code_handlers.rb +1 -1
  98. data/lib/spree/app_configuration.rb +117 -51
  99. data/lib/spree/awesome_nested_set_override.rb +44 -0
  100. data/lib/spree/core/controller_helpers/auth.rb +17 -4
  101. data/lib/spree/core/controller_helpers/current_host.rb +17 -0
  102. data/lib/spree/core/controller_helpers/order.rb +8 -7
  103. data/lib/spree/core/controller_helpers/strong_parameters.rb +21 -7
  104. data/lib/spree/core/engine.rb +39 -2
  105. data/lib/spree/core/importer/order.rb +26 -11
  106. data/lib/spree/core/permalinks.rb +1 -3
  107. data/lib/spree/core/product_filters.rb +6 -5
  108. data/lib/spree/core/state_machines/order.rb +249 -0
  109. data/lib/spree/core/state_machines/return_item/reception_status.rb +2 -2
  110. data/lib/spree/core/state_machines.rb +20 -1
  111. data/lib/spree/core/version.rb +1 -1
  112. data/lib/spree/core.rb +5 -11
  113. data/lib/spree/encryptor.rb +25 -0
  114. data/lib/spree/event/adapters/active_support_notifications.rb +32 -0
  115. data/lib/spree/event/configuration.rb +11 -6
  116. data/lib/spree/event/subscriber.rb +38 -18
  117. data/lib/spree/event/subscriber_registry.rb +92 -0
  118. data/lib/spree/event.rb +40 -7
  119. data/lib/spree/i18n.rb +1 -1
  120. data/lib/spree/mailer_previews/carton_preview.rb +2 -1
  121. data/lib/spree/paranoia_deprecations.rb +32 -12
  122. data/lib/spree/permission_sets/configuration_display.rb +14 -14
  123. data/lib/spree/permission_sets/default_customer.rb +16 -16
  124. data/lib/spree/permission_sets/order_display.rb +11 -11
  125. data/lib/spree/permission_sets/order_management.rb +1 -1
  126. data/lib/spree/permission_sets/product_display.rb +9 -9
  127. data/lib/spree/permission_sets/promotion_display.rb +5 -5
  128. data/lib/spree/permission_sets/restricted_stock_display.rb +2 -2
  129. data/lib/spree/permission_sets/restricted_stock_management.rb +1 -1
  130. data/lib/spree/permission_sets/stock_display.rb +2 -2
  131. data/lib/spree/permission_sets/stock_management.rb +1 -1
  132. data/lib/spree/permission_sets/user_display.rb +3 -3
  133. data/lib/spree/permission_sets/user_management.rb +4 -3
  134. data/lib/spree/permitted_attributes.rb +79 -9
  135. data/lib/spree/preferences/preferable.rb +4 -3
  136. data/lib/spree/preferences/preferable_class_methods.rb +22 -3
  137. data/lib/spree/testing_support/ability_helpers.rb +9 -9
  138. data/lib/spree/testing_support/authorization_helpers.rb +1 -0
  139. data/lib/spree/testing_support/blacklist_urls.rb +23 -0
  140. data/lib/spree/testing_support/capybara_ext.rb +3 -0
  141. data/lib/spree/testing_support/common_rake.rb +3 -3
  142. data/lib/spree/testing_support/dummy_app/migrations.rb +5 -6
  143. data/lib/spree/testing_support/dummy_app/rake_tasks.rb +1 -3
  144. data/lib/spree/testing_support/dummy_app.rb +44 -23
  145. data/lib/spree/testing_support/factories/address_factory.rb +1 -2
  146. data/lib/spree/testing_support/factories/image_factory.rb +1 -1
  147. data/lib/spree/testing_support/factories/promotion_factory.rb +6 -0
  148. data/lib/spree/testing_support/factories/refund_factory.rb +1 -0
  149. data/lib/spree/testing_support/factories/reimbursement_factory.rb +1 -1
  150. data/lib/spree/testing_support/factories/return_item_factory.rb +0 -1
  151. data/lib/spree/testing_support/factories/store_credit_category_factory.rb +8 -0
  152. data/lib/spree/testing_support/factories/store_credit_event_factory.rb +1 -0
  153. data/lib/spree/testing_support/factories/store_credit_reason_factory.rb +3 -1
  154. data/lib/spree/testing_support/factories/taxon_factory.rb +4 -0
  155. data/lib/spree/testing_support/factories/user_factory.rb +4 -1
  156. data/lib/spree/testing_support/factories/zone_factory.rb +1 -1
  157. data/lib/spree/testing_support/job_helpers.rb +24 -0
  158. data/lib/spree/testing_support/precompiled_assets.rb +15 -0
  159. data/lib/spree/testing_support/preferences.rb +3 -1
  160. data/lib/spree/testing_support/shared_examples/gallery.rb +1 -1
  161. data/lib/spree/testing_support/translations.rb +25 -0
  162. data/solidus_core.gemspec +8 -5
  163. metadata +81 -359
  164. data/script/rails +0 -10
  165. data/spec/fixtures/thinking-cat.jpg +0 -0
  166. data/spec/helpers/base_helper_spec.rb +0 -168
  167. data/spec/helpers/products_helper_spec.rb +0 -202
  168. data/spec/helpers/taxons_helper_spec.rb +0 -43
  169. data/spec/jobs/promotion_code_batch_job_spec.rb +0 -96
  170. data/spec/lib/calculated_adjustments_spec.rb +0 -133
  171. data/spec/lib/i18n_spec.rb +0 -97
  172. data/spec/lib/search/base_spec.rb +0 -91
  173. data/spec/lib/search/variant_spec.rb +0 -115
  174. data/spec/lib/spree/app_configuration_spec.rb +0 -140
  175. data/spec/lib/spree/core/class_constantizer_spec.rb +0 -91
  176. data/spec/lib/spree/core/controller_helpers/auth_spec.rb +0 -73
  177. data/spec/lib/spree/core/controller_helpers/order_spec.rb +0 -126
  178. data/spec/lib/spree/core/controller_helpers/payment_parameters_spec.rb +0 -195
  179. data/spec/lib/spree/core/controller_helpers/pricing_spec.rb +0 -94
  180. data/spec/lib/spree/core/controller_helpers/search_spec.rb +0 -21
  181. data/spec/lib/spree/core/controller_helpers/store_spec.rb +0 -18
  182. data/spec/lib/spree/core/controller_helpers/strong_parameters_spec.rb +0 -41
  183. data/spec/lib/spree/core/current_store_spec.rb +0 -33
  184. data/spec/lib/spree/core/environment_extension_spec.rb +0 -46
  185. data/spec/lib/spree/core/importer/order_spec.rb +0 -484
  186. data/spec/lib/spree/core/role_configuration_spec.rb +0 -155
  187. data/spec/lib/spree/core/stock_configuration_spec.rb +0 -95
  188. data/spec/lib/spree/core/testing_support/factories/address_factory_spec.rb +0 -61
  189. data/spec/lib/spree/core/testing_support/factories/adjustment_factory_spec.rb +0 -20
  190. data/spec/lib/spree/core/testing_support/factories/adjustment_reason_factory_spec.rb +0 -14
  191. data/spec/lib/spree/core/testing_support/factories/calculator_factory_spec.rb +0 -44
  192. data/spec/lib/spree/core/testing_support/factories/carton_factory_spec.rb +0 -14
  193. data/spec/lib/spree/core/testing_support/factories/country_factory_spec.rb +0 -14
  194. data/spec/lib/spree/core/testing_support/factories/credit_card_factory_spec.rb +0 -14
  195. data/spec/lib/spree/core/testing_support/factories/customer_return_factory_spec.rb +0 -39
  196. data/spec/lib/spree/core/testing_support/factories/image_factory_spec.rb +0 -14
  197. data/spec/lib/spree/core/testing_support/factories/inventory_unit_factory_spec.rb +0 -14
  198. data/spec/lib/spree/core/testing_support/factories/line_item_factory_spec.rb +0 -14
  199. data/spec/lib/spree/core/testing_support/factories/option_type_factory_spec.rb +0 -14
  200. data/spec/lib/spree/core/testing_support/factories/option_value_factory_spec.rb +0 -14
  201. data/spec/lib/spree/core/testing_support/factories/order_factory_spec.rb +0 -376
  202. data/spec/lib/spree/core/testing_support/factories/order_promotion_factory_spec.rb +0 -14
  203. data/spec/lib/spree/core/testing_support/factories/payment_factory_spec.rb +0 -40
  204. data/spec/lib/spree/core/testing_support/factories/payment_method_factory_spec.rb +0 -32
  205. data/spec/lib/spree/core/testing_support/factories/price_factory_spec.rb +0 -14
  206. data/spec/lib/spree/core/testing_support/factories/product_factory_spec.rb +0 -32
  207. data/spec/lib/spree/core/testing_support/factories/product_option_type_factory_spec.rb +0 -14
  208. data/spec/lib/spree/core/testing_support/factories/product_property_factory_spec.rb +0 -14
  209. data/spec/lib/spree/core/testing_support/factories/promotion_category_factory_spec.rb +0 -14
  210. data/spec/lib/spree/core/testing_support/factories/promotion_code_factory_spec.rb +0 -14
  211. data/spec/lib/spree/core/testing_support/factories/promotion_factory_spec.rb +0 -32
  212. data/spec/lib/spree/core/testing_support/factories/property_factory_spec.rb +0 -14
  213. data/spec/lib/spree/core/testing_support/factories/refund_factory_spec.rb +0 -14
  214. data/spec/lib/spree/core/testing_support/factories/refund_reason_factory_spec.rb +0 -14
  215. data/spec/lib/spree/core/testing_support/factories/reimbursement_factory_spec.rb +0 -20
  216. data/spec/lib/spree/core/testing_support/factories/reimbursement_type_factory_spec.rb +0 -14
  217. data/spec/lib/spree/core/testing_support/factories/return_authorization_factory_spec.rb +0 -14
  218. data/spec/lib/spree/core/testing_support/factories/return_item_factory_spec.rb +0 -20
  219. data/spec/lib/spree/core/testing_support/factories/return_reason_factory_spec.rb +0 -14
  220. data/spec/lib/spree/core/testing_support/factories/role_factory_spec.rb +0 -20
  221. data/spec/lib/spree/core/testing_support/factories/shipment_factory_spec.rb +0 -14
  222. data/spec/lib/spree/core/testing_support/factories/shipping_category_factory_spec.rb +0 -14
  223. data/spec/lib/spree/core/testing_support/factories/shipping_method_factory_spec.rb +0 -44
  224. data/spec/lib/spree/core/testing_support/factories/shipping_rate_factory_spec.rb +0 -14
  225. data/spec/lib/spree/core/testing_support/factories/state_factory_spec.rb +0 -59
  226. data/spec/lib/spree/core/testing_support/factories/stock_item_factory_spec.rb +0 -14
  227. data/spec/lib/spree/core/testing_support/factories/stock_location_factory_spec.rb +0 -35
  228. data/spec/lib/spree/core/testing_support/factories/stock_movement_factory_spec.rb +0 -14
  229. data/spec/lib/spree/core/testing_support/factories/stock_package_factory_spec.rb +0 -28
  230. data/spec/lib/spree/core/testing_support/factories/store_credit_category_factory_spec.rb +0 -14
  231. data/spec/lib/spree/core/testing_support/factories/store_credit_event_factory_spec.rb +0 -43
  232. data/spec/lib/spree/core/testing_support/factories/store_credit_factory_spec.rb +0 -14
  233. data/spec/lib/spree/core/testing_support/factories/store_credit_reason_factory_spec.rb +0 -14
  234. data/spec/lib/spree/core/testing_support/factories/store_credit_type_factory_spec.rb +0 -20
  235. data/spec/lib/spree/core/testing_support/factories/store_factory_spec.rb +0 -14
  236. data/spec/lib/spree/core/testing_support/factories/tax_category_factory_spec.rb +0 -14
  237. data/spec/lib/spree/core/testing_support/factories/tax_rate_factory_spec.rb +0 -14
  238. data/spec/lib/spree/core/testing_support/factories/taxon_factory_spec.rb +0 -14
  239. data/spec/lib/spree/core/testing_support/factories/taxonomy_factory_spec.rb +0 -14
  240. data/spec/lib/spree/core/testing_support/factories/user_factory_spec.rb +0 -24
  241. data/spec/lib/spree/core/testing_support/factories/variant_factory_spec.rb +0 -56
  242. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_condition_factory_spec.rb +0 -14
  243. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_factory_spec.rb +0 -14
  244. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_value_factory_spec.rb +0 -14
  245. data/spec/lib/spree/core/testing_support/factories/zone_factory_spec.rb +0 -20
  246. data/spec/lib/spree/core/testing_support/preferences_spec.rb +0 -61
  247. data/spec/lib/spree/core/validators/email_spec.rb +0 -53
  248. data/spec/lib/spree/core/version_spec.rb +0 -19
  249. data/spec/lib/spree/event/subscriber_spec.rb +0 -85
  250. data/spec/lib/spree/event_spec.rb +0 -130
  251. data/spec/lib/spree/localized_number_spec.rb +0 -45
  252. data/spec/lib/spree/migrations_spec.rb +0 -32
  253. data/spec/lib/spree/money_spec.rb +0 -298
  254. data/spec/lib/spree/permission_sets/default_customer_spec.rb +0 -22
  255. data/spec/lib/spree/promo/environment_spec.rb +0 -53
  256. data/spec/lib/tasks/dummy_task.rake +0 -12
  257. data/spec/lib/tasks/dummy_task_spec.rb +0 -30
  258. data/spec/lib/tasks/migrations/migrate_shipping_rate_taxes_spec.rb +0 -21
  259. data/spec/mailers/carton_mailer_spec.rb +0 -44
  260. data/spec/mailers/order_mailer_spec.rb +0 -117
  261. data/spec/mailers/promotion_code_batch_mailer_spec.rb +0 -47
  262. data/spec/mailers/reimbursement_mailer_spec.rb +0 -36
  263. data/spec/mailers/test_mailer_spec.rb +0 -13
  264. data/spec/models/spree/ability_spec.rb +0 -279
  265. data/spec/models/spree/address_spec.rb +0 -399
  266. data/spec/models/spree/adjustment_reason_spec.rb +0 -11
  267. data/spec/models/spree/adjustment_spec.rb +0 -339
  268. data/spec/models/spree/asset_spec.rb +0 -25
  269. data/spec/models/spree/calculator/default_tax_spec.rb +0 -260
  270. data/spec/models/spree/calculator/distributed_amount_spec.rb +0 -82
  271. data/spec/models/spree/calculator/flat_percent_item_total_spec.rb +0 -39
  272. data/spec/models/spree/calculator/flat_rate_spec.rb +0 -52
  273. data/spec/models/spree/calculator/flexi_rate_spec.rb +0 -158
  274. data/spec/models/spree/calculator/free_shipping_spec.rb +0 -8
  275. data/spec/models/spree/calculator/percent_on_line_item_spec.rb +0 -20
  276. data/spec/models/spree/calculator/percent_per_item_spec.rb +0 -12
  277. data/spec/models/spree/calculator/price_sack_spec.rb +0 -35
  278. data/spec/models/spree/calculator/refunds/default_refund_amount_spec.rb +0 -70
  279. data/spec/models/spree/calculator/shipping/flat_percent_item_total_spec.rb +0 -44
  280. data/spec/models/spree/calculator/shipping/flat_rate_spec.rb +0 -18
  281. data/spec/models/spree/calculator/shipping/flexi_rate_spec.rb +0 -56
  282. data/spec/models/spree/calculator/shipping/per_item_spec.rb +0 -25
  283. data/spec/models/spree/calculator/shipping/price_sack_spec.rb +0 -44
  284. data/spec/models/spree/calculator/tiered_flat_rate_spec.rb +0 -99
  285. data/spec/models/spree/calculator/tiered_percent_spec.rb +0 -197
  286. data/spec/models/spree/calculator_spec.rb +0 -43
  287. data/spec/models/spree/carton_spec.rb +0 -145
  288. data/spec/models/spree/classification_spec.rb +0 -126
  289. data/spec/models/spree/concerns/display_money_spec.rb +0 -44
  290. data/spec/models/spree/concerns/ordered_property_value_list_spec.rb +0 -52
  291. data/spec/models/spree/concerns/user_address_book_spec.rb +0 -358
  292. data/spec/models/spree/concerns/user_methods_spec.rb +0 -122
  293. data/spec/models/spree/country_spec.rb +0 -154
  294. data/spec/models/spree/credit_card_spec.rb +0 -373
  295. data/spec/models/spree/customer_return_spec.rb +0 -294
  296. data/spec/models/spree/distributed_amounts_handler_spec.rb +0 -83
  297. data/spec/models/spree/exchange_spec.rb +0 -76
  298. data/spec/models/spree/fulfilment_changer_spec.rb +0 -340
  299. data/spec/models/spree/gallery/product_gallery_spec.rb +0 -21
  300. data/spec/models/spree/gallery/variant_gallery_spec.rb +0 -21
  301. data/spec/models/spree/gateway/bogus_simple.rb +0 -14
  302. data/spec/models/spree/gateway/bogus_spec.rb +0 -14
  303. data/spec/models/spree/gateway_spec.rb +0 -14
  304. data/spec/models/spree/image_spec.rb +0 -25
  305. data/spec/models/spree/inventory_unit_spec.rb +0 -309
  306. data/spec/models/spree/line_item_spec.rb +0 -240
  307. data/spec/models/spree/option_type_spec.rb +0 -16
  308. data/spec/models/spree/option_value_spec.rb +0 -52
  309. data/spec/models/spree/order/address_spec.rb +0 -52
  310. data/spec/models/spree/order/adjustments_spec.rb +0 -29
  311. data/spec/models/spree/order/callbacks_spec.rb +0 -44
  312. data/spec/models/spree/order/checkout_spec.rb +0 -740
  313. data/spec/models/spree/order/finalizing_spec.rb +0 -92
  314. data/spec/models/spree/order/number_generator_spec.rb +0 -47
  315. data/spec/models/spree/order/outstanding_balance_integration_spec.rb +0 -138
  316. data/spec/models/spree/order/payment_spec.rb +0 -280
  317. data/spec/models/spree/order/risk_assessment_spec.rb +0 -70
  318. data/spec/models/spree/order/state_machine_spec.rb +0 -122
  319. data/spec/models/spree/order/totals_spec.rb +0 -26
  320. data/spec/models/spree/order/validations_spec.rb +0 -17
  321. data/spec/models/spree/order_cancellations_spec.rb +0 -233
  322. data/spec/models/spree/order_capturing_spec.rb +0 -16
  323. data/spec/models/spree/order_contents_spec.rb +0 -362
  324. data/spec/models/spree/order_inventory_spec.rb +0 -285
  325. data/spec/models/spree/order_merger_spec.rb +0 -162
  326. data/spec/models/spree/order_mutex_spec.rb +0 -89
  327. data/spec/models/spree/order_promotion_spec.rb +0 -33
  328. data/spec/models/spree/order_shipping_spec.rb +0 -247
  329. data/spec/models/spree/order_spec.rb +0 -1687
  330. data/spec/models/spree/order_taxation_spec.rb +0 -128
  331. data/spec/models/spree/order_update_attributes_spec.rb +0 -49
  332. data/spec/models/spree/order_updater_spec.rb +0 -556
  333. data/spec/models/spree/payment/cancellation_spec.rb +0 -84
  334. data/spec/models/spree/payment_create_spec.rb +0 -195
  335. data/spec/models/spree/payment_method/bogus_credit_card_spec.rb +0 -10
  336. data/spec/models/spree/payment_method/check_spec.rb +0 -80
  337. data/spec/models/spree/payment_method/credit_card_spec.rb +0 -68
  338. data/spec/models/spree/payment_method/simple_bogus_credit_card_spec.rb +0 -20
  339. data/spec/models/spree/payment_method/store_credit_spec.rb +0 -325
  340. data/spec/models/spree/payment_method_spec.rb +0 -408
  341. data/spec/models/spree/payment_spec.rb +0 -1270
  342. data/spec/models/spree/permission_sets/base_spec.rb +0 -14
  343. data/spec/models/spree/permission_sets/configuration_display.rb +0 -79
  344. data/spec/models/spree/permission_sets/configuration_management_spec.rb +0 -49
  345. data/spec/models/spree/permission_sets/dashboard_display_spec.rb +0 -23
  346. data/spec/models/spree/permission_sets/order_display_spec.rb +0 -56
  347. data/spec/models/spree/permission_sets/order_management_spec.rb +0 -43
  348. data/spec/models/spree/permission_sets/product_display_spec.rb +0 -57
  349. data/spec/models/spree/permission_sets/product_management_spec.rb +0 -39
  350. data/spec/models/spree/permission_sets/promotion_display_spec.rb +0 -41
  351. data/spec/models/spree/permission_sets/promotion_management_spec.rb +0 -29
  352. data/spec/models/spree/permission_sets/restricted_stock_display_spec.rb +0 -42
  353. data/spec/models/spree/permission_sets/restricted_stock_management_spec.rb +0 -42
  354. data/spec/models/spree/permission_sets/stock_display_spec.rb +0 -25
  355. data/spec/models/spree/permission_sets/stock_management_spec.rb +0 -23
  356. data/spec/models/spree/permission_sets/user_display_spec.rb +0 -39
  357. data/spec/models/spree/permission_sets/user_management_spec.rb +0 -58
  358. data/spec/models/spree/preference_spec.rb +0 -79
  359. data/spec/models/spree/preferences/configuration_spec.rb +0 -27
  360. data/spec/models/spree/preferences/preferable_spec.rb +0 -334
  361. data/spec/models/spree/preferences/scoped_store_spec.rb +0 -62
  362. data/spec/models/spree/preferences/static_model_preferences_spec.rb +0 -79
  363. data/spec/models/spree/preferences/statically_configurable_spec.rb +0 -67
  364. data/spec/models/spree/preferences/store_spec.rb +0 -40
  365. data/spec/models/spree/price_spec.rb +0 -150
  366. data/spec/models/spree/product/scopes_spec.rb +0 -164
  367. data/spec/models/spree/product_duplicator_spec.rb +0 -92
  368. data/spec/models/spree/product_filter_spec.rb +0 -28
  369. data/spec/models/spree/product_property_spec.rb +0 -20
  370. data/spec/models/spree/product_spec.rb +0 -584
  371. data/spec/models/spree/promotion/actions/create_adjustment_spec.rb +0 -126
  372. data/spec/models/spree/promotion/actions/create_item_adjustments_spec.rb +0 -198
  373. data/spec/models/spree/promotion/actions/create_quantity_adjustments_spec.rb +0 -298
  374. data/spec/models/spree/promotion/actions/free_shipping_spec.rb +0 -61
  375. data/spec/models/spree/promotion/rules/first_order_spec.rb +0 -87
  376. data/spec/models/spree/promotion/rules/first_repeat_purchase_since_spec.rb +0 -71
  377. data/spec/models/spree/promotion/rules/item_total_spec.rb +0 -128
  378. data/spec/models/spree/promotion/rules/nth_order_spec.rb +0 -72
  379. data/spec/models/spree/promotion/rules/one_use_per_user_spec.rb +0 -54
  380. data/spec/models/spree/promotion/rules/option_value_spec.rb +0 -96
  381. data/spec/models/spree/promotion/rules/product_spec.rb +0 -193
  382. data/spec/models/spree/promotion/rules/store_spec.rb +0 -35
  383. data/spec/models/spree/promotion/rules/taxon_spec.rb +0 -226
  384. data/spec/models/spree/promotion/rules/user_logged_in_spec.rb +0 -33
  385. data/spec/models/spree/promotion/rules/user_role_spec.rb +0 -88
  386. data/spec/models/spree/promotion/rules/user_spec.rb +0 -39
  387. data/spec/models/spree/promotion_action_spec.rb +0 -44
  388. data/spec/models/spree/promotion_category_spec.rb +0 -19
  389. data/spec/models/spree/promotion_code/batch_builder_spec.rb +0 -107
  390. data/spec/models/spree/promotion_code_batch_spec.rb +0 -54
  391. data/spec/models/spree/promotion_code_spec.rb +0 -206
  392. data/spec/models/spree/promotion_handler/cart_spec.rb +0 -132
  393. data/spec/models/spree/promotion_handler/coupon_spec.rb +0 -419
  394. data/spec/models/spree/promotion_handler/page_spec.rb +0 -45
  395. data/spec/models/spree/promotion_handler/shipping_spec.rb +0 -96
  396. data/spec/models/spree/promotion_rule_spec.rb +0 -34
  397. data/spec/models/spree/promotion_spec.rb +0 -945
  398. data/spec/models/spree/refund_spec.rb +0 -200
  399. data/spec/models/spree/reimbursement/credit_spec.rb +0 -38
  400. data/spec/models/spree/reimbursement/reimbursement_type_engine_spec.rb +0 -144
  401. data/spec/models/spree/reimbursement/reimbursement_type_validator_spec.rb +0 -85
  402. data/spec/models/spree/reimbursement_performer_spec.rb +0 -33
  403. data/spec/models/spree/reimbursement_spec.rb +0 -278
  404. data/spec/models/spree/reimbursement_tax_calculator_spec.rb +0 -52
  405. data/spec/models/spree/reimbursement_type/credit_spec.rb +0 -56
  406. data/spec/models/spree/reimbursement_type/exchange_spec.rb +0 -48
  407. data/spec/models/spree/reimbursement_type/original_payment_spec.rb +0 -110
  408. data/spec/models/spree/reimbursement_type/store_credit_spec.rb +0 -111
  409. data/spec/models/spree/return_authorization_spec.rb +0 -226
  410. data/spec/models/spree/return_item/eligibility_validator/default_spec.rb +0 -79
  411. data/spec/models/spree/return_item/eligibility_validator/inventory_shipped_spec.rb +0 -59
  412. data/spec/models/spree/return_item/eligibility_validator/no_reimbursements_spec.rb +0 -86
  413. data/spec/models/spree/return_item/eligibility_validator/order_completed_spec.rb +0 -35
  414. data/spec/models/spree/return_item/eligibility_validator/rma_required_spec.rb +0 -31
  415. data/spec/models/spree/return_item/eligibility_validator/time_since_purchase_spec.rb +0 -42
  416. data/spec/models/spree/return_item/exchange_variant_eligibility/same_option_value_spec.rb +0 -66
  417. data/spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb +0 -43
  418. data/spec/models/spree/return_item_spec.rb +0 -785
  419. data/spec/models/spree/returns_calculator_spec.rb +0 -16
  420. data/spec/models/spree/shipment_spec.rb +0 -914
  421. data/spec/models/spree/shipping_calculator_spec.rb +0 -45
  422. data/spec/models/spree/shipping_manifest_spec.rb +0 -110
  423. data/spec/models/spree/shipping_method_spec.rb +0 -292
  424. data/spec/models/spree/shipping_rate_spec.rb +0 -154
  425. data/spec/models/spree/shipping_rate_tax_spec.rb +0 -79
  426. data/spec/models/spree/state_spec.rb +0 -43
  427. data/spec/models/spree/stock/allocator/on_hand_first_spec.rb +0 -146
  428. data/spec/models/spree/stock/availability_spec.rb +0 -143
  429. data/spec/models/spree/stock/availability_validator_spec.rb +0 -140
  430. data/spec/models/spree/stock/content_item_spec.rb +0 -70
  431. data/spec/models/spree/stock/differentiator_spec.rb +0 -41
  432. data/spec/models/spree/stock/estimator_spec.rb +0 -241
  433. data/spec/models/spree/stock/inventory_unit_builder_spec.rb +0 -34
  434. data/spec/models/spree/stock/inventory_units_finalizer_spec.rb +0 -58
  435. data/spec/models/spree/stock/location_filter/active_spec.rb +0 -22
  436. data/spec/models/spree/stock/location_sorter/default_first_spec.rb +0 -22
  437. data/spec/models/spree/stock/location_sorter/unsorted_spec.rb +0 -21
  438. data/spec/models/spree/stock/package_spec.rb +0 -182
  439. data/spec/models/spree/stock/quantifier_spec.rb +0 -113
  440. data/spec/models/spree/stock/shipping_rate_selector_spec.rb +0 -18
  441. data/spec/models/spree/stock/shipping_rate_sorter_spec.rb +0 -18
  442. data/spec/models/spree/stock/simple_coordinator_spec.rb +0 -264
  443. data/spec/models/spree/stock/splitter/backordered_spec.rb +0 -31
  444. data/spec/models/spree/stock/splitter/base_spec.rb +0 -22
  445. data/spec/models/spree/stock/splitter/shipping_category_spec.rb +0 -48
  446. data/spec/models/spree/stock/splitter/weight_spec.rb +0 -31
  447. data/spec/models/spree/stock/splitter_chain_spec.rb +0 -66
  448. data/spec/models/spree/stock_item_spec.rb +0 -348
  449. data/spec/models/spree/stock_location_spec.rb +0 -288
  450. data/spec/models/spree/stock_movement_spec.rb +0 -58
  451. data/spec/models/spree/stock_quantities_spec.rb +0 -249
  452. data/spec/models/spree/store_credit_category_spec.rb +0 -19
  453. data/spec/models/spree/store_credit_event_spec.rb +0 -328
  454. data/spec/models/spree/store_credit_spec.rb +0 -900
  455. data/spec/models/spree/store_selector/by_server_name_spec.rb +0 -28
  456. data/spec/models/spree/store_selector/legacy_spec.rb +0 -46
  457. data/spec/models/spree/store_spec.rb +0 -156
  458. data/spec/models/spree/tax/order_adjuster_spec.rb +0 -35
  459. data/spec/models/spree/tax/shipping_rate_taxer_spec.rb +0 -59
  460. data/spec/models/spree/tax/tax_location_spec.rb +0 -79
  461. data/spec/models/spree/tax/taxation_integration_spec.rb +0 -815
  462. data/spec/models/spree/tax_calculator/default_spec.rb +0 -56
  463. data/spec/models/spree/tax_category_spec.rb +0 -50
  464. data/spec/models/spree/tax_rate_spec.rb +0 -317
  465. data/spec/models/spree/taxon_spec.rb +0 -197
  466. data/spec/models/spree/taxonomy_spec.rb +0 -15
  467. data/spec/models/spree/taxons/paperclip_attachment_spec.rb +0 -29
  468. data/spec/models/spree/unit_cancel_spec.rb +0 -126
  469. data/spec/models/spree/user_last_url_storer/rules/authentication_rule_spec.rb +0 -31
  470. data/spec/models/spree/user_last_url_storer_spec.rb +0 -60
  471. data/spec/models/spree/user_spec.rb +0 -247
  472. data/spec/models/spree/validations/db_maximum_length_validator_spec.rb +0 -33
  473. data/spec/models/spree/variant/price_selector_spec.rb +0 -90
  474. data/spec/models/spree/variant/pricing_options_spec.rb +0 -204
  475. data/spec/models/spree/variant/scopes_spec.rb +0 -94
  476. data/spec/models/spree/variant/vat_price_generator_spec.rb +0 -77
  477. data/spec/models/spree/variant_property_rule_condition_spec.rb +0 -17
  478. data/spec/models/spree/variant_property_rule_spec.rb +0 -85
  479. data/spec/models/spree/variant_property_rule_value_spec.rb +0 -20
  480. data/spec/models/spree/variant_spec.rb +0 -862
  481. data/spec/models/spree/wallet_payment_source_spec.rb +0 -77
  482. data/spec/models/spree/wallet_spec.rb +0 -155
  483. data/spec/models/spree/zone_spec.rb +0 -248
  484. data/spec/rails_helper.rb +0 -46
  485. data/spec/shared_examples/calculator_shared_examples.rb +0 -10
  486. data/spec/spec_helper.rb +0 -36
  487. data/spec/support/big_decimal.rb +0 -7
  488. data/spec/support/concerns/default_price.rb +0 -44
  489. data/spec/support/concerns/payment_source.rb +0 -66
  490. data/spec/support/concerns/working_factories.rb +0 -15
  491. data/spec/support/dummy_ability.rb +0 -7
  492. /data/lib/generators/{spree → solidus}/install/templates/vendor/assets/javascripts/spree/backend/all.js +0 -0
  493. /data/lib/generators/{spree → solidus}/install/templates/vendor/assets/javascripts/spree/frontend/all.js +0 -0
  494. /data/lib/generators/{spree → solidus}/install/templates/vendor/assets/stylesheets/spree/backend/all.css +0 -0
  495. /data/lib/generators/{spree → solidus}/install/templates/vendor/assets/stylesheets/spree/frontend/all.css +0 -0
data/lib/spree/event.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative 'event/adapters/active_support_notifications'
4
+ require_relative 'event/subscriber_registry'
4
5
  require_relative 'event/configuration'
5
6
  require_relative 'event/subscriber'
6
7
 
@@ -8,6 +9,8 @@ module Spree
8
9
  module Event
9
10
  extend self
10
11
 
12
+ delegate :activate_autoloadable_subscribers, :activate_all_subscribers, :deactivate_all_subscribers, to: :subscriber_registry
13
+
11
14
  # Allows to trigger events that can be subscribed using #subscribe. An
12
15
  # optional block can be passed that will be executed immediately. The
13
16
  # actual code implementation is delegated to the adapter.
@@ -21,16 +24,37 @@ module Spree
21
24
  # @order.finalize!
22
25
  # end
23
26
  def fire(event_name, opts = {})
24
- adapter.fire name_with_suffix(event_name.to_s), opts do
27
+ adapter.fire normalize_name(event_name), opts do
25
28
  yield opts if block_given?
26
29
  end
27
30
  end
28
31
 
32
+ # @deprecated Loads all Solidus' core and application's event subscribers files.
33
+ # The latter are loaded automatically only when the preference
34
+ # Spree::Config.events.autoload_subscribers is set to a truthy value.
35
+ #
36
+ # Files must be placed under the directory `app/subscribers` and their
37
+ # name must end with `_subscriber.rb`.
38
+ #
39
+ # Loading the files has the side effect of adding their module to the
40
+ # list in Spree::Event.subscribers.
41
+ def require_subscriber_files
42
+ Spree::Deprecation.warn("#{self}.require_subscriber_files is deprecated and will be removed in Solidus 3.0.", caller)
43
+ subscriber_registry.send(:require_subscriber_files)
44
+ end
45
+
29
46
  # Subscribe to an event with the given name. The provided block is executed
30
47
  # every time the subscribed event is fired.
31
48
  #
32
- # @param [String] event_name the name of the event. The suffix ".spree"
33
- # will be added automatically if not present
49
+ # @param [String, Regexp] event_name the name of the event.
50
+ # When String, the suffix ".spree" will be added automatically if not present,
51
+ # when using the default adapter for ActiveSupportNotifications.
52
+ # When Regexp, due to the unpredictability of all possible regexp combinations,
53
+ # adding the suffix is developer's responsibility (if you don't, you will
54
+ # subscribe to all notifications, including internal Rails notifications
55
+ # as well).
56
+ #
57
+ # @see Spree::Event::Adapters::ActiveSupportNotifications#normalize_name
34
58
  #
35
59
  # @return a subscription object that can be used as reference in order
36
60
  # to remove the subscription
@@ -43,7 +67,7 @@ module Spree
43
67
  #
44
68
  # @see Spree::Event#unsubscribe
45
69
  def subscribe(event_name, &block)
46
- name = name_with_suffix(event_name)
70
+ name = normalize_name(event_name)
47
71
  listener_names << name
48
72
  adapter.subscribe(name, &block)
49
73
  end
@@ -61,7 +85,7 @@ module Spree
61
85
  # @example Unsubscribe an event by name with explicit prefix
62
86
  # Spree::Event.unsubscribe('order_finalized.spree')
63
87
  def unsubscribe(subscriber)
64
- name_or_subscriber = subscriber.is_a?(String) ? name_with_suffix(subscriber) : subscriber
88
+ name_or_subscriber = subscriber.is_a?(String) ? normalize_name(subscriber) : subscriber
65
89
  adapter.unsubscribe(name_or_subscriber)
66
90
  end
67
91
 
@@ -95,19 +119,28 @@ module Spree
95
119
  #
96
120
  # @see Spree::Event::Configuration#suffix
97
121
  def suffix
122
+ Spree::Deprecation.warn "This method is deprecated and will be removed. Please use Event::Adapters::ActiveSupportNotifications#suffix"
98
123
  Spree::Config.events.suffix
99
124
  end
100
125
 
126
+ # @deprecated
101
127
  # @!attribute [r] subscribers
102
128
  # @return [Array<Spree::Event::Subscriber>] A list of subscribers used to support class reloading for Spree::Event::Subscriber instances
103
129
  def subscribers
130
+ Spree::Deprecation.warn("`#{self}.subscribers` is deprecated. Please use `#{self}.subscriber_registry` instead.", caller)
104
131
  Spree::Config.events.subscribers
105
132
  end
106
133
 
134
+ # @!attribute [r] subscribers
135
+ # @return <Spree::Event::SubscriberRegistry> The registry for supporting class reloading for Spree::Event::Subscriber instances
136
+ def subscriber_registry
137
+ Spree::Config.events.subscriber_registry
138
+ end
139
+
107
140
  private
108
141
 
109
- def name_with_suffix(name)
110
- name.end_with?(suffix) ? name : [name, suffix].join
142
+ def normalize_name(name)
143
+ adapter.normalize_name(name)
111
144
  end
112
145
 
113
146
  def listener_names
data/lib/spree/i18n.rb CHANGED
@@ -31,7 +31,7 @@ module Spree
31
31
  Instead use I18n.t('spree.your_translation_key')
32
32
  WARN
33
33
  options[:scope] = [:spree, *options[:scope]]
34
- TranslationHelperWrapper.new.translate(key, options)
34
+ TranslationHelperWrapper.new.translate(key, **options)
35
35
  end
36
36
 
37
37
  alias_method :t, :translate
@@ -5,7 +5,8 @@ module Spree
5
5
  class CartonPreview < ActionMailer::Preview
6
6
  def shipped
7
7
  carton = Carton.joins(:orders).last
8
- raise "Your database needs at one shipped order with a carton to render this preview" unless carton
8
+ raise "Your database needs at least one shipped order with a carton to render this preview" unless carton
9
+
9
10
  Spree::Config.carton_shipped_email_class.shipped_email(order: carton.orders.first, carton: carton)
10
11
  end
11
12
  end
@@ -2,20 +2,40 @@
2
2
 
3
3
  module Spree
4
4
  module ParanoiaDeprecations
5
- def paranoia_destroy
6
- Spree::Deprecation.warn <<-WARN.strip_heredoc, caller
7
- Calling #destroy (or #paranoia_destroy) on a #{self.class} currently performs a soft-destroy using the paranoia gem.
8
- In Solidus 3.0, paranoia will be removed, and this will perform a HARD destroy instead. To continue soft-deleting, use #discard instead.
9
- WARN
10
- super
5
+ module InstanceMethods
6
+ def paranoia_destroy
7
+ Spree::Deprecation.warn <<~WARN, caller
8
+ Calling #destroy (or #paranoia_destroy) on a #{self.class} currently performs a soft-destroy using the paranoia gem.
9
+ In Solidus 3.0, paranoia will be removed, and this will perform a HARD destroy instead. To continue soft-deleting, use #discard instead.
10
+ WARN
11
+ super
12
+ end
13
+
14
+ def paranoia_delete
15
+ Spree::Deprecation.warn <<~WARN, caller
16
+ Calling #delete (or #paranoia_delete) on a #{self.class} currently performs a soft-destroy using the paranoia gem.
17
+ In Solidus 3.0, paranoia will be removed, and this will perform a HARD destroy instead. To continue soft-deleting, use #discard instead.
18
+ WARN
19
+ super
20
+ end
11
21
  end
12
22
 
13
- def paranoia_delete
14
- Spree::Deprecation.warn <<-WARN.strip_heredoc, caller
15
- Calling #delete (or #paranoia_delete) on a #{self.class} currently performs a soft-destroy using the paranoia gem.
16
- In Solidus 3.0, paranoia will be removed, and this will perform a HARD destroy instead. To continue soft-deleting, use #discard instead.
17
- WARN
18
- super
23
+ module ClassMethods
24
+ def with_deleted
25
+ Spree::Deprecation.warn <<~WARN, caller
26
+ #{self}.with_deleted has been deprecated. Use #{self}.with_discarded instead.
27
+ In Solidus 3.0, paranoia will be removed, and this method will be replaced by #{self}.with_discarded.
28
+ WARN
29
+ super
30
+ end
31
+
32
+ def only_deleted
33
+ Spree::Deprecation.warn <<~WARN, caller
34
+ #{self}.only_deleted has been deprecated. Use #{self}.discarded instead.
35
+ In Solidus 3.0, paranoia will be removed, and this method will be replaced by #{self}.discarded.
36
+ WARN
37
+ super
38
+ end
19
39
  end
20
40
  end
21
41
  end
@@ -5,20 +5,20 @@ module Spree
5
5
  class ConfigurationDisplay < PermissionSets::Base
6
6
  def activate!
7
7
  can [:edit, :admin], :general_settings
8
- can [:display, :admin], Spree::TaxCategory
9
- can [:display, :admin], Spree::TaxRate
10
- can [:display, :admin], Spree::Zone
11
- can [:display, :admin], Spree::Country
12
- can [:display, :admin], Spree::State
13
- can [:display, :admin], Spree::PaymentMethod
14
- can [:display, :admin], Spree::Taxonomy
15
- can [:display, :admin], Spree::ShippingMethod
16
- can [:display, :admin], Spree::ShippingCategory
17
- can [:display, :admin], Spree::StockLocation
18
- can [:display, :admin], Spree::StockMovement
19
- can [:display, :admin], Spree::RefundReason
20
- can [:display, :admin], Spree::ReimbursementType
21
- can [:display, :admin], Spree::ReturnReason
8
+ can [:read, :admin], Spree::TaxCategory
9
+ can [:read, :admin], Spree::TaxRate
10
+ can [:read, :admin], Spree::Zone
11
+ can [:read, :admin], Spree::Country
12
+ can [:read, :admin], Spree::State
13
+ can [:read, :admin], Spree::PaymentMethod
14
+ can [:read, :admin], Spree::Taxonomy
15
+ can [:read, :admin], Spree::ShippingMethod
16
+ can [:read, :admin], Spree::ShippingCategory
17
+ can [:read, :admin], Spree::StockLocation
18
+ can [:read, :admin], Spree::StockMovement
19
+ can [:read, :admin], Spree::RefundReason
20
+ can [:read, :admin], Spree::ReimbursementType
21
+ can [:read, :admin], Spree::ReturnReason
22
22
  end
23
23
  end
24
24
  end
@@ -4,11 +4,11 @@ module Spree
4
4
  module PermissionSets
5
5
  class DefaultCustomer < PermissionSets::Base
6
6
  def activate!
7
- can :display, Country
8
- can :display, OptionType
9
- can :display, OptionValue
7
+ can :read, Country
8
+ can :read, OptionType
9
+ can :read, OptionValue
10
10
  can :create, Order
11
- can [:read, :update], Order, Order.where(user: user) do |order, token|
11
+ can [:show, :update], Order, Order.where(user: user) do |order, token|
12
12
  order.user == user || (order.guest_token.present? && token == order.guest_token)
13
13
  end
14
14
  cannot :update, Order do |order|
@@ -17,20 +17,20 @@ module Spree
17
17
  can :create, ReturnAuthorization do |return_authorization|
18
18
  return_authorization.order.user == user
19
19
  end
20
- can [:display, :update], CreditCard, user_id: user.id
21
- can :display, Product
22
- can :display, ProductProperty
23
- can :display, Property
20
+ can [:read, :update], CreditCard, user_id: user.id
21
+ can :read, Product
22
+ can :read, ProductProperty
23
+ can :read, Property
24
24
  can :create, Spree.user_class
25
- can [:read, :update, :update_email], Spree.user_class, id: user.id
26
- can :display, State
27
- can :display, StockItem, stock_location: { active: true }
28
- can :display, StockLocation, active: true
29
- can :display, Taxon
30
- can :display, Taxonomy
25
+ can [:show, :update, :update_email], Spree.user_class, id: user.id
26
+ can :read, State
27
+ can :read, StockItem, stock_location: { active: true }
28
+ can :read, StockLocation, active: true
29
+ can :read, Taxon
30
+ can :read, Taxonomy
31
31
  can [:save_in_address_book, :remove_from_address_book], Spree.user_class, id: user.id
32
- can [:display, :view_out_of_stock], Variant
33
- can :display, Zone
32
+ can [:read, :view_out_of_stock], Variant
33
+ can :read, Zone
34
34
  end
35
35
  end
36
36
  end
@@ -4,17 +4,17 @@ module Spree
4
4
  module PermissionSets
5
5
  class OrderDisplay < PermissionSets::Base
6
6
  def activate!
7
- can [:display, :admin, :edit, :cart], Spree::Order
8
- can [:display, :admin], Spree::Payment
9
- can [:display, :admin], Spree::Shipment
10
- can [:display, :admin], Spree::Adjustment
11
- can [:display, :admin], Spree::LineItem
12
- can [:display, :admin], Spree::ReturnAuthorization
13
- can [:display, :admin], Spree::CustomerReturn
14
- can [:display, :admin], Spree::OrderCancellations
15
- can [:display, :admin], Spree::Reimbursement
16
- can [:display, :admin], Spree::ReturnItem
17
- can [:display, :admin], Spree::Refund
7
+ can [:read, :admin, :edit, :cart], Spree::Order
8
+ can [:read, :admin], Spree::Payment
9
+ can [:read, :admin], Spree::Shipment
10
+ can [:read, :admin], Spree::Adjustment
11
+ can [:read, :admin], Spree::LineItem
12
+ can [:read, :admin], Spree::ReturnAuthorization
13
+ can [:read, :admin], Spree::CustomerReturn
14
+ can [:read, :admin], Spree::OrderCancellations
15
+ can [:read, :admin], Spree::Reimbursement
16
+ can [:read, :admin], Spree::ReturnItem
17
+ can [:read, :admin], Spree::Refund
18
18
  end
19
19
  end
20
20
  end
@@ -4,7 +4,7 @@ module Spree
4
4
  module PermissionSets
5
5
  class OrderManagement < PermissionSets::Base
6
6
  def activate!
7
- can :display, Spree::ReimbursementType
7
+ can :read, Spree::ReimbursementType
8
8
  can :manage, Spree::Order
9
9
  can :manage, Spree::Payment
10
10
  can :manage, Spree::Shipment
@@ -4,15 +4,15 @@ module Spree
4
4
  module PermissionSets
5
5
  class ProductDisplay < PermissionSets::Base
6
6
  def activate!
7
- can [:display, :admin, :edit], Spree::Product
8
- can [:display, :admin], Spree::Image
9
- can [:display, :admin], Spree::Variant
10
- can [:display, :admin], Spree::OptionValue
11
- can [:display, :admin], Spree::ProductProperty
12
- can [:display, :admin], Spree::OptionType
13
- can [:display, :admin], Spree::Property
14
- can [:display, :admin], Spree::Taxonomy
15
- can [:display, :admin], Spree::Taxon
7
+ can [:read, :admin, :edit], Spree::Product
8
+ can [:read, :admin], Spree::Image
9
+ can [:read, :admin], Spree::Variant
10
+ can [:read, :admin], Spree::OptionValue
11
+ can [:read, :admin], Spree::ProductProperty
12
+ can [:read, :admin], Spree::OptionType
13
+ can [:read, :admin], Spree::Property
14
+ can [:read, :admin], Spree::Taxonomy
15
+ can [:read, :admin], Spree::Taxon
16
16
  end
17
17
  end
18
18
  end
@@ -4,11 +4,11 @@ module Spree
4
4
  module PermissionSets
5
5
  class PromotionDisplay < PermissionSets::Base
6
6
  def activate!
7
- can [:display, :admin, :edit], Spree::Promotion
8
- can [:display, :admin], Spree::PromotionRule
9
- can [:display, :admin], Spree::PromotionAction
10
- can [:display, :admin], Spree::PromotionCategory
11
- can [:display, :admin], Spree::PromotionCode
7
+ can [:read, :admin, :edit], Spree::Promotion
8
+ can [:read, :admin], Spree::PromotionRule
9
+ can [:read, :admin], Spree::PromotionAction
10
+ can [:read, :admin], Spree::PromotionCategory
11
+ can [:read, :admin], Spree::PromotionCode
12
12
  end
13
13
  end
14
14
  end
@@ -4,8 +4,8 @@ module Spree
4
4
  module PermissionSets
5
5
  class RestrictedStockDisplay < PermissionSets::Base
6
6
  def activate!
7
- can [:display, :admin], Spree::StockItem, stock_location_id: location_ids
8
- can :display, Spree::StockLocation, id: location_ids
7
+ can [:read, :admin], Spree::StockItem, stock_location_id: location_ids
8
+ can :read, Spree::StockLocation, id: location_ids
9
9
  end
10
10
 
11
11
  private
@@ -5,7 +5,7 @@ module Spree
5
5
  class RestrictedStockManagement < PermissionSets::Base
6
6
  def activate!
7
7
  can :manage, Spree::StockItem, stock_location_id: location_ids
8
- can :display, Spree::StockLocation, id: location_ids
8
+ can :read, Spree::StockLocation, id: location_ids
9
9
  end
10
10
 
11
11
  private
@@ -4,8 +4,8 @@ module Spree
4
4
  module PermissionSets
5
5
  class StockDisplay < PermissionSets::Base
6
6
  def activate!
7
- can [:display, :admin], Spree::StockItem
8
- can :display, Spree::StockLocation
7
+ can [:read, :admin], Spree::StockItem
8
+ can :read, Spree::StockLocation
9
9
  end
10
10
  end
11
11
  end
@@ -5,7 +5,7 @@ module Spree
5
5
  class StockManagement < PermissionSets::Base
6
6
  def activate!
7
7
  can :manage, Spree::StockItem
8
- can :display, Spree::StockLocation
8
+ can :read, Spree::StockLocation
9
9
  end
10
10
  end
11
11
  end
@@ -4,9 +4,9 @@ module Spree
4
4
  module PermissionSets
5
5
  class UserDisplay < PermissionSets::Base
6
6
  def activate!
7
- can [:display, :admin, :edit, :addresses, :orders, :items], Spree.user_class
8
- can [:display, :admin], Spree::StoreCredit
9
- can :display, Spree::Role
7
+ can [:read, :admin, :edit, :addresses, :orders, :items], Spree.user_class
8
+ can [:read, :admin], Spree::StoreCredit
9
+ can :read, Spree::Role
10
10
  end
11
11
  end
12
12
  end
@@ -4,7 +4,7 @@ module Spree
4
4
  module PermissionSets
5
5
  class UserManagement < PermissionSets::Base
6
6
  def activate!
7
- can [:admin, :display, :create, :update, :save_in_address_book, :remove_from_address_book, :addresses, :orders, :items], Spree.user_class
7
+ can [:admin, :read, :create, :update, :save_in_address_book, :remove_from_address_book, :addresses, :orders, :items], Spree.user_class
8
8
 
9
9
  # Note: This does not work with accessible_by.
10
10
  # See https://github.com/solidusio/solidus/pull/1263
@@ -15,9 +15,10 @@ module Spree
15
15
  user.spree_roles.none?
16
16
  end
17
17
 
18
- cannot [:delete, :destroy], Spree.user_class
18
+ cannot :destroy, Spree.user_class
19
19
  can :manage, Spree::StoreCredit
20
- can :display, Spree::Role
20
+ can :manage, :api_key
21
+ can :read, Spree::Role
21
22
  end
22
23
  end
23
24
  end
@@ -8,7 +8,10 @@ module Spree
8
8
  ATTRIBUTES = [
9
9
  :address_attributes,
10
10
  :address_book_attributes,
11
- :checkout_attributes,
11
+ :checkout_address_attributes,
12
+ :checkout_delivery_attributes,
13
+ :checkout_payment_attributes,
14
+ :checkout_confirm_attributes,
12
15
  :credit_card_update_attributes,
13
16
  :customer_return_attributes,
14
17
  :image_attributes,
@@ -36,7 +39,7 @@ module Spree
36
39
  mattr_reader(*ATTRIBUTES)
37
40
 
38
41
  @@address_attributes = [
39
- :id, :firstname, :lastname, :first_name, :last_name,
42
+ :id, :name, :firstname, :lastname, :first_name, :last_name,
40
43
  :address1, :address2, :city, :country_id, :state_id,
41
44
  :zipcode, :phone, :state_name, :country_iso, :alternative_phone, :company,
42
45
  country: [:iso, :name, :iso3, :iso_name],
@@ -45,10 +48,6 @@ module Spree
45
48
 
46
49
  @@address_book_attributes = address_attributes + [:default]
47
50
 
48
- @@checkout_attributes = [
49
- :coupon_code, :email, :special_instructions, :use_billing
50
- ]
51
-
52
51
  @@credit_card_update_attributes = [
53
52
  :month, :year, :expiry, :first_name, :last_name, :name
54
53
  ]
@@ -70,7 +69,7 @@ module Spree
70
69
  @@product_properties_attributes = [:property_name, :value, :position]
71
70
 
72
71
  @@product_attributes = [
73
- :name, :description, :available_on, :permalink, :meta_description,
72
+ :name, :description, :available_on, :discontinue_on, :permalink, :meta_description,
74
73
  :meta_keywords, :price, :sku, :deleted_at,
75
74
  :option_values_hash, :weight, :height, :width, :depth,
76
75
  :shipping_category_id, :tax_category_id,
@@ -91,7 +90,7 @@ module Spree
91
90
  :number, :month, :year, :expiry, :verification_value,
92
91
  :first_name, :last_name, :cc_type, :gateway_customer_profile_id,
93
92
  :gateway_payment_profile_id, :last_digits, :name, :encrypted_data,
94
- :existing_card_id, :wallet_payment_source_id
93
+ :existing_card_id, :wallet_payment_source_id, address_attributes: address_attributes
95
94
  ]
96
95
 
97
96
  @@stock_item_attributes = [:variant, :stock_location, :backorderable, :variant_id]
@@ -108,7 +107,8 @@ module Spree
108
107
 
109
108
  @@store_attributes = [:name, :url, :seo_title, :meta_keywords,
110
109
  :meta_description, :default_currency,
111
- :mail_from_address, :cart_tax_country_iso]
110
+ :mail_from_address, :cart_tax_country_iso,
111
+ :bcc_email]
112
112
 
113
113
  @@taxonomy_attributes = [:name]
114
114
 
@@ -129,5 +129,75 @@ module Spree
129
129
  :product_id, :product, :option_values_attributes, :price,
130
130
  :weight, :height, :width, :depth, :sku, :cost_currency, option_value_ids: [], options: [:name, :value]
131
131
  ]
132
+
133
+ @@checkout_address_attributes = [
134
+ :use_billing,
135
+ :email,
136
+ bill_address_attributes: address_attributes,
137
+ ship_address_attributes: address_attributes
138
+ ]
139
+
140
+ @@checkout_delivery_attributes = [
141
+ :special_instructions,
142
+ shipments_attributes: shipment_attributes
143
+ ]
144
+
145
+ @@checkout_payment_attributes = [
146
+ :coupon_code,
147
+ payments_attributes: payment_attributes + [
148
+ source_attributes: source_attributes
149
+ ]
150
+ ]
151
+
152
+ @@checkout_confirm_attributes = []
153
+
154
+ def self.checkout_attributes
155
+ Spree::Deprecation.warn <<-WARN.squish, caller
156
+ checkout_attributes is deprecated, please use the permitted
157
+ attributes set for the specific step that needs to be updated.
158
+
159
+ E.g. permitted_checkout_address_attributes
160
+ WARN
161
+
162
+ CheckoutAdditionalAttributes.new(
163
+ checkout_address_attributes +
164
+ checkout_delivery_attributes +
165
+ checkout_payment_attributes +
166
+ checkout_confirm_attributes
167
+ )
168
+ end
169
+ end
170
+
171
+ class CheckoutAdditionalAttributes < Array
172
+ def <<(*attributes)
173
+ super
174
+
175
+ inject_attributes_to_all_steps(attributes, :<<)
176
+ end
177
+
178
+ def push(*attributes)
179
+ super
180
+
181
+ inject_attributes_to_all_steps(attributes, :push)
182
+ end
183
+ alias append push
184
+
185
+ def prepend(*attributes)
186
+ super
187
+
188
+ inject_attributes_to_all_steps(attributes, :prepend)
189
+ end
190
+ alias unshift prepend
191
+
192
+ private
193
+
194
+ def inject_attributes_to_all_steps(attributes, method)
195
+ attributes.each do |attribute|
196
+ PermittedAttributes.checkout_address_attributes.send(method, attribute)
197
+ PermittedAttributes.checkout_delivery_attributes.send(method, attribute)
198
+ PermittedAttributes.checkout_payment_attributes.send(method, attribute)
199
+ PermittedAttributes.checkout_confirm_attributes.send(method, attribute)
200
+ end
201
+ end
132
202
  end
133
203
  end
@@ -141,11 +141,13 @@ module Spree
141
141
 
142
142
  private
143
143
 
144
- def convert_preference_value(value, type)
144
+ def convert_preference_value(value, type, preference_encryptor = nil)
145
145
  return nil if value.nil?
146
146
  case type
147
147
  when :string, :text
148
148
  value.to_s
149
+ when :encrypted_string
150
+ preference_encryptor.encrypt(value.to_s)
149
151
  when :password
150
152
  value.to_s
151
153
  when :decimal
@@ -158,8 +160,7 @@ module Spree
158
160
  value.to_i
159
161
  when :boolean
160
162
  if !value ||
161
- value == 0 ||
162
- value =~ /\A(f|false|0)\Z/i ||
163
+ value.to_s =~ /\A(f|false|0|^)\Z/i ||
163
164
  (value.respond_to?(:empty?) && value.empty?)
164
165
  false
165
166
  else
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'spree/encryptor'
4
+
3
5
  module Spree::Preferences
4
6
  module PreferableClassMethods
5
7
  DEFAULT_ADMIN_FORM_PREFERENCE_TYPES = %i(
@@ -9,6 +11,7 @@ module Spree::Preferences
9
11
  password
10
12
  string
11
13
  text
14
+ encrypted_string
12
15
  )
13
16
 
14
17
  def defined_preferences
@@ -16,7 +19,13 @@ module Spree::Preferences
16
19
  end
17
20
 
18
21
  def preference(name, type, options = {})
19
- options.assert_valid_keys(:default)
22
+ options.assert_valid_keys(:default, :encryption_key)
23
+
24
+ if type == :encrypted_string
25
+ preference_encryptor = preference_encryptor(options)
26
+ options[:default] = preference_encryptor.encrypt(options[:default])
27
+ end
28
+
20
29
  default = options[:default]
21
30
  default = ->{ options[:default] } unless default.is_a?(Proc)
22
31
 
@@ -34,13 +43,15 @@ module Spree::Preferences
34
43
  # cache_key will be nil for new objects, then if we check if there
35
44
  # is a pending preference before going to default
36
45
  define_method preference_getter_method(name) do
37
- preferences.fetch(name) do
46
+ value = preferences.fetch(name) do
38
47
  default.call
39
48
  end
49
+ value = preference_encryptor.decrypt(value) if preference_encryptor.present?
50
+ value
40
51
  end
41
52
 
42
53
  define_method preference_setter_method(name) do |value|
43
- value = convert_preference_value(value, type)
54
+ value = convert_preference_value(value, type, preference_encryptor)
44
55
  preferences[name] = value
45
56
 
46
57
  # If this is an activerecord object, we need to inform
@@ -72,6 +83,14 @@ module Spree::Preferences
72
83
  "preferred_#{name}_type".to_sym
73
84
  end
74
85
 
86
+ def preference_encryptor(options)
87
+ key = options[:encryption_key] ||
88
+ ENV['SOLIDUS_PREFERENCES_MASTER_KEY'] ||
89
+ Rails.application.credentials.secret_key_base
90
+
91
+ Spree::Encryptor.new(key)
92
+ end
93
+
75
94
  # List of preference types allowed as form fields in the Solidus admin
76
95
  #
77
96
  # Overwrite this method in your class that includes +Spree::Preferable+