solidus_core 2.10.5 → 3.0.8

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 (618) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/spree.js.erb +0 -22
  3. data/app/controllers/spree/base_controller.rb +1 -0
  4. data/app/helpers/spree/store_helper.rb +0 -11
  5. data/app/mailers/spree/base_mailer.rb +4 -0
  6. data/app/mailers/spree/carton_mailer.rb +1 -5
  7. data/app/mailers/spree/order_mailer.rb +1 -1
  8. data/app/models/concerns/spree/active_storage_adapter/attachment.rb +71 -0
  9. data/app/models/concerns/spree/active_storage_adapter/normalization.rb +39 -0
  10. data/app/models/concerns/spree/active_storage_adapter.rb +118 -0
  11. data/app/models/concerns/spree/adjustment_source.rb +0 -15
  12. data/app/models/concerns/spree/calculated_adjustments.rb +0 -18
  13. data/app/models/concerns/spree/default_price.rb +1 -1
  14. data/app/models/concerns/spree/soft_deletable.rb +16 -0
  15. data/app/models/concerns/spree/user_address_book.rb +61 -44
  16. data/app/models/concerns/spree/user_methods.rb +23 -12
  17. data/app/models/spree/ability.rb +0 -13
  18. data/app/models/spree/address/name.rb +31 -0
  19. data/app/models/spree/address/state_validator.rb +71 -0
  20. data/app/models/spree/address.rb +17 -95
  21. data/app/models/spree/adjustment.rb +1 -29
  22. data/app/models/spree/base.rb +1 -28
  23. data/app/models/spree/calculator/default_tax.rb +1 -1
  24. data/app/models/spree/calculator/flexi_rate.rb +0 -5
  25. data/app/models/spree/calculator.rb +8 -11
  26. data/app/models/spree/country.rb +1 -6
  27. data/app/models/spree/credit_card.rb +2 -29
  28. data/app/models/spree/customer_return.rb +5 -6
  29. data/app/models/spree/exchange.rb +1 -1
  30. data/app/models/spree/image/active_storage_attachment.rb +29 -0
  31. data/app/models/spree/image/paperclip_attachment.rb +1 -1
  32. data/app/models/spree/image.rb +0 -7
  33. data/app/models/spree/inventory_unit.rb +1 -22
  34. data/app/models/spree/line_item.rb +12 -46
  35. data/app/models/spree/log_entry.rb +74 -1
  36. data/app/models/spree/option_type.rb +1 -1
  37. data/app/models/spree/option_value.rb +2 -2
  38. data/app/models/spree/order/payments.rb +2 -2
  39. data/app/models/spree/order.rb +70 -132
  40. data/app/models/spree/order_cancellations.rb +4 -24
  41. data/app/models/spree/order_inventory.rb +16 -4
  42. data/app/models/spree/order_merger.rb +7 -5
  43. data/app/models/spree/order_promotion.rb +1 -1
  44. data/app/models/spree/order_shipping.rb +6 -9
  45. data/app/models/spree/order_updater.rb +7 -15
  46. data/app/models/spree/payment/cancellation.rb +3 -22
  47. data/app/models/spree/payment/processing.rb +54 -30
  48. data/app/models/spree/payment.rb +13 -9
  49. data/app/models/spree/payment_create.rb +1 -13
  50. data/app/models/spree/payment_method/bogus_credit_card.rb +13 -9
  51. data/app/models/spree/payment_method/credit_card.rb +1 -3
  52. data/app/models/spree/payment_method/simple_bogus_credit_card.rb +4 -4
  53. data/app/models/spree/payment_method.rb +7 -106
  54. data/app/models/spree/payment_source.rb +2 -2
  55. data/app/models/spree/preference.rb +1 -1
  56. data/app/models/spree/price.rb +3 -9
  57. data/app/models/spree/product/scopes.rb +9 -32
  58. data/app/models/spree/product.rb +24 -52
  59. data/app/models/spree/promotion/actions/create_adjustment.rb +0 -3
  60. data/app/models/spree/promotion/actions/create_item_adjustments.rb +0 -3
  61. data/app/models/spree/promotion/actions/create_quantity_adjustments.rb +0 -3
  62. data/app/models/spree/promotion/actions/free_shipping.rb +6 -5
  63. data/app/models/spree/promotion/rules/taxon.rb +2 -15
  64. data/app/models/spree/promotion.rb +15 -8
  65. data/app/models/spree/promotion_action.rb +5 -15
  66. data/app/models/spree/promotion_code/batch_builder.rb +0 -14
  67. data/app/models/spree/promotion_code.rb +8 -3
  68. data/app/models/spree/promotion_code_batch.rb +1 -1
  69. data/app/models/spree/promotion_handler/coupon.rb +2 -2
  70. data/app/models/spree/promotion_rule.rb +5 -1
  71. data/app/models/spree/promotion_rule_role.rb +1 -1
  72. data/app/models/spree/refund.rb +19 -13
  73. data/app/models/spree/reimbursement.rb +11 -22
  74. data/app/models/spree/reimbursement_performer.rb +2 -8
  75. data/app/models/spree/reimbursement_type/credit.rb +1 -4
  76. data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +8 -2
  77. data/app/models/spree/reimbursement_type/store_credit.rb +1 -4
  78. data/app/models/spree/return_authorization.rb +2 -5
  79. data/app/models/spree/return_item/exchange_variant_eligibility/same_option_value.rb +1 -1
  80. data/app/models/spree/return_item.rb +10 -18
  81. data/app/models/spree/role.rb +1 -1
  82. data/app/models/spree/shipment.rb +3 -56
  83. data/app/models/spree/shipping_calculator.rb +1 -1
  84. data/app/models/spree/shipping_manifest.rb +2 -2
  85. data/app/models/spree/shipping_method.rb +3 -35
  86. data/app/models/spree/shipping_rate.rb +1 -3
  87. data/app/models/spree/shipping_rate_tax.rb +1 -1
  88. data/app/models/spree/state.rb +0 -4
  89. data/app/models/spree/stock/availability_validator.rb +2 -2
  90. data/app/models/spree/stock/inventory_unit_builder.rb +18 -7
  91. data/app/models/spree/stock/inventory_units_finalizer.rb +3 -5
  92. data/app/models/spree/stock/inventory_validator.rb +2 -2
  93. data/app/models/spree/stock/package.rb +1 -1
  94. data/app/models/spree/stock/simple_coordinator.rb +7 -18
  95. data/app/models/spree/stock/splitter/base.rb +2 -7
  96. data/app/models/spree/stock_item.rb +3 -15
  97. data/app/models/spree/stock_movement.rb +2 -0
  98. data/app/models/spree/store.rb +1 -13
  99. data/app/models/spree/store_credit.rb +9 -7
  100. data/app/models/spree/store_credit_category.rb +3 -8
  101. data/app/models/spree/store_credit_event.rb +1 -7
  102. data/app/models/spree/store_credit_reason.rb +0 -4
  103. data/app/models/spree/tax/tax_helpers.rb +1 -1
  104. data/app/models/spree/tax_calculator/shipping_rate.rb +1 -12
  105. data/app/models/spree/tax_category.rb +2 -8
  106. data/app/models/spree/tax_rate.rb +7 -34
  107. data/app/models/spree/taxon/active_storage_attachment.rb +13 -0
  108. data/app/models/spree/taxon/paperclip_attachment.rb +0 -4
  109. data/app/models/spree/taxon.rb +1 -12
  110. data/app/models/spree/user_address.rb +3 -2
  111. data/app/models/spree/variant.rb +8 -58
  112. data/app/models/spree/variant_property_rule.rb +5 -1
  113. data/app/models/spree/wallet/add_payment_sources_to_wallet.rb +8 -3
  114. data/app/models/spree/zone.rb +1 -1
  115. data/config/locales/en.yml +293 -13
  116. data/db/default/spree/countries.rb +1 -1
  117. data/db/default/spree/states.rb +12 -4
  118. data/db/default/spree/store_credit.rb +2 -2
  119. data/db/migrate/20180416083007_add_apply_to_all_to_variant_property_rule.rb +12 -0
  120. data/db/migrate/20200320144521_add_default_billng_flag_to_user_addresses.rb +6 -0
  121. data/db/migrate/20200530111458_add_bcc_email_to_spree_stores.rb +7 -0
  122. data/db/migrate/20201008213609_add_discontinue_on_to_spree_products.rb +7 -0
  123. data/db/migrate/20210122110141_add_name_to_spree_addresses.rb +13 -0
  124. data/lib/generators/{spree → solidus}/install/install_generator.rb +82 -14
  125. data/lib/generators/{spree → solidus}/install/templates/config/initializers/spree.rb.tt +4 -9
  126. data/lib/generators/spree/dummy/dummy_generator.rb +2 -1
  127. data/lib/generators/spree/dummy/templates/rails/database.yml +6 -1
  128. data/lib/generators/spree/dummy/templates/rails/storage.yml +3 -0
  129. data/lib/generators/spree/dummy/templates/rails/test.rb +6 -1
  130. data/lib/solidus/migrations/promotions_with_code_handlers.rb +1 -1
  131. data/lib/spree/app_configuration.rb +104 -72
  132. data/lib/spree/core/class_constantizer.rb +2 -0
  133. data/lib/spree/core/controller_helpers/auth.rb +4 -4
  134. data/lib/spree/core/controller_helpers/current_host.rb +17 -0
  135. data/lib/spree/core/controller_helpers/order.rb +8 -27
  136. data/lib/spree/core/controller_helpers/payment_parameters.rb +0 -54
  137. data/lib/spree/core/controller_helpers/pricing.rb +0 -8
  138. data/lib/spree/core/controller_helpers/strong_parameters.rb +0 -4
  139. data/lib/spree/core/engine.rb +23 -8
  140. data/lib/spree/core/environment_extension.rb +0 -9
  141. data/lib/spree/core/importer/order.rb +24 -10
  142. data/lib/spree/core/permalinks.rb +1 -3
  143. data/lib/spree/core/product_filters.rb +5 -44
  144. data/lib/spree/core/role_configuration.rb +0 -14
  145. data/lib/spree/core/search/base.rb +0 -26
  146. data/lib/spree/core/state_machines/order.rb +249 -0
  147. data/lib/spree/core/state_machines/return_item/reception_status.rb +2 -2
  148. data/lib/spree/core/state_machines.rb +11 -1
  149. data/lib/spree/core/validators/email.rb +2 -2
  150. data/lib/spree/core/version.rb +1 -1
  151. data/lib/spree/core.rb +11 -19
  152. data/lib/spree/deprecation.rb +1 -1
  153. data/lib/spree/encryptor.rb +25 -0
  154. data/lib/spree/event/adapters/active_support_notifications.rb +32 -0
  155. data/lib/spree/event/configuration.rb +7 -7
  156. data/lib/spree/event/subscriber.rb +22 -20
  157. data/lib/spree/event/subscriber_registry.rb +94 -0
  158. data/lib/spree/event.rb +20 -18
  159. data/lib/spree/i18n.rb +0 -22
  160. data/lib/spree/mailer_previews/carton_preview.rb +2 -1
  161. data/lib/spree/money.rb +3 -18
  162. data/lib/spree/permission_sets/configuration_display.rb +14 -14
  163. data/lib/spree/permission_sets/default_customer.rb +16 -16
  164. data/lib/spree/permission_sets/order_display.rb +11 -11
  165. data/lib/spree/permission_sets/order_management.rb +1 -1
  166. data/lib/spree/permission_sets/product_display.rb +9 -9
  167. data/lib/spree/permission_sets/promotion_display.rb +5 -5
  168. data/lib/spree/permission_sets/restricted_stock_display.rb +2 -2
  169. data/lib/spree/permission_sets/restricted_stock_management.rb +1 -1
  170. data/lib/spree/permission_sets/stock_display.rb +2 -2
  171. data/lib/spree/permission_sets/stock_management.rb +1 -1
  172. data/lib/spree/permission_sets/user_display.rb +3 -3
  173. data/lib/spree/permission_sets/user_management.rb +4 -3
  174. data/lib/spree/permitted_attributes.rb +12 -56
  175. data/lib/spree/preferences/persistable.rb +23 -0
  176. data/lib/spree/preferences/preferable.rb +4 -3
  177. data/lib/spree/preferences/preferable_class_methods.rb +22 -3
  178. data/lib/spree/testing_support/ability_helpers.rb +9 -9
  179. data/lib/spree/testing_support/authorization_helpers.rb +1 -0
  180. data/lib/spree/testing_support/blacklist_urls.rb +23 -0
  181. data/lib/spree/testing_support/capybara_ext.rb +3 -30
  182. data/lib/spree/testing_support/common_rake.rb +3 -3
  183. data/lib/spree/testing_support/controller_requests.rb +0 -82
  184. data/lib/spree/testing_support/dummy_app/mailer_previews/test_mailer_preview.rb +4 -0
  185. data/lib/spree/testing_support/dummy_app/migrations.rb +2 -6
  186. data/lib/spree/testing_support/dummy_app/rake_tasks.rb +1 -3
  187. data/lib/spree/testing_support/dummy_app.rb +41 -24
  188. data/lib/spree/testing_support/factories/address_factory.rb +7 -4
  189. data/lib/spree/testing_support/factories/adjustment_factory.rb +10 -5
  190. data/lib/spree/testing_support/factories/adjustment_reason_factory.rb +5 -0
  191. data/lib/spree/testing_support/factories/calculator_factory.rb +5 -0
  192. data/lib/spree/testing_support/factories/carton_factory.rb +7 -2
  193. data/lib/spree/testing_support/factories/country_factory.rb +5 -0
  194. data/lib/spree/testing_support/factories/credit_card_factory.rb +5 -0
  195. data/lib/spree/testing_support/factories/customer_return_factory.rb +8 -3
  196. data/lib/spree/testing_support/factories/image_factory.rb +6 -1
  197. data/lib/spree/testing_support/factories/inventory_unit_factory.rb +9 -4
  198. data/lib/spree/testing_support/factories/line_item_factory.rb +7 -2
  199. data/lib/spree/testing_support/factories/option_type_factory.rb +8 -0
  200. data/lib/spree/testing_support/factories/option_value_factory.rb +5 -0
  201. data/lib/spree/testing_support/factories/order_factory.rb +11 -7
  202. data/lib/spree/testing_support/factories/order_promotion_factory.rb +7 -2
  203. data/lib/spree/testing_support/factories/payment_factory.rb +9 -4
  204. data/lib/spree/testing_support/factories/payment_method_factory.rb +5 -0
  205. data/lib/spree/testing_support/factories/price_factory.rb +6 -1
  206. data/lib/spree/testing_support/factories/product_factory.rb +10 -5
  207. data/lib/spree/testing_support/factories/product_option_type_factory.rb +7 -2
  208. data/lib/spree/testing_support/factories/product_property_factory.rb +7 -2
  209. data/lib/spree/testing_support/factories/promotion_category_factory.rb +5 -0
  210. data/lib/spree/testing_support/factories/promotion_code_factory.rb +7 -2
  211. data/lib/spree/testing_support/factories/promotion_factory.rb +13 -2
  212. data/lib/spree/testing_support/factories/property_factory.rb +5 -0
  213. data/lib/spree/testing_support/factories/refund_factory.rb +7 -2
  214. data/lib/spree/testing_support/factories/refund_reason_factory.rb +5 -0
  215. data/lib/spree/testing_support/factories/reimbursement_factory.rb +7 -2
  216. data/lib/spree/testing_support/factories/reimbursement_type_factory.rb +5 -0
  217. data/lib/spree/testing_support/factories/return_authorization_factory.rb +8 -3
  218. data/lib/spree/testing_support/factories/return_item_factory.rb +8 -4
  219. data/lib/spree/testing_support/factories/return_reason_factory.rb +5 -0
  220. data/lib/spree/testing_support/factories/role_factory.rb +5 -0
  221. data/lib/spree/testing_support/factories/shipment_factory.rb +9 -3
  222. data/lib/spree/testing_support/factories/shipping_category_factory.rb +5 -0
  223. data/lib/spree/testing_support/factories/shipping_method_factory.rb +8 -3
  224. data/lib/spree/testing_support/factories/shipping_rate_factory.rb +7 -2
  225. data/lib/spree/testing_support/factories/state_factory.rb +7 -1
  226. data/lib/spree/testing_support/factories/stock_item_factory.rb +7 -2
  227. data/lib/spree/testing_support/factories/stock_location_factory.rb +8 -3
  228. data/lib/spree/testing_support/factories/stock_movement_factory.rb +6 -1
  229. data/lib/spree/testing_support/factories/stock_package_factory.rb +7 -2
  230. data/lib/spree/testing_support/factories/store_credit_category_factory.rb +13 -0
  231. data/lib/spree/testing_support/factories/store_credit_event_factory.rb +8 -2
  232. data/lib/spree/testing_support/factories/store_credit_factory.rb +8 -3
  233. data/lib/spree/testing_support/factories/store_credit_reason_factory.rb +8 -1
  234. data/lib/spree/testing_support/factories/store_credit_type_factory.rb +5 -0
  235. data/lib/spree/testing_support/factories/store_factory.rb +6 -1
  236. data/lib/spree/testing_support/factories/tax_category_factory.rb +7 -1
  237. data/lib/spree/testing_support/factories/tax_rate_factory.rb +8 -3
  238. data/lib/spree/testing_support/factories/taxon_factory.rb +10 -1
  239. data/lib/spree/testing_support/factories/taxonomy_factory.rb +5 -0
  240. data/lib/spree/testing_support/factories/user_factory.rb +14 -3
  241. data/lib/spree/testing_support/factories/variant_factory.rb +9 -4
  242. data/lib/spree/testing_support/factories/variant_property_rule_condition_factory.rb +7 -2
  243. data/lib/spree/testing_support/factories/variant_property_rule_factory.rb +8 -3
  244. data/lib/spree/testing_support/factories/variant_property_rule_value_factory.rb +7 -2
  245. data/lib/spree/testing_support/factories/zone_factory.rb +8 -3
  246. data/lib/spree/testing_support/factories.rb +8 -4
  247. data/lib/spree/testing_support/factory_bot.rb +68 -0
  248. data/lib/spree/testing_support/fixtures/blank.jpg +0 -0
  249. data/lib/spree/testing_support/fixtures/file.txt +1 -0
  250. data/lib/spree/testing_support/job_helpers.rb +24 -0
  251. data/lib/spree/testing_support/order_walkthrough.rb +10 -13
  252. data/lib/spree/testing_support/precompiled_assets.rb +15 -0
  253. data/lib/spree/testing_support/preferences.rb +0 -23
  254. data/lib/spree/testing_support/sequences.rb +4 -1
  255. data/lib/spree/testing_support/shared_examples/gallery.rb +1 -1
  256. data/lib/spree/testing_support/translations.rb +25 -0
  257. data/lib/spree/testing_support.rb +31 -0
  258. data/lib/tasks/solidus/check_orders_with_invalid_email.rake +18 -0
  259. data/lib/tasks/upgrade.rake +15 -0
  260. data/solidus_core.gemspec +30 -7
  261. metadata +137 -408
  262. data/app/mailers/spree/test_mailer.rb +0 -13
  263. data/app/models/concerns/spree/user_payment_source.rb +0 -26
  264. data/app/models/spree/calculator/free_shipping.rb +0 -21
  265. data/app/models/spree/calculator/percent_per_item.rb +0 -49
  266. data/app/models/spree/calculator/price_sack.rb +0 -27
  267. data/app/models/spree/gateway/bogus.rb +0 -13
  268. data/app/models/spree/gateway/bogus_simple.rb +0 -13
  269. data/app/models/spree/gateway.rb +0 -14
  270. data/app/models/spree/order/checkout.rb +0 -243
  271. data/app/models/spree/order_capturing.rb +0 -50
  272. data/app/models/spree/promotion_handler/free_shipping.rb +0 -9
  273. data/lib/solidus/migrations/rename_gateways.rb +0 -41
  274. data/lib/spree/core/current_store.rb +0 -24
  275. data/lib/spree/paranoia_deprecations.rb +0 -21
  276. data/lib/spree/promo/environment.rb +0 -12
  277. data/lib/spree/testing_support/bar_ability.rb +0 -19
  278. data/lib/tasks/core.rake +0 -104
  279. data/lib/tasks/email.rake +0 -11
  280. data/lib/tasks/migrations/copy_order_bill_address_to_credit_card.rake +0 -119
  281. data/lib/tasks/migrations/migrate_shipping_rate_taxes.rake +0 -22
  282. data/lib/tasks/migrations/migrate_user_addresses.rake +0 -34
  283. data/lib/tasks/migrations/rename_gateways.rake +0 -23
  284. data/lib/tasks/order_capturing.rake +0 -27
  285. data/script/rails +0 -10
  286. data/spec/fixtures/thinking-cat.jpg +0 -0
  287. data/spec/helpers/base_helper_spec.rb +0 -168
  288. data/spec/helpers/products_helper_spec.rb +0 -202
  289. data/spec/helpers/taxons_helper_spec.rb +0 -43
  290. data/spec/jobs/promotion_code_batch_job_spec.rb +0 -96
  291. data/spec/lib/calculated_adjustments_spec.rb +0 -133
  292. data/spec/lib/i18n_spec.rb +0 -97
  293. data/spec/lib/search/base_spec.rb +0 -91
  294. data/spec/lib/search/variant_spec.rb +0 -115
  295. data/spec/lib/spree/app_configuration_spec.rb +0 -140
  296. data/spec/lib/spree/core/class_constantizer_spec.rb +0 -91
  297. data/spec/lib/spree/core/controller_helpers/auth_spec.rb +0 -73
  298. data/spec/lib/spree/core/controller_helpers/order_spec.rb +0 -126
  299. data/spec/lib/spree/core/controller_helpers/payment_parameters_spec.rb +0 -195
  300. data/spec/lib/spree/core/controller_helpers/pricing_spec.rb +0 -94
  301. data/spec/lib/spree/core/controller_helpers/search_spec.rb +0 -21
  302. data/spec/lib/spree/core/controller_helpers/store_spec.rb +0 -18
  303. data/spec/lib/spree/core/controller_helpers/strong_parameters_spec.rb +0 -48
  304. data/spec/lib/spree/core/current_store_spec.rb +0 -33
  305. data/spec/lib/spree/core/environment_extension_spec.rb +0 -46
  306. data/spec/lib/spree/core/importer/order_spec.rb +0 -484
  307. data/spec/lib/spree/core/role_configuration_spec.rb +0 -155
  308. data/spec/lib/spree/core/stock_configuration_spec.rb +0 -95
  309. data/spec/lib/spree/core/testing_support/factories/address_factory_spec.rb +0 -61
  310. data/spec/lib/spree/core/testing_support/factories/adjustment_factory_spec.rb +0 -20
  311. data/spec/lib/spree/core/testing_support/factories/adjustment_reason_factory_spec.rb +0 -14
  312. data/spec/lib/spree/core/testing_support/factories/calculator_factory_spec.rb +0 -44
  313. data/spec/lib/spree/core/testing_support/factories/carton_factory_spec.rb +0 -14
  314. data/spec/lib/spree/core/testing_support/factories/country_factory_spec.rb +0 -14
  315. data/spec/lib/spree/core/testing_support/factories/credit_card_factory_spec.rb +0 -14
  316. data/spec/lib/spree/core/testing_support/factories/customer_return_factory_spec.rb +0 -39
  317. data/spec/lib/spree/core/testing_support/factories/image_factory_spec.rb +0 -14
  318. data/spec/lib/spree/core/testing_support/factories/inventory_unit_factory_spec.rb +0 -14
  319. data/spec/lib/spree/core/testing_support/factories/line_item_factory_spec.rb +0 -14
  320. data/spec/lib/spree/core/testing_support/factories/option_type_factory_spec.rb +0 -14
  321. data/spec/lib/spree/core/testing_support/factories/option_value_factory_spec.rb +0 -14
  322. data/spec/lib/spree/core/testing_support/factories/order_factory_spec.rb +0 -376
  323. data/spec/lib/spree/core/testing_support/factories/order_promotion_factory_spec.rb +0 -14
  324. data/spec/lib/spree/core/testing_support/factories/payment_factory_spec.rb +0 -40
  325. data/spec/lib/spree/core/testing_support/factories/payment_method_factory_spec.rb +0 -32
  326. data/spec/lib/spree/core/testing_support/factories/price_factory_spec.rb +0 -14
  327. data/spec/lib/spree/core/testing_support/factories/product_factory_spec.rb +0 -32
  328. data/spec/lib/spree/core/testing_support/factories/product_option_type_factory_spec.rb +0 -14
  329. data/spec/lib/spree/core/testing_support/factories/product_property_factory_spec.rb +0 -14
  330. data/spec/lib/spree/core/testing_support/factories/promotion_category_factory_spec.rb +0 -14
  331. data/spec/lib/spree/core/testing_support/factories/promotion_code_factory_spec.rb +0 -14
  332. data/spec/lib/spree/core/testing_support/factories/promotion_factory_spec.rb +0 -32
  333. data/spec/lib/spree/core/testing_support/factories/property_factory_spec.rb +0 -14
  334. data/spec/lib/spree/core/testing_support/factories/refund_factory_spec.rb +0 -14
  335. data/spec/lib/spree/core/testing_support/factories/refund_reason_factory_spec.rb +0 -14
  336. data/spec/lib/spree/core/testing_support/factories/reimbursement_factory_spec.rb +0 -20
  337. data/spec/lib/spree/core/testing_support/factories/reimbursement_type_factory_spec.rb +0 -14
  338. data/spec/lib/spree/core/testing_support/factories/return_authorization_factory_spec.rb +0 -14
  339. data/spec/lib/spree/core/testing_support/factories/return_item_factory_spec.rb +0 -20
  340. data/spec/lib/spree/core/testing_support/factories/return_reason_factory_spec.rb +0 -14
  341. data/spec/lib/spree/core/testing_support/factories/role_factory_spec.rb +0 -20
  342. data/spec/lib/spree/core/testing_support/factories/shipment_factory_spec.rb +0 -14
  343. data/spec/lib/spree/core/testing_support/factories/shipping_category_factory_spec.rb +0 -14
  344. data/spec/lib/spree/core/testing_support/factories/shipping_method_factory_spec.rb +0 -44
  345. data/spec/lib/spree/core/testing_support/factories/shipping_rate_factory_spec.rb +0 -14
  346. data/spec/lib/spree/core/testing_support/factories/state_factory_spec.rb +0 -59
  347. data/spec/lib/spree/core/testing_support/factories/stock_item_factory_spec.rb +0 -14
  348. data/spec/lib/spree/core/testing_support/factories/stock_location_factory_spec.rb +0 -35
  349. data/spec/lib/spree/core/testing_support/factories/stock_movement_factory_spec.rb +0 -14
  350. data/spec/lib/spree/core/testing_support/factories/stock_package_factory_spec.rb +0 -28
  351. data/spec/lib/spree/core/testing_support/factories/store_credit_category_factory_spec.rb +0 -14
  352. data/spec/lib/spree/core/testing_support/factories/store_credit_event_factory_spec.rb +0 -43
  353. data/spec/lib/spree/core/testing_support/factories/store_credit_factory_spec.rb +0 -14
  354. data/spec/lib/spree/core/testing_support/factories/store_credit_reason_factory_spec.rb +0 -14
  355. data/spec/lib/spree/core/testing_support/factories/store_credit_type_factory_spec.rb +0 -20
  356. data/spec/lib/spree/core/testing_support/factories/store_factory_spec.rb +0 -14
  357. data/spec/lib/spree/core/testing_support/factories/tax_category_factory_spec.rb +0 -14
  358. data/spec/lib/spree/core/testing_support/factories/tax_rate_factory_spec.rb +0 -14
  359. data/spec/lib/spree/core/testing_support/factories/taxon_factory_spec.rb +0 -14
  360. data/spec/lib/spree/core/testing_support/factories/taxonomy_factory_spec.rb +0 -14
  361. data/spec/lib/spree/core/testing_support/factories/user_factory_spec.rb +0 -24
  362. data/spec/lib/spree/core/testing_support/factories/variant_factory_spec.rb +0 -56
  363. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_condition_factory_spec.rb +0 -14
  364. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_factory_spec.rb +0 -14
  365. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_value_factory_spec.rb +0 -14
  366. data/spec/lib/spree/core/testing_support/factories/zone_factory_spec.rb +0 -20
  367. data/spec/lib/spree/core/testing_support/preferences_spec.rb +0 -61
  368. data/spec/lib/spree/core/validators/email_spec.rb +0 -53
  369. data/spec/lib/spree/core/version_spec.rb +0 -19
  370. data/spec/lib/spree/event/subscriber_spec.rb +0 -85
  371. data/spec/lib/spree/event_spec.rb +0 -130
  372. data/spec/lib/spree/localized_number_spec.rb +0 -45
  373. data/spec/lib/spree/migrations_spec.rb +0 -32
  374. data/spec/lib/spree/money_spec.rb +0 -298
  375. data/spec/lib/spree/permission_sets/default_customer_spec.rb +0 -22
  376. data/spec/lib/spree/permitted_attributes_spec.rb +0 -41
  377. data/spec/lib/spree/promo/environment_spec.rb +0 -53
  378. data/spec/lib/tasks/dummy_task.rake +0 -12
  379. data/spec/lib/tasks/dummy_task_spec.rb +0 -30
  380. data/spec/lib/tasks/migrations/migrate_shipping_rate_taxes_spec.rb +0 -21
  381. data/spec/mailers/carton_mailer_spec.rb +0 -44
  382. data/spec/mailers/order_mailer_spec.rb +0 -117
  383. data/spec/mailers/promotion_code_batch_mailer_spec.rb +0 -47
  384. data/spec/mailers/reimbursement_mailer_spec.rb +0 -36
  385. data/spec/mailers/test_mailer_spec.rb +0 -13
  386. data/spec/models/spree/ability_spec.rb +0 -279
  387. data/spec/models/spree/address_spec.rb +0 -399
  388. data/spec/models/spree/adjustment_reason_spec.rb +0 -11
  389. data/spec/models/spree/adjustment_spec.rb +0 -339
  390. data/spec/models/spree/asset_spec.rb +0 -25
  391. data/spec/models/spree/calculator/default_tax_spec.rb +0 -260
  392. data/spec/models/spree/calculator/distributed_amount_spec.rb +0 -82
  393. data/spec/models/spree/calculator/flat_percent_item_total_spec.rb +0 -39
  394. data/spec/models/spree/calculator/flat_rate_spec.rb +0 -52
  395. data/spec/models/spree/calculator/flexi_rate_spec.rb +0 -158
  396. data/spec/models/spree/calculator/free_shipping_spec.rb +0 -8
  397. data/spec/models/spree/calculator/percent_on_line_item_spec.rb +0 -20
  398. data/spec/models/spree/calculator/percent_per_item_spec.rb +0 -12
  399. data/spec/models/spree/calculator/price_sack_spec.rb +0 -35
  400. data/spec/models/spree/calculator/refunds/default_refund_amount_spec.rb +0 -70
  401. data/spec/models/spree/calculator/shipping/flat_percent_item_total_spec.rb +0 -44
  402. data/spec/models/spree/calculator/shipping/flat_rate_spec.rb +0 -18
  403. data/spec/models/spree/calculator/shipping/flexi_rate_spec.rb +0 -56
  404. data/spec/models/spree/calculator/shipping/per_item_spec.rb +0 -25
  405. data/spec/models/spree/calculator/shipping/price_sack_spec.rb +0 -44
  406. data/spec/models/spree/calculator/tiered_flat_rate_spec.rb +0 -99
  407. data/spec/models/spree/calculator/tiered_percent_spec.rb +0 -197
  408. data/spec/models/spree/calculator_spec.rb +0 -43
  409. data/spec/models/spree/carton_spec.rb +0 -145
  410. data/spec/models/spree/classification_spec.rb +0 -126
  411. data/spec/models/spree/concerns/display_money_spec.rb +0 -44
  412. data/spec/models/spree/concerns/ordered_property_value_list_spec.rb +0 -52
  413. data/spec/models/spree/concerns/user_address_book_spec.rb +0 -358
  414. data/spec/models/spree/concerns/user_methods_spec.rb +0 -122
  415. data/spec/models/spree/country_spec.rb +0 -154
  416. data/spec/models/spree/credit_card_spec.rb +0 -373
  417. data/spec/models/spree/customer_return_spec.rb +0 -294
  418. data/spec/models/spree/distributed_amounts_handler_spec.rb +0 -83
  419. data/spec/models/spree/exchange_spec.rb +0 -76
  420. data/spec/models/spree/fulfilment_changer_spec.rb +0 -340
  421. data/spec/models/spree/gallery/product_gallery_spec.rb +0 -21
  422. data/spec/models/spree/gallery/variant_gallery_spec.rb +0 -21
  423. data/spec/models/spree/gateway/bogus_simple.rb +0 -14
  424. data/spec/models/spree/gateway/bogus_spec.rb +0 -14
  425. data/spec/models/spree/gateway_spec.rb +0 -14
  426. data/spec/models/spree/image_spec.rb +0 -25
  427. data/spec/models/spree/inventory_unit_spec.rb +0 -309
  428. data/spec/models/spree/line_item_spec.rb +0 -240
  429. data/spec/models/spree/option_type_spec.rb +0 -16
  430. data/spec/models/spree/option_value_spec.rb +0 -52
  431. data/spec/models/spree/order/address_spec.rb +0 -52
  432. data/spec/models/spree/order/adjustments_spec.rb +0 -29
  433. data/spec/models/spree/order/callbacks_spec.rb +0 -44
  434. data/spec/models/spree/order/checkout_spec.rb +0 -740
  435. data/spec/models/spree/order/finalizing_spec.rb +0 -92
  436. data/spec/models/spree/order/number_generator_spec.rb +0 -47
  437. data/spec/models/spree/order/outstanding_balance_integration_spec.rb +0 -138
  438. data/spec/models/spree/order/payment_spec.rb +0 -280
  439. data/spec/models/spree/order/risk_assessment_spec.rb +0 -70
  440. data/spec/models/spree/order/state_machine_spec.rb +0 -122
  441. data/spec/models/spree/order/totals_spec.rb +0 -26
  442. data/spec/models/spree/order/validations_spec.rb +0 -17
  443. data/spec/models/spree/order_cancellations_spec.rb +0 -233
  444. data/spec/models/spree/order_capturing_spec.rb +0 -16
  445. data/spec/models/spree/order_contents_spec.rb +0 -362
  446. data/spec/models/spree/order_inventory_spec.rb +0 -285
  447. data/spec/models/spree/order_merger_spec.rb +0 -162
  448. data/spec/models/spree/order_mutex_spec.rb +0 -89
  449. data/spec/models/spree/order_promotion_spec.rb +0 -33
  450. data/spec/models/spree/order_shipping_spec.rb +0 -247
  451. data/spec/models/spree/order_spec.rb +0 -1687
  452. data/spec/models/spree/order_taxation_spec.rb +0 -128
  453. data/spec/models/spree/order_update_attributes_spec.rb +0 -49
  454. data/spec/models/spree/order_updater_spec.rb +0 -556
  455. data/spec/models/spree/payment/cancellation_spec.rb +0 -84
  456. data/spec/models/spree/payment_create_spec.rb +0 -195
  457. data/spec/models/spree/payment_method/bogus_credit_card_spec.rb +0 -10
  458. data/spec/models/spree/payment_method/check_spec.rb +0 -80
  459. data/spec/models/spree/payment_method/credit_card_spec.rb +0 -68
  460. data/spec/models/spree/payment_method/simple_bogus_credit_card_spec.rb +0 -20
  461. data/spec/models/spree/payment_method/store_credit_spec.rb +0 -325
  462. data/spec/models/spree/payment_method_spec.rb +0 -408
  463. data/spec/models/spree/payment_spec.rb +0 -1270
  464. data/spec/models/spree/permission_sets/base_spec.rb +0 -14
  465. data/spec/models/spree/permission_sets/configuration_display.rb +0 -79
  466. data/spec/models/spree/permission_sets/configuration_management_spec.rb +0 -49
  467. data/spec/models/spree/permission_sets/dashboard_display_spec.rb +0 -23
  468. data/spec/models/spree/permission_sets/order_display_spec.rb +0 -56
  469. data/spec/models/spree/permission_sets/order_management_spec.rb +0 -43
  470. data/spec/models/spree/permission_sets/product_display_spec.rb +0 -57
  471. data/spec/models/spree/permission_sets/product_management_spec.rb +0 -39
  472. data/spec/models/spree/permission_sets/promotion_display_spec.rb +0 -41
  473. data/spec/models/spree/permission_sets/promotion_management_spec.rb +0 -29
  474. data/spec/models/spree/permission_sets/restricted_stock_display_spec.rb +0 -42
  475. data/spec/models/spree/permission_sets/restricted_stock_management_spec.rb +0 -42
  476. data/spec/models/spree/permission_sets/stock_display_spec.rb +0 -25
  477. data/spec/models/spree/permission_sets/stock_management_spec.rb +0 -23
  478. data/spec/models/spree/permission_sets/user_display_spec.rb +0 -39
  479. data/spec/models/spree/permission_sets/user_management_spec.rb +0 -58
  480. data/spec/models/spree/preference_spec.rb +0 -79
  481. data/spec/models/spree/preferences/configuration_spec.rb +0 -27
  482. data/spec/models/spree/preferences/preferable_spec.rb +0 -334
  483. data/spec/models/spree/preferences/scoped_store_spec.rb +0 -62
  484. data/spec/models/spree/preferences/static_model_preferences_spec.rb +0 -79
  485. data/spec/models/spree/preferences/statically_configurable_spec.rb +0 -67
  486. data/spec/models/spree/preferences/store_spec.rb +0 -40
  487. data/spec/models/spree/price_spec.rb +0 -150
  488. data/spec/models/spree/product/scopes_spec.rb +0 -164
  489. data/spec/models/spree/product_duplicator_spec.rb +0 -92
  490. data/spec/models/spree/product_filter_spec.rb +0 -28
  491. data/spec/models/spree/product_property_spec.rb +0 -20
  492. data/spec/models/spree/product_spec.rb +0 -584
  493. data/spec/models/spree/promotion/actions/create_adjustment_spec.rb +0 -126
  494. data/spec/models/spree/promotion/actions/create_item_adjustments_spec.rb +0 -198
  495. data/spec/models/spree/promotion/actions/create_quantity_adjustments_spec.rb +0 -298
  496. data/spec/models/spree/promotion/actions/free_shipping_spec.rb +0 -61
  497. data/spec/models/spree/promotion/rules/first_order_spec.rb +0 -87
  498. data/spec/models/spree/promotion/rules/first_repeat_purchase_since_spec.rb +0 -71
  499. data/spec/models/spree/promotion/rules/item_total_spec.rb +0 -128
  500. data/spec/models/spree/promotion/rules/nth_order_spec.rb +0 -72
  501. data/spec/models/spree/promotion/rules/one_use_per_user_spec.rb +0 -54
  502. data/spec/models/spree/promotion/rules/option_value_spec.rb +0 -96
  503. data/spec/models/spree/promotion/rules/product_spec.rb +0 -193
  504. data/spec/models/spree/promotion/rules/store_spec.rb +0 -35
  505. data/spec/models/spree/promotion/rules/taxon_spec.rb +0 -227
  506. data/spec/models/spree/promotion/rules/user_logged_in_spec.rb +0 -33
  507. data/spec/models/spree/promotion/rules/user_role_spec.rb +0 -88
  508. data/spec/models/spree/promotion/rules/user_spec.rb +0 -39
  509. data/spec/models/spree/promotion_action_spec.rb +0 -44
  510. data/spec/models/spree/promotion_category_spec.rb +0 -19
  511. data/spec/models/spree/promotion_code/batch_builder_spec.rb +0 -107
  512. data/spec/models/spree/promotion_code_batch_spec.rb +0 -54
  513. data/spec/models/spree/promotion_code_spec.rb +0 -206
  514. data/spec/models/spree/promotion_handler/cart_spec.rb +0 -132
  515. data/spec/models/spree/promotion_handler/coupon_spec.rb +0 -419
  516. data/spec/models/spree/promotion_handler/page_spec.rb +0 -45
  517. data/spec/models/spree/promotion_handler/shipping_spec.rb +0 -96
  518. data/spec/models/spree/promotion_rule_spec.rb +0 -34
  519. data/spec/models/spree/promotion_spec.rb +0 -945
  520. data/spec/models/spree/refund_spec.rb +0 -200
  521. data/spec/models/spree/reimbursement/credit_spec.rb +0 -38
  522. data/spec/models/spree/reimbursement/reimbursement_type_engine_spec.rb +0 -144
  523. data/spec/models/spree/reimbursement/reimbursement_type_validator_spec.rb +0 -85
  524. data/spec/models/spree/reimbursement_performer_spec.rb +0 -33
  525. data/spec/models/spree/reimbursement_spec.rb +0 -278
  526. data/spec/models/spree/reimbursement_tax_calculator_spec.rb +0 -52
  527. data/spec/models/spree/reimbursement_type/credit_spec.rb +0 -56
  528. data/spec/models/spree/reimbursement_type/exchange_spec.rb +0 -48
  529. data/spec/models/spree/reimbursement_type/original_payment_spec.rb +0 -110
  530. data/spec/models/spree/reimbursement_type/store_credit_spec.rb +0 -111
  531. data/spec/models/spree/return_authorization_spec.rb +0 -226
  532. data/spec/models/spree/return_item/eligibility_validator/default_spec.rb +0 -79
  533. data/spec/models/spree/return_item/eligibility_validator/inventory_shipped_spec.rb +0 -59
  534. data/spec/models/spree/return_item/eligibility_validator/no_reimbursements_spec.rb +0 -86
  535. data/spec/models/spree/return_item/eligibility_validator/order_completed_spec.rb +0 -35
  536. data/spec/models/spree/return_item/eligibility_validator/rma_required_spec.rb +0 -31
  537. data/spec/models/spree/return_item/eligibility_validator/time_since_purchase_spec.rb +0 -42
  538. data/spec/models/spree/return_item/exchange_variant_eligibility/same_option_value_spec.rb +0 -66
  539. data/spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb +0 -43
  540. data/spec/models/spree/return_item_spec.rb +0 -785
  541. data/spec/models/spree/returns_calculator_spec.rb +0 -16
  542. data/spec/models/spree/shipment_spec.rb +0 -914
  543. data/spec/models/spree/shipping_calculator_spec.rb +0 -45
  544. data/spec/models/spree/shipping_manifest_spec.rb +0 -110
  545. data/spec/models/spree/shipping_method_spec.rb +0 -292
  546. data/spec/models/spree/shipping_rate_spec.rb +0 -154
  547. data/spec/models/spree/shipping_rate_tax_spec.rb +0 -79
  548. data/spec/models/spree/state_spec.rb +0 -43
  549. data/spec/models/spree/stock/allocator/on_hand_first_spec.rb +0 -146
  550. data/spec/models/spree/stock/availability_spec.rb +0 -143
  551. data/spec/models/spree/stock/availability_validator_spec.rb +0 -140
  552. data/spec/models/spree/stock/content_item_spec.rb +0 -70
  553. data/spec/models/spree/stock/differentiator_spec.rb +0 -41
  554. data/spec/models/spree/stock/estimator_spec.rb +0 -241
  555. data/spec/models/spree/stock/inventory_unit_builder_spec.rb +0 -34
  556. data/spec/models/spree/stock/inventory_units_finalizer_spec.rb +0 -58
  557. data/spec/models/spree/stock/location_filter/active_spec.rb +0 -22
  558. data/spec/models/spree/stock/location_sorter/default_first_spec.rb +0 -22
  559. data/spec/models/spree/stock/location_sorter/unsorted_spec.rb +0 -21
  560. data/spec/models/spree/stock/package_spec.rb +0 -182
  561. data/spec/models/spree/stock/quantifier_spec.rb +0 -113
  562. data/spec/models/spree/stock/shipping_rate_selector_spec.rb +0 -18
  563. data/spec/models/spree/stock/shipping_rate_sorter_spec.rb +0 -18
  564. data/spec/models/spree/stock/simple_coordinator_spec.rb +0 -264
  565. data/spec/models/spree/stock/splitter/backordered_spec.rb +0 -31
  566. data/spec/models/spree/stock/splitter/base_spec.rb +0 -22
  567. data/spec/models/spree/stock/splitter/shipping_category_spec.rb +0 -48
  568. data/spec/models/spree/stock/splitter/weight_spec.rb +0 -31
  569. data/spec/models/spree/stock/splitter_chain_spec.rb +0 -66
  570. data/spec/models/spree/stock_item_spec.rb +0 -348
  571. data/spec/models/spree/stock_location_spec.rb +0 -288
  572. data/spec/models/spree/stock_movement_spec.rb +0 -58
  573. data/spec/models/spree/stock_quantities_spec.rb +0 -249
  574. data/spec/models/spree/store_credit_category_spec.rb +0 -19
  575. data/spec/models/spree/store_credit_event_spec.rb +0 -328
  576. data/spec/models/spree/store_credit_spec.rb +0 -900
  577. data/spec/models/spree/store_selector/by_server_name_spec.rb +0 -28
  578. data/spec/models/spree/store_selector/legacy_spec.rb +0 -46
  579. data/spec/models/spree/store_spec.rb +0 -156
  580. data/spec/models/spree/tax/order_adjuster_spec.rb +0 -35
  581. data/spec/models/spree/tax/shipping_rate_taxer_spec.rb +0 -59
  582. data/spec/models/spree/tax/tax_location_spec.rb +0 -79
  583. data/spec/models/spree/tax/taxation_integration_spec.rb +0 -815
  584. data/spec/models/spree/tax_calculator/default_spec.rb +0 -56
  585. data/spec/models/spree/tax_category_spec.rb +0 -50
  586. data/spec/models/spree/tax_rate_spec.rb +0 -317
  587. data/spec/models/spree/taxon_spec.rb +0 -197
  588. data/spec/models/spree/taxonomy_spec.rb +0 -15
  589. data/spec/models/spree/taxons/paperclip_attachment_spec.rb +0 -29
  590. data/spec/models/spree/unit_cancel_spec.rb +0 -126
  591. data/spec/models/spree/user_last_url_storer/rules/authentication_rule_spec.rb +0 -31
  592. data/spec/models/spree/user_last_url_storer_spec.rb +0 -60
  593. data/spec/models/spree/user_spec.rb +0 -247
  594. data/spec/models/spree/validations/db_maximum_length_validator_spec.rb +0 -33
  595. data/spec/models/spree/variant/price_selector_spec.rb +0 -90
  596. data/spec/models/spree/variant/pricing_options_spec.rb +0 -204
  597. data/spec/models/spree/variant/scopes_spec.rb +0 -94
  598. data/spec/models/spree/variant/vat_price_generator_spec.rb +0 -77
  599. data/spec/models/spree/variant_property_rule_condition_spec.rb +0 -17
  600. data/spec/models/spree/variant_property_rule_spec.rb +0 -85
  601. data/spec/models/spree/variant_property_rule_value_spec.rb +0 -20
  602. data/spec/models/spree/variant_spec.rb +0 -862
  603. data/spec/models/spree/wallet_payment_source_spec.rb +0 -77
  604. data/spec/models/spree/wallet_spec.rb +0 -155
  605. data/spec/models/spree/zone_spec.rb +0 -248
  606. data/spec/rails_helper.rb +0 -46
  607. data/spec/shared_examples/calculator_shared_examples.rb +0 -10
  608. data/spec/spec_helper.rb +0 -36
  609. data/spec/support/big_decimal.rb +0 -7
  610. data/spec/support/concerns/default_price.rb +0 -44
  611. data/spec/support/concerns/payment_source.rb +0 -66
  612. data/spec/support/concerns/working_factories.rb +0 -15
  613. data/spec/support/dummy_ability.rb +0 -7
  614. /data/lib/generators/{spree → solidus}/install/templates/vendor/assets/javascripts/spree/backend/all.js +0 -0
  615. /data/lib/generators/{spree → solidus}/install/templates/vendor/assets/javascripts/spree/frontend/all.js +0 -0
  616. /data/lib/generators/{spree → solidus}/install/templates/vendor/assets/stylesheets/spree/backend/all.css +0 -0
  617. /data/lib/generators/{spree → solidus}/install/templates/vendor/assets/stylesheets/spree/frontend/all.css +0 -0
  618. /data/{app/models → lib}/spree/user_class_handle.rb +0 -0
