solidus_core 2.10.3 → 2.11.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (552) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/spree.js.erb +31 -2
  3. data/app/controllers/spree/base_controller.rb +1 -0
  4. data/app/mailers/spree/base_mailer.rb +4 -0
  5. data/app/mailers/spree/order_mailer.rb +1 -1
  6. data/app/models/concerns/spree/active_storage_adapter.rb +116 -0
  7. data/app/models/concerns/spree/active_storage_adapter/attachment.rb +69 -0
  8. data/app/models/concerns/spree/active_storage_adapter/normalization.rb +39 -0
  9. data/app/models/concerns/spree/default_price.rb +1 -1
  10. data/app/models/concerns/spree/soft_deletable.rb +18 -0
  11. data/app/models/concerns/spree/user_address_book.rb +86 -32
  12. data/app/models/concerns/spree/user_methods.rb +3 -2
  13. data/app/models/spree/ability.rb +34 -10
  14. data/app/models/spree/address.rb +94 -17
  15. data/app/models/spree/address/name.rb +49 -0
  16. data/app/models/spree/address/state_validator.rb +71 -0
  17. data/app/models/spree/adjustment.rb +1 -1
  18. data/app/models/spree/base.rb +2 -2
  19. data/app/models/spree/calculator.rb +4 -4
  20. data/app/models/spree/calculator/default_tax.rb +1 -1
  21. data/app/models/spree/calculator/free_shipping.rb +1 -0
  22. data/app/models/spree/calculator/percent_per_item.rb +6 -4
  23. data/app/models/spree/calculator/price_sack.rb +2 -1
  24. data/app/models/spree/credit_card.rb +2 -2
  25. data/app/models/spree/customer_return.rb +4 -2
  26. data/app/models/spree/exchange.rb +1 -1
  27. data/app/models/spree/image/active_storage_attachment.rb +21 -0
  28. data/app/models/spree/inventory_unit.rb +1 -1
  29. data/app/models/spree/line_item.rb +13 -4
  30. data/app/models/spree/option_type.rb +1 -1
  31. data/app/models/spree/option_value.rb +2 -2
  32. data/app/models/spree/order.rb +91 -20
  33. data/app/models/spree/order/checkout.rb +1 -0
  34. data/app/models/spree/order/payments.rb +2 -2
  35. data/app/models/spree/order_inventory.rb +16 -4
  36. data/app/models/spree/order_merger.rb +6 -4
  37. data/app/models/spree/order_promotion.rb +1 -1
  38. data/app/models/spree/order_updater.rb +11 -10
  39. data/app/models/spree/payment.rb +3 -3
  40. data/app/models/spree/payment/cancellation.rb +3 -22
  41. data/app/models/spree/payment/processing.rb +54 -30
  42. data/app/models/spree/payment_method.rb +8 -9
  43. data/app/models/spree/payment_source.rb +2 -2
  44. data/app/models/spree/preference.rb +1 -1
  45. data/app/models/spree/price.rb +2 -8
  46. data/app/models/spree/product.rb +19 -14
  47. data/app/models/spree/product/scopes.rb +9 -5
  48. data/app/models/spree/promotion.rb +18 -7
  49. data/app/models/spree/promotion/actions/free_shipping.rb +6 -5
  50. data/app/models/spree/promotion_action.rb +1 -7
  51. data/app/models/spree/promotion_code.rb +6 -1
  52. data/app/models/spree/promotion_code_batch.rb +1 -1
  53. data/app/models/spree/promotion_handler/coupon.rb +2 -2
  54. data/app/models/spree/promotion_rule.rb +1 -1
  55. data/app/models/spree/promotion_rule_role.rb +1 -1
  56. data/app/models/spree/refund.rb +60 -12
  57. data/app/models/spree/reimbursement.rb +27 -0
  58. data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +10 -3
  59. data/app/models/spree/return_authorization.rb +1 -1
  60. data/app/models/spree/return_item.rb +21 -10
  61. data/app/models/spree/return_item/exchange_variant_eligibility/same_option_value.rb +1 -1
  62. data/app/models/spree/role.rb +1 -1
  63. data/app/models/spree/shipment.rb +2 -2
  64. data/app/models/spree/shipping_calculator.rb +1 -1
  65. data/app/models/spree/shipping_manifest.rb +2 -2
  66. data/app/models/spree/shipping_method.rb +2 -9
  67. data/app/models/spree/shipping_rate.rb +1 -1
  68. data/app/models/spree/shipping_rate_tax.rb +1 -1
  69. data/app/models/spree/stock/inventory_unit_builder.rb +18 -7
  70. data/app/models/spree/stock/inventory_units_finalizer.rb +3 -5
  71. data/app/models/spree/stock/package.rb +1 -1
  72. data/app/models/spree/stock/simple_coordinator.rb +1 -3
  73. data/app/models/spree/stock_item.rb +2 -8
  74. data/app/models/spree/stock_movement.rb +2 -0
  75. data/app/models/spree/store.rb +1 -1
  76. data/app/models/spree/store_credit.rb +1 -7
  77. data/app/models/spree/store_credit_category.rb +30 -3
  78. data/app/models/spree/store_credit_event.rb +1 -7
  79. data/app/models/spree/store_credit_reason.rb +0 -4
  80. data/app/models/spree/tax/tax_helpers.rb +1 -1
  81. data/app/models/spree/tax_category.rb +2 -8
  82. data/app/models/spree/tax_rate.rb +7 -7
  83. data/app/models/spree/taxon.rb +1 -1
  84. data/app/models/spree/taxon/active_storage_attachment.rb +19 -0
  85. data/app/models/spree/user_address.rb +8 -2
  86. data/app/models/spree/variant.rb +7 -13
  87. data/app/models/spree/variant_property_rule.rb +5 -1
  88. data/app/models/spree/wallet/add_payment_sources_to_wallet.rb +8 -3
  89. data/app/models/spree/zone.rb +1 -1
  90. data/config/locales/en.yml +44 -5
  91. data/db/default/spree/countries.rb +1 -1
  92. data/db/default/spree/states.rb +12 -4
  93. data/db/default/spree/store_credit.rb +2 -2
  94. data/db/migrate/20180416083007_add_apply_to_all_to_variant_property_rule.rb +12 -0
  95. data/db/migrate/20200320144521_add_default_billng_flag_to_user_addresses.rb +6 -0
  96. data/db/migrate/20200530111458_add_bcc_email_to_spree_stores.rb +7 -0
  97. data/db/migrate/20201008213609_add_discontinue_on_to_spree_products.rb +7 -0
  98. data/lib/generators/solidus/install/install_generator.rb +253 -0
  99. data/lib/generators/{spree → solidus}/install/templates/config/initializers/spree.rb.tt +36 -5
  100. data/lib/generators/{spree → solidus}/install/templates/vendor/assets/javascripts/spree/backend/all.js +0 -0
  101. data/lib/generators/{spree → solidus}/install/templates/vendor/assets/javascripts/spree/frontend/all.js +0 -0
  102. data/lib/generators/{spree → solidus}/install/templates/vendor/assets/stylesheets/spree/backend/all.css +0 -0
  103. data/lib/generators/{spree → solidus}/install/templates/vendor/assets/stylesheets/spree/frontend/all.css +0 -0
  104. data/lib/generators/spree/dummy/templates/rails/test.rb +1 -1
  105. data/lib/generators/spree/install/install_generator.rb +7 -189
  106. data/lib/solidus/migrations/promotions_with_code_handlers.rb +1 -1
  107. data/lib/spree/app_configuration.rb +117 -51
  108. data/lib/spree/awesome_nested_set_override.rb +44 -0
  109. data/lib/spree/core.rb +6 -11
  110. data/lib/spree/core/controller_helpers/auth.rb +17 -4
  111. data/lib/spree/core/controller_helpers/current_host.rb +17 -0
  112. data/lib/spree/core/controller_helpers/order.rb +8 -7
  113. data/lib/spree/core/engine.rb +39 -2
  114. data/lib/spree/core/importer/order.rb +24 -10
  115. data/lib/spree/core/permalinks.rb +1 -3
  116. data/lib/spree/core/product_filters.rb +6 -5
  117. data/lib/spree/core/state_machines.rb +20 -1
  118. data/lib/spree/core/state_machines/order.rb +249 -0
  119. data/lib/spree/core/state_machines/return_item/reception_status.rb +2 -2
  120. data/lib/spree/core/version.rb +1 -1
  121. data/lib/spree/encryptor.rb +25 -0
  122. data/lib/spree/event.rb +40 -7
  123. data/lib/spree/event/adapters/active_support_notifications.rb +32 -0
  124. data/lib/spree/event/configuration.rb +11 -6
  125. data/lib/spree/event/subscriber.rb +38 -18
  126. data/lib/spree/event/subscriber_registry.rb +92 -0
  127. data/lib/spree/i18n.rb +1 -1
  128. data/lib/spree/mailer_previews/carton_preview.rb +2 -1
  129. data/lib/spree/paranoia_deprecations.rb +32 -12
  130. data/lib/spree/permission_sets/configuration_display.rb +14 -14
  131. data/lib/spree/permission_sets/default_customer.rb +16 -16
  132. data/lib/spree/permission_sets/order_display.rb +11 -11
  133. data/lib/spree/permission_sets/order_management.rb +1 -1
  134. data/lib/spree/permission_sets/product_display.rb +9 -9
  135. data/lib/spree/permission_sets/promotion_display.rb +5 -5
  136. data/lib/spree/permission_sets/restricted_stock_display.rb +2 -2
  137. data/lib/spree/permission_sets/restricted_stock_management.rb +1 -1
  138. data/lib/spree/permission_sets/stock_display.rb +2 -2
  139. data/lib/spree/permission_sets/stock_management.rb +1 -1
  140. data/lib/spree/permission_sets/user_display.rb +3 -3
  141. data/lib/spree/permission_sets/user_management.rb +4 -3
  142. data/lib/spree/permitted_attributes.rb +9 -8
  143. data/lib/spree/preferences/preferable.rb +4 -3
  144. data/lib/spree/preferences/preferable_class_methods.rb +22 -3
  145. data/lib/spree/testing_support.rb +40 -0
  146. data/lib/spree/testing_support/ability_helpers.rb +9 -9
  147. data/lib/spree/testing_support/authorization_helpers.rb +1 -0
  148. data/lib/spree/testing_support/blacklist_urls.rb +23 -0
  149. data/lib/spree/testing_support/capybara_ext.rb +3 -0
  150. data/lib/spree/testing_support/common_rake.rb +3 -3
  151. data/lib/spree/testing_support/dummy_app.rb +44 -23
  152. data/lib/spree/testing_support/dummy_app/migrations.rb +5 -6
  153. data/lib/spree/testing_support/dummy_app/rake_tasks.rb +1 -3
  154. data/lib/spree/testing_support/factories.rb +2 -4
  155. data/lib/spree/testing_support/factories/address_factory.rb +3 -4
  156. data/lib/spree/testing_support/factories/adjustment_factory.rb +2 -5
  157. data/lib/spree/testing_support/factories/adjustment_reason_factory.rb +3 -0
  158. data/lib/spree/testing_support/factories/calculator_factory.rb +3 -0
  159. data/lib/spree/testing_support/factories/carton_factory.rb +2 -2
  160. data/lib/spree/testing_support/factories/country_factory.rb +3 -0
  161. data/lib/spree/testing_support/factories/credit_card_factory.rb +3 -0
  162. data/lib/spree/testing_support/factories/customer_return_factory.rb +2 -3
  163. data/lib/spree/testing_support/factories/image_factory.rb +4 -1
  164. data/lib/spree/testing_support/factories/inventory_unit_factory.rb +2 -4
  165. data/lib/spree/testing_support/factories/line_item_factory.rb +2 -2
  166. data/lib/spree/testing_support/factories/option_type_factory.rb +3 -0
  167. data/lib/spree/testing_support/factories/option_value_factory.rb +3 -0
  168. data/lib/spree/testing_support/factories/order_factory.rb +2 -6
  169. data/lib/spree/testing_support/factories/order_promotion_factory.rb +2 -2
  170. data/lib/spree/testing_support/factories/payment_factory.rb +2 -4
  171. data/lib/spree/testing_support/factories/payment_method_factory.rb +3 -0
  172. data/lib/spree/testing_support/factories/price_factory.rb +2 -1
  173. data/lib/spree/testing_support/factories/product_factory.rb +2 -5
  174. data/lib/spree/testing_support/factories/product_option_type_factory.rb +2 -2
  175. data/lib/spree/testing_support/factories/product_property_factory.rb +2 -2
  176. data/lib/spree/testing_support/factories/promotion_category_factory.rb +3 -0
  177. data/lib/spree/testing_support/factories/promotion_code_factory.rb +2 -2
  178. data/lib/spree/testing_support/factories/promotion_factory.rb +8 -2
  179. data/lib/spree/testing_support/factories/property_factory.rb +3 -0
  180. data/lib/spree/testing_support/factories/refund_factory.rb +3 -2
  181. data/lib/spree/testing_support/factories/refund_reason_factory.rb +3 -0
  182. data/lib/spree/testing_support/factories/reimbursement_factory.rb +3 -2
  183. data/lib/spree/testing_support/factories/reimbursement_type_factory.rb +3 -0
  184. data/lib/spree/testing_support/factories/return_authorization_factory.rb +2 -3
  185. data/lib/spree/testing_support/factories/return_item_factory.rb +2 -4
  186. data/lib/spree/testing_support/factories/return_reason_factory.rb +3 -0
  187. data/lib/spree/testing_support/factories/role_factory.rb +3 -0
  188. data/lib/spree/testing_support/factories/shipment_factory.rb +2 -3
  189. data/lib/spree/testing_support/factories/shipping_category_factory.rb +3 -0
  190. data/lib/spree/testing_support/factories/shipping_method_factory.rb +2 -3
  191. data/lib/spree/testing_support/factories/shipping_rate_factory.rb +2 -2
  192. data/lib/spree/testing_support/factories/state_factory.rb +2 -1
  193. data/lib/spree/testing_support/factories/stock_item_factory.rb +2 -2
  194. data/lib/spree/testing_support/factories/stock_location_factory.rb +2 -3
  195. data/lib/spree/testing_support/factories/stock_movement_factory.rb +2 -1
  196. data/lib/spree/testing_support/factories/stock_package_factory.rb +2 -2
  197. data/lib/spree/testing_support/factories/store_credit_category_factory.rb +11 -0
  198. data/lib/spree/testing_support/factories/store_credit_event_factory.rb +3 -2
  199. data/lib/spree/testing_support/factories/store_credit_factory.rb +2 -3
  200. data/lib/spree/testing_support/factories/store_credit_reason_factory.rb +6 -1
  201. data/lib/spree/testing_support/factories/store_credit_type_factory.rb +3 -0
  202. data/lib/spree/testing_support/factories/store_factory.rb +4 -1
  203. data/lib/spree/testing_support/factories/tax_category_factory.rb +2 -1
  204. data/lib/spree/testing_support/factories/tax_rate_factory.rb +2 -3
  205. data/lib/spree/testing_support/factories/taxon_factory.rb +6 -1
  206. data/lib/spree/testing_support/factories/taxonomy_factory.rb +3 -0
  207. data/lib/spree/testing_support/factories/user_factory.rb +2 -3
  208. data/lib/spree/testing_support/factories/variant_factory.rb +2 -4
  209. data/lib/spree/testing_support/factories/variant_property_rule_condition_factory.rb +2 -2
  210. data/lib/spree/testing_support/factories/variant_property_rule_factory.rb +2 -3
  211. data/lib/spree/testing_support/factories/variant_property_rule_value_factory.rb +2 -2
  212. data/lib/spree/testing_support/factories/zone_factory.rb +3 -3
  213. data/lib/spree/testing_support/fixtures/blank.jpg +0 -0
  214. data/lib/spree/testing_support/job_helpers.rb +24 -0
  215. data/lib/spree/testing_support/order_walkthrough.rb +1 -1
  216. data/lib/spree/testing_support/precompiled_assets.rb +15 -0
  217. data/lib/spree/testing_support/preferences.rb +3 -1
  218. data/lib/spree/testing_support/shared_examples/gallery.rb +1 -1
  219. data/lib/spree/testing_support/translations.rb +25 -0
  220. data/{app/models → lib}/spree/user_class_handle.rb +0 -0
  221. data/lib/tasks/email.rake +3 -2
  222. data/solidus_core.gemspec +8 -5
  223. metadata +97 -374
  224. data/script/rails +0 -10
  225. data/spec/fixtures/thinking-cat.jpg +0 -0
  226. data/spec/helpers/base_helper_spec.rb +0 -168
  227. data/spec/helpers/products_helper_spec.rb +0 -202
  228. data/spec/helpers/taxons_helper_spec.rb +0 -43
  229. data/spec/jobs/promotion_code_batch_job_spec.rb +0 -96
  230. data/spec/lib/calculated_adjustments_spec.rb +0 -133
  231. data/spec/lib/i18n_spec.rb +0 -97
  232. data/spec/lib/search/base_spec.rb +0 -91
  233. data/spec/lib/search/variant_spec.rb +0 -115
  234. data/spec/lib/spree/app_configuration_spec.rb +0 -140
  235. data/spec/lib/spree/core/class_constantizer_spec.rb +0 -91
  236. data/spec/lib/spree/core/controller_helpers/auth_spec.rb +0 -73
  237. data/spec/lib/spree/core/controller_helpers/order_spec.rb +0 -126
  238. data/spec/lib/spree/core/controller_helpers/payment_parameters_spec.rb +0 -195
  239. data/spec/lib/spree/core/controller_helpers/pricing_spec.rb +0 -94
  240. data/spec/lib/spree/core/controller_helpers/search_spec.rb +0 -21
  241. data/spec/lib/spree/core/controller_helpers/store_spec.rb +0 -18
  242. data/spec/lib/spree/core/controller_helpers/strong_parameters_spec.rb +0 -48
  243. data/spec/lib/spree/core/current_store_spec.rb +0 -33
  244. data/spec/lib/spree/core/environment_extension_spec.rb +0 -46
  245. data/spec/lib/spree/core/importer/order_spec.rb +0 -484
  246. data/spec/lib/spree/core/role_configuration_spec.rb +0 -155
  247. data/spec/lib/spree/core/stock_configuration_spec.rb +0 -95
  248. data/spec/lib/spree/core/testing_support/factories/address_factory_spec.rb +0 -61
  249. data/spec/lib/spree/core/testing_support/factories/adjustment_factory_spec.rb +0 -20
  250. data/spec/lib/spree/core/testing_support/factories/adjustment_reason_factory_spec.rb +0 -14
  251. data/spec/lib/spree/core/testing_support/factories/calculator_factory_spec.rb +0 -44
  252. data/spec/lib/spree/core/testing_support/factories/carton_factory_spec.rb +0 -14
  253. data/spec/lib/spree/core/testing_support/factories/country_factory_spec.rb +0 -14
  254. data/spec/lib/spree/core/testing_support/factories/credit_card_factory_spec.rb +0 -14
  255. data/spec/lib/spree/core/testing_support/factories/customer_return_factory_spec.rb +0 -39
  256. data/spec/lib/spree/core/testing_support/factories/image_factory_spec.rb +0 -14
  257. data/spec/lib/spree/core/testing_support/factories/inventory_unit_factory_spec.rb +0 -14
  258. data/spec/lib/spree/core/testing_support/factories/line_item_factory_spec.rb +0 -14
  259. data/spec/lib/spree/core/testing_support/factories/option_type_factory_spec.rb +0 -14
  260. data/spec/lib/spree/core/testing_support/factories/option_value_factory_spec.rb +0 -14
  261. data/spec/lib/spree/core/testing_support/factories/order_factory_spec.rb +0 -376
  262. data/spec/lib/spree/core/testing_support/factories/order_promotion_factory_spec.rb +0 -14
  263. data/spec/lib/spree/core/testing_support/factories/payment_factory_spec.rb +0 -40
  264. data/spec/lib/spree/core/testing_support/factories/payment_method_factory_spec.rb +0 -32
  265. data/spec/lib/spree/core/testing_support/factories/price_factory_spec.rb +0 -14
  266. data/spec/lib/spree/core/testing_support/factories/product_factory_spec.rb +0 -32
  267. data/spec/lib/spree/core/testing_support/factories/product_option_type_factory_spec.rb +0 -14
  268. data/spec/lib/spree/core/testing_support/factories/product_property_factory_spec.rb +0 -14
  269. data/spec/lib/spree/core/testing_support/factories/promotion_category_factory_spec.rb +0 -14
  270. data/spec/lib/spree/core/testing_support/factories/promotion_code_factory_spec.rb +0 -14
  271. data/spec/lib/spree/core/testing_support/factories/promotion_factory_spec.rb +0 -32
  272. data/spec/lib/spree/core/testing_support/factories/property_factory_spec.rb +0 -14
  273. data/spec/lib/spree/core/testing_support/factories/refund_factory_spec.rb +0 -14
  274. data/spec/lib/spree/core/testing_support/factories/refund_reason_factory_spec.rb +0 -14
  275. data/spec/lib/spree/core/testing_support/factories/reimbursement_factory_spec.rb +0 -20
  276. data/spec/lib/spree/core/testing_support/factories/reimbursement_type_factory_spec.rb +0 -14
  277. data/spec/lib/spree/core/testing_support/factories/return_authorization_factory_spec.rb +0 -14
  278. data/spec/lib/spree/core/testing_support/factories/return_item_factory_spec.rb +0 -20
  279. data/spec/lib/spree/core/testing_support/factories/return_reason_factory_spec.rb +0 -14
  280. data/spec/lib/spree/core/testing_support/factories/role_factory_spec.rb +0 -20
  281. data/spec/lib/spree/core/testing_support/factories/shipment_factory_spec.rb +0 -14
  282. data/spec/lib/spree/core/testing_support/factories/shipping_category_factory_spec.rb +0 -14
  283. data/spec/lib/spree/core/testing_support/factories/shipping_method_factory_spec.rb +0 -44
  284. data/spec/lib/spree/core/testing_support/factories/shipping_rate_factory_spec.rb +0 -14
  285. data/spec/lib/spree/core/testing_support/factories/state_factory_spec.rb +0 -59
  286. data/spec/lib/spree/core/testing_support/factories/stock_item_factory_spec.rb +0 -14
  287. data/spec/lib/spree/core/testing_support/factories/stock_location_factory_spec.rb +0 -35
  288. data/spec/lib/spree/core/testing_support/factories/stock_movement_factory_spec.rb +0 -14
  289. data/spec/lib/spree/core/testing_support/factories/stock_package_factory_spec.rb +0 -28
  290. data/spec/lib/spree/core/testing_support/factories/store_credit_category_factory_spec.rb +0 -14
  291. data/spec/lib/spree/core/testing_support/factories/store_credit_event_factory_spec.rb +0 -43
  292. data/spec/lib/spree/core/testing_support/factories/store_credit_factory_spec.rb +0 -14
  293. data/spec/lib/spree/core/testing_support/factories/store_credit_reason_factory_spec.rb +0 -14
  294. data/spec/lib/spree/core/testing_support/factories/store_credit_type_factory_spec.rb +0 -20
  295. data/spec/lib/spree/core/testing_support/factories/store_factory_spec.rb +0 -14
  296. data/spec/lib/spree/core/testing_support/factories/tax_category_factory_spec.rb +0 -14
  297. data/spec/lib/spree/core/testing_support/factories/tax_rate_factory_spec.rb +0 -14
  298. data/spec/lib/spree/core/testing_support/factories/taxon_factory_spec.rb +0 -14
  299. data/spec/lib/spree/core/testing_support/factories/taxonomy_factory_spec.rb +0 -14
  300. data/spec/lib/spree/core/testing_support/factories/user_factory_spec.rb +0 -24
  301. data/spec/lib/spree/core/testing_support/factories/variant_factory_spec.rb +0 -56
  302. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_condition_factory_spec.rb +0 -14
  303. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_factory_spec.rb +0 -14
  304. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_value_factory_spec.rb +0 -14
  305. data/spec/lib/spree/core/testing_support/factories/zone_factory_spec.rb +0 -20
  306. data/spec/lib/spree/core/testing_support/preferences_spec.rb +0 -61
  307. data/spec/lib/spree/core/validators/email_spec.rb +0 -53
  308. data/spec/lib/spree/core/version_spec.rb +0 -19
  309. data/spec/lib/spree/event/subscriber_spec.rb +0 -85
  310. data/spec/lib/spree/event_spec.rb +0 -130
  311. data/spec/lib/spree/localized_number_spec.rb +0 -45
  312. data/spec/lib/spree/migrations_spec.rb +0 -32
  313. data/spec/lib/spree/money_spec.rb +0 -298
  314. data/spec/lib/spree/permission_sets/default_customer_spec.rb +0 -22
  315. data/spec/lib/spree/permitted_attributes_spec.rb +0 -41
  316. data/spec/lib/spree/promo/environment_spec.rb +0 -53
  317. data/spec/lib/tasks/dummy_task.rake +0 -12
  318. data/spec/lib/tasks/dummy_task_spec.rb +0 -30
  319. data/spec/lib/tasks/migrations/migrate_shipping_rate_taxes_spec.rb +0 -21
  320. data/spec/mailers/carton_mailer_spec.rb +0 -44
  321. data/spec/mailers/order_mailer_spec.rb +0 -117
  322. data/spec/mailers/promotion_code_batch_mailer_spec.rb +0 -47
  323. data/spec/mailers/reimbursement_mailer_spec.rb +0 -36
  324. data/spec/mailers/test_mailer_spec.rb +0 -13
  325. data/spec/models/spree/ability_spec.rb +0 -279
  326. data/spec/models/spree/address_spec.rb +0 -399
  327. data/spec/models/spree/adjustment_reason_spec.rb +0 -11
  328. data/spec/models/spree/adjustment_spec.rb +0 -339
  329. data/spec/models/spree/asset_spec.rb +0 -25
  330. data/spec/models/spree/calculator/default_tax_spec.rb +0 -260
  331. data/spec/models/spree/calculator/distributed_amount_spec.rb +0 -82
  332. data/spec/models/spree/calculator/flat_percent_item_total_spec.rb +0 -39
  333. data/spec/models/spree/calculator/flat_rate_spec.rb +0 -52
  334. data/spec/models/spree/calculator/flexi_rate_spec.rb +0 -158
  335. data/spec/models/spree/calculator/free_shipping_spec.rb +0 -8
  336. data/spec/models/spree/calculator/percent_on_line_item_spec.rb +0 -20
  337. data/spec/models/spree/calculator/percent_per_item_spec.rb +0 -12
  338. data/spec/models/spree/calculator/price_sack_spec.rb +0 -35
  339. data/spec/models/spree/calculator/refunds/default_refund_amount_spec.rb +0 -70
  340. data/spec/models/spree/calculator/shipping/flat_percent_item_total_spec.rb +0 -44
  341. data/spec/models/spree/calculator/shipping/flat_rate_spec.rb +0 -18
  342. data/spec/models/spree/calculator/shipping/flexi_rate_spec.rb +0 -56
  343. data/spec/models/spree/calculator/shipping/per_item_spec.rb +0 -25
  344. data/spec/models/spree/calculator/shipping/price_sack_spec.rb +0 -44
  345. data/spec/models/spree/calculator/tiered_flat_rate_spec.rb +0 -99
  346. data/spec/models/spree/calculator/tiered_percent_spec.rb +0 -197
  347. data/spec/models/spree/calculator_spec.rb +0 -43
  348. data/spec/models/spree/carton_spec.rb +0 -145
  349. data/spec/models/spree/classification_spec.rb +0 -126
  350. data/spec/models/spree/concerns/display_money_spec.rb +0 -44
  351. data/spec/models/spree/concerns/ordered_property_value_list_spec.rb +0 -52
  352. data/spec/models/spree/concerns/user_address_book_spec.rb +0 -358
  353. data/spec/models/spree/concerns/user_methods_spec.rb +0 -122
  354. data/spec/models/spree/country_spec.rb +0 -154
  355. data/spec/models/spree/credit_card_spec.rb +0 -373
  356. data/spec/models/spree/customer_return_spec.rb +0 -294
  357. data/spec/models/spree/distributed_amounts_handler_spec.rb +0 -83
  358. data/spec/models/spree/exchange_spec.rb +0 -76
  359. data/spec/models/spree/fulfilment_changer_spec.rb +0 -340
  360. data/spec/models/spree/gallery/product_gallery_spec.rb +0 -21
  361. data/spec/models/spree/gallery/variant_gallery_spec.rb +0 -21
  362. data/spec/models/spree/gateway/bogus_simple.rb +0 -14
  363. data/spec/models/spree/gateway/bogus_spec.rb +0 -14
  364. data/spec/models/spree/gateway_spec.rb +0 -14
  365. data/spec/models/spree/image_spec.rb +0 -25
  366. data/spec/models/spree/inventory_unit_spec.rb +0 -309
  367. data/spec/models/spree/line_item_spec.rb +0 -240
  368. data/spec/models/spree/option_type_spec.rb +0 -16
  369. data/spec/models/spree/option_value_spec.rb +0 -52
  370. data/spec/models/spree/order/address_spec.rb +0 -52
  371. data/spec/models/spree/order/adjustments_spec.rb +0 -29
  372. data/spec/models/spree/order/callbacks_spec.rb +0 -44
  373. data/spec/models/spree/order/checkout_spec.rb +0 -740
  374. data/spec/models/spree/order/finalizing_spec.rb +0 -92
  375. data/spec/models/spree/order/number_generator_spec.rb +0 -47
  376. data/spec/models/spree/order/outstanding_balance_integration_spec.rb +0 -138
  377. data/spec/models/spree/order/payment_spec.rb +0 -280
  378. data/spec/models/spree/order/risk_assessment_spec.rb +0 -70
  379. data/spec/models/spree/order/state_machine_spec.rb +0 -122
  380. data/spec/models/spree/order/totals_spec.rb +0 -26
  381. data/spec/models/spree/order/validations_spec.rb +0 -17
  382. data/spec/models/spree/order_cancellations_spec.rb +0 -233
  383. data/spec/models/spree/order_capturing_spec.rb +0 -16
  384. data/spec/models/spree/order_contents_spec.rb +0 -362
  385. data/spec/models/spree/order_inventory_spec.rb +0 -285
  386. data/spec/models/spree/order_merger_spec.rb +0 -162
  387. data/spec/models/spree/order_mutex_spec.rb +0 -89
  388. data/spec/models/spree/order_promotion_spec.rb +0 -33
  389. data/spec/models/spree/order_shipping_spec.rb +0 -247
  390. data/spec/models/spree/order_spec.rb +0 -1687
  391. data/spec/models/spree/order_taxation_spec.rb +0 -128
  392. data/spec/models/spree/order_update_attributes_spec.rb +0 -49
  393. data/spec/models/spree/order_updater_spec.rb +0 -556
  394. data/spec/models/spree/payment/cancellation_spec.rb +0 -84
  395. data/spec/models/spree/payment_create_spec.rb +0 -195
  396. data/spec/models/spree/payment_method/bogus_credit_card_spec.rb +0 -10
  397. data/spec/models/spree/payment_method/check_spec.rb +0 -80
  398. data/spec/models/spree/payment_method/credit_card_spec.rb +0 -68
  399. data/spec/models/spree/payment_method/simple_bogus_credit_card_spec.rb +0 -20
  400. data/spec/models/spree/payment_method/store_credit_spec.rb +0 -325
  401. data/spec/models/spree/payment_method_spec.rb +0 -408
  402. data/spec/models/spree/payment_spec.rb +0 -1270
  403. data/spec/models/spree/permission_sets/base_spec.rb +0 -14
  404. data/spec/models/spree/permission_sets/configuration_display.rb +0 -79
  405. data/spec/models/spree/permission_sets/configuration_management_spec.rb +0 -49
  406. data/spec/models/spree/permission_sets/dashboard_display_spec.rb +0 -23
  407. data/spec/models/spree/permission_sets/order_display_spec.rb +0 -56
  408. data/spec/models/spree/permission_sets/order_management_spec.rb +0 -43
  409. data/spec/models/spree/permission_sets/product_display_spec.rb +0 -57
  410. data/spec/models/spree/permission_sets/product_management_spec.rb +0 -39
  411. data/spec/models/spree/permission_sets/promotion_display_spec.rb +0 -41
  412. data/spec/models/spree/permission_sets/promotion_management_spec.rb +0 -29
  413. data/spec/models/spree/permission_sets/restricted_stock_display_spec.rb +0 -42
  414. data/spec/models/spree/permission_sets/restricted_stock_management_spec.rb +0 -42
  415. data/spec/models/spree/permission_sets/stock_display_spec.rb +0 -25
  416. data/spec/models/spree/permission_sets/stock_management_spec.rb +0 -23
  417. data/spec/models/spree/permission_sets/user_display_spec.rb +0 -39
  418. data/spec/models/spree/permission_sets/user_management_spec.rb +0 -58
  419. data/spec/models/spree/preference_spec.rb +0 -79
  420. data/spec/models/spree/preferences/configuration_spec.rb +0 -27
  421. data/spec/models/spree/preferences/preferable_spec.rb +0 -334
  422. data/spec/models/spree/preferences/scoped_store_spec.rb +0 -62
  423. data/spec/models/spree/preferences/static_model_preferences_spec.rb +0 -79
  424. data/spec/models/spree/preferences/statically_configurable_spec.rb +0 -67
  425. data/spec/models/spree/preferences/store_spec.rb +0 -40
  426. data/spec/models/spree/price_spec.rb +0 -150
  427. data/spec/models/spree/product/scopes_spec.rb +0 -164
  428. data/spec/models/spree/product_duplicator_spec.rb +0 -92
  429. data/spec/models/spree/product_filter_spec.rb +0 -28
  430. data/spec/models/spree/product_property_spec.rb +0 -20
  431. data/spec/models/spree/product_spec.rb +0 -584
  432. data/spec/models/spree/promotion/actions/create_adjustment_spec.rb +0 -126
  433. data/spec/models/spree/promotion/actions/create_item_adjustments_spec.rb +0 -198
  434. data/spec/models/spree/promotion/actions/create_quantity_adjustments_spec.rb +0 -298
  435. data/spec/models/spree/promotion/actions/free_shipping_spec.rb +0 -61
  436. data/spec/models/spree/promotion/rules/first_order_spec.rb +0 -87
  437. data/spec/models/spree/promotion/rules/first_repeat_purchase_since_spec.rb +0 -71
  438. data/spec/models/spree/promotion/rules/item_total_spec.rb +0 -128
  439. data/spec/models/spree/promotion/rules/nth_order_spec.rb +0 -72
  440. data/spec/models/spree/promotion/rules/one_use_per_user_spec.rb +0 -54
  441. data/spec/models/spree/promotion/rules/option_value_spec.rb +0 -96
  442. data/spec/models/spree/promotion/rules/product_spec.rb +0 -193
  443. data/spec/models/spree/promotion/rules/store_spec.rb +0 -35
  444. data/spec/models/spree/promotion/rules/taxon_spec.rb +0 -227
  445. data/spec/models/spree/promotion/rules/user_logged_in_spec.rb +0 -33
  446. data/spec/models/spree/promotion/rules/user_role_spec.rb +0 -88
  447. data/spec/models/spree/promotion/rules/user_spec.rb +0 -39
  448. data/spec/models/spree/promotion_action_spec.rb +0 -44
  449. data/spec/models/spree/promotion_category_spec.rb +0 -19
  450. data/spec/models/spree/promotion_code/batch_builder_spec.rb +0 -107
  451. data/spec/models/spree/promotion_code_batch_spec.rb +0 -54
  452. data/spec/models/spree/promotion_code_spec.rb +0 -206
  453. data/spec/models/spree/promotion_handler/cart_spec.rb +0 -132
  454. data/spec/models/spree/promotion_handler/coupon_spec.rb +0 -419
  455. data/spec/models/spree/promotion_handler/page_spec.rb +0 -45
  456. data/spec/models/spree/promotion_handler/shipping_spec.rb +0 -96
  457. data/spec/models/spree/promotion_rule_spec.rb +0 -34
  458. data/spec/models/spree/promotion_spec.rb +0 -945
  459. data/spec/models/spree/refund_spec.rb +0 -200
  460. data/spec/models/spree/reimbursement/credit_spec.rb +0 -38
  461. data/spec/models/spree/reimbursement/reimbursement_type_engine_spec.rb +0 -144
  462. data/spec/models/spree/reimbursement/reimbursement_type_validator_spec.rb +0 -85
  463. data/spec/models/spree/reimbursement_performer_spec.rb +0 -33
  464. data/spec/models/spree/reimbursement_spec.rb +0 -278
  465. data/spec/models/spree/reimbursement_tax_calculator_spec.rb +0 -52
  466. data/spec/models/spree/reimbursement_type/credit_spec.rb +0 -56
  467. data/spec/models/spree/reimbursement_type/exchange_spec.rb +0 -48
  468. data/spec/models/spree/reimbursement_type/original_payment_spec.rb +0 -110
  469. data/spec/models/spree/reimbursement_type/store_credit_spec.rb +0 -111
  470. data/spec/models/spree/return_authorization_spec.rb +0 -226
  471. data/spec/models/spree/return_item/eligibility_validator/default_spec.rb +0 -79
  472. data/spec/models/spree/return_item/eligibility_validator/inventory_shipped_spec.rb +0 -59
  473. data/spec/models/spree/return_item/eligibility_validator/no_reimbursements_spec.rb +0 -86
  474. data/spec/models/spree/return_item/eligibility_validator/order_completed_spec.rb +0 -35
  475. data/spec/models/spree/return_item/eligibility_validator/rma_required_spec.rb +0 -31
  476. data/spec/models/spree/return_item/eligibility_validator/time_since_purchase_spec.rb +0 -42
  477. data/spec/models/spree/return_item/exchange_variant_eligibility/same_option_value_spec.rb +0 -66
  478. data/spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb +0 -43
  479. data/spec/models/spree/return_item_spec.rb +0 -785
  480. data/spec/models/spree/returns_calculator_spec.rb +0 -16
  481. data/spec/models/spree/shipment_spec.rb +0 -914
  482. data/spec/models/spree/shipping_calculator_spec.rb +0 -45
  483. data/spec/models/spree/shipping_manifest_spec.rb +0 -110
  484. data/spec/models/spree/shipping_method_spec.rb +0 -292
  485. data/spec/models/spree/shipping_rate_spec.rb +0 -154
  486. data/spec/models/spree/shipping_rate_tax_spec.rb +0 -79
  487. data/spec/models/spree/state_spec.rb +0 -43
  488. data/spec/models/spree/stock/allocator/on_hand_first_spec.rb +0 -146
  489. data/spec/models/spree/stock/availability_spec.rb +0 -143
  490. data/spec/models/spree/stock/availability_validator_spec.rb +0 -140
  491. data/spec/models/spree/stock/content_item_spec.rb +0 -70
  492. data/spec/models/spree/stock/differentiator_spec.rb +0 -41
  493. data/spec/models/spree/stock/estimator_spec.rb +0 -241
  494. data/spec/models/spree/stock/inventory_unit_builder_spec.rb +0 -34
  495. data/spec/models/spree/stock/inventory_units_finalizer_spec.rb +0 -58
  496. data/spec/models/spree/stock/location_filter/active_spec.rb +0 -22
  497. data/spec/models/spree/stock/location_sorter/default_first_spec.rb +0 -22
  498. data/spec/models/spree/stock/location_sorter/unsorted_spec.rb +0 -21
  499. data/spec/models/spree/stock/package_spec.rb +0 -182
  500. data/spec/models/spree/stock/quantifier_spec.rb +0 -113
  501. data/spec/models/spree/stock/shipping_rate_selector_spec.rb +0 -18
  502. data/spec/models/spree/stock/shipping_rate_sorter_spec.rb +0 -18
  503. data/spec/models/spree/stock/simple_coordinator_spec.rb +0 -264
  504. data/spec/models/spree/stock/splitter/backordered_spec.rb +0 -31
  505. data/spec/models/spree/stock/splitter/base_spec.rb +0 -22
  506. data/spec/models/spree/stock/splitter/shipping_category_spec.rb +0 -48
  507. data/spec/models/spree/stock/splitter/weight_spec.rb +0 -31
  508. data/spec/models/spree/stock/splitter_chain_spec.rb +0 -66
  509. data/spec/models/spree/stock_item_spec.rb +0 -348
  510. data/spec/models/spree/stock_location_spec.rb +0 -288
  511. data/spec/models/spree/stock_movement_spec.rb +0 -58
  512. data/spec/models/spree/stock_quantities_spec.rb +0 -249
  513. data/spec/models/spree/store_credit_category_spec.rb +0 -19
  514. data/spec/models/spree/store_credit_event_spec.rb +0 -328
  515. data/spec/models/spree/store_credit_spec.rb +0 -900
  516. data/spec/models/spree/store_selector/by_server_name_spec.rb +0 -28
  517. data/spec/models/spree/store_selector/legacy_spec.rb +0 -46
  518. data/spec/models/spree/store_spec.rb +0 -156
  519. data/spec/models/spree/tax/order_adjuster_spec.rb +0 -35
  520. data/spec/models/spree/tax/shipping_rate_taxer_spec.rb +0 -59
  521. data/spec/models/spree/tax/tax_location_spec.rb +0 -79
  522. data/spec/models/spree/tax/taxation_integration_spec.rb +0 -815
  523. data/spec/models/spree/tax_calculator/default_spec.rb +0 -56
  524. data/spec/models/spree/tax_category_spec.rb +0 -50
  525. data/spec/models/spree/tax_rate_spec.rb +0 -317
  526. data/spec/models/spree/taxon_spec.rb +0 -197
  527. data/spec/models/spree/taxonomy_spec.rb +0 -15
  528. data/spec/models/spree/taxons/paperclip_attachment_spec.rb +0 -29
  529. data/spec/models/spree/unit_cancel_spec.rb +0 -126
  530. data/spec/models/spree/user_last_url_storer/rules/authentication_rule_spec.rb +0 -31
  531. data/spec/models/spree/user_last_url_storer_spec.rb +0 -60
  532. data/spec/models/spree/user_spec.rb +0 -247
  533. data/spec/models/spree/validations/db_maximum_length_validator_spec.rb +0 -33
  534. data/spec/models/spree/variant/price_selector_spec.rb +0 -90
  535. data/spec/models/spree/variant/pricing_options_spec.rb +0 -204
  536. data/spec/models/spree/variant/scopes_spec.rb +0 -94
  537. data/spec/models/spree/variant/vat_price_generator_spec.rb +0 -77
  538. data/spec/models/spree/variant_property_rule_condition_spec.rb +0 -17
  539. data/spec/models/spree/variant_property_rule_spec.rb +0 -85
  540. data/spec/models/spree/variant_property_rule_value_spec.rb +0 -20
  541. data/spec/models/spree/variant_spec.rb +0 -862
  542. data/spec/models/spree/wallet_payment_source_spec.rb +0 -77
  543. data/spec/models/spree/wallet_spec.rb +0 -155
  544. data/spec/models/spree/zone_spec.rb +0 -248
  545. data/spec/rails_helper.rb +0 -46
  546. data/spec/shared_examples/calculator_shared_examples.rb +0 -10
  547. data/spec/spec_helper.rb +0 -36
  548. data/spec/support/big_decimal.rb +0 -7
  549. data/spec/support/concerns/default_price.rb +0 -44
  550. data/spec/support/concerns/payment_source.rb +0 -66
  551. data/spec/support/concerns/working_factories.rb +0 -15
  552. data/spec/support/dummy_ability.rb +0 -7
