solidus_core 2.10.2 → 2.11.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (495) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/spree.js.erb +31 -2
  3. data/app/controllers/spree/base_controller.rb +1 -0
  4. data/app/mailers/spree/base_mailer.rb +4 -0
  5. data/app/mailers/spree/order_mailer.rb +1 -1
  6. data/app/models/concerns/spree/active_storage_adapter.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 +1 -0
  19. data/app/models/spree/calculator/default_tax.rb +1 -1
  20. data/app/models/spree/calculator/percent_per_item.rb +4 -4
  21. data/app/models/spree/calculator/price_sack.rb +1 -1
  22. data/app/models/spree/credit_card.rb +2 -2
  23. data/app/models/spree/customer_return.rb +4 -2
  24. data/app/models/spree/exchange.rb +1 -1
  25. data/app/models/spree/image/active_storage_attachment.rb +21 -0
  26. data/app/models/spree/inventory_unit.rb +1 -1
  27. data/app/models/spree/line_item.rb +13 -4
  28. data/app/models/spree/option_type.rb +1 -1
  29. data/app/models/spree/option_value.rb +2 -2
  30. data/app/models/spree/order.rb +91 -20
  31. data/app/models/spree/order/checkout.rb +1 -0
  32. data/app/models/spree/order_inventory.rb +16 -4
  33. data/app/models/spree/order_merger.rb +6 -4
  34. data/app/models/spree/order_promotion.rb +1 -1
  35. data/app/models/spree/order_updater.rb +11 -10
  36. data/app/models/spree/payment.rb +3 -3
  37. data/app/models/spree/payment/cancellation.rb +3 -3
  38. data/app/models/spree/payment/processing.rb +54 -30
  39. data/app/models/spree/payment_method.rb +8 -9
  40. data/app/models/spree/preference.rb +1 -1
  41. data/app/models/spree/price.rb +2 -8
  42. data/app/models/spree/product.rb +19 -14
  43. data/app/models/spree/product/scopes.rb +9 -4
  44. data/app/models/spree/promotion.rb +18 -7
  45. data/app/models/spree/promotion/actions/free_shipping.rb +6 -5
  46. data/app/models/spree/promotion_action.rb +1 -7
  47. data/app/models/spree/promotion_code.rb +6 -1
  48. data/app/models/spree/promotion_code_batch.rb +1 -1
  49. data/app/models/spree/promotion_handler/coupon.rb +2 -2
  50. data/app/models/spree/promotion_rule.rb +1 -1
  51. data/app/models/spree/promotion_rule_role.rb +1 -1
  52. data/app/models/spree/refund.rb +60 -12
  53. data/app/models/spree/reimbursement.rb +27 -0
  54. data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +10 -3
  55. data/app/models/spree/return_authorization.rb +1 -1
  56. data/app/models/spree/return_item.rb +21 -10
  57. data/app/models/spree/return_item/exchange_variant_eligibility/same_option_value.rb +1 -1
  58. data/app/models/spree/role.rb +1 -1
  59. data/app/models/spree/shipment.rb +2 -2
  60. data/app/models/spree/shipping_calculator.rb +1 -1
  61. data/app/models/spree/shipping_manifest.rb +2 -2
  62. data/app/models/spree/shipping_method.rb +2 -9
  63. data/app/models/spree/shipping_rate.rb +1 -1
  64. data/app/models/spree/shipping_rate_tax.rb +1 -1
  65. data/app/models/spree/stock/inventory_unit_builder.rb +18 -7
  66. data/app/models/spree/stock/inventory_units_finalizer.rb +3 -5
  67. data/app/models/spree/stock/package.rb +1 -1
  68. data/app/models/spree/stock/simple_coordinator.rb +1 -3
  69. data/app/models/spree/stock_item.rb +2 -8
  70. data/app/models/spree/stock_movement.rb +2 -0
  71. data/app/models/spree/store.rb +1 -1
  72. data/app/models/spree/store_credit.rb +1 -7
  73. data/app/models/spree/store_credit_category.rb +30 -3
  74. data/app/models/spree/store_credit_event.rb +1 -7
  75. data/app/models/spree/store_credit_reason.rb +0 -4
  76. data/app/models/spree/tax/tax_helpers.rb +1 -1
  77. data/app/models/spree/tax_category.rb +2 -8
  78. data/app/models/spree/tax_rate.rb +7 -7
  79. data/app/models/spree/taxon.rb +1 -1
  80. data/app/models/spree/taxon/active_storage_attachment.rb +19 -0
  81. data/app/models/spree/user_address.rb +8 -2
  82. data/app/models/spree/variant.rb +7 -13
  83. data/app/models/spree/variant_property_rule.rb +5 -1
  84. data/app/models/spree/wallet/add_payment_sources_to_wallet.rb +8 -3
  85. data/app/models/spree/zone.rb +1 -1
  86. data/config/locales/en.yml +44 -5
  87. data/db/default/spree/countries.rb +1 -1
  88. data/db/default/spree/states.rb +12 -4
  89. data/db/default/spree/store_credit.rb +2 -2
  90. data/db/migrate/20180416083007_add_apply_to_all_to_variant_property_rule.rb +12 -0
  91. data/db/migrate/20200320144521_add_default_billng_flag_to_user_addresses.rb +6 -0
  92. data/db/migrate/20200530111458_add_bcc_email_to_spree_stores.rb +7 -0
  93. data/db/migrate/20201008213609_add_discontinue_on_to_spree_products.rb +7 -0
  94. data/lib/generators/solidus/install/install_generator.rb +253 -0
  95. data/lib/generators/{spree → solidus}/install/templates/config/initializers/spree.rb.tt +36 -5
  96. data/lib/generators/{spree → solidus}/install/templates/vendor/assets/javascripts/spree/backend/all.js +0 -0
  97. data/lib/generators/{spree → solidus}/install/templates/vendor/assets/javascripts/spree/frontend/all.js +0 -0
  98. data/lib/generators/{spree → solidus}/install/templates/vendor/assets/stylesheets/spree/backend/all.css +0 -0
  99. data/lib/generators/{spree → solidus}/install/templates/vendor/assets/stylesheets/spree/frontend/all.css +0 -0
  100. data/lib/generators/spree/install/install_generator.rb +7 -189
  101. data/lib/solidus/migrations/promotions_with_code_handlers.rb +1 -1
  102. data/lib/spree/app_configuration.rb +117 -51
  103. data/lib/spree/awesome_nested_set_override.rb +44 -0
  104. data/lib/spree/core.rb +5 -11
  105. data/lib/spree/core/controller_helpers/auth.rb +17 -4
  106. data/lib/spree/core/controller_helpers/current_host.rb +17 -0
  107. data/lib/spree/core/controller_helpers/order.rb +8 -7
  108. data/lib/spree/core/engine.rb +39 -2
  109. data/lib/spree/core/importer/order.rb +24 -10
  110. data/lib/spree/core/permalinks.rb +1 -3
  111. data/lib/spree/core/product_filters.rb +6 -5
  112. data/lib/spree/core/state_machines.rb +20 -1
  113. data/lib/spree/core/state_machines/order.rb +249 -0
  114. data/lib/spree/core/state_machines/return_item/reception_status.rb +2 -2
  115. data/lib/spree/core/version.rb +1 -1
  116. data/lib/spree/encryptor.rb +25 -0
  117. data/lib/spree/event.rb +40 -7
  118. data/lib/spree/event/adapters/active_support_notifications.rb +32 -0
  119. data/lib/spree/event/configuration.rb +11 -6
  120. data/lib/spree/event/subscriber.rb +38 -18
  121. data/lib/spree/event/subscriber_registry.rb +92 -0
  122. data/lib/spree/i18n.rb +1 -1
  123. data/lib/spree/mailer_previews/carton_preview.rb +2 -1
  124. data/lib/spree/paranoia_deprecations.rb +32 -12
  125. data/lib/spree/permission_sets/configuration_display.rb +14 -14
  126. data/lib/spree/permission_sets/default_customer.rb +16 -16
  127. data/lib/spree/permission_sets/order_display.rb +11 -11
  128. data/lib/spree/permission_sets/order_management.rb +1 -1
  129. data/lib/spree/permission_sets/product_display.rb +9 -9
  130. data/lib/spree/permission_sets/promotion_display.rb +5 -5
  131. data/lib/spree/permission_sets/restricted_stock_display.rb +2 -2
  132. data/lib/spree/permission_sets/restricted_stock_management.rb +1 -1
  133. data/lib/spree/permission_sets/stock_display.rb +2 -2
  134. data/lib/spree/permission_sets/stock_management.rb +1 -1
  135. data/lib/spree/permission_sets/user_display.rb +3 -3
  136. data/lib/spree/permission_sets/user_management.rb +4 -3
  137. data/lib/spree/permitted_attributes.rb +4 -3
  138. data/lib/spree/preferences/preferable.rb +4 -3
  139. data/lib/spree/preferences/preferable_class_methods.rb +22 -3
  140. data/lib/spree/testing_support/ability_helpers.rb +9 -9
  141. data/lib/spree/testing_support/authorization_helpers.rb +1 -0
  142. data/lib/spree/testing_support/blacklist_urls.rb +23 -0
  143. data/lib/spree/testing_support/capybara_ext.rb +3 -0
  144. data/lib/spree/testing_support/common_rake.rb +3 -3
  145. data/lib/spree/testing_support/dummy_app.rb +44 -23
  146. data/lib/spree/testing_support/dummy_app/migrations.rb +5 -6
  147. data/lib/spree/testing_support/dummy_app/rake_tasks.rb +1 -3
  148. data/lib/spree/testing_support/factories/address_factory.rb +1 -2
  149. data/lib/spree/testing_support/factories/image_factory.rb +1 -1
  150. data/lib/spree/testing_support/factories/promotion_factory.rb +6 -0
  151. data/lib/spree/testing_support/factories/refund_factory.rb +1 -0
  152. data/lib/spree/testing_support/factories/reimbursement_factory.rb +1 -1
  153. data/lib/spree/testing_support/factories/return_item_factory.rb +0 -1
  154. data/lib/spree/testing_support/factories/store_credit_category_factory.rb +8 -0
  155. data/lib/spree/testing_support/factories/store_credit_event_factory.rb +1 -0
  156. data/lib/spree/testing_support/factories/store_credit_reason_factory.rb +3 -1
  157. data/lib/spree/testing_support/factories/taxon_factory.rb +4 -0
  158. data/lib/spree/testing_support/factories/zone_factory.rb +1 -1
  159. data/lib/spree/testing_support/fixtures/blank.jpg +0 -0
  160. data/lib/spree/testing_support/job_helpers.rb +24 -0
  161. data/lib/spree/testing_support/precompiled_assets.rb +15 -0
  162. data/lib/spree/testing_support/preferences.rb +3 -1
  163. data/lib/spree/testing_support/shared_examples/gallery.rb +1 -1
  164. data/lib/spree/testing_support/translations.rb +25 -0
  165. data/solidus_core.gemspec +8 -5
  166. metadata +99 -377
  167. data/script/rails +0 -10
  168. data/spec/fixtures/thinking-cat.jpg +0 -0
  169. data/spec/helpers/base_helper_spec.rb +0 -168
  170. data/spec/helpers/products_helper_spec.rb +0 -202
  171. data/spec/helpers/taxons_helper_spec.rb +0 -43
  172. data/spec/jobs/promotion_code_batch_job_spec.rb +0 -96
  173. data/spec/lib/calculated_adjustments_spec.rb +0 -133
  174. data/spec/lib/i18n_spec.rb +0 -97
  175. data/spec/lib/search/base_spec.rb +0 -91
  176. data/spec/lib/search/variant_spec.rb +0 -115
  177. data/spec/lib/spree/app_configuration_spec.rb +0 -140
  178. data/spec/lib/spree/core/class_constantizer_spec.rb +0 -91
  179. data/spec/lib/spree/core/controller_helpers/auth_spec.rb +0 -73
  180. data/spec/lib/spree/core/controller_helpers/order_spec.rb +0 -126
  181. data/spec/lib/spree/core/controller_helpers/payment_parameters_spec.rb +0 -195
  182. data/spec/lib/spree/core/controller_helpers/pricing_spec.rb +0 -94
  183. data/spec/lib/spree/core/controller_helpers/search_spec.rb +0 -21
  184. data/spec/lib/spree/core/controller_helpers/store_spec.rb +0 -18
  185. data/spec/lib/spree/core/controller_helpers/strong_parameters_spec.rb +0 -48
  186. data/spec/lib/spree/core/current_store_spec.rb +0 -33
  187. data/spec/lib/spree/core/environment_extension_spec.rb +0 -46
  188. data/spec/lib/spree/core/importer/order_spec.rb +0 -484
  189. data/spec/lib/spree/core/role_configuration_spec.rb +0 -155
  190. data/spec/lib/spree/core/stock_configuration_spec.rb +0 -95
  191. data/spec/lib/spree/core/testing_support/factories/address_factory_spec.rb +0 -61
  192. data/spec/lib/spree/core/testing_support/factories/adjustment_factory_spec.rb +0 -20
  193. data/spec/lib/spree/core/testing_support/factories/adjustment_reason_factory_spec.rb +0 -14
  194. data/spec/lib/spree/core/testing_support/factories/calculator_factory_spec.rb +0 -44
  195. data/spec/lib/spree/core/testing_support/factories/carton_factory_spec.rb +0 -14
  196. data/spec/lib/spree/core/testing_support/factories/country_factory_spec.rb +0 -14
  197. data/spec/lib/spree/core/testing_support/factories/credit_card_factory_spec.rb +0 -14
  198. data/spec/lib/spree/core/testing_support/factories/customer_return_factory_spec.rb +0 -39
  199. data/spec/lib/spree/core/testing_support/factories/image_factory_spec.rb +0 -14
  200. data/spec/lib/spree/core/testing_support/factories/inventory_unit_factory_spec.rb +0 -14
  201. data/spec/lib/spree/core/testing_support/factories/line_item_factory_spec.rb +0 -14
  202. data/spec/lib/spree/core/testing_support/factories/option_type_factory_spec.rb +0 -14
  203. data/spec/lib/spree/core/testing_support/factories/option_value_factory_spec.rb +0 -14
  204. data/spec/lib/spree/core/testing_support/factories/order_factory_spec.rb +0 -376
  205. data/spec/lib/spree/core/testing_support/factories/order_promotion_factory_spec.rb +0 -14
  206. data/spec/lib/spree/core/testing_support/factories/payment_factory_spec.rb +0 -40
  207. data/spec/lib/spree/core/testing_support/factories/payment_method_factory_spec.rb +0 -32
  208. data/spec/lib/spree/core/testing_support/factories/price_factory_spec.rb +0 -14
  209. data/spec/lib/spree/core/testing_support/factories/product_factory_spec.rb +0 -32
  210. data/spec/lib/spree/core/testing_support/factories/product_option_type_factory_spec.rb +0 -14
  211. data/spec/lib/spree/core/testing_support/factories/product_property_factory_spec.rb +0 -14
  212. data/spec/lib/spree/core/testing_support/factories/promotion_category_factory_spec.rb +0 -14
  213. data/spec/lib/spree/core/testing_support/factories/promotion_code_factory_spec.rb +0 -14
  214. data/spec/lib/spree/core/testing_support/factories/promotion_factory_spec.rb +0 -32
  215. data/spec/lib/spree/core/testing_support/factories/property_factory_spec.rb +0 -14
  216. data/spec/lib/spree/core/testing_support/factories/refund_factory_spec.rb +0 -14
  217. data/spec/lib/spree/core/testing_support/factories/refund_reason_factory_spec.rb +0 -14
  218. data/spec/lib/spree/core/testing_support/factories/reimbursement_factory_spec.rb +0 -20
  219. data/spec/lib/spree/core/testing_support/factories/reimbursement_type_factory_spec.rb +0 -14
  220. data/spec/lib/spree/core/testing_support/factories/return_authorization_factory_spec.rb +0 -14
  221. data/spec/lib/spree/core/testing_support/factories/return_item_factory_spec.rb +0 -20
  222. data/spec/lib/spree/core/testing_support/factories/return_reason_factory_spec.rb +0 -14
  223. data/spec/lib/spree/core/testing_support/factories/role_factory_spec.rb +0 -20
  224. data/spec/lib/spree/core/testing_support/factories/shipment_factory_spec.rb +0 -14
  225. data/spec/lib/spree/core/testing_support/factories/shipping_category_factory_spec.rb +0 -14
  226. data/spec/lib/spree/core/testing_support/factories/shipping_method_factory_spec.rb +0 -44
  227. data/spec/lib/spree/core/testing_support/factories/shipping_rate_factory_spec.rb +0 -14
  228. data/spec/lib/spree/core/testing_support/factories/state_factory_spec.rb +0 -59
  229. data/spec/lib/spree/core/testing_support/factories/stock_item_factory_spec.rb +0 -14
  230. data/spec/lib/spree/core/testing_support/factories/stock_location_factory_spec.rb +0 -35
  231. data/spec/lib/spree/core/testing_support/factories/stock_movement_factory_spec.rb +0 -14
  232. data/spec/lib/spree/core/testing_support/factories/stock_package_factory_spec.rb +0 -28
  233. data/spec/lib/spree/core/testing_support/factories/store_credit_category_factory_spec.rb +0 -14
  234. data/spec/lib/spree/core/testing_support/factories/store_credit_event_factory_spec.rb +0 -43
  235. data/spec/lib/spree/core/testing_support/factories/store_credit_factory_spec.rb +0 -14
  236. data/spec/lib/spree/core/testing_support/factories/store_credit_reason_factory_spec.rb +0 -14
  237. data/spec/lib/spree/core/testing_support/factories/store_credit_type_factory_spec.rb +0 -20
  238. data/spec/lib/spree/core/testing_support/factories/store_factory_spec.rb +0 -14
  239. data/spec/lib/spree/core/testing_support/factories/tax_category_factory_spec.rb +0 -14
  240. data/spec/lib/spree/core/testing_support/factories/tax_rate_factory_spec.rb +0 -14
  241. data/spec/lib/spree/core/testing_support/factories/taxon_factory_spec.rb +0 -14
  242. data/spec/lib/spree/core/testing_support/factories/taxonomy_factory_spec.rb +0 -14
  243. data/spec/lib/spree/core/testing_support/factories/user_factory_spec.rb +0 -24
  244. data/spec/lib/spree/core/testing_support/factories/variant_factory_spec.rb +0 -56
  245. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_condition_factory_spec.rb +0 -14
  246. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_factory_spec.rb +0 -14
  247. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_value_factory_spec.rb +0 -14
  248. data/spec/lib/spree/core/testing_support/factories/zone_factory_spec.rb +0 -20
  249. data/spec/lib/spree/core/testing_support/preferences_spec.rb +0 -61
  250. data/spec/lib/spree/core/validators/email_spec.rb +0 -53
  251. data/spec/lib/spree/core/version_spec.rb +0 -19
  252. data/spec/lib/spree/event/subscriber_spec.rb +0 -85
  253. data/spec/lib/spree/event_spec.rb +0 -130
  254. data/spec/lib/spree/localized_number_spec.rb +0 -45
  255. data/spec/lib/spree/migrations_spec.rb +0 -32
  256. data/spec/lib/spree/money_spec.rb +0 -298
  257. data/spec/lib/spree/permission_sets/default_customer_spec.rb +0 -22
  258. data/spec/lib/spree/permitted_attributes_spec.rb +0 -41
  259. data/spec/lib/spree/promo/environment_spec.rb +0 -53
  260. data/spec/lib/tasks/dummy_task.rake +0 -12
  261. data/spec/lib/tasks/dummy_task_spec.rb +0 -30
  262. data/spec/lib/tasks/migrations/migrate_shipping_rate_taxes_spec.rb +0 -21
  263. data/spec/mailers/carton_mailer_spec.rb +0 -44
  264. data/spec/mailers/order_mailer_spec.rb +0 -117
  265. data/spec/mailers/promotion_code_batch_mailer_spec.rb +0 -47
  266. data/spec/mailers/reimbursement_mailer_spec.rb +0 -36
  267. data/spec/mailers/test_mailer_spec.rb +0 -13
  268. data/spec/models/spree/ability_spec.rb +0 -279
  269. data/spec/models/spree/address_spec.rb +0 -399
  270. data/spec/models/spree/adjustment_reason_spec.rb +0 -11
  271. data/spec/models/spree/adjustment_spec.rb +0 -339
  272. data/spec/models/spree/asset_spec.rb +0 -25
  273. data/spec/models/spree/calculator/default_tax_spec.rb +0 -260
  274. data/spec/models/spree/calculator/distributed_amount_spec.rb +0 -82
  275. data/spec/models/spree/calculator/flat_percent_item_total_spec.rb +0 -39
  276. data/spec/models/spree/calculator/flat_rate_spec.rb +0 -52
  277. data/spec/models/spree/calculator/flexi_rate_spec.rb +0 -158
  278. data/spec/models/spree/calculator/free_shipping_spec.rb +0 -8
  279. data/spec/models/spree/calculator/percent_on_line_item_spec.rb +0 -20
  280. data/spec/models/spree/calculator/percent_per_item_spec.rb +0 -12
  281. data/spec/models/spree/calculator/price_sack_spec.rb +0 -35
  282. data/spec/models/spree/calculator/refunds/default_refund_amount_spec.rb +0 -70
  283. data/spec/models/spree/calculator/shipping/flat_percent_item_total_spec.rb +0 -44
  284. data/spec/models/spree/calculator/shipping/flat_rate_spec.rb +0 -18
  285. data/spec/models/spree/calculator/shipping/flexi_rate_spec.rb +0 -56
  286. data/spec/models/spree/calculator/shipping/per_item_spec.rb +0 -25
  287. data/spec/models/spree/calculator/shipping/price_sack_spec.rb +0 -44
  288. data/spec/models/spree/calculator/tiered_flat_rate_spec.rb +0 -99
  289. data/spec/models/spree/calculator/tiered_percent_spec.rb +0 -197
  290. data/spec/models/spree/calculator_spec.rb +0 -43
  291. data/spec/models/spree/carton_spec.rb +0 -145
  292. data/spec/models/spree/classification_spec.rb +0 -126
  293. data/spec/models/spree/concerns/display_money_spec.rb +0 -44
  294. data/spec/models/spree/concerns/ordered_property_value_list_spec.rb +0 -52
  295. data/spec/models/spree/concerns/user_address_book_spec.rb +0 -358
  296. data/spec/models/spree/concerns/user_methods_spec.rb +0 -122
  297. data/spec/models/spree/country_spec.rb +0 -154
  298. data/spec/models/spree/credit_card_spec.rb +0 -373
  299. data/spec/models/spree/customer_return_spec.rb +0 -294
  300. data/spec/models/spree/distributed_amounts_handler_spec.rb +0 -83
  301. data/spec/models/spree/exchange_spec.rb +0 -76
  302. data/spec/models/spree/fulfilment_changer_spec.rb +0 -340
  303. data/spec/models/spree/gallery/product_gallery_spec.rb +0 -21
  304. data/spec/models/spree/gallery/variant_gallery_spec.rb +0 -21
  305. data/spec/models/spree/gateway/bogus_simple.rb +0 -14
  306. data/spec/models/spree/gateway/bogus_spec.rb +0 -14
  307. data/spec/models/spree/gateway_spec.rb +0 -14
  308. data/spec/models/spree/image_spec.rb +0 -25
  309. data/spec/models/spree/inventory_unit_spec.rb +0 -309
  310. data/spec/models/spree/line_item_spec.rb +0 -240
  311. data/spec/models/spree/option_type_spec.rb +0 -16
  312. data/spec/models/spree/option_value_spec.rb +0 -52
  313. data/spec/models/spree/order/address_spec.rb +0 -52
  314. data/spec/models/spree/order/adjustments_spec.rb +0 -29
  315. data/spec/models/spree/order/callbacks_spec.rb +0 -44
  316. data/spec/models/spree/order/checkout_spec.rb +0 -740
  317. data/spec/models/spree/order/finalizing_spec.rb +0 -92
  318. data/spec/models/spree/order/number_generator_spec.rb +0 -47
  319. data/spec/models/spree/order/outstanding_balance_integration_spec.rb +0 -138
  320. data/spec/models/spree/order/payment_spec.rb +0 -280
  321. data/spec/models/spree/order/risk_assessment_spec.rb +0 -70
  322. data/spec/models/spree/order/state_machine_spec.rb +0 -122
  323. data/spec/models/spree/order/totals_spec.rb +0 -26
  324. data/spec/models/spree/order/validations_spec.rb +0 -17
  325. data/spec/models/spree/order_cancellations_spec.rb +0 -233
  326. data/spec/models/spree/order_capturing_spec.rb +0 -16
  327. data/spec/models/spree/order_contents_spec.rb +0 -362
  328. data/spec/models/spree/order_inventory_spec.rb +0 -285
  329. data/spec/models/spree/order_merger_spec.rb +0 -162
  330. data/spec/models/spree/order_mutex_spec.rb +0 -89
  331. data/spec/models/spree/order_promotion_spec.rb +0 -33
  332. data/spec/models/spree/order_shipping_spec.rb +0 -247
  333. data/spec/models/spree/order_spec.rb +0 -1687
  334. data/spec/models/spree/order_taxation_spec.rb +0 -128
  335. data/spec/models/spree/order_update_attributes_spec.rb +0 -49
  336. data/spec/models/spree/order_updater_spec.rb +0 -556
  337. data/spec/models/spree/payment/cancellation_spec.rb +0 -84
  338. data/spec/models/spree/payment_create_spec.rb +0 -195
  339. data/spec/models/spree/payment_method/bogus_credit_card_spec.rb +0 -10
  340. data/spec/models/spree/payment_method/check_spec.rb +0 -80
  341. data/spec/models/spree/payment_method/credit_card_spec.rb +0 -68
  342. data/spec/models/spree/payment_method/simple_bogus_credit_card_spec.rb +0 -20
  343. data/spec/models/spree/payment_method/store_credit_spec.rb +0 -325
  344. data/spec/models/spree/payment_method_spec.rb +0 -408
  345. data/spec/models/spree/payment_spec.rb +0 -1270
  346. data/spec/models/spree/permission_sets/base_spec.rb +0 -14
  347. data/spec/models/spree/permission_sets/configuration_display.rb +0 -79
  348. data/spec/models/spree/permission_sets/configuration_management_spec.rb +0 -49
  349. data/spec/models/spree/permission_sets/dashboard_display_spec.rb +0 -23
  350. data/spec/models/spree/permission_sets/order_display_spec.rb +0 -56
  351. data/spec/models/spree/permission_sets/order_management_spec.rb +0 -43
  352. data/spec/models/spree/permission_sets/product_display_spec.rb +0 -57
  353. data/spec/models/spree/permission_sets/product_management_spec.rb +0 -39
  354. data/spec/models/spree/permission_sets/promotion_display_spec.rb +0 -41
  355. data/spec/models/spree/permission_sets/promotion_management_spec.rb +0 -29
  356. data/spec/models/spree/permission_sets/restricted_stock_display_spec.rb +0 -42
  357. data/spec/models/spree/permission_sets/restricted_stock_management_spec.rb +0 -42
  358. data/spec/models/spree/permission_sets/stock_display_spec.rb +0 -25
  359. data/spec/models/spree/permission_sets/stock_management_spec.rb +0 -23
  360. data/spec/models/spree/permission_sets/user_display_spec.rb +0 -39
  361. data/spec/models/spree/permission_sets/user_management_spec.rb +0 -58
  362. data/spec/models/spree/preference_spec.rb +0 -79
  363. data/spec/models/spree/preferences/configuration_spec.rb +0 -27
  364. data/spec/models/spree/preferences/preferable_spec.rb +0 -334
  365. data/spec/models/spree/preferences/scoped_store_spec.rb +0 -62
  366. data/spec/models/spree/preferences/static_model_preferences_spec.rb +0 -79
  367. data/spec/models/spree/preferences/statically_configurable_spec.rb +0 -67
  368. data/spec/models/spree/preferences/store_spec.rb +0 -40
  369. data/spec/models/spree/price_spec.rb +0 -150
  370. data/spec/models/spree/product/scopes_spec.rb +0 -164
  371. data/spec/models/spree/product_duplicator_spec.rb +0 -92
  372. data/spec/models/spree/product_filter_spec.rb +0 -28
  373. data/spec/models/spree/product_property_spec.rb +0 -20
  374. data/spec/models/spree/product_spec.rb +0 -584
  375. data/spec/models/spree/promotion/actions/create_adjustment_spec.rb +0 -126
  376. data/spec/models/spree/promotion/actions/create_item_adjustments_spec.rb +0 -198
  377. data/spec/models/spree/promotion/actions/create_quantity_adjustments_spec.rb +0 -298
  378. data/spec/models/spree/promotion/actions/free_shipping_spec.rb +0 -61
  379. data/spec/models/spree/promotion/rules/first_order_spec.rb +0 -87
  380. data/spec/models/spree/promotion/rules/first_repeat_purchase_since_spec.rb +0 -71
  381. data/spec/models/spree/promotion/rules/item_total_spec.rb +0 -128
  382. data/spec/models/spree/promotion/rules/nth_order_spec.rb +0 -72
  383. data/spec/models/spree/promotion/rules/one_use_per_user_spec.rb +0 -54
  384. data/spec/models/spree/promotion/rules/option_value_spec.rb +0 -96
  385. data/spec/models/spree/promotion/rules/product_spec.rb +0 -193
  386. data/spec/models/spree/promotion/rules/store_spec.rb +0 -35
  387. data/spec/models/spree/promotion/rules/taxon_spec.rb +0 -227
  388. data/spec/models/spree/promotion/rules/user_logged_in_spec.rb +0 -33
  389. data/spec/models/spree/promotion/rules/user_role_spec.rb +0 -88
  390. data/spec/models/spree/promotion/rules/user_spec.rb +0 -39
  391. data/spec/models/spree/promotion_action_spec.rb +0 -44
  392. data/spec/models/spree/promotion_category_spec.rb +0 -19
  393. data/spec/models/spree/promotion_code/batch_builder_spec.rb +0 -107
  394. data/spec/models/spree/promotion_code_batch_spec.rb +0 -54
  395. data/spec/models/spree/promotion_code_spec.rb +0 -206
  396. data/spec/models/spree/promotion_handler/cart_spec.rb +0 -132
  397. data/spec/models/spree/promotion_handler/coupon_spec.rb +0 -419
  398. data/spec/models/spree/promotion_handler/page_spec.rb +0 -45
  399. data/spec/models/spree/promotion_handler/shipping_spec.rb +0 -96
  400. data/spec/models/spree/promotion_rule_spec.rb +0 -34
  401. data/spec/models/spree/promotion_spec.rb +0 -945
  402. data/spec/models/spree/refund_spec.rb +0 -200
  403. data/spec/models/spree/reimbursement/credit_spec.rb +0 -38
  404. data/spec/models/spree/reimbursement/reimbursement_type_engine_spec.rb +0 -144
  405. data/spec/models/spree/reimbursement/reimbursement_type_validator_spec.rb +0 -85
  406. data/spec/models/spree/reimbursement_performer_spec.rb +0 -33
  407. data/spec/models/spree/reimbursement_spec.rb +0 -278
  408. data/spec/models/spree/reimbursement_tax_calculator_spec.rb +0 -52
  409. data/spec/models/spree/reimbursement_type/credit_spec.rb +0 -56
  410. data/spec/models/spree/reimbursement_type/exchange_spec.rb +0 -48
  411. data/spec/models/spree/reimbursement_type/original_payment_spec.rb +0 -110
  412. data/spec/models/spree/reimbursement_type/store_credit_spec.rb +0 -111
  413. data/spec/models/spree/return_authorization_spec.rb +0 -226
  414. data/spec/models/spree/return_item/eligibility_validator/default_spec.rb +0 -79
  415. data/spec/models/spree/return_item/eligibility_validator/inventory_shipped_spec.rb +0 -59
  416. data/spec/models/spree/return_item/eligibility_validator/no_reimbursements_spec.rb +0 -86
  417. data/spec/models/spree/return_item/eligibility_validator/order_completed_spec.rb +0 -35
  418. data/spec/models/spree/return_item/eligibility_validator/rma_required_spec.rb +0 -31
  419. data/spec/models/spree/return_item/eligibility_validator/time_since_purchase_spec.rb +0 -42
  420. data/spec/models/spree/return_item/exchange_variant_eligibility/same_option_value_spec.rb +0 -66
  421. data/spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb +0 -43
  422. data/spec/models/spree/return_item_spec.rb +0 -785
  423. data/spec/models/spree/returns_calculator_spec.rb +0 -16
  424. data/spec/models/spree/shipment_spec.rb +0 -914
  425. data/spec/models/spree/shipping_calculator_spec.rb +0 -45
  426. data/spec/models/spree/shipping_manifest_spec.rb +0 -110
  427. data/spec/models/spree/shipping_method_spec.rb +0 -292
  428. data/spec/models/spree/shipping_rate_spec.rb +0 -154
  429. data/spec/models/spree/shipping_rate_tax_spec.rb +0 -79
  430. data/spec/models/spree/state_spec.rb +0 -43
  431. data/spec/models/spree/stock/allocator/on_hand_first_spec.rb +0 -146
  432. data/spec/models/spree/stock/availability_spec.rb +0 -143
  433. data/spec/models/spree/stock/availability_validator_spec.rb +0 -140
  434. data/spec/models/spree/stock/content_item_spec.rb +0 -70
  435. data/spec/models/spree/stock/differentiator_spec.rb +0 -41
  436. data/spec/models/spree/stock/estimator_spec.rb +0 -241
  437. data/spec/models/spree/stock/inventory_unit_builder_spec.rb +0 -34
  438. data/spec/models/spree/stock/inventory_units_finalizer_spec.rb +0 -58
  439. data/spec/models/spree/stock/location_filter/active_spec.rb +0 -22
  440. data/spec/models/spree/stock/location_sorter/default_first_spec.rb +0 -22
  441. data/spec/models/spree/stock/location_sorter/unsorted_spec.rb +0 -21
  442. data/spec/models/spree/stock/package_spec.rb +0 -182
  443. data/spec/models/spree/stock/quantifier_spec.rb +0 -113
  444. data/spec/models/spree/stock/shipping_rate_selector_spec.rb +0 -18
  445. data/spec/models/spree/stock/shipping_rate_sorter_spec.rb +0 -18
  446. data/spec/models/spree/stock/simple_coordinator_spec.rb +0 -264
  447. data/spec/models/spree/stock/splitter/backordered_spec.rb +0 -31
  448. data/spec/models/spree/stock/splitter/base_spec.rb +0 -22
  449. data/spec/models/spree/stock/splitter/shipping_category_spec.rb +0 -48
  450. data/spec/models/spree/stock/splitter/weight_spec.rb +0 -31
  451. data/spec/models/spree/stock/splitter_chain_spec.rb +0 -66
  452. data/spec/models/spree/stock_item_spec.rb +0 -348
  453. data/spec/models/spree/stock_location_spec.rb +0 -288
  454. data/spec/models/spree/stock_movement_spec.rb +0 -58
  455. data/spec/models/spree/stock_quantities_spec.rb +0 -249
  456. data/spec/models/spree/store_credit_category_spec.rb +0 -19
  457. data/spec/models/spree/store_credit_event_spec.rb +0 -328
  458. data/spec/models/spree/store_credit_spec.rb +0 -900
  459. data/spec/models/spree/store_selector/by_server_name_spec.rb +0 -28
  460. data/spec/models/spree/store_selector/legacy_spec.rb +0 -46
  461. data/spec/models/spree/store_spec.rb +0 -156
  462. data/spec/models/spree/tax/order_adjuster_spec.rb +0 -35
  463. data/spec/models/spree/tax/shipping_rate_taxer_spec.rb +0 -59
  464. data/spec/models/spree/tax/tax_location_spec.rb +0 -79
  465. data/spec/models/spree/tax/taxation_integration_spec.rb +0 -815
  466. data/spec/models/spree/tax_calculator/default_spec.rb +0 -56
  467. data/spec/models/spree/tax_category_spec.rb +0 -50
  468. data/spec/models/spree/tax_rate_spec.rb +0 -317
  469. data/spec/models/spree/taxon_spec.rb +0 -197
  470. data/spec/models/spree/taxonomy_spec.rb +0 -15
  471. data/spec/models/spree/taxons/paperclip_attachment_spec.rb +0 -29
  472. data/spec/models/spree/unit_cancel_spec.rb +0 -126
  473. data/spec/models/spree/user_last_url_storer/rules/authentication_rule_spec.rb +0 -31
  474. data/spec/models/spree/user_last_url_storer_spec.rb +0 -60
  475. data/spec/models/spree/user_spec.rb +0 -247
  476. data/spec/models/spree/validations/db_maximum_length_validator_spec.rb +0 -33
  477. data/spec/models/spree/variant/price_selector_spec.rb +0 -90
  478. data/spec/models/spree/variant/pricing_options_spec.rb +0 -204
  479. data/spec/models/spree/variant/scopes_spec.rb +0 -94
  480. data/spec/models/spree/variant/vat_price_generator_spec.rb +0 -77
  481. data/spec/models/spree/variant_property_rule_condition_spec.rb +0 -17
  482. data/spec/models/spree/variant_property_rule_spec.rb +0 -85
  483. data/spec/models/spree/variant_property_rule_value_spec.rb +0 -20
  484. data/spec/models/spree/variant_spec.rb +0 -862
  485. data/spec/models/spree/wallet_payment_source_spec.rb +0 -77
  486. data/spec/models/spree/wallet_spec.rb +0 -155
  487. data/spec/models/spree/zone_spec.rb +0 -248
  488. data/spec/rails_helper.rb +0 -46
  489. data/spec/shared_examples/calculator_shared_examples.rb +0 -10
  490. data/spec/spec_helper.rb +0 -36
  491. data/spec/support/big_decimal.rb +0 -7
  492. data/spec/support/concerns/default_price.rb +0 -44
  493. data/spec/support/concerns/payment_source.rb +0 -66
  494. data/spec/support/concerns/working_factories.rb +0 -15
  495. 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