solidus_core 4.6.2 → 4.7.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 (328) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +13 -13
  3. data/app/controllers/spree/base_controller.rb +2 -2
  4. data/app/helpers/spree/base_helper.rb +24 -24
  5. data/app/helpers/spree/checkout_helper.rb +7 -7
  6. data/app/helpers/spree/core/controller_helpers/auth.rb +1 -1
  7. data/app/helpers/spree/core/controller_helpers/common.rb +3 -2
  8. data/app/helpers/spree/core/controller_helpers/order.rb +3 -5
  9. data/app/helpers/spree/core/controller_helpers/payment_parameters.rb +1 -2
  10. data/app/helpers/spree/core/controller_helpers/strong_parameters.rb +10 -10
  11. data/app/helpers/spree/products_helper.rb +5 -5
  12. data/app/helpers/spree/store_helper.rb +1 -1
  13. data/app/mailers/spree/carton_mailer.rb +3 -3
  14. data/app/mailers/spree/order_mailer.rb +4 -4
  15. data/app/mailers/spree/reimbursement_mailer.rb +2 -2
  16. data/app/models/concerns/spree/active_storage_adapter/attachment.rb +5 -5
  17. data/app/models/concerns/spree/active_storage_adapter/normalization.rb +5 -5
  18. data/app/models/concerns/spree/active_storage_adapter.rb +2 -2
  19. data/app/models/concerns/spree/adjustment_source.rb +4 -4
  20. data/app/models/concerns/spree/display_money.rb +2 -2
  21. data/app/models/concerns/spree/named_type.rb +1 -1
  22. data/app/models/concerns/spree/ordered_property_value_list.rb +2 -2
  23. data/app/models/concerns/spree/preferences/persistable.rb +1 -1
  24. data/app/models/concerns/spree/ransackable_attributes.rb +1 -0
  25. data/app/models/concerns/spree/soft_deletable.rb +2 -1
  26. data/app/models/concerns/spree/state_change_tracking.rb +1 -1
  27. data/app/models/concerns/spree/user_address_book.rb +12 -12
  28. data/app/models/concerns/spree/user_methods.rb +9 -9
  29. data/app/models/concerns/spree/user_reporting.rb +1 -0
  30. data/app/models/spree/ability.rb +1 -1
  31. data/app/models/spree/address/name.rb +1 -1
  32. data/app/models/spree/address.rb +7 -7
  33. data/app/models/spree/adjustment.rb +11 -10
  34. data/app/models/spree/adjustment_reason.rb +2 -2
  35. data/app/models/spree/billing_integration.rb +2 -2
  36. data/app/models/spree/calculator/default_tax.rb +2 -2
  37. data/app/models/spree/calculator/flat_fee.rb +1 -1
  38. data/app/models/spree/calculator/flat_rate.rb +2 -2
  39. data/app/models/spree/calculator/returns/default_refund_amount.rb +3 -3
  40. data/app/models/spree/calculator/shipping/flat_percent_item_total.rb +2 -2
  41. data/app/models/spree/calculator/shipping/flat_rate.rb +3 -3
  42. data/app/models/spree/calculator/shipping/flexi_rate.rb +8 -8
  43. data/app/models/spree/calculator/shipping/per_item.rb +3 -3
  44. data/app/models/spree/calculator/shipping/price_sack.rb +3 -3
  45. data/app/models/spree/calculator.rb +31 -6
  46. data/app/models/spree/carton.rb +4 -4
  47. data/app/models/spree/classification.rb +2 -2
  48. data/app/models/spree/core/state_machines/order/class_methods.rb +3 -3
  49. data/app/models/spree/core/state_machines/return_item/acceptance_status.rb +1 -1
  50. data/app/models/spree/country.rb +1 -1
  51. data/app/models/spree/credit_card.rb +27 -27
  52. data/app/models/spree/customer_return.rb +5 -4
  53. data/app/models/spree/distributed_amounts_handler.rb +1 -1
  54. data/app/models/spree/fulfilment_changer.rb +22 -22
  55. data/app/models/spree/image/active_storage_attachment.rb +2 -2
  56. data/app/models/spree/image/paperclip_attachment.rb +8 -8
  57. data/app/models/spree/in_memory_order_updater.rb +262 -0
  58. data/app/models/spree/inventory_unit.rb +11 -11
  59. data/app/models/spree/item_total.rb +1 -1
  60. data/app/models/spree/legacy_user.rb +2 -2
  61. data/app/models/spree/line_item.rb +21 -11
  62. data/app/models/spree/log_entry.rb +3 -3
  63. data/app/models/spree/mergeable_orders_finder.rb +44 -0
  64. data/app/models/spree/money.rb +2 -1
  65. data/app/models/spree/null_promotion_adjuster.rb +1 -1
  66. data/app/models/spree/option_type.rb +1 -1
  67. data/app/models/spree/option_value.rb +2 -2
  68. data/app/models/spree/order/number_generator.rb +1 -1
  69. data/app/models/spree/order.rb +66 -64
  70. data/app/models/spree/order_cancellations.rb +1 -3
  71. data/app/models/spree/order_inventory.rb +5 -8
  72. data/app/models/spree/order_mutex.rb +1 -1
  73. data/app/models/spree/order_shipping.rb +1 -1
  74. data/app/models/spree/order_updater.rb +59 -37
  75. data/app/models/spree/payment/cancellation.rb +2 -2
  76. data/app/models/spree/payment/processing.rb +22 -22
  77. data/app/models/spree/payment.rb +25 -25
  78. data/app/models/spree/payment_capture_event.rb +2 -2
  79. data/app/models/spree/payment_create.rb +1 -1
  80. data/app/models/spree/payment_method/bogus_credit_card.rb +18 -18
  81. data/app/models/spree/payment_method/check.rb +3 -3
  82. data/app/models/spree/payment_method/credit_card.rb +1 -1
  83. data/app/models/spree/payment_method/simple_bogus_credit_card.rb +3 -3
  84. data/app/models/spree/payment_method/store_credit.rb +13 -13
  85. data/app/models/spree/payment_method.rb +12 -11
  86. data/app/models/spree/payment_source.rb +2 -2
  87. data/app/models/spree/permission_sets/dashboard_display.rb +3 -3
  88. data/app/models/spree/permission_sets/default_customer.rb +1 -1
  89. data/app/models/spree/preference.rb +1 -1
  90. data/app/models/spree/price.rb +7 -6
  91. data/app/models/spree/product/scopes.rb +23 -23
  92. data/app/models/spree/product.rb +37 -41
  93. data/app/models/spree/product_option_type.rb +2 -2
  94. data/app/models/spree/product_property.rb +3 -3
  95. data/app/models/spree/refund.rb +10 -10
  96. data/app/models/spree/refund_reason.rb +2 -2
  97. data/app/models/spree/reimbursement/credit.rb +1 -1
  98. data/app/models/spree/reimbursement.rb +8 -8
  99. data/app/models/spree/reimbursement_tax_calculator.rb +1 -1
  100. data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +1 -1
  101. data/app/models/spree/reimbursement_type.rb +2 -2
  102. data/app/models/spree/return_authorization.rb +7 -6
  103. data/app/models/spree/return_item/eligibility_validator/base_validator.rb +2 -2
  104. data/app/models/spree/return_item/eligibility_validator/default.rb +1 -1
  105. data/app/models/spree/return_item/eligibility_validator/inventory_shipped.rb +1 -1
  106. data/app/models/spree/return_item/eligibility_validator/no_reimbursements.rb +1 -1
  107. data/app/models/spree/return_item/eligibility_validator/order_completed.rb +1 -1
  108. data/app/models/spree/return_item/eligibility_validator/rma_required.rb +1 -1
  109. data/app/models/spree/return_item/eligibility_validator/time_since_purchase.rb +1 -1
  110. data/app/models/spree/return_item/exchange_variant_eligibility/same_option_value.rb +6 -6
  111. data/app/models/spree/return_item.rb +31 -30
  112. data/app/models/spree/return_reason.rb +1 -1
  113. data/app/models/spree/role.rb +1 -1
  114. data/app/models/spree/role_user.rb +1 -1
  115. data/app/models/spree/shipment.rb +37 -29
  116. data/app/models/spree/shipping_method.rb +9 -9
  117. data/app/models/spree/shipping_method_category.rb +2 -2
  118. data/app/models/spree/shipping_rate.rb +12 -10
  119. data/app/models/spree/shipping_rate_tax.rb +5 -4
  120. data/app/models/spree/simple_order_contents.rb +2 -2
  121. data/app/models/spree/state.rb +1 -1
  122. data/app/models/spree/stock/availability.rb +9 -9
  123. data/app/models/spree/stock/availability_validator.rb +3 -3
  124. data/app/models/spree/stock/differentiator.rb +2 -2
  125. data/app/models/spree/stock/estimator.rb +4 -4
  126. data/app/models/spree/stock/inventory_validator.rb +1 -1
  127. data/app/models/spree/stock/package.rb +3 -3
  128. data/app/models/spree/stock_item.rb +5 -5
  129. data/app/models/spree/stock_location.rb +6 -6
  130. data/app/models/spree/stock_movement.rb +2 -2
  131. data/app/models/spree/stock_quantities.rb +2 -2
  132. data/app/models/spree/store.rb +3 -3
  133. data/app/models/spree/store_credit.rb +30 -29
  134. data/app/models/spree/store_credit_category.rb +2 -2
  135. data/app/models/spree/store_credit_event.rb +6 -6
  136. data/app/models/spree/store_credit_reason.rb +1 -1
  137. data/app/models/spree/store_credit_type.rb +3 -3
  138. data/app/models/spree/store_selector/by_server_name.rb +1 -1
  139. data/app/models/spree/store_selector/legacy.rb +1 -1
  140. data/app/models/spree/tax/item_tax.rb +1 -0
  141. data/app/models/spree/tax/order_tax.rb +1 -0
  142. data/app/models/spree/tax_category.rb +3 -3
  143. data/app/models/spree/tax_rate.rb +5 -5
  144. data/app/models/spree/tax_rate_tax_category.rb +2 -2
  145. data/app/models/spree/taxon/active_storage_attachment.rb +2 -2
  146. data/app/models/spree/taxon/paperclip_attachment.rb +4 -4
  147. data/app/models/spree/taxon.rb +16 -17
  148. data/app/models/spree/taxon_brand_selector.rb +3 -3
  149. data/app/models/spree/unauthorized_redirect_handler.rb +1 -1
  150. data/app/models/spree/unit_cancel.rb +4 -4
  151. data/app/models/spree/user_address.rb +3 -3
  152. data/app/models/spree/user_last_url_storer/rules/authentication_rule.rb +6 -8
  153. data/app/models/spree/user_last_url_storer.rb +1 -1
  154. data/app/models/spree/variant/price_selector.rb +1 -1
  155. data/app/models/spree/variant/scopes.rb +9 -9
  156. data/app/models/spree/variant.rb +25 -25
  157. data/app/models/spree/variant_property_rule.rb +2 -2
  158. data/app/models/spree/variant_property_rule_condition.rb +1 -1
  159. data/app/models/spree/wallet/add_payment_sources_to_wallet.rb +4 -4
  160. data/app/models/spree/wallet/default_payment_builder.rb +1 -1
  161. data/app/models/spree/wallet_payment_source.rb +2 -2
  162. data/app/models/spree/zone.rb +18 -18
  163. data/app/models/spree/zone_member.rb +1 -1
  164. data/app/subscribers/spree/carton_shipped_mailer_subscriber.rb +2 -2
  165. data/app/subscribers/spree/order_cancel_mailer_subscriber.rb +2 -2
  166. data/app/subscribers/spree/order_confirmation_mailer_subscriber.rb +2 -2
  167. data/app/subscribers/spree/order_inventory_cancellation_mailer_subscriber.rb +2 -2
  168. data/app/subscribers/spree/reimbursement_mailer_subscriber.rb +2 -2
  169. data/config/initializers/assets.rb +1 -1
  170. data/config/initializers/db_query_matchers.rb +9 -0
  171. data/config/initializers/friendly_id.rb +2 -2
  172. data/config/initializers/inflections.rb +1 -1
  173. data/config/initializers/money.rb +1 -1
  174. data/config/locales/en.yml +1 -0
  175. data/db/default/spree/countries.rb +7 -7
  176. data/db/default/spree/return_reasons.rb +11 -11
  177. data/db/default/spree/stock_locations.rb +1 -1
  178. data/db/default/spree/store_credit.rb +3 -4
  179. data/db/default/spree/stores.rb +1 -1
  180. data/db/default/spree/zones.rb +5 -5
  181. data/db/migrate/20160101010000_solidus_one_four.rb +16 -16
  182. data/db/migrate/20160420044191_create_spree_wallet_payment_sources.rb +3 -3
  183. data/db/migrate/20160420181916_migrate_credit_cards_to_wallet_payment_sources.rb +7 -6
  184. data/db/migrate/20161014221052_add_available_to_columns_and_remove_display_on_from_payment_methods.rb +10 -10
  185. data/db/migrate/20161123154034_add_available_to_users_and_remove_display_on_from_shipping_methods.rb +6 -6
  186. data/db/migrate/20161129035810_add_index_to_spree_payments_number.rb +1 -1
  187. data/db/migrate/20170319191942_remove_order_id_from_inventory_units.rb +4 -4
  188. data/db/migrate/20180322142651_add_amount_remaining_to_store_credit_events.rb +9 -16
  189. data/db/migrate/20200320144521_add_default_billng_flag_to_user_addresses.rb +1 -0
  190. data/db/migrate/20210815004823_add_unique_index_to_option_values_variants.rb +3 -3
  191. data/db/migrate/20250207104016_add_primary_taxon_to_products.rb +1 -1
  192. data/db/migrate/20250214094207_add_reverse_charge_status_to_store.rb +1 -1
  193. data/db/migrate/20250225051308_add_vat_id_email_and_reverse_charge_status_to_addresses.rb +1 -1
  194. data/db/seeds.rb +3 -3
  195. data/lib/generators/solidus/install/app_templates/authentication/custom.rb +2 -2
  196. data/lib/generators/solidus/install/app_templates/authentication/devise.rb +3 -3
  197. data/lib/generators/solidus/install/app_templates/authentication/existing.rb +1 -1
  198. data/lib/generators/solidus/install/app_templates/frontend/starter.rb +1 -1
  199. data/lib/generators/solidus/install/app_templates/payment_method/braintree.rb +1 -1
  200. data/lib/generators/solidus/install/app_templates/payment_method/paypal.rb +1 -1
  201. data/lib/generators/solidus/install/app_templates/payment_method/stripe.rb +2 -2
  202. data/lib/generators/solidus/install/install_generator.rb +51 -51
  203. data/lib/generators/solidus/install/templates/config/initializers/spree.rb.tt +3 -0
  204. data/lib/generators/solidus/update/update_generator.rb +29 -29
  205. data/lib/generators/spree/custom_user/custom_user_generator.rb +6 -6
  206. data/lib/generators/spree/dummy/dummy_generator.rb +22 -24
  207. data/lib/generators/spree/dummy/templates/rails/boot.rb +3 -3
  208. data/lib/generators/spree/dummy/templates/rails/test.rb +4 -4
  209. data/lib/solidus_core.rb +1 -1
  210. data/lib/spree/app_configuration.rb +59 -47
  211. data/lib/spree/bus.rb +1 -1
  212. data/lib/spree/config.rb +1 -1
  213. data/lib/spree/core/active_merchant_dependencies.rb +8 -8
  214. data/lib/spree/core/class_constantizer.rb +1 -1
  215. data/lib/spree/core/engine.rb +15 -15
  216. data/lib/spree/core/environment.rb +1 -1
  217. data/lib/spree/core/environment_extension.rb +2 -2
  218. data/lib/spree/core/importer/order.rb +15 -15
  219. data/lib/spree/core/importer/product.rb +4 -4
  220. data/lib/spree/core/importer.rb +2 -2
  221. data/lib/spree/core/null_promotion_configuration.rb +7 -7
  222. data/lib/spree/core/permalinks.rb +1 -1
  223. data/lib/spree/core/product_filters.rb +94 -93
  224. data/lib/spree/core/role_configuration.rb +3 -3
  225. data/lib/spree/core/search/base.rb +5 -6
  226. data/lib/spree/core/search/variant.rb +3 -3
  227. data/lib/spree/core/stock_configuration.rb +10 -49
  228. data/lib/spree/core/validators/email.rb +1 -1
  229. data/lib/spree/core/version.rb +3 -3
  230. data/lib/spree/core/versioned_value.rb +4 -6
  231. data/lib/spree/core.rb +49 -49
  232. data/lib/spree/deprecated_instance_variable_proxy.rb +1 -1
  233. data/lib/spree/deprecation.rb +1 -1
  234. data/lib/spree/deprecator.rb +2 -2
  235. data/lib/spree/i18n.rb +2 -2
  236. data/lib/spree/localized_number.rb +3 -3
  237. data/lib/spree/manipulative_query_monitor.rb +19 -0
  238. data/lib/spree/migrations.rb +2 -2
  239. data/lib/spree/permitted_attributes.rb +10 -10
  240. data/lib/spree/preferences/configuration.rb +5 -5
  241. data/lib/spree/preferences/preferable.rb +8 -10
  242. data/lib/spree/preferences/preferable_class_methods.rb +16 -16
  243. data/lib/spree/preferences/preference_differentiator.rb +1 -1
  244. data/lib/spree/preferences/scoped_store.rb +2 -2
  245. data/lib/spree/preferences/static_model_preferences.rb +2 -2
  246. data/lib/spree/preferences/store.rb +6 -6
  247. data/lib/spree/testing_support/ability_helpers.rb +30 -30
  248. data/lib/spree/testing_support/authorization_helpers.rb +6 -5
  249. data/lib/spree/testing_support/blacklist_urls.rb +1 -1
  250. data/lib/spree/testing_support/bus_helpers.rb +1 -1
  251. data/lib/spree/testing_support/capybara_driver.rb +1 -1
  252. data/lib/spree/testing_support/capybara_ext.rb +12 -12
  253. data/lib/spree/testing_support/common_rake.rb +17 -16
  254. data/lib/spree/testing_support/dummy_ability.rb +1 -1
  255. data/lib/spree/testing_support/dummy_app/migrations.rb +1 -1
  256. data/lib/spree/testing_support/dummy_app/rake_tasks.rb +5 -5
  257. data/lib/spree/testing_support/dummy_app/routes.rb +1 -1
  258. data/lib/spree/testing_support/dummy_app.rb +34 -34
  259. data/lib/spree/testing_support/extension_rake.rb +2 -2
  260. data/lib/spree/testing_support/factories/address_factory.rb +12 -12
  261. data/lib/spree/testing_support/factories/adjustment_factory.rb +7 -7
  262. data/lib/spree/testing_support/factories/adjustment_reason_factory.rb +1 -1
  263. data/lib/spree/testing_support/factories/calculator_factory.rb +6 -6
  264. data/lib/spree/testing_support/factories/carton_factory.rb +1 -1
  265. data/lib/spree/testing_support/factories/country_factory.rb +3 -3
  266. data/lib/spree/testing_support/factories/credit_card_factory.rb +3 -3
  267. data/lib/spree/testing_support/factories/customer_return_factory.rb +2 -2
  268. data/lib/spree/testing_support/factories/image_factory.rb +2 -2
  269. data/lib/spree/testing_support/factories/inventory_unit_factory.rb +4 -4
  270. data/lib/spree/testing_support/factories/line_item_factory.rb +2 -2
  271. data/lib/spree/testing_support/factories/option_type_factory.rb +2 -2
  272. data/lib/spree/testing_support/factories/option_value_factory.rb +2 -2
  273. data/lib/spree/testing_support/factories/order_factory.rb +16 -16
  274. data/lib/spree/testing_support/factories/payment_factory.rb +9 -9
  275. data/lib/spree/testing_support/factories/payment_method_factory.rb +10 -10
  276. data/lib/spree/testing_support/factories/price_factory.rb +2 -2
  277. data/lib/spree/testing_support/factories/product_factory.rb +2 -2
  278. data/lib/spree/testing_support/factories/product_option_type_factory.rb +1 -1
  279. data/lib/spree/testing_support/factories/product_property_factory.rb +1 -1
  280. data/lib/spree/testing_support/factories/property_factory.rb +3 -3
  281. data/lib/spree/testing_support/factories/refund_factory.rb +2 -2
  282. data/lib/spree/testing_support/factories/refund_reason_factory.rb +1 -1
  283. data/lib/spree/testing_support/factories/reimbursement_factory.rb +1 -1
  284. data/lib/spree/testing_support/factories/reimbursement_type_factory.rb +1 -1
  285. data/lib/spree/testing_support/factories/return_authorization_factory.rb +3 -3
  286. data/lib/spree/testing_support/factories/return_item_factory.rb +1 -1
  287. data/lib/spree/testing_support/factories/return_reason_factory.rb +1 -1
  288. data/lib/spree/testing_support/factories/role_factory.rb +2 -2
  289. data/lib/spree/testing_support/factories/shipment_factory.rb +3 -3
  290. data/lib/spree/testing_support/factories/shipping_category_factory.rb +1 -1
  291. data/lib/spree/testing_support/factories/shipping_method_factory.rb +7 -7
  292. data/lib/spree/testing_support/factories/shipping_rate_factory.rb +1 -1
  293. data/lib/spree/testing_support/factories/state_factory.rb +4 -4
  294. data/lib/spree/testing_support/factories/stock_item_factory.rb +1 -1
  295. data/lib/spree/testing_support/factories/stock_location_factory.rb +7 -7
  296. data/lib/spree/testing_support/factories/stock_movement_factory.rb +3 -3
  297. data/lib/spree/testing_support/factories/stock_package_factory.rb +3 -3
  298. data/lib/spree/testing_support/factories/store_credit_category_factory.rb +1 -1
  299. data/lib/spree/testing_support/factories/store_credit_event_factory.rb +8 -8
  300. data/lib/spree/testing_support/factories/store_credit_factory.rb +1 -1
  301. data/lib/spree/testing_support/factories/store_credit_reason_factory.rb +1 -1
  302. data/lib/spree/testing_support/factories/store_credit_type_factory.rb +6 -6
  303. data/lib/spree/testing_support/factories/store_factory.rb +2 -2
  304. data/lib/spree/testing_support/factories/tax_category_factory.rb +1 -1
  305. data/lib/spree/testing_support/factories/tax_rate_factory.rb +1 -1
  306. data/lib/spree/testing_support/factories/taxon_factory.rb +3 -3
  307. data/lib/spree/testing_support/factories/taxonomy_factory.rb +1 -1
  308. data/lib/spree/testing_support/factories/user_factory.rb +2 -2
  309. data/lib/spree/testing_support/factories/variant_factory.rb +2 -2
  310. data/lib/spree/testing_support/factories/variant_property_rule_condition_factory.rb +1 -1
  311. data/lib/spree/testing_support/factories/variant_property_rule_factory.rb +1 -1
  312. data/lib/spree/testing_support/factories/variant_property_rule_value_factory.rb +1 -1
  313. data/lib/spree/testing_support/factories/zone_factory.rb +3 -3
  314. data/lib/spree/testing_support/factory_bot.rb +1 -1
  315. data/lib/spree/testing_support/flaky.rb +3 -2
  316. data/lib/spree/testing_support/flash.rb +2 -2
  317. data/lib/spree/testing_support/order_walkthrough.rb +7 -7
  318. data/lib/spree/testing_support/preferences.rb +1 -1
  319. data/lib/spree/testing_support/rake.rb +1 -1
  320. data/lib/spree/testing_support/shared_examples/calculator.rb +1 -1
  321. data/lib/spree/testing_support/shared_examples/gallery.rb +7 -7
  322. data/lib/spree/testing_support/shared_examples/order_factory.rb +9 -9
  323. data/lib/spree/testing_support/shared_examples/working_factory.rb +1 -1
  324. data/lib/spree/testing_support/translations.rb +1 -1
  325. data/lib/spree_core.rb +1 -1
  326. data/lib/tasks/payment_method.rake +2 -2
  327. data/solidus_core.gemspec +49 -49
  328. metadata +60 -54