@@ -1,92 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::Order, type: :model do
6
- context "#finalize!" do
7
- let(:order) { create(:order_ready_to_complete) }
8
-
9
- before do
10
- order.update_column :state, 'complete'
11
- end
12
-
13
- it "should set completed_at" do
14
- expect(order).to receive(:touch).with(:completed_at)
15
- order.finalize!
16
- end
17
-
18
- it "should sell inventory units" do
19
- order.shipments.each do |shipment|
20
- expect(shipment).to receive(:update_state)
21
- expect(shipment).to receive(:finalize!)
22
- end
23
- order.finalize!
24
- end
25
-
26
- it "should change the shipment state to ready if order is paid" do
27
- allow(order).to receive_messages(paid?: true, complete?: true)
28
- order.finalize!
29
- order.reload # reload so we're sure the changes are persisted
30
- expect(order.shipment_state).to eq('ready')
31
- end
32
-
33
- it "should send an order confirmation email" do
34
- mail_message = double "Mail::Message"
35
- expect(Spree::OrderMailer).to receive(:confirm_email).with(order).and_return mail_message
36
- expect(mail_message).to receive :deliver_later
37
- order.finalize!
38
- end
39
-
40
- it "sets confirmation delivered when finalizing" do
41
- expect(order.confirmation_delivered?).to be false
42
- order.finalize!
43
- expect(order.confirmation_delivered?).to be true
44
- end
45
-
46
- it "should not send duplicate confirmation emails" do
47
- order.update(confirmation_delivered: true)
48
- expect(Spree::OrderMailer).not_to receive(:confirm_email)
49
- order.finalize!
50
- end
51
-
52
- it "should freeze all adjustments" do
53
- # Stub this method as it's called due to a callback
54
- # and it's irrelevant to this test
55
- allow(Spree::OrderMailer).to receive_message_chain :confirm_email, :deliver_later
56
- adjustments = [double]
57
- expect(order).to receive(:all_adjustments).and_return(adjustments)
58
- adjustments.each do |adj|
59
- expect(adj).to receive(:finalize!)
60
- end
61
- order.finalize!
62
- end
63
-
64
- context "order is considered risky" do
65
- before do
66
- allow(order).to receive_messages is_risky?: true
67
- end
68
-
69
- context "and order is approved" do
70
- before do
71
- allow(order).to receive_messages approved?: true
72
- end
73
-
74
- it "should leave order in complete state" do
75
- order.finalize!
76
- expect(order.state).to eq 'complete'
77
- end
78
- end
79
- end
80
-
81
- context "order is not considered risky" do
82
- before do
83
- allow(order).to receive_messages is_risky?: false
84
- end
85
-
86
- it "should set completed_at" do
87
- order.finalize!
88
- expect(order.completed_at).to be_present
89
- end
90
- end
91
- end
92
- end
@@ -1,47 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::Order::NumberGenerator do
6
- subject { described_class.new.generate }
7
-
8
- it { is_expected.to be_a(String) }
9
-
10
- describe 'length' do
11
- let(:default_length) do
12
- Spree::Order::ORDER_NUMBER_LENGTH + Spree::Order::ORDER_NUMBER_PREFIX.length
13
- end
14
-
15
- it { expect(subject.length).to eq default_length }
16
-
17
- context "when length option is 5" do
18
- let(:option_length) { 5 + Spree::Order::ORDER_NUMBER_PREFIX.length }
19
-
20
- subject { described_class.new(length: 5).generate }
21
-
22
- it "should be 5 plus default prefix length" do
23
- expect(subject.length).to eq option_length
24
- end
25
- end
26
- end
27
-
28
- context "when letters option is true" do
29
- subject { described_class.new(letters: true).generate }
30
-
31
- it "generates order number including letters" do
32
- is_expected.to match /[A-Z]/
33
- end
34
- end
35
-
36
- describe 'prefix' do
37
- it { is_expected.to match /^#{Spree::Order::ORDER_NUMBER_PREFIX}/ }
38
-
39
- context "when prefix option is 'P'" do
40
- subject { described_class.new(prefix: 'P').generate }
41
-
42
- it "generates order number prefixed with 'P'" do
43
- is_expected.to match /^P/
44
- end
45
- end
46
- end
47
- end
@@ -1,138 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- # This method in particular has been difficult to get right.
6
- # Many things will affect this amount
7
- #
8
- # See also:
9
- # https://github.com/solidusio/solidus/issues/1254
10
- # https://github.com/spree/spree/issues/6229
11
- # https://github.com/solidusio/solidus/issues/1107
12
- # https://github.com/solidusio/solidus/pull/1557
13
- # https://github.com/solidusio/solidus/pull/1536
14
-
15
- RSpec.describe "Outstanding balance integration tests" do
16
- let!(:order) { create(:order_with_line_items, line_items_count: 2, line_items_price: 3, shipment_cost: 13) }
17
- let(:item_1) { order.line_items[0] }
18
- let(:item_2) { order.line_items[1] }
19
- before { order.update!(state: 'complete', completed_at: Time.now) }
20
-
21
- subject do
22
- order.reload
23
- order.recalculate
24
- order.outstanding_balance
25
- end
26
-
27
- context 'when the order is unpaid' do
28
- it { should eq order.total }
29
- it { should eq 19 }
30
-
31
- context 'when the order is cancelled' do
32
- before { order.cancel! }
33
- it { should eq 0 }
34
- end
35
- end
36
-
37
- context 'when the order is fully paid' do
38
- let!(:payment) { create(:payment, :completed, order: order, amount: order.total) }
39
- it { should eq 0 }
40
-
41
- context 'and there is a full refund' do
42
- let!(:refund) { create(:refund, payment: payment, amount: payment.amount) }
43
- it { should eq 19 }
44
- end
45
-
46
- context 'when the order is cancelled' do
47
- before { order.update!(state: "canceled") }
48
- it { should eq(-19) }
49
-
50
- context 'and the payment is voided' do
51
- before { payment.update!(state: "void") }
52
- it { should eq 0 }
53
- end
54
-
55
- context 'and there is a full refund' do
56
- let!(:refund) { create(:refund, payment: payment, amount: payment.amount) }
57
- it { should eq 0 }
58
- end
59
-
60
- context 'and there is a partial refund' do
61
- let!(:refund) { create(:refund, payment: payment, amount: 6) }
62
- it { should eq(-13) }
63
- end
64
- end
65
-
66
- context 'with a removed item' do
67
- before do
68
- item_amount = item_1.total
69
- order.contents.remove(item_1.variant)
70
- create(:refund, payment: payment, amount: item_amount)
71
- end
72
-
73
- it { should eq(0) }
74
- end
75
-
76
- context 'when the order is adjusted downward by an admin' do
77
- let!(:adjustment) { create(:adjustment, order: order, adjustable: item_1, amount: -1, source: nil) }
78
- let!(:refund) { create(:refund, payment: payment, amount: 1) }
79
-
80
- it { should eq(0) }
81
- end
82
-
83
- context 'with a cancelled item' do
84
- let(:cancelations) { Spree::OrderCancellations.new(order) }
85
- let(:cancelled_item) { item_1 }
86
- let(:created_by_user) { create(:user, email: 'user@email.com') }
87
-
88
- before do
89
- # Required to refund
90
- Spree::RefundReason.create!(name: Spree::RefundReason::RETURN_PROCESSING_REASON, mutable: false)
91
-
92
- cancelations.cancel_unit(cancelled_item.inventory_units.first)
93
- cancelations.reimburse_units(cancelled_item.inventory_units, created_by: created_by_user)
94
-
95
- order.reload
96
- end
97
-
98
- it 'discounts the cancelled item amount' do
99
- expect(order.refund_total).to eq(3)
100
- expect(order.reimbursement_total).to eq(3)
101
- expect(order.payment_total).to eq(16)
102
- expect(order.outstanding_balance).to eq(0)
103
-
104
- expect(order.total).to eq(19)
105
- end
106
- end
107
- end
108
-
109
- context 'when the order is partly paid' do
110
- let!(:payment) { create(:payment, :completed, order: order, amount: 10) }
111
- it { should eq 9 }
112
-
113
- context 'and there is a full refund' do
114
- let!(:refund) { create(:refund, payment: payment, amount: payment.amount) }
115
- it { should eq 19 }
116
- end
117
-
118
- context 'when the order is cancelled' do
119
- before { order.update!(state: "canceled") }
120
- it { should eq(-10) }
121
-
122
- context 'and the payment is voided' do
123
- before { payment.update!(state: "void") }
124
- it { should eq 0 }
125
- end
126
-
127
- context 'and there is a full refund' do
128
- let!(:refund) { create(:refund, payment: payment, amount: payment.amount) }
129
- it { should eq 0 }
130
- end
131
-
132
- context 'and there is a partial refund' do
133
- let!(:refund) { create(:refund, payment: payment, amount: 6) }
134
- it { should eq(-4) }
135
- end
136
- end
137
- end
138
- end
@@ -1,280 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- module Spree
6
- RSpec.describe Spree::Order, type: :model do
7
- let(:order) { stub_model(Spree::Order) }
8
- let(:updater) { Spree::OrderUpdater.new(order) }
9
-
10
- context "processing payments" do
11
- let(:order) { create(:order_with_line_items, shipment_cost: 0, line_items_price: 100) }
12
-
13
- before do
14
- # So that Payment#purchase! is called during processing
15
- stub_spree_preferences(auto_capture: true)
16
- end
17
-
18
- let(:payment_method) { create(:credit_card_payment_method) }
19
-
20
- let!(:payment_1) do
21
- create(:payment, payment_method: payment_method, order: order, amount: 50)
22
- end
23
-
24
- context 'sharing the same payment method' do
25
- let!(:payment_2) do
26
- create(:payment, payment_method: payment_method, order: order, amount: 50)
27
- end
28
-
29
- it 'processes only new payments' do
30
- order.process_payments!
31
- updater.update_payment_state
32
-
33
- expect(order.payment_state).to eq('balance_due')
34
- expect(order.payment_total).to eq(50)
35
-
36
- expect(payment_1).to be_invalid
37
- expect(payment_2).to be_completed
38
- end
39
- end
40
-
41
- context 'with different payment methods that are store credit' do
42
- let!(:payment_2) { create(:store_credit_payment, order: order, amount: 50) }
43
-
44
- it 'processes all checkout payments' do
45
- order.process_payments!
46
- updater.update_payment_state
47
-
48
- expect(order.payment_state).to eq('paid')
49
- expect(order.payment_total).to eq(100)
50
-
51
- expect(payment_1).to be_completed
52
- expect(payment_2).to be_completed
53
- end
54
-
55
- context 'with over paid payments' do
56
- let!(:payment_3) { create(:store_credit_payment, order: order, amount: 50) }
57
-
58
- it 'does not go over total for order' do
59
- order.process_payments!
60
- updater.update_payment_state
61
-
62
- expect(order.payment_state).to eq('paid')
63
- expect(order.payment_total).to eq(100)
64
- expect(payment_1).to be_completed
65
- expect(payment_2).to be_completed
66
- expect(payment_3).to be_checkout
67
- end
68
- end
69
- end
70
-
71
- context 'with failed payments' do
72
- let!(:payment_2) do
73
- create(:payment,
74
- payment_method: payment_method,
75
- order: order,
76
- amount: 50,
77
- state: 'failed')
78
- end
79
-
80
- it "does not use failed payments" do
81
- expect(payment_1).to receive(:process!).and_call_original
82
- expect(payment_2).not_to receive(:process!)
83
-
84
- order.process_payments!
85
-
86
- expect(order.payment_total).to eq(50)
87
- end
88
- end
89
- end
90
-
91
- context "with payments completed" do
92
- it "should not fail transitioning to complete when paid" do
93
- expect(order).to receive_messages total: 100, payment_total: 100
94
- expect(order.process_payments!).to be_truthy
95
- end
96
- end
97
-
98
- context "ensure source attributes stick around" do
99
- let(:order){ Spree::Order.create }
100
- let(:payment_method){ create(:credit_card_payment_method) }
101
- let(:payment_attributes) do
102
- {
103
- payment_method_id: payment_method.id,
104
- source_attributes: {
105
- name: "Ryan Bigg",
106
- number: "41111111111111111111",
107
- expiry: "01 / 15",
108
- verification_value: "123"
109
- }
110
- }
111
- end
112
-
113
- it "keeps source attributes on assignment" do
114
- OrderUpdateAttributes.new(order, payments_attributes: [payment_attributes]).apply
115
- expect(order.unprocessed_payments.last.source.number).to be_present
116
- end
117
-
118
- # For the reason of this test, please see spree/spree_gateway#132
119
- it "keeps source attributes through OrderUpdateAttributes" do
120
- OrderUpdateAttributes.new(order, payments_attributes: [payment_attributes]).apply
121
- expect(order.unprocessed_payments.last.source.number).to be_present
122
- end
123
- end
124
-
125
- context "checking if order is paid" do
126
- context "payment_state is paid" do
127
- before { allow(order).to receive_messages payment_state: 'paid' }
128
- it { expect(order).to be_paid }
129
- end
130
-
131
- context "payment_state is credit_owned" do
132
- before { allow(order).to receive_messages payment_state: 'credit_owed' }
133
- it { expect(order).to be_paid }
134
- end
135
- end
136
-
137
- context "#process_payments!" do
138
- let(:payment) { stub_model(Spree::Payment) }
139
- before { allow(order).to receive_messages unprocessed_payments: [payment], total: 10 }
140
-
141
- it "should process the payments" do
142
- expect(payment).to receive(:process!)
143
- expect(order.process_payments!).to be_truthy
144
- end
145
-
146
- context "when a payment raises a GatewayError" do
147
- before { expect(payment).to receive(:process!).and_raise(Spree::Core::GatewayError) }
148
-
149
- it "should return true when configured to allow checkout on gateway failures" do
150
- stub_spree_preferences(allow_checkout_on_gateway_error: true)
151
- expect(order.process_payments!).to be true
152
- end
153
-
154
- it "should return false when not configured to allow checkout on gateway failures" do
155
- stub_spree_preferences(allow_checkout_on_gateway_error: false)
156
- expect(order.process_payments!).to be false
157
- end
158
- end
159
- end
160
-
161
- context "#authorize_payments!" do
162
- let(:payment) { stub_model(Spree::Payment) }
163
- before { allow(order).to receive_messages unprocessed_payments: [payment], total: 10 }
164
- subject { order.authorize_payments! }
165
-
166
- it "processes payments with attempt_authorization!" do
167
- expect(payment).to receive(:authorize!)
168
- subject
169
- end
170
-
171
- it { is_expected.to be_truthy }
172
- end
173
-
174
- context "#capture_payments!" do
175
- let(:payment) { stub_model(Spree::Payment) }
176
- before { allow(order).to receive_messages unprocessed_payments: [payment], total: 10 }
177
- subject { order.capture_payments! }
178
-
179
- it "processes payments with attempt_authorization!" do
180
- expect(payment).to receive(:purchase!)
181
- subject
182
- end
183
-
184
- it { is_expected.to be_truthy }
185
- end
186
-
187
- context "#outstanding_balance" do
188
- it "should return positive amount when payment_total is less than total" do
189
- order.payment_total = 20.20
190
- order.total = 30.30
191
- expect(order.outstanding_balance).to eq(10.10)
192
- end
193
- it "should return negative amount when payment_total is greater than total" do
194
- order.total = 8.20
195
- order.payment_total = 10.20
196
- expect(order.outstanding_balance).to be_within(0.001).of(-2.00)
197
- end
198
-
199
- context "with reimburesements on the order" do
200
- let(:amount) { 10.0 }
201
- let(:reimbursement) { create(:reimbursement) }
202
- let(:order) { reimbursement.order.reload }
203
-
204
- before do
205
- # Set the payment amount to actually be the order total of 110
206
- reimbursement.order.payments.first.update_column :amount, amount
207
- # Creates a refund of 110
208
- create :refund, amount: amount,
209
- payment: reimbursement.order.payments.first,
210
- reimbursement: reimbursement
211
- # Update the order totals so payment_total goes to 0 reflecting the refund..
212
- order.recalculate
213
- end
214
-
215
- context "for canceled orders" do
216
- before { order.update(state: 'canceled') }
217
-
218
- it "it should be zero" do
219
- expect(order.total).to eq(110)
220
- expect(order.payments.sum(:amount)).to eq(10)
221
- expect(order.refund_total).to eq(10)
222
- expect(order.reimbursement_total).to eq(10)
223
- expect(order.payment_total).to eq(0)
224
- expect(order.outstanding_balance).to eq(0)
225
- end
226
- end
227
-
228
- context "for non-canceled orders" do
229
- it 'should incorporate refund reimbursements' do
230
- # Order Total - (Payment Total + Reimbursed)
231
- # 110 - (0 + 10) = 100
232
- expect(order.outstanding_balance).to eq 100
233
- end
234
- end
235
- end
236
- end
237
-
238
- context "#outstanding_balance?" do
239
- it "should be true when total greater than payment_total" do
240
- order.total = 10.10
241
- order.payment_total = 9.50
242
- expect(order.outstanding_balance?).to be true
243
- end
244
- it "should be true when total less than payment_total" do
245
- order.total = 8.25
246
- order.payment_total = 10.44
247
- expect(order.outstanding_balance?).to be true
248
- end
249
- it "should be false when total equals payment_total" do
250
- order.total = 10.10
251
- order.payment_total = 10.10
252
- expect(order.outstanding_balance?).to be false
253
- end
254
- end
255
-
256
- context "payment_required?" do
257
- before { order.total = total }
258
-
259
- context "total is zero" do
260
- let(:total) { 0 }
261
- it { expect(order).not_to be_payment_required }
262
- end
263
-
264
- context "total is once cent" do
265
- let(:total) { 1 }
266
- it { expect(order).to be_payment_required }
267
- end
268
-
269
- context "total is once dollar" do
270
- let(:total) { 1 }
271
- it { expect(order).to be_payment_required }
272
- end
273
-
274
- context "total is huge" do
275
- let(:total) { 2**32 }
276
- it { expect(order).to be_payment_required }
277
- end
278
- end
279
- end
280
- end