@@ -1,740 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
- require 'spree/testing_support/order_walkthrough'
5
-
6
- RSpec.describe Spree::Order, type: :model do
7
- let!(:store) { create(:store) }
8
- let(:order) { Spree::Order.new(store: store) }
9
-
10
- def assert_state_changed(order, from, to)
11
- state_change_exists = order.state_changes.where(previous_state: from, next_state: to).exists?
12
- expect(state_change_exists).to be(true), "Expected order to transition from #{from} to #{to}, but didn't."
13
- end
14
-
15
- context "with default state machine" do
16
- transitions = [
17
- { address: :delivery },
18
- { delivery: :payment },
19
- { payment: :confirm },
20
- { delivery: :confirm }
21
- ]
22
-
23
- transitions.each do |transition|
24
- it "transitions from #{transition.keys.first} to #{transition.values.first}" do
25
- transition = Spree::Order.find_transition(from: transition.keys.first, to: transition.values.first)
26
- expect(transition).not_to be_nil
27
- end
28
- end
29
-
30
- it '.find_transition when contract was broken' do
31
- expect(Spree::Order.find_transition({ foo: :bar, baz: :dog })).to be_falsey
32
- end
33
-
34
- describe "remove_transition" do
35
- after do
36
- Spree::Order.checkout_flow(&@old_checkout_flow)
37
- end
38
-
39
- it '.remove_transition', partial_double_verification: false do
40
- options = { from: transitions.first.keys.first, to: transitions.first.values.first }
41
- allow(Spree::Order).to receive(:next_event_transition).and_return([options])
42
- expect(Spree::Order.remove_transition(options)).to be_truthy
43
- end
44
-
45
- it '.remove_transition when contract was broken' do
46
- expect(Spree::Order.remove_transition(nil)).to be_falsey
47
- end
48
- end
49
-
50
- it "always return integer on checkout_step_index" do
51
- expect(order.checkout_step_index("imnotthere")).to be_a Integer
52
- expect(order.checkout_step_index("delivery")).to be > 0
53
- end
54
-
55
- it "passes delivery state when transitioning from address over delivery to payment" do
56
- allow(order).to receive_messages payment_required?: true
57
- order.state = "address"
58
- expect(order.passed_checkout_step?("delivery")).to be false
59
- order.state = "delivery"
60
- expect(order.passed_checkout_step?("delivery")).to be false
61
- order.state = "payment"
62
- expect(order.passed_checkout_step?("delivery")).to be true
63
- end
64
-
65
- context "#checkout_steps" do
66
- context "when confirmation not required" do
67
- before do
68
- allow(order).to receive_messages payment_required?: true
69
- end
70
-
71
- specify do
72
- expect(order.checkout_steps).to eq(%w(address delivery payment confirm complete))
73
- end
74
- end
75
-
76
- context "when confirmation required" do
77
- before do
78
- allow(order).to receive_messages payment_required?: true
79
- end
80
-
81
- specify do
82
- expect(order.checkout_steps).to eq(%w(address delivery payment confirm complete))
83
- end
84
- end
85
-
86
- context "when payment not required" do
87
- before { allow(order).to receive_messages payment_required?: false }
88
- specify do
89
- expect(order.checkout_steps).to eq(%w(address delivery confirm complete))
90
- end
91
- end
92
-
93
- context "when payment required" do
94
- before { allow(order).to receive_messages payment_required?: true }
95
- specify do
96
- expect(order.checkout_steps).to eq(%w(address delivery payment confirm complete))
97
- end
98
- end
99
- end
100
-
101
- it "starts out at cart" do
102
- expect(order.state).to eq("cart")
103
- end
104
-
105
- context "to address" do
106
- before do
107
- order.email = "user@example.com"
108
- order.save!
109
- end
110
-
111
- context "with a line item" do
112
- before do
113
- order.line_items << FactoryBot.create(:line_item)
114
- end
115
-
116
- it "transitions to address" do
117
- order.next!
118
- assert_state_changed(order, 'cart', 'address')
119
- expect(order.state).to eq("address")
120
- end
121
-
122
- it "doesn't raise an error if the default address is invalid" do
123
- order.user = mock_model(Spree::LegacyUser, ship_address: Spree::Address.new, bill_address: Spree::Address.new)
124
- order.next!
125
- end
126
-
127
- context "with default addresses" do
128
- let(:default_address) { FactoryBot.create(:address) }
129
-
130
- shared_examples "it references the user's the default address" do
131
- it do
132
- default_attributes = default_address.reload.value_attributes
133
- order_attributes = Spree::Address.value_attributes(order.send("#{address_kind}_address".to_sym).try(:attributes))
134
-
135
- expect(order_attributes).to eq(default_attributes)
136
- end
137
- end
138
-
139
- it_behaves_like "it references the user's the default address" do
140
- let(:address_kind) { :ship }
141
- before do
142
- order.user = FactoryBot.create(:user)
143
- order.user.default_address = default_address
144
- order.next!
145
- order.reload
146
- end
147
- end
148
-
149
- it_behaves_like "it references the user's the default address" do
150
- let(:address_kind) { :bill }
151
- before do
152
- order.user = FactoryBot.create(:user)
153
- order.user.default_address = default_address
154
- order.next!
155
- order.reload
156
- end
157
- end
158
- end
159
- end
160
-
161
- it "cannot transition to address without any line items" do
162
- expect(order.line_items).to be_blank
163
- expect { order.next! }.to raise_error(StateMachines::InvalidTransition, /#{I18n.t('spree.there_are_no_items_for_this_order')}/)
164
- end
165
- end
166
-
167
- context "from address" do
168
- let(:ship_address) { create(:ship_address) }
169
- let!(:line_item) { create(:line_item, order: order, price: 10) }
170
- let!(:shipping_method) { create(:shipping_method) }
171
-
172
- before do
173
- order.line_items.reload
174
- order.state = 'address'
175
- order.ship_address = ship_address
176
- order.email = "user@example.com"
177
- order.save!
178
- end
179
-
180
- context "no shipping address" do
181
- let(:ship_address) { nil }
182
-
183
- it "does not transition without a ship address" do
184
- expect { order.next! }.to raise_error StateMachines::InvalidTransition
185
- end
186
- end
187
-
188
- it "recalculates tax and updates totals" do
189
- zone = create(:zone, countries: [order.tax_address.country])
190
- create(:tax_rate, tax_categories: [line_item.tax_category], amount: 0.05, zone: zone)
191
- order.next!
192
- expect(order).to have_attributes(
193
- adjustment_total: 0.5,
194
- additional_tax_total: 0.5,
195
- included_tax_total: 0,
196
- total: 20.5
197
- )
198
- end
199
-
200
- it "transitions to delivery" do
201
- order.next!
202
- assert_state_changed(order, 'address', 'delivery')
203
- expect(order.state).to eq("delivery")
204
- end
205
-
206
- it "does not call persist_order_address if there is no address on the order" do
207
- order.user = FactoryBot.create(:user)
208
- order.save!
209
-
210
- expect(order.user).to_not receive(:persist_order_address).with(order)
211
- order.next!
212
- end
213
-
214
- it "calls persist_order_address on the order's user" do
215
- order.user = FactoryBot.create(:user)
216
- order.ship_address = FactoryBot.create(:address)
217
- order.bill_address = FactoryBot.create(:address)
218
- order.save!
219
-
220
- expect(order.user).to receive(:persist_order_address).with(order)
221
- order.next!
222
- end
223
-
224
- it "does not call persist_order_address on the order's user for a temporary address" do
225
- order.user = FactoryBot.create(:user)
226
- order.temporary_address = true
227
- order.save!
228
-
229
- expect(order.user).to_not receive(:persist_order_address)
230
- order.next!
231
- end
232
- end
233
-
234
- context "to delivery" do
235
- let(:ship_address) { FactoryBot.create(:ship_address) }
236
-
237
- before do
238
- order.ship_address = ship_address
239
- end
240
-
241
- context 'when order has default selected_shipping_rate_id', partial_double_verification: false do
242
- let(:shipment) { create(:shipment, order: order) }
243
- let(:shipping_method) { create(:shipping_method) }
244
- let(:shipping_rate) {
245
- [
246
- Spree::ShippingRate.create!(shipping_method: shipping_method, cost: 10.00, shipment: shipment)
247
- ]
248
- }
249
-
250
- before do
251
- order.state = 'address'
252
- shipment.selected_shipping_rate_id = shipping_rate.first.id
253
- order.email = "user@example.com"
254
- order.save!
255
-
256
- allow(order).to receive(:create_proposed_shipments)
257
- allow(order).to receive(:ensure_available_shipping_rates) { true }
258
- end
259
-
260
- it 'should update shipment_total' do
261
- expect { order.next! }.to change{ order.shipment_total }.by(10.00)
262
- end
263
- end
264
-
265
- context "cannot transition to delivery" do
266
- context "if there are no shipping rates for any shipment" do
267
- let!(:line_item){ create :line_item, order: order }
268
- before do
269
- order.state = 'address'
270
- order.email = 'user@example.com'
271
- end
272
- specify do
273
- transition = lambda { order.next! }
274
- expect(transition).to raise_error(StateMachines::InvalidTransition, /#{I18n.t('spree.items_cannot_be_shipped')}/)
275
- end
276
- end
277
- end
278
- end
279
-
280
- context "from delivery", partial_double_verification: false do
281
- let(:ship_address) { FactoryBot.create(:ship_address) }
282
-
283
- before do
284
- order.ship_address = ship_address
285
- order.state = 'delivery'
286
- allow(order).to receive(:apply_shipping_promotions)
287
- allow(order).to receive(:ensure_available_shipping_rates) { true }
288
- end
289
-
290
- it "attempts to apply free shipping promotions" do
291
- expect(order).to receive(:apply_shipping_promotions)
292
- order.next!
293
- end
294
-
295
- context "with payment required" do
296
- before do
297
- allow(order).to receive_messages payment_required?: true
298
- end
299
-
300
- it "transitions to payment" do
301
- order.next!
302
- assert_state_changed(order, 'delivery', 'payment')
303
- expect(order.state).to eq('payment')
304
- end
305
- end
306
-
307
- context "without payment required" do
308
- before do
309
- allow(order).to receive_messages payment_required?: false
310
- end
311
-
312
- it "transitions to complete" do
313
- order.next!
314
- expect(order.state).to eq("confirm")
315
- end
316
- end
317
-
318
- context "correctly determining payment required based on shipping information" do
319
- let(:shipment) do
320
- FactoryBot.create(:shipment)
321
- end
322
-
323
- before do
324
- # Needs to be set here because we're working with a persisted order object
325
- order.email = "test@example.com"
326
- order.save!
327
- order.shipments << shipment
328
- end
329
-
330
- context "with a shipment that has a price" do
331
- before do
332
- shipment.shipping_rates.first.update_column(:cost, 10)
333
- order.recalculate
334
- end
335
-
336
- it "transitions to payment" do
337
- order.next!
338
- expect(order.state).to eq("payment")
339
- end
340
- end
341
-
342
- context "with a shipment that is free" do
343
- before do
344
- shipment.shipping_rates.first.update_column(:cost, 0)
345
- end
346
-
347
- it "skips payment, transitions to confirm" do
348
- order.next!
349
- expect(order.state).to eq("confirm")
350
- end
351
- end
352
- end
353
- end
354
-
355
- context "to payment" do
356
- let(:user_bill_address) { nil }
357
- let(:order_bill_address) { nil }
358
- let(:default_credit_card) { create(:credit_card) }
359
-
360
- before do
361
- user = create(:user, email: 'spree@example.org', bill_address: user_bill_address)
362
- default_credit_card.update(user: user)
363
- wallet_payment_source = user.wallet.add(default_credit_card)
364
- user.wallet.default_wallet_payment_source = wallet_payment_source
365
- order.user = user
366
-
367
- allow(order).to receive_messages(payment_required?: true)
368
- order.state = 'delivery'
369
- order.bill_address = order_bill_address
370
- order.save!
371
- order.next!
372
- order.reload
373
- end
374
-
375
- it "assigns the user's default credit card" do
376
- expect(order.state).to eq 'payment'
377
- expect(order.payments.count).to eq 1
378
- expect(order.payments.first.source).to eq default_credit_card
379
- end
380
-
381
- context "order already has a billing address" do
382
- let(:order_bill_address) { create(:address) }
383
-
384
- it "keeps the order's billing address" do
385
- expect(order.bill_address).to eq order_bill_address
386
- end
387
- end
388
-
389
- context "order doesn't have a billing address" do
390
- it "assigns the user's default_credit_card's address to the order" do
391
- expect(order.bill_address).to eq default_credit_card.address
392
- end
393
- end
394
- end
395
-
396
- context "from payment" do
397
- before do
398
- order.state = 'payment'
399
- allow(order).to receive(:ensure_available_shipping_rates) { true }
400
- end
401
-
402
- context "with confirmation required" do
403
- before do
404
- end
405
-
406
- it "transitions to confirm" do
407
- order.next!
408
- assert_state_changed(order, 'payment', 'confirm')
409
- expect(order.state).to eq("confirm")
410
- end
411
- end
412
-
413
- # Regression test for https://github.com/spree/spree/issues/2028
414
- context "when payment is not required" do
415
- before do
416
- allow(order).to receive_messages payment_required?: false
417
- end
418
-
419
- it "does not call process payments" do
420
- expect(order).not_to receive(:process_payments!)
421
- order.next!
422
- assert_state_changed(order, 'payment', 'confirm')
423
- expect(order.state).to eq("confirm")
424
- end
425
- end
426
- end
427
- end
428
-
429
- context "from confirm" do
430
- before do
431
- order.state = 'confirm'
432
- order.save!
433
- end
434
-
435
- it "returns false on next" do
436
- expect(order.next).to be_falsy
437
- end
438
-
439
- it "is unable to next" do
440
- expect(order).not_to be_can_next
441
- end
442
- end
443
-
444
- context "to complete" do
445
- before do
446
- order.state = 'confirm'
447
- order.save!
448
- end
449
-
450
- context "out of stock" do
451
- before do
452
- order.user = FactoryBot.create(:user)
453
- order.email = 'spree@example.org'
454
- order.payments << FactoryBot.create(:payment)
455
- allow(order).to receive_messages(payment_required?: true)
456
- order.line_items << FactoryBot.create(:line_item)
457
- order.line_items.first.variant.stock_items.each do |si|
458
- si.set_count_on_hand(0)
459
- si.update(backorderable: false)
460
- end
461
-
462
- Spree::OrderUpdater.new(order).update
463
- order.save!
464
- end
465
-
466
- it "does not allow the order to complete" do
467
- expect {
468
- order.complete!
469
- }.to raise_error Spree::Order::InsufficientStock
470
-
471
- expect(order.state).to eq 'confirm'
472
- expect(order.line_items.first.errors[:quantity]).to be_present
473
- expect(order.payments.first.state).to eq('checkout')
474
- end
475
- end
476
-
477
- context "no inventory units" do
478
- before do
479
- order.user = FactoryBot.create(:user)
480
- order.email = 'spree@example.com'
481
- order.payments << FactoryBot.create(:payment)
482
- allow(order).to receive_messages(payment_required?: true)
483
- allow(order).to receive(:ensure_available_shipping_rates) { true }
484
- order.line_items << FactoryBot.create(:line_item)
485
-
486
- Spree::OrderUpdater.new(order).update
487
- order.save!
488
- end
489
-
490
- it "does not allow order to complete" do
491
- expect { order.complete! }.to raise_error Spree::Order::InsufficientStock
492
-
493
- expect(order.state).to eq 'confirm'
494
- expect(order.line_items.first.errors[:inventory]).to be_present
495
- expect(order.payments.first.state).to eq('checkout')
496
- end
497
- end
498
-
499
- context "with a payment in the pending state" do
500
- let(:order) { create :order_ready_to_complete }
501
- let(:payment) { create :payment, order: order, state: "pending", amount: order.total }
502
-
503
- it "allows the order to complete" do
504
- expect { order.complete! }.
505
- to change { order.state }.
506
- from("confirm").
507
- to("complete")
508
- end
509
- end
510
-
511
- context "exchange order completion" do
512
- before do
513
- order.email = 'spree@example.org'
514
- order.payments << FactoryBot.create(:payment)
515
- order.shipments.create!
516
- allow(order).to receive_messages(payment_required?: true)
517
- allow(order).to receive(:ensure_available_shipping_rates).and_return(true)
518
- end
519
-
520
- context 'when the line items are not available' do
521
- before do
522
- order.line_items << FactoryBot.create(:line_item)
523
- order.store = FactoryBot.build(:store)
524
- Spree::OrderUpdater.new(order).update
525
-
526
- order.save!
527
- end
528
-
529
- it 'does not allow the order to completed' do
530
- expect { order.complete! }.to raise_error Spree::Order::InsufficientStock
531
- expect(order.payments.first.state).to eq('checkout')
532
- end
533
- end
534
- end
535
-
536
- context "default credit card", partial_double_verification: false do
537
- before do
538
- order.user = FactoryBot.create(:user)
539
- order.store = FactoryBot.create(:store)
540
- order.email = 'spree@example.org'
541
- order.payments << FactoryBot.create(:payment, order: order)
542
-
543
- # make sure we will actually capture a payment
544
- allow(order).to receive_messages(payment_required?: true)
545
- allow(order).to receive_messages(ensure_available_shipping_rates: true)
546
- allow(order).to receive_messages(validate_line_item_availability: true)
547
- order.line_items << FactoryBot.create(:line_item)
548
- order.create_proposed_shipments
549
- Spree::OrderUpdater.new(order).update
550
-
551
- order.save!
552
- end
553
-
554
- it "makes the current credit card a user's default credit card" do
555
- order.complete!
556
- expect(order.state).to eq 'complete'
557
- expect(order.user.reload.wallet.default_wallet_payment_source.payment_source).to eq(order.credit_cards.first)
558
- end
559
-
560
- it "does not assign a default credit card if temporary_payment_source is set" do
561
- order.temporary_payment_source = true
562
- order.complete!
563
- expect(order.user.reload.wallet.default_wallet_payment_source).to be_nil
564
- end
565
- end
566
-
567
- context "a payment fails during processing", partial_double_verification: false do
568
- before do
569
- order.user = FactoryBot.create(:user)
570
- order.email = 'spree@example.org'
571
- payment = FactoryBot.create(:payment)
572
- allow(payment).to receive(:process!).and_raise(Spree::Core::GatewayError.new('processing failed'))
573
- order.line_items.each { |li| li.inventory_units.create! }
574
- order.payments << payment
575
-
576
- # make sure we will actually capture a payment
577
- allow(order).to receive_messages(payment_required?: true)
578
- allow(order).to receive_messages(ensure_available_shipping_rates: true)
579
- allow(order).to receive_messages(validate_line_item_availability: true)
580
- order.line_items << FactoryBot.create(:line_item)
581
- order.create_proposed_shipments
582
- Spree::OrderUpdater.new(order).update
583
- end
584
-
585
- it "transitions to the payment state" do
586
- expect { order.complete! }.to raise_error StateMachines::InvalidTransition
587
- expect(order.reload.state).to eq 'payment'
588
- end
589
- end
590
-
591
- context 'the order is already paid' do
592
- let(:order) { create(:order_with_line_items) }
593
-
594
- it 'can complete the order' do
595
- create(:payment, state: 'completed', order: order, amount: order.total)
596
- order.recalculate
597
- expect(order.complete).to eq(true)
598
- end
599
- end
600
- end
601
-
602
- context "re-define checkout flow" do
603
- before do
604
- @old_checkout_flow = Spree::Order.checkout_flow
605
- Spree::Order.class_eval do
606
- checkout_flow do
607
- go_to_state :payment
608
- go_to_state :complete
609
- end
610
- end
611
- end
612
-
613
- after do
614
- Spree::Order.checkout_flow(&@old_checkout_flow)
615
- end
616
-
617
- it "should not keep old event transitions when checkout_flow is redefined" do
618
- expect(Spree::Order.next_event_transitions).to eq([{ cart: :payment }, { payment: :complete }])
619
- end
620
-
621
- it "should not keep old events when checkout_flow is redefined" do
622
- state_machine = Spree::Order.state_machine
623
- expect(state_machine.states.any? { |s| s.name == :address }).to be false
624
- known_states = state_machine.events[:next].branches.map(&:known_states).flatten
625
- expect(known_states).not_to include(:address)
626
- expect(known_states).not_to include(:delivery)
627
- expect(known_states).not_to include(:confirm)
628
- end
629
- end
630
-
631
- # Regression test for https://github.com/spree/spree/issues/3665
632
- context "with only a complete step" do
633
- let!(:line_item){ create :line_item, order: order }
634
-
635
- before do
636
- @old_checkout_flow = Spree::Order.checkout_flow
637
- Spree::Order.class_eval do
638
- checkout_flow do
639
- go_to_state :complete
640
- end
641
- end
642
- end
643
-
644
- after do
645
- Spree::Order.checkout_flow(&@old_checkout_flow)
646
- end
647
-
648
- it "does not attempt to check shipping rates" do
649
- order.email = 'user@example.com'
650
- expect(order).not_to receive(:ensure_available_shipping_rates)
651
- order.next!
652
- assert_state_changed(order, 'cart', 'complete')
653
- end
654
-
655
- it "does not attempt to process payments", partial_double_verification: false do
656
- order.email = 'user@example.com'
657
- allow(order).to receive(:ensure_promotions_eligible).and_return(true)
658
- allow(order).to receive(:ensure_line_item_variants_are_not_deleted).and_return(true)
659
- allow(order).to receive_message_chain(:line_items, :present?).and_return(true)
660
- allow(order).to receive_messages(validate_line_item_availability: true)
661
- expect(order).not_to receive(:payment_required?)
662
- expect(order).not_to receive(:process_payments!)
663
- order.next!
664
- assert_state_changed(order, 'cart', 'complete')
665
- end
666
- end
667
-
668
- context "insert checkout step" do
669
- before do
670
- @old_checkout_flow = Spree::Order.checkout_flow
671
- Spree::Order.class_eval do
672
- remove_transition from: :delivery, to: :confirm
673
- end
674
- Spree::Order.class_eval do
675
- insert_checkout_step :new_step, before: :address
676
- end
677
- end
678
-
679
- after do
680
- Spree::Order.checkout_flow(&@old_checkout_flow)
681
- end
682
-
683
- it "should maintain removed transitions" do
684
- transition = Spree::Order.find_transition(from: :delivery, to: :confirm)
685
- expect(transition).to be_nil
686
- end
687
-
688
- context "before" do
689
- before do
690
- Spree::Order.class_eval do
691
- insert_checkout_step :before_address, before: :address
692
- end
693
- end
694
-
695
- specify do
696
- order = Spree::Order.new
697
- expect(order.checkout_steps).to eq(%w(new_step before_address address delivery confirm complete))
698
- end
699
- end
700
-
701
- context "after" do
702
- before do
703
- Spree::Order.class_eval do
704
- insert_checkout_step :after_address, after: :address
705
- end
706
- end
707
-
708
- specify do
709
- order = Spree::Order.new
710
- expect(order.checkout_steps).to eq(%w(new_step address after_address delivery confirm complete))
711
- end
712
- end
713
- end
714
-
715
- context "remove checkout step" do
716
- before do
717
- @old_checkout_flow = Spree::Order.checkout_flow
718
- Spree::Order.class_eval do
719
- remove_transition from: :delivery, to: :confirm
720
- end
721
- Spree::Order.class_eval do
722
- remove_checkout_step :address
723
- end
724
- end
725
-
726
- after do
727
- Spree::Order.checkout_flow(&@old_checkout_flow)
728
- end
729
-
730
- it "should maintain removed transitions" do
731
- transition = Spree::Order.find_transition(from: :delivery, to: :confirm)
732
- expect(transition).to be_nil
733
- end
734
-
735
- specify do
736
- order = Spree::Order.new
737
- expect(order.checkout_steps).to eq(%w(delivery confirm complete))
738
- end
739
- end
740
- end