@@ -1,10 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'generators/spree/dummy/dummy_generator'
4
- require 'logger'
3
+ require "generators/spree/dummy/dummy_generator"
4
+ require "logger"
5
5
 
6
6
  class CommonRakeTasks
7
7
  include Rake::DSL
8
+
8
9
  attr_reader :logger
9
10
 
10
11
  def initialize
@@ -12,7 +13,7 @@ class CommonRakeTasks
12
13
  namespace :common do
13
14
  task :test_app, :user_class do |_t, args|
14
15
  args.with_defaults(user_class: "Spree::LegacyUser")
15
- lib_name = ENV['LIB_NAME'] or
16
+ lib_name = ENV["LIB_NAME"] or
16
17
  raise "Please provide a library name via the LIB_NAME environment variable."
17
18
 
18
19
  require lib_name
@@ -21,30 +22,30 @@ class CommonRakeTasks
21
22
 
22
23
  Spree::DummyGenerator.start [
23
24
  "--lib-name=#{lib_name}",
24
- "--quiet",
25
+ "--quiet"
25
26
  ]
26
27
 
27
28
  # While the dummy app is generated the current directory
28
29
  # within ruby is changed to that of the dummy app.
29
30
  sh({
30
- 'FRONTEND' => ENV['FRONTEND'] || 'none',
31
+ "FRONTEND" => ENV["FRONTEND"] || "none"
31
32
  }, [
32
- 'bin/rails',
33
- 'generate',
34
- 'solidus:install',
33
+ "bin/rails",
34
+ "generate",
35
+ "solidus:install",
35
36
  Dir.pwd, # use the current dir as Rails.root
36
37
  "--auto-accept",
37
- "--admin-preview=#{ENV.fetch('ADMIN_PREVIEW', 'false')}",
38
+ "--admin-preview=#{ENV.fetch("ADMIN_PREVIEW", "false")}",
38
39
  "--authentication=none",
39
40
  "--payment-method=none",
40
41
  "--migrate=false",
41
42
  "--seed=false",
42
43
  "--sample=false",
43
44
  "--user-class=#{args[:user_class]}",
44
- "--quiet",
45
+ "--quiet"
45
46
  ].shelljoin)
