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,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