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,325 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::PaymentMethod::StoreCredit do
6
- let(:order) { create(:order) }
7
- let(:payment) { create(:payment, order: order) }
8
- let(:gateway_options) { payment.gateway_options }
9
-
10
- context "#authorize" do
11
- subject do
12
- Spree::PaymentMethod::StoreCredit.new.authorize(auth_amount, store_credit, gateway_options)
13
- end
14
-
15
- let(:auth_amount) { store_credit.amount_remaining * 100 }
16
- let(:store_credit) { create(:store_credit) }
17
- let(:gateway_options) { super().merge(originator: originator) }
18
- let(:originator) { nil }
19
-
20
- context 'without an invalid store credit' do
21
- let(:store_credit) { nil }
22
- let(:auth_amount) { 10 }
23
-
24
- it "declines an unknown store credit" do
25
- expect(subject.success?).to be false
26
- expect(subject.message).to include I18n.t('spree.store_credit.unable_to_find')
27
- end
28
- end
29
-
30
- context 'with insuffient funds' do
31
- let(:auth_amount) { (store_credit.amount_remaining * 100) + 1 }
32
-
33
- it "declines a store credit" do
34
- expect(subject.success?).to be false
35
- expect(subject.message).to include I18n.t('spree.store_credit.insufficient_funds')
36
- end
37
- end
38
-
39
- context 'when the currency does not match the order currency' do
40
- let(:store_credit) { create(:store_credit, currency: 'AUD') }
41
-
42
- it "declines the credit" do
43
- expect(subject.success?).to be false
44
- expect(subject.message).to include I18n.t('spree.store_credit.currency_mismatch')
45
- end
46
- end
47
-
48
- context 'with a valid request' do
49
- it "authorizes a valid store credit" do
50
- expect(subject.success?).to be true
51
- expect(subject.authorization).not_to be_nil
52
- end
53
-
54
- context 'with an originator' do
55
- let(:originator) { double('originator') }
56
-
57
- it 'passes the originator' do
58
- expect_any_instance_of(Spree::StoreCredit).to receive(:authorize)
59
- .with(anything, anything, action_originator: originator)
60
- subject
61
- end
62
- end
63
- end
64
- end
65
-
66
- context "#capture" do
67
- subject do
68
- Spree::PaymentMethod::StoreCredit.new.capture(capture_amount, auth_code, gateway_options)
69
- end
70
-
71
- let(:capture_amount) { 10_00 }
72
- let(:auth_code) { auth_event.authorization_code }
73
- let(:gateway_options) { super().merge(originator: originator) }
74
-
75
- let(:authorized_amount) { capture_amount / 100.0 }
76
- let(:auth_event) { create(:store_credit_auth_event, store_credit: store_credit, amount: authorized_amount) }
77
- let(:store_credit) { create(:store_credit, amount_authorized: authorized_amount) }
78
- let(:originator) { nil }
79
-
80
- context 'with an invalid auth code' do
81
- let(:auth_code) { -1 }
82
-
83
- it "declines an unknown store credit" do
84
- expect(subject.success?).to be false
85
- expect(subject.message).to include I18n.t('spree.store_credit.unable_to_find')
86
- end
87
- end
88
-
89
- context 'when unable to authorize the amount' do
90
- let(:authorized_amount) { (capture_amount - 1) / 100 }
91
-
92
- before do
93
- allow_any_instance_of(Spree::StoreCredit).to receive_messages(authorize: true)
94
- end
95
-
96
- it "declines a store credit" do
97
- expect(subject.success?).to be false
98
- expect(subject.message).to include I18n.t('spree.store_credit.insufficient_authorized_amount')
99
- end
100
- end
101
-
102
- context 'when the currency does not match the order currency' do
103
- let(:store_credit) { create(:store_credit, currency: 'AUD', amount_authorized: authorized_amount) }
104
-
105
- it "declines the credit" do
106
- expect(subject.success?).to be false
107
- expect(subject.message).to include I18n.t('spree.store_credit.currency_mismatch')
108
- end
109
- end
110
-
111
- context 'with a valid request' do
112
- it "captures the store credit" do
113
- expect(subject.message).to include I18n.t('spree.store_credit.successful_action', action: Spree::StoreCredit::CAPTURE_ACTION)
114
- expect(subject.success?).to be true
115
- end
116
-
117
- context 'with an originator' do
118
- let(:originator) { double('originator') }
119
-
120
- it 'passes the originator' do
121
- expect_any_instance_of(Spree::StoreCredit).to receive(:capture)
122
- .with(anything, anything, anything, action_originator: originator)
123
- subject
124
- end
125
- end
126
- end
127
- end
128
-
129
- context "#void" do
130
- subject do
131
- Spree::PaymentMethod::StoreCredit.new.void(auth_code, gateway_options)
132
- end
133
-
134
- let(:auth_code) { auth_event.authorization_code }
135
- let(:gateway_options) { super().merge(originator: originator) }
136
- let(:auth_event) { create(:store_credit_auth_event) }
137
- let(:originator) { nil }
138
-
139
- context 'with an invalid auth code' do
140
- let(:auth_code) { 1 }
141
-
142
- it "declines an unknown store credit" do
143
- expect(subject.success?).to be false
144
- expect(subject.message).to include I18n.t('spree.store_credit.unable_to_find')
145
- end
146
- end
147
-
148
- context 'when the store credit is not voided successfully' do
149
- before { allow_any_instance_of(Spree::StoreCredit).to receive_messages(void: false) }
150
-
151
- it "returns an error response" do
152
- expect(subject.success?).to be false
153
- end
154
- end
155
-
156
- it "voids a valid store credit void request" do
157
- expect(subject.success?).to be true
158
- expect(subject.message).to include I18n.t('spree.store_credit.successful_action', action: Spree::StoreCredit::VOID_ACTION)
159
- end
160
-
161
- context 'with an originator' do
162
- let(:originator) { double('originator') }
163
-
164
- it 'passes the originator' do
165
- expect_any_instance_of(Spree::StoreCredit).to receive(:void)
166
- .with(anything, action_originator: originator)
167
- subject
168
- end
169
- end
170
- end
171
-
172
- context "#purchase" do
173
- it "declines a purchase if it can't find a pending credit for the correct amount" do
174
- amount = 100.0
175
- store_credit = create(:store_credit)
176
- auth_code = store_credit.generate_authorization_code
177
- store_credit.store_credit_events.create!(action: Spree::StoreCredit::ELIGIBLE_ACTION,
178
- amount: amount,
179
- authorization_code: auth_code)
180
- store_credit.store_credit_events.create!(action: Spree::StoreCredit::CAPTURE_ACTION,
181
- amount: amount,
182
- authorization_code: auth_code)
183
-
184
- resp = subject.purchase(amount * 100.0, store_credit, gateway_options)
185
- expect(resp.success?).to be false
186
- expect(resp.message).to include I18n.t('spree.store_credit.unable_to_find')
187
- end
188
-
189
- it "captures a purchase if it can find a pending credit for the correct amount" do
190
- amount = 100.0
191
- store_credit = create(:store_credit)
192
- auth_code = store_credit.generate_authorization_code
193
- store_credit.store_credit_events.create!(action: Spree::StoreCredit::ELIGIBLE_ACTION,
194
- amount: amount,
195
- authorization_code: auth_code)
196
-
197
- resp = subject.purchase(amount * 100.0, store_credit, gateway_options)
198
- expect(resp.success?).to be true
199
- expect(resp.message).to include I18n.t('spree.store_credit.successful_action', action: Spree::StoreCredit::CAPTURE_ACTION)
200
- end
201
- end
202
-
203
- context "#credit" do
204
- subject do
205
- Spree::PaymentMethod::StoreCredit.new.credit(credit_amount, auth_code, gateway_options)
206
- end
207
-
208
- let(:credit_amount) { 100.0 }
209
- let(:auth_code) { auth_event.authorization_code }
210
- let(:gateway_options) { super().merge(originator: originator) }
211
- let(:auth_event) { create(:store_credit_auth_event) }
212
- let(:originator) { nil }
213
-
214
- context 'with an invalid auth code' do
215
- let(:auth_code) { 1 }
216
-
217
- it "declines an unknown store credit" do
218
- expect(subject.success?).to be false
219
- expect(subject.message).to include I18n.t('spree.store_credit.unable_to_find')
220
- end
221
- end
222
-
223
- context "when the store credit isn't credited successfully" do
224
- before { allow_any_instance_of(Spree::StoreCredit).to receive_messages(credit: false) }
225
-
226
- it "returns an error response" do
227
- expect(subject.success?).to be false
228
- end
229
- end
230
-
231
- context 'with a valid credit request' do
232
- before { allow_any_instance_of(Spree::StoreCredit).to receive_messages(credit: true) }
233
-
234
- it "credits a valid store credit credit request" do
235
- expect(subject.success?).to be true
236
- expect(subject.message).to include I18n.t('spree.store_credit.successful_action', action: Spree::StoreCredit::CREDIT_ACTION)
237
- end
238
- end
239
-
240
- context 'with an originator' do
241
- let(:originator) { double('originator') }
242
-
243
- it 'passes the originator' do
244
- expect_any_instance_of(Spree::StoreCredit).to receive(:credit)
245
- .with(anything, anything, anything, action_originator: originator)
246
- subject
247
- end
248
- end
249
- end
250
-
251
- context "#try_void" do
252
- subject do
253
- payment_method.try_void(double(response_code: auth_code))
254
- end
255
-
256
- let(:payment_method) { described_class.create!(name: 'Store Credit') }
257
- let(:store_credit) { create(:store_credit, amount: original_amount, amount_used: captured_amount) }
258
- let(:auth_code) { "1-SC-20141111111111" }
259
- let(:original_amount) { 100.0 }
260
- let(:captured_amount) { 10.0 }
261
-
262
- shared_examples "a spree payment method" do
263
- it "returns an ActiveMerchant::Billing::Response" do
264
- expect(subject).to be_instance_of(ActiveMerchant::Billing::Response)
265
- end
266
- end
267
-
268
- context "capture event found" do
269
- let!(:store_credit_event) do
270
- create(:store_credit_capture_event,
271
- authorization_code: auth_code,
272
- amount: captured_amount,
273
- store_credit: store_credit)
274
- end
275
-
276
- it { is_expected.to be(false) }
277
-
278
- describe "called from payment#cancel!" do
279
- subject { payment.cancel! }
280
-
281
- let!(:payment) do
282
- create(:payment,
283
- order: order,
284
- payment_method: payment_method,
285
- source: store_credit,
286
- amount: captured_amount,
287
- response_code: auth_code)
288
- end
289
-
290
- it "refunds the capture amount" do
291
- expect { subject }.to change { store_credit.reload.amount_remaining }.
292
- from(original_amount - captured_amount).
293
- to(original_amount)
294
- end
295
- end
296
- end
297
-
298
- context "capture event not found" do
299
- context "auth event found" do
300
- let!(:store_credit_event) do
301
- create(:store_credit_auth_event,
302
- authorization_code: auth_code,
303
- amount: captured_amount,
304
- store_credit: store_credit)
305
- end
306
-
307
- it_behaves_like "a spree payment method"
308
-
309
- it "voids the capture amount" do
310
- expect { subject }.to change { store_credit.reload.amount_remaining }.
311
- from(original_amount - captured_amount).
312
- to(original_amount)
313
- end
314
- end
315
-
316
- context "store credit event not found" do
317
- let(:auth_code) { 'INVALID' }
318
-
319
- it_behaves_like "a spree payment method"
320
-
321
- it { is_expected.to_not be_success }
322
- end
323
- end
324
- end
325
- end
@@ -1,408 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Spree::PaymentMethod, type: :model do
6
- let!(:payment_method_nil_display) do
7
- create(:payment_method, {
8
- active: true,
9
- available_to_users: true,
10
- available_to_admin: true
11
- })
12
- end
13
- let!(:payment_method_both_display) do
14
- create(:payment_method, {
15
- active: true,
16
- available_to_users: true,
17
- available_to_admin: true
18
- })
19
- end
20
- let!(:payment_method_front_display) do
21
- create(:payment_method, {
22
- active: true,
23
- available_to_users: true,
24
- available_to_admin: false
25
- })
26
- end
27
- let!(:payment_method_back_display) do
28
- create(:payment_method, {
29
- active: true,
30
- available_to_users: false,
31
- available_to_admin: true
32
- })
33
- end
34
-
35
- describe "available_to_[<users>, <admin>, <store>]" do
36
- context "when searching for payment methods available to users and admins" do
37
- subject { Spree::PaymentMethod.available_to_users.available_to_admin }
38
-
39
- it { is_expected.to contain_exactly(payment_method_both_display, payment_method_nil_display) }
40
-
41
- context "with a store" do
42
- let!(:extra_payment_method_both_display) do
43
- create(:payment_method, {
44
- active: true,
45
- available_to_users: true,
46
- available_to_admin: true
47
- })
48
- end
49
- let!(:store_1) do
50
- create(:store, payment_methods: [
51
- payment_method_nil_display,
52
- payment_method_both_display,
53
- payment_method_front_display,
54
- payment_method_back_display
55
- ])
56
- end
57
-
58
- subject { Spree::PaymentMethod.available_to_store( store_1 ).available_to_users.available_to_admin }
59
-
60
- it { is_expected.to contain_exactly(payment_method_both_display, payment_method_nil_display) }
61
-
62
- context "when the store has no payment methods" do
63
- subject { Spree::PaymentMethod.available_to_store(store_without_payment_methods) }
64
- let!(:store_without_payment_methods) do
65
- create(:store, payment_methods: [])
66
- end
67
-
68
- it "returns all payment methods" do
69
- expect(subject.all.size).to eq(5)
70
- end
71
-
72
- it "is further scopeable for admin availability" do
73
- expect(subject.available_to_admin).not_to include(payment_method_front_display)
74
- end
75
-
76
- it "is further scopeable for users availability" do
77
- expect(subject.available_to_users).not_to include(payment_method_back_display)
78
- end
79
- end
80
- end
81
- end
82
-
83
- context "when searching for payment methods available to users" do
84
- subject { Spree::PaymentMethod.available_to_users }
85
-
86
- it { is_expected.to contain_exactly(payment_method_front_display, payment_method_both_display, payment_method_nil_display) }
87
- end
88
-
89
- context "when searching for payment methods available to admin" do
90
- subject { Spree::PaymentMethod.available_to_admin }
91
-
92
- it { is_expected.to contain_exactly(payment_method_back_display, payment_method_both_display, payment_method_nil_display) }
93
- end
94
-
95
- context "when searching for payment methods available to a store" do
96
- subject { Spree::PaymentMethod.available_to_store(store) }
97
-
98
- context "when the store is nil" do
99
- let(:store) { nil }
100
- it "raises an argument error" do
101
- expect { subject }.to raise_error(ArgumentError, "You must provide a store")
102
- end
103
- end
104
-
105
- context "when the store exists" do
106
- let(:store) { create(:store, payment_methods: [payment_method_back_display]) }
107
- it { is_expected.to contain_exactly(payment_method_back_display) }
108
- end
109
- end
110
- end
111
-
112
- describe ".available" do
113
- it "should have 4 total methods" do
114
- expect(Spree::PaymentMethod.all.size).to eq(4)
115
- end
116
-
117
- it "should return all methods available to front-end/back-end when no parameter is passed" do
118
- Spree::Deprecation.silence do
119
- expect(Spree::PaymentMethod.available.size).to eq(2)
120
- end
121
- end
122
-
123
- it "should return all methods available to front-end/back-end when passed :both" do
124
- Spree::Deprecation.silence do
125
- expect(Spree::PaymentMethod.available(:both).size).to eq(2)
126
- end
127
- end
128
-
129
- it "should return all methods available to front-end when passed :front_end" do
130
- Spree::Deprecation.silence do
131
- expect(Spree::PaymentMethod.available(:front_end).size).to eq(3)
132
- end
133
- end
134
-
135
- it "should return all methods available to back-end when passed :back_end" do
136
- Spree::Deprecation.silence do
137
- expect(Spree::PaymentMethod.available(:back_end).size).to eq(3)
138
- end
139
- end
140
-
141
- context 'with stores' do
142
- let!(:store_1) do
143
- create(:store,
144
- payment_methods: [
145
- payment_method_nil_display,
146
- payment_method_both_display,
147
- payment_method_front_display,
148
- payment_method_back_display
149
- ])
150
- end
151
-
152
- let!(:store_2) do
153
- create(:store, payment_methods: [store_2_payment_method])
154
- end
155
-
156
- let!(:store_3) { create(:store) }
157
-
158
- let!(:store_2_payment_method) { create(:payment_method, active: true) }
159
- let!(:no_store_payment_method) { create(:payment_method, active: true) }
160
-
161
- context 'when the store is specified' do
162
- context 'when the store has payment methods' do
163
- it 'finds the payment methods for the store' do
164
- Spree::Deprecation.silence do
165
- expect(Spree::PaymentMethod.available(:both, store: store_1)).to match_array(
166
- [payment_method_nil_display, payment_method_both_display]
167
- )
168
- end
169
- end
170
- end
171
-
172
- context "when store does not have payment_methods" do
173
- it "returns all matching payment methods regardless of store" do
174
- Spree::Deprecation.silence do
175
- expect(Spree::PaymentMethod.available(:both)).to match_array(
176
- [
177
- payment_method_nil_display,
178
- payment_method_both_display,
179
- store_2_payment_method,
180
- no_store_payment_method
181
- ]
182
- )
183
- end
184
- end
185
- end
186
- end
187
-
188
- context 'when the store is not specified' do
189
- it "returns all matching payment methods regardless of store" do
190
- Spree::Deprecation.silence do
191
- expect(Spree::PaymentMethod.available(:both)).to match_array(
192
- [
193
- payment_method_nil_display,
194
- payment_method_both_display,
195
- store_2_payment_method,
196
- no_store_payment_method
197
- ]
198
- )
199
- end
200
- end
201
- end
202
- end
203
- end
204
-
205
- describe '#auto_capture?' do
206
- class TestGateway < Spree::PaymentMethod::CreditCard
207
- def gateway_class
208
- Provider
209
- end
210
- end
211
-
212
- let(:gateway) { TestGateway.new }
213
-
214
- subject { gateway.auto_capture? }
215
-
216
- context 'when auto_capture is nil' do
217
- before(:each) do
218
- expect(Spree::Config).to receive('[]').with(:auto_capture).and_return(auto_capture)
219
- end
220
-
221
- context 'and when Spree::Config[:auto_capture] is false' do
222
- let(:auto_capture) { false }
223
-
224
- it 'should be false' do
225
- expect(gateway.auto_capture).to be_nil
226
- expect(subject).to be false
227
- end
228
- end
229
-
230
- context 'and when Spree::Config[:auto_capture] is true' do
231
- let(:auto_capture) { true }
232
-
233
- it 'should be true' do
234
- expect(gateway.auto_capture).to be_nil
235
- expect(subject).to be true
236
- end
237
- end
238
- end
239
-
240
- context 'when auto_capture is not nil' do
241
- before(:each) do
242
- gateway.auto_capture = auto_capture
243
- end
244
-
245
- context 'and is true' do
246
- let(:auto_capture) { true }
247
-
248
- it 'should be true' do
249
- expect(subject).to be true
250
- end
251
- end
252
-
253
- context 'and is false' do
254
- let(:auto_capture) { false }
255
-
256
- it 'should be true' do
257
- expect(subject).to be false
258
- end
259
- end
260
- end
261
- end
262
-
263
- describe "display_on=" do
264
- around do |example|
265
- Spree::Deprecation.silence do
266
- example.run
267
- end
268
- end
269
- let(:payment) { described_class.new(display_on: display_on) }
270
-
271
- context 'with empty string' do
272
- let(:display_on) { "" }
273
-
274
- it "should be available to admins" do
275
- expect(payment.available_to_admin).to be true
276
- end
277
-
278
- it "should be available to users" do
279
- expect(payment.available_to_users).to be true
280
- end
281
-
282
- it "should have the same value for display_on" do
283
- expect(payment.display_on).to eq ""
284
- end
285
- end
286
-
287
- context 'with "back_end"' do
288
- let(:display_on) { "back_end" }
289
-
290
- it "should be available to admins" do
291
- expect(payment.available_to_admin).to be true
292
- end
293
-
294
- it "should not be available to users" do
295
- expect(payment.available_to_users).to be false
296
- end
297
-
298
- it "should have the same value for display_on" do
299
- expect(payment.display_on).to eq "back_end"
300
- end
301
- end
302
-
303
- context 'with "front_end"' do
304
- let(:display_on) { "front_end" }
305
-
306
- it "should be available to admins" do
307
- expect(payment.available_to_admin).to be false
308
- end
309
-
310
- it "should not be available to users" do
311
- expect(payment.available_to_users).to be true
312
- end
313
-
314
- it "should have the same value for display_on" do
315
- expect(payment.display_on).to eq "front_end"
316
- end
317
- end
318
-
319
- context 'with any other string' do
320
- let(:display_on) { "foobar" }
321
-
322
- it "should be available to admins" do
323
- expect(payment.available_to_admin).to be false
324
- end
325
-
326
- it "should not be available to users" do
327
- expect(payment.available_to_users).to be false
328
- end
329
-
330
- it "should have none for display_on" do
331
- expect(payment.display_on).to eq "none"
332
- end
333
- end
334
- end
335
-
336
- describe 'ActiveMerchant methods' do
337
- class PaymentGateway
338
- def initialize(options)
339
- end
340
-
341
- def authorize; 'authorize'; end
342
-
343
- def purchase; 'purchase'; end
344
-
345
- def capture; 'capture'; end
346
-
347
- def void; 'void'; end
348
-
349
- def credit; 'credit'; end
350
- end
351
-
352
- class TestPaymentMethod < Spree::PaymentMethod
353
- def gateway_class
354
- PaymentGateway
355
- end
356
- end
357
-
358
- let(:payment_method) { TestPaymentMethod.new }
359
-
360
- it "passes through authorize" do
361
- expect(payment_method.authorize).to eq 'authorize'
362
- end
363
-
364
- it "passes through purchase" do
365
- expect(payment_method.purchase).to eq 'purchase'
366
- end
367
-
368
- it "passes through capture" do
369
- expect(payment_method.capture).to eq 'capture'
370
- end
371
-
372
- it "passes through void" do
373
- expect(payment_method.void).to eq 'void'
374
- end
375
-
376
- it "passes through credit" do
377
- expect(payment_method.credit).to eq 'credit'
378
- end
379
- end
380
-
381
- describe 'model_name.human' do
382
- context 'PaymentMethod itself' do
383
- it "returns i18n value" do
384
- expect(Spree::PaymentMethod.model_name.human).to eq('Payment Method')
385
- end
386
- end
387
-
388
- context 'A subclass with no i18n key' do
389
- let!(:klass) { stub_const("MyGem::SomeClass", Class.new(described_class)) }
390
-
391
- it "returns default humanized value" do
392
- expect(klass.model_name.human).to eq('Some class')
393
- end
394
- end
395
- end
396
-
397
- describe "::DISPLAY" do
398
- it "returns [:both, :front_end, :back_end]" do
399
- # Emits deprecation warning on first reference
400
- Spree::Deprecation.silence do
401
- expect(Spree::PaymentMethod::DISPLAY).to eq([:both, :front_end, :back_end])
402
- end
403
-
404
- # but not subsequent
405
- expect(Spree::PaymentMethod::DISPLAY).to eq([:both, :front_end, :back_end])
406
- end
407
- end
408
- end