46
47
 
47
- if Bundler.locked_gems.dependencies['solidus_frontend']
48
+ if Bundler.locked_gems.dependencies["solidus_frontend"]
48
49
  sh "bin/rails g solidus_frontend:install --auto-accept"
49
50
  end
50
51
 
@@ -54,7 +55,7 @@ class CommonRakeTasks
54
55
  sh "bin/rails db:drop db:create db:migrate VERBOSE=false RAILS_ENV=test"
55
56
 
56
57
  if extension_installation_generator_exists?
57
- logger.info 'Running extension installation generator...'
58
+ logger.info "Running extension installation generator..."
58
59
  sh "bin/rails generate #{rake_generator_namespace}:install --auto-run-migrations"
59
60
  end
60
61
  end
@@ -70,8 +71,8 @@ class CommonRakeTasks
70
71
  private
71
72
 
72
73
  def force_rails_environment_to_test
73
- ENV["RAILS_ENV"] = 'test'
74
- Rails.env = 'test'
74
+ ENV["RAILS_ENV"] = "test"
75
+ Rails.env = "test"
75
76
  end
76
77
 
77
78
  def extension_installation_generator_exists?
@@ -83,11 +84,11 @@ class CommonRakeTasks
83
84
  end
84
85
 
85
86
  def generator_namespace
86
- "#{ENV['LIB_NAMESPACE']&.underscore || ENV['LIB_NAME']}"
87
+ (ENV["LIB_NAMESPACE"]&.underscore || ENV["LIB_NAME"]).to_s
87
88
  end
88
89
 
89
90
  def rake_generator_namespace
90
- generator_namespace.gsub("/", ":")
91
+ generator_namespace.tr("/", ":")
91
92
  end
92
93
  end
93
94
 
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'cancan'
3
+ require "cancan"
4
4
 
5
5
  class DummyAbility
6
6
  include CanCan::Ability
@@ -11,7 +11,7 @@ module DummyApp
11
11
  # Disconnect to avoid "database is being accessed by other users" on postgres
12
12
  ActiveRecord::Base.remove_connection
13
13
 
14
- sh 'rake db:reset VERBOSE=false'
14
+ sh "rake db:reset VERBOSE=false"
15
15
 
16
16
  # We have a brand new database, so we must re-establish our connection
17
17
  ActiveRecord::Base.establish_connection
@@ -6,9 +6,9 @@ module DummyApp
6
6
 
7
7
  def initialize(gem_root:, lib_name:)
8
8
  task :dummy_environment do
9
- ENV['RAILS_ENV'] = 'test'
9
+ ENV["RAILS_ENV"] = "test"
10
10
  require lib_name
11
- require 'spree/testing_support/dummy_app'
11
+ require "spree/testing_support/dummy_app"
12
12
  DummyApp.setup(
13
13
  gem_root:,
14
14
  lib_name:,
@@ -45,12 +45,12 @@ namespace :db do
45
45
  end
46
46
 
47
47
  desc "Recreates the test database and re-runs all migrations"
48
- task reset: ['db:drop', 'db:create', 'db:migrate']
48
+ task reset: ["db:drop", "db:create", "db:migrate"]
49
49
  end
50
50
 
51
51
  desc "Open a sandboxed console in the test environment"
52
52
  task console: :dummy_environment do
53
- require 'rails/commands'
54
- require 'rails/commands/console/console_command'
53
+ require "rails/commands"
54
+ require "rails/commands/console/console_command"
55
55
  Rails::Console.new(Rails.application, sandbox: true, environment: "test").start
56
56
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  DummyApp::Application.routes.draw do
4
- mount Spree::Core::Engine, at: '/'
4
+ mount Spree::Core::Engine, at: "/"
5
5
  end
@@ -1,17 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- ENV['RAILS_ENV'] = 'test'
4
- ENV['DISABLE_DATABASE_ENVIRONMENT_CHECK'] = '1'
3
+ ENV["RAILS_ENV"] = "test"
4
+ ENV["DISABLE_DATABASE_ENVIRONMENT_CHECK"] = "1"
5
5
 
6
- require 'rails'
7
- require 'active_record/railtie'
8
- require 'action_controller/railtie'
9
- require 'action_mailer/railtie'
10
- require 'active_storage/engine'
6
+ require "rails"
7
+ require "active_record/railtie"
8
+ require "action_controller/railtie"
9
+ require "action_mailer/railtie"
10
+ require "active_storage/engine"
11
11
 
12
- Rails.env = 'test'
12
+ Rails.env = "test"
13
13
 
14
- require 'solidus_core'
14
+ require "solidus_core"
15
15
 
16
16
  # @private
17
17
  class ApplicationController < ActionController::Base
@@ -39,7 +39,7 @@ end
39
39
  module DummyApp
40
40
  def self.setup(gem_root:, lib_name:, auto_migrate: true)
41
41
  ENV["LIB_NAME"] = lib_name
42
- root = Pathname(gem_root).join('spec/dummy')
42
+ root = Pathname(gem_root).join("spec/dummy")
43
43
  root.join("app/assets/config").mkpath
44
44
  root.join("app/assets/config/manifest.js").write("// Intentionally empty\n")
45
45
 
@@ -48,7 +48,7 @@ module DummyApp
48
48
 
49
49
  # Raise on deprecation warnings.
50
50
  # NOTE: This needs to happen after the application is initialized.
51
- if ENV['SOLIDUS_RAISE_DEPRECATIONS'].present?
51
+ if ENV["SOLIDUS_RAISE_DEPRECATIONS"].present?
52
52
  Spree.deprecator.behavior = :raise
53
53
  end
54
54
 
@@ -77,19 +77,19 @@ module DummyApp
77
77
  config.cache_classes = true
78
78
 
79
79
  # Make debugging easier:
80
- if Rails.gem_version >= Gem::Version.new('7.1')
80
+ if Rails.gem_version >= Gem::Version.new("7.1")
81
81
  config.action_controller.raise_on_missing_callback_actions = true
82
82
  config.action_dispatch.show_exceptions = :none
83
83
  else
84
84
  config.action_dispatch.show_exceptions = false
85
85
  end
86
86
  config.consider_all_requests_local = true
87
- config.active_support.deprecation = ENV['RAILS_DEPRECATIONS_BEHAVIOR'].presence&.to_sym || :stderr
87
+ config.active_support.deprecation = ENV["RAILS_DEPRECATIONS_BEHAVIOR"].presence&.to_sym || :stderr
88
88
  config.log_level = :debug
89
89
 
90
90
  # Improve test suite performance:
91
91
  config.eager_load = false
92
- config.public_file_server.headers = { 'Cache-Control' => 'public, max-age=3600' }
92
+ config.public_file_server.headers = {"Cache-Control" => "public, max-age=3600"}
93
93
  config.cache_store = :memory_store
94
94
 
95
95
  # We don't use a web server, so we let Rails serve assets.
@@ -102,66 +102,66 @@ module DummyApp
102
102
  config.active_job.queue_adapter = :test
103
103
 
104
104
  # No need to use credentials file in a test environment.
105
- config.secret_key_base = 'SECRET_TOKEN'
105
+ config.secret_key_base = "SECRET_TOKEN"
106
106
 
107
107
  # Set the preview path within the dummy app:
108
108
  if ActionMailer::Base.respond_to? :preview_paths # Rails 7.1+
109
- config.action_mailer.preview_paths << File.expand_path('dummy_app/mailer_previews', __dir__)
109
+ config.action_mailer.preview_paths << File.expand_path("dummy_app/mailer_previews", __dir__)
110
110
  else
111
- config.action_mailer.preview_path = File.expand_path('dummy_app/mailer_previews', __dir__)
111
+ config.action_mailer.preview_path = File.expand_path("dummy_app/mailer_previews", __dir__)
112
112
  end
113
113
 
114
114
  config.active_record.dump_schema_after_migration = false
115
115
 
116
116
  # Configure active storage to use storage within tmp folder
117
- initializer 'solidus.active_storage' do
117
+ initializer "solidus.active_storage" do
118
118
  config.active_storage.service_configurations = {
119
119
  test: {
120
- service: 'Disk',
121
- root: Rails.root.join('tmp', 'storage')
120
+ service: "Disk",
121
+ root: Rails.root.join("tmp", "storage")
122
122
  }
123
123
  }
124
124
  config.active_storage.service = :test
125
- config.active_storage.variant_processor = ENV.fetch('ACTIVE_STORAGE_VARIANT_PROCESSOR', :vips).to_sym
125
+ config.active_storage.variant_processor = ENV.fetch("ACTIVE_STORAGE_VARIANT_PROCESSOR", :vips).to_sym
126
126
  end
127
127
 
128
128
  # Avoid issues if an old spec/dummy still exists
129
- config.paths['config/initializers'] = []
130
- config.paths['config/environments'] = []
129
+ config.paths["config/initializers"] = []
130
+ config.paths["config/environments"] = []
131
131
 
132
132
  migration_dirs = Rails.application.migration_railties.flat_map do |engine|
133
133
  if engine.respond_to?(:paths)
134
- engine.paths['db/migrate'].to_a
134
+ engine.paths["db/migrate"].to_a
135
135
  else
136
136
  []
137
137
  end
138
138
  end
139
- config.paths['db/migrate'] = migration_dirs
139
+ config.paths["db/migrate"] = migration_dirs
140
140
  ActiveRecord::Migrator.migrations_paths = migration_dirs
141
141
  ActiveRecord::Migration.verbose = false
142
142
 
143
- config.assets.paths << File.expand_path('dummy_app/assets/javascripts', __dir__)
144
- config.assets.paths << File.expand_path('dummy_app/assets/stylesheets', __dir__)
143
+ config.assets.paths << File.expand_path("dummy_app/assets/javascripts", __dir__)
144
+ config.assets.paths << File.expand_path("dummy_app/assets/stylesheets", __dir__)
145
145
  config.assets.css_compressor = nil
146
146
 
147
- config.paths["config/database"] = File.expand_path('dummy_app/database.yml', __dir__)
148
- config.paths['config/routes.rb'] = File.expand_path('dummy_app/routes.rb', __dir__)
147
+ config.paths["config/database"] = File.expand_path("dummy_app/database.yml", __dir__)
148
+ config.paths["config/routes.rb"] = File.expand_path("dummy_app/routes.rb", __dir__)
149
149
 
150
150
  ActionMailer::Base.default from: "store@example.com"
151
151
  end
152
152
  end
153
153
 
154
- require 'spree/testing_support/dummy_app/migrations'
154
+ require "spree/testing_support/dummy_app/migrations"
155
155
 
156
156
  ActiveSupport.on_load(:action_controller) do
157
157
  wrap_parameters format: [:json]
158
158
  end
159
159
 
160
- Spree.user_class = 'Spree::LegacyUser'
160
+ Spree.user_class = "Spree::LegacyUser"
161
161
  Spree.load_defaults(Spree.solidus_version)
162
162
  Spree.config do |config|
163
- if (ENV['DISABLE_ACTIVE_STORAGE'] == 'true')
164
- config.image_attachment_module = 'Spree::Image::PaperclipAttachment'
165
- config.taxon_attachment_module = 'Spree::Taxon::PaperclipAttachment'
163
+ if ENV["DISABLE_ACTIVE_STORAGE"] == "true"
164
+ config.image_attachment_module = "Spree::Image::PaperclipAttachment"
165
+ config.taxon_attachment_module = "Spree::Taxon::PaperclipAttachment"
166
166
  end
167
167
  end
@@ -1,11 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spree/testing_support/common_rake'
3
+ require "spree/testing_support/common_rake"
4
4
 
5
5
  desc "Generates a dummy app for testing an extension"
6
6
  namespace :extension do
7
7
  task :test_app, [:user_class] do |_t, args|
8
8
  Spree::DummyGeneratorHelper.inject_extension_requirements = true
9
- Rake::Task['common:test_app'].invoke(args[:user_class])
9
+ Rake::Task["common:test_app"].invoke(args[:user_class])
10
10
  end
11
11
  end
@@ -1,21 +1,21 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  FactoryBot.define do
4
- factory :address, class: 'Spree::Address' do
4
+ factory :address, class: "Spree::Address" do
5
5
  transient do
6
6
  # There's `Spree::Address#country_iso=`, prohibiting me from using `country_iso` here
7
- country_iso_code { 'US' }
8
- state_code { 'AL' }
7
+ country_iso_code { "US" }
8
+ state_code { "AL" }
9
9
  end
10
10
 
11
- name { 'John Von Doe' }
12
- company { 'Company' }
13
- address1 { '10 Lovely Street' }
14
- address2 { 'Northwest' }
15
- city { 'Herndon' }
11
+ name { "John Von Doe" }
12
+ company { "Company" }
13
+ address1 { "10 Lovely Street" }
14
+ address2 { "Northwest" }
15
+ city { "Herndon" }
16
16
  sequence(:zipcode, 10001) { |i| i.to_s }
17
- phone { '555-555-0199' }
18
- alternative_phone { '555-555-0199' }
17
+ phone { "555-555-0199" }
18
+ alternative_phone { "555-555-0199" }
19
19
 
20
20
  country do |address|
21
21
  if address.state
@@ -35,10 +35,10 @@ FactoryBot.define do
35
35
  end
36
36
 
37
37
  factory :ship_address, parent: :address do
38
- address1 { 'A Different Road' }
38
+ address1 { "A Different Road" }
39
39
  end
40
40
 
41
41
  factory :bill_address, parent: :address do
42
- address1 { 'PO Box 1337' }
42
+ address1 { "PO Box 1337" }
43
43
  end
44
44
  end
@@ -1,11 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  FactoryBot.define do
4
- factory :adjustment, class: 'Spree::Adjustment' do
4
+ factory :adjustment, class: "Spree::Adjustment" do
5
5
  order
6
6
  adjustable { order }
7
7
  amount { 100.0 }
8
- label { 'Shipping' }
8
+ label { "Shipping" }
9
9
  association(:source, factory: :tax_rate)
10
10
 
11
11
  after(:build) do |adjustment|
@@ -15,19 +15,19 @@ FactoryBot.define do
15
15
  end
16
16
  end
17
17
 
18
- factory :tax_adjustment, class: 'Spree::Adjustment' do
18
+ factory :tax_adjustment, class: "Spree::Adjustment" do
19
19
  order { adjustable.order }
20
20
  association(:adjustable, factory: :line_item)
21
21
  amount { 10.0 }
22
- label { 'VAT 5%' }
22
+ label { "VAT 5%" }
23
23
 
24
24
  after(:create) do |adjustment|
25
25
  # Set correct tax category, so that adjustment amount is not 0
26
26
  if adjustment.adjustable.is_a?(Spree::LineItem)
27
- if adjustment.adjustable.tax_category.present?
28
- adjustment.source.tax_categories = [adjustment.adjustable.tax_category]
27
+ adjustment.source.tax_categories = if adjustment.adjustable.tax_category.present?
28
+ [adjustment.adjustable.tax_category]
29
29
  else
30
- adjustment.source.tax_categories = []
30
+ []
31
31
  end
32
32
  adjustment.source.save
33
33
  adjustment.update!(amount: adjustment.source.compute_amount(adjustment.adjustable))
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  FactoryBot.define do
4
- factory :adjustment_reason, class: 'Spree::AdjustmentReason' do
4
+ factory :adjustment_reason, class: "Spree::AdjustmentReason" do
5
5
  sequence(:name) { |n| "Refund for return ##{n}" }
6
6
  sequence(:code) { |n| "Code #{n}" }
7
7
  end
@@ -1,25 +1,25 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  FactoryBot.define do
4
- factory :flat_rate_calculator, aliases: [:calculator], class: 'Spree::Calculator::FlatRate' do
4
+ factory :flat_rate_calculator, aliases: [:calculator], class: "Spree::Calculator::FlatRate" do
5
5
  preferred_amount { 10.0 }
6
6
  end
7
7
 
8
- factory :no_amount_calculator, class: 'Spree::Calculator::FlatRate' do
8
+ factory :no_amount_calculator, class: "Spree::Calculator::FlatRate" do
9
9
  preferred_amount { 0 }
10
10
  end
11
11
 
12
- factory :default_tax_calculator, class: 'Spree::Calculator::DefaultTax' do
12
+ factory :default_tax_calculator, class: "Spree::Calculator::DefaultTax" do
13
13
  end
14
14
 
15
- factory :flat_fee_calculator, class: 'Spree::Calculator::FlatFee' do
15
+ factory :flat_fee_calculator, class: "Spree::Calculator::FlatFee" do
16
16
  end
17
17
 
18
- factory :shipping_calculator, class: 'Spree::Calculator::Shipping::FlatRate' do
18
+ factory :shipping_calculator, class: "Spree::Calculator::Shipping::FlatRate" do
19
19
  preferred_amount { 10.0 }
20
20
  end
21
21
 
22
- factory :shipping_no_amount_calculator, class: 'Spree::Calculator::Shipping::FlatRate' do
22
+ factory :shipping_no_amount_calculator, class: "Spree::Calculator::Shipping::FlatRate" do
23
23
  preferred_amount { 0 }
24
24
  end
25
25
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  FactoryBot.define do
4
- factory :carton, class: 'Spree::Carton' do
4
+ factory :carton, class: "Spree::Carton" do
5
5
  address
6
6
  stock_location
7
7
  shipping_method
@@ -1,10 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'carmen'
3
+ require "carmen"
4
4
 
5
5
  FactoryBot.define do
6
- factory :country, class: 'Spree::Country' do
7
- iso { 'US' }
6
+ factory :country, class: "Spree::Country" do
7
+ iso { "US" }
8
8
 
9
9
  transient do
10
10
  carmen_country { Carmen::Country.coded(iso) || fail("Unknown country iso code: #{iso.inspect}") }
@@ -1,12 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  FactoryBot.define do
4
- factory :credit_card, class: 'Spree::CreditCard' do
4
+ factory :credit_card, class: "Spree::CreditCard" do
5
5
  verification_value { 123 }
6
6
  month { 12 }
7
7
  year { 1.year.from_now.year }
8
- number { '4111111111111111' }
9
- name { 'Spree Commerce' }
8
+ number { "4111111111111111" }
9
+ name { "Spree Commerce" }
10
10
  association(:payment_method, factory: :credit_card_payment_method)
11
11
  association(:address)
12
12
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  FactoryBot.define do
4
- factory :customer_return, class: 'Spree::CustomerReturn' do
4
+ factory :customer_return, class: "Spree::CustomerReturn" do
5
5
  association(:stock_location, factory: :stock_location)
6
6
 
7
7
  transient do
@@ -25,7 +25,7 @@ FactoryBot.define do
25
25
  end
26
26
 
27
27
  # for the case when you want to supply existing return items instead of generating some
28
- factory :customer_return_without_return_items, class: 'Spree::CustomerReturn' do
28
+ factory :customer_return_without_return_items, class: "Spree::CustomerReturn" do
29
29
  association(:stock_location, factory: :stock_location)
30
30
  end
31
31
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  FactoryBot.define do
4
- factory :image, class: 'Spree::Image' do
5
- attachment { Spree::Core::Engine.root.join('lib', 'spree', 'testing_support', 'fixtures', 'blank.jpg').open }
4
+ factory :image, class: "Spree::Image" do
5
+ attachment { Spree::Core::Engine.root.join("lib", "spree", "testing_support", "fixtures", "blank.jpg").open }
6
6
  end
7
7
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  FactoryBot.define do
4
- factory :inventory_unit, class: 'Spree::InventoryUnit' do
4
+ factory :inventory_unit, class: "Spree::InventoryUnit" do
5
5
  transient do
6
6
  order { nil }
7
7
  stock_location { nil }
@@ -15,12 +15,12 @@ FactoryBot.define do
15
15
  build(:line_item, variant:)
16
16
  end
17
17
  end
18
- state { 'on_hand' }
18
+ state { "on_hand" }
19
19
  shipment do
20
20
  if stock_location
21
- build(:shipment, state: 'pending', order: line_item.order, stock_location:)
21
+ build(:shipment, state: "pending", order: line_item.order, stock_location:)
22
22
  else
23
- build(:shipment, state: 'pending', order: line_item.order)
23
+ build(:shipment, state: "pending", order: line_item.order)
24
24
  end
25
25
  end
26
26
  # return_authorization
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  FactoryBot.define do
4
- factory :line_item, class: 'Spree::LineItem' do
4
+ factory :line_item, class: "Spree::LineItem" do
5
5
  quantity { 1 }
6
- price { BigDecimal('10.00') }
6
+ price { BigDecimal("10.00") }
7
7
  order
8
8
  transient do
9
9
  product { nil }
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  FactoryBot.define do
4
- factory :option_type, class: 'Spree::OptionType' do
4
+ factory :option_type, class: "Spree::OptionType" do
5
5
  sequence(:name) { |n| "foo-size-#{n}" }
6
- presentation { 'Size' }
6
+ presentation { "Size" }
7
7
  end
8
8
  end
@@ -1,10 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  FactoryBot.define do
4
- factory :option_value, class: 'Spree::OptionValue' do
4
+ factory :option_value, class: "Spree::OptionValue" do
5
5
  sequence(:name) { |n| "Size-#{n}" }
6
6
 
7
- presentation { 'S' }
7
+ presentation { "S" }
8
8
  option_type
9
9
  end
10
10
  end