solidus_backend 2.9.6 → 2.11.0

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 (270) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/spree/backend.js +5 -1
  3. data/app/assets/javascripts/spree/backend/adjustments.js +1 -1
  4. data/app/assets/javascripts/spree/backend/admin.js +18 -29
  5. data/app/assets/javascripts/spree/backend/collections/states.js +1 -1
  6. data/app/assets/javascripts/spree/backend/components/admin_nav.js +24 -0
  7. data/app/assets/javascripts/spree/backend/components/selectable_table.js +5 -0
  8. data/app/assets/javascripts/spree/backend/components/selectable_table/return_items.js +5 -0
  9. data/app/assets/javascripts/spree/backend/components/selectable_table/summary.js +7 -0
  10. data/app/assets/javascripts/spree/backend/components/sortable_table.js +31 -25
  11. data/app/assets/javascripts/spree/backend/components/tabs.js +1 -1
  12. data/app/assets/javascripts/spree/backend/models/order.js +11 -2
  13. data/app/assets/javascripts/spree/backend/models/payment.js +1 -1
  14. data/app/assets/javascripts/spree/backend/models/shipment.js +1 -1
  15. data/app/assets/javascripts/spree/backend/models/stock_item.js +1 -1
  16. data/app/assets/javascripts/spree/backend/option_type_autocomplete.js +2 -2
  17. data/app/assets/javascripts/spree/backend/option_value_picker.js +2 -2
  18. data/app/assets/javascripts/spree/backend/orders/cart.js +6 -0
  19. data/app/assets/javascripts/spree/backend/product_picker.js +2 -2
  20. data/app/assets/javascripts/spree/backend/routes.js +40 -21
  21. data/app/assets/javascripts/spree/backend/shipments.js +5 -67
  22. data/app/assets/javascripts/spree/backend/shipping_methods/stock_locations_picker.js +18 -0
  23. data/app/assets/javascripts/spree/backend/stock_management.js +4 -2
  24. data/app/assets/javascripts/spree/backend/taxon_autocomplete.js +2 -2
  25. data/app/assets/javascripts/spree/backend/taxons.js +3 -3
  26. data/app/assets/javascripts/spree/backend/templates/index.js +2 -1
  27. data/app/assets/javascripts/spree/backend/templates/orders/customer_details/autocomplete.hbs +2 -2
  28. data/app/assets/javascripts/spree/backend/templates/stock_items/stock_location_stock_item.hbs +5 -1
  29. data/app/assets/javascripts/spree/backend/templates/tables/return_item_sum_amount.hbs +7 -0
  30. data/app/assets/javascripts/spree/backend/templates/tables/selectable_label.hbs +6 -0
  31. data/app/assets/javascripts/spree/backend/user_picker.js +3 -4
  32. data/app/assets/javascripts/spree/backend/variant_autocomplete.js +2 -2
  33. data/app/assets/javascripts/spree/backend/views/cart/empty_cart_button.js +29 -0
  34. data/app/assets/javascripts/spree/backend/views/cart/line_item_table.js +5 -0
  35. data/app/assets/javascripts/spree/backend/views/index.js +5 -0
  36. data/app/assets/javascripts/spree/backend/views/order/address.js +8 -6
  37. data/app/assets/javascripts/spree/backend/views/order/customer_select.js +2 -3
  38. data/app/assets/javascripts/spree/backend/views/order/details_adjustments.js +4 -1
  39. data/app/assets/javascripts/spree/backend/views/stock/edit_stock_item_row.js +4 -0
  40. data/app/assets/javascripts/spree/backend/views/tables/return_items.js +9 -0
  41. data/app/assets/javascripts/spree/backend/views/tables/selectable_table.js +70 -0
  42. data/app/assets/javascripts/spree/backend/views/tables/selectable_table/sum_return_item_amount.js +32 -0
  43. data/app/assets/javascripts/spree/backend/views/tables/selectable_table/summary.js +45 -0
  44. data/app/assets/stylesheets/spree/backend/_bootstrap_custom.scss +2 -0
  45. data/app/assets/stylesheets/spree/backend/components/_breadcrumb.scss +3 -3
  46. data/app/assets/stylesheets/spree/backend/components/_messages.scss +4 -0
  47. data/app/assets/stylesheets/spree/backend/components/_navigation.scss +181 -49
  48. data/app/assets/stylesheets/spree/backend/globals/{_mixins.css → _mixins.scss} +0 -0
  49. data/app/assets/stylesheets/spree/backend/globals/_variables.scss +2 -0
  50. data/app/assets/stylesheets/spree/backend/sections/_orders.scss +5 -1
  51. data/app/assets/stylesheets/spree/backend/sections/_style_guide.scss +4 -0
  52. data/app/assets/stylesheets/spree/backend/shared/_forms.scss +1 -0
  53. data/app/assets/stylesheets/spree/backend/shared/_header.scss +5 -1
  54. data/app/assets/stylesheets/spree/backend/shared/_layout.scss +0 -9
  55. data/app/controllers/spree/admin/adjustments_controller.rb +1 -1
  56. data/app/controllers/spree/admin/base_controller.rb +7 -1
  57. data/app/controllers/spree/admin/cancellations_controller.rb +2 -0
  58. data/app/controllers/spree/admin/customer_returns_controller.rb +4 -4
  59. data/app/controllers/spree/admin/images_controller.rb +2 -1
  60. data/app/controllers/spree/admin/orders/customer_details_controller.rb +2 -0
  61. data/app/controllers/spree/admin/orders_controller.rb +9 -4
  62. data/app/controllers/spree/admin/payment_methods_controller.rb +4 -4
  63. data/app/controllers/spree/admin/payments_controller.rb +5 -3
  64. data/app/controllers/spree/admin/product_properties_controller.rb +2 -2
  65. data/app/controllers/spree/admin/products_controller.rb +19 -25
  66. data/app/controllers/spree/admin/promotion_codes_controller.rb +9 -4
  67. data/app/controllers/spree/admin/refunds_controller.rb +19 -0
  68. data/app/controllers/spree/admin/resource_controller.rb +39 -10
  69. data/app/controllers/spree/admin/return_authorizations_controller.rb +1 -1
  70. data/app/controllers/spree/admin/root_controller.rb +1 -1
  71. data/app/controllers/spree/admin/search_controller.rb +1 -2
  72. data/app/controllers/spree/admin/stock_items_controller.rb +6 -5
  73. data/app/controllers/spree/admin/stock_locations_controller.rb +4 -0
  74. data/app/controllers/spree/admin/stock_movements_controller.rb +7 -0
  75. data/app/controllers/spree/admin/style_guide_controller.rb +1 -1
  76. data/app/controllers/spree/admin/taxons/attachment_controller.rb +20 -0
  77. data/app/controllers/spree/admin/taxons_controller.rb +12 -1
  78. data/app/controllers/spree/admin/users/api_key_controller.rb +29 -0
  79. data/app/controllers/spree/admin/users_controller.rb +43 -22
  80. data/app/controllers/spree/admin/variants_controller.rb +4 -2
  81. data/app/controllers/spree/admin/zones_controller.rb +1 -1
  82. data/app/helpers/spree/admin/base_helper.rb +4 -0
  83. data/app/helpers/spree/admin/customer_returns_helper.rb +1 -1
  84. data/app/helpers/spree/admin/navigation_helper.rb +4 -3
  85. data/app/helpers/spree/admin/orders_helper.rb +8 -4
  86. data/app/helpers/spree/admin/stock_movements_helper.rb +8 -4
  87. data/app/helpers/spree/promotion_rules_helper.rb +1 -1
  88. data/app/views/spree/admin/customer_returns/_return_item_selection.html.erb +2 -3
  89. data/app/views/spree/admin/customer_returns/new.html.erb +1 -1
  90. data/app/views/spree/admin/images/index.html.erb +25 -21
  91. data/app/views/spree/admin/option_types/_option_value_fields.html.erb +8 -1
  92. data/app/views/spree/admin/option_types/edit.html.erb +4 -2
  93. data/app/views/spree/admin/orders/_line_items_edit_form.html.erb +1 -0
  94. data/app/views/spree/admin/orders/customer_details/_form.html.erb +13 -13
  95. data/app/views/spree/admin/orders/edit.html.erb +3 -4
  96. data/app/views/spree/admin/orders/index.html.erb +23 -13
  97. data/app/views/spree/admin/payment_methods/_form.html.erb +7 -2
  98. data/app/views/spree/admin/payment_methods/new.html.erb +1 -1
  99. data/app/views/spree/admin/payments/index.html.erb +3 -1
  100. data/app/views/spree/admin/prices/_master_variant_table.html.erb +41 -41
  101. data/app/views/spree/admin/prices/_table.html.erb +3 -3
  102. data/app/views/spree/admin/product_properties/_product_property_fields.html.erb +7 -2
  103. data/app/views/spree/admin/product_properties/index.html.erb +14 -2
  104. data/app/views/spree/admin/products/_form.html.erb +13 -2
  105. data/app/views/spree/admin/products/index.html.erb +1 -1
  106. data/app/views/spree/admin/promotion_code_batches/new.html.erb +1 -1
  107. data/app/views/spree/admin/promotion_codes/index.html.erb +1 -1
  108. data/app/views/spree/admin/promotion_codes/new.html.erb +1 -1
  109. data/app/views/spree/admin/promotions/_actions.html.erb +2 -1
  110. data/app/views/spree/admin/promotions/_activations_new.html.erb +1 -1
  111. data/app/views/spree/admin/promotions/_rules.html.erb +1 -1
  112. data/app/views/spree/admin/promotions/edit.html.erb +2 -2
  113. data/app/views/spree/admin/promotions/index.html.erb +13 -6
  114. data/app/views/spree/admin/return_authorizations/_form.html.erb +3 -10
  115. data/app/views/spree/admin/return_authorizations/index.html.erb +1 -1
  116. data/app/views/spree/admin/return_authorizations/new.html.erb +1 -1
  117. data/app/views/spree/admin/search/users.json.jbuilder +15 -1
  118. data/app/views/spree/admin/shared/_address.html.erb +6 -6
  119. data/app/views/spree/admin/shared/_address_form.html.erb +15 -8
  120. data/app/views/spree/admin/shared/_calculator_fields.html.erb +5 -0
  121. data/app/views/spree/admin/shared/_navigation.html.erb +3 -0
  122. data/app/views/spree/admin/shared/_new_resource_links.html.erb +1 -1
  123. data/app/views/spree/admin/shared/_order_submenu.html.erb +6 -6
  124. data/app/views/spree/admin/shared/_payments_tabs.html.erb +1 -1
  125. data/app/views/spree/admin/shared/_settings_checkout_tabs.html.erb +5 -5
  126. data/app/views/spree/admin/shared/_settings_sub_menu.html.erb +7 -7
  127. data/app/views/spree/admin/shared/_shipping_tabs.html.erb +3 -3
  128. data/app/views/spree/admin/shared/_taxes_tabs.html.erb +2 -2
  129. data/app/views/spree/admin/shared/preference_fields/_encrypted_string.html.erb +12 -0
  130. data/app/views/spree/admin/shipping_methods/_form.html.erb +19 -1
  131. data/app/views/spree/admin/stock_items/_stock_management.html.erb +1 -1
  132. data/app/views/spree/admin/stock_locations/edit.html.erb +1 -1
  133. data/app/views/spree/admin/stock_locations/index.html.erb +4 -2
  134. data/app/views/spree/admin/stock_movements/index.html.erb +30 -1
  135. data/app/views/spree/admin/store_credit_reasons/index.html.erb +1 -1
  136. data/app/views/spree/admin/store_credits/index.html.erb +1 -1
  137. data/app/views/spree/admin/stores/_form.html.erb +6 -0
  138. data/app/views/spree/admin/style_guide/topics/tables/_building_tables.html.erb +27 -3
  139. data/app/views/spree/admin/tax_categories/_form.html.erb +1 -0
  140. data/app/views/spree/admin/tax_rates/_form.html.erb +1 -1
  141. data/app/views/spree/admin/taxonomies/new.html.erb +1 -1
  142. data/app/views/spree/admin/taxons/_form.html.erb +1 -5
  143. data/app/views/spree/admin/taxons/attachment_forms/_paperclip.html.erb +16 -0
  144. data/app/views/spree/admin/users/_form.html.erb +14 -12
  145. data/app/views/spree/admin/users/_tabs.html.erb +1 -1
  146. data/app/views/spree/admin/users/edit.html.erb +5 -6
  147. data/app/views/spree/admin/users/items.html.erb +5 -3
  148. data/app/views/spree/admin/users/orders.html.erb +5 -3
  149. data/app/views/spree/admin/variants/_table_filter.html.erb +1 -1
  150. data/app/views/spree/admin/variants/index.html.erb +2 -2
  151. data/app/views/spree/layouts/admin.html.erb +1 -2
  152. data/config/initializers/form_builder.rb +2 -2
  153. data/config/routes.rb +4 -6
  154. data/lib/spree/backend.rb +1 -0
  155. data/lib/spree/backend/config.rb +9 -0
  156. data/lib/spree/backend/engine.rb +5 -5
  157. data/{app/models → lib}/spree/backend_configuration.rb +19 -3
  158. data/solidus_backend.gemspec +5 -4
  159. data/vendor/assets/stylesheets/solidus_admin/bootstrap/_variables.scss +1 -1
  160. metadata +44 -124
  161. data/app/assets/javascripts/spree/backend/returns/return_item_selection.js +0 -35
  162. data/app/assets/javascripts/spree/backend/templates/variants/autocomplete_stock.hbs +0 -56
  163. data/app/views/spree/admin/orders/_add_product.html.erb +0 -12
  164. data/script/rails +0 -10
  165. data/spec/controllers/spree/admin/base_controller_spec.rb +0 -26
  166. data/spec/controllers/spree/admin/cancellations_controller_spec.rb +0 -83
  167. data/spec/controllers/spree/admin/customer_returns_controller_spec.rb +0 -235
  168. data/spec/controllers/spree/admin/locale_controller_spec.rb +0 -45
  169. data/spec/controllers/spree/admin/missing_products_controller_spec.rb +0 -18
  170. data/spec/controllers/spree/admin/orders/customer_details_controller_spec.rb +0 -128
  171. data/spec/controllers/spree/admin/orders_controller_spec.rb +0 -408
  172. data/spec/controllers/spree/admin/payment_methods_controller_spec.rb +0 -95
  173. data/spec/controllers/spree/admin/payments_controller_spec.rb +0 -194
  174. data/spec/controllers/spree/admin/prices_controller_spec.rb +0 -45
  175. data/spec/controllers/spree/admin/product_properties_controller_spec.rb +0 -71
  176. data/spec/controllers/spree/admin/products_controller_spec.rb +0 -270
  177. data/spec/controllers/spree/admin/promotion_actions_controller_spec.rb +0 -23
  178. data/spec/controllers/spree/admin/promotion_codes_controller_spec.rb +0 -32
  179. data/spec/controllers/spree/admin/promotion_rules_controller_spec.rb +0 -36
  180. data/spec/controllers/spree/admin/promotions_controller_spec.rb +0 -122
  181. data/spec/controllers/spree/admin/refunds_controller_spec.rb +0 -35
  182. data/spec/controllers/spree/admin/reimbursements_controller_spec.rb +0 -137
  183. data/spec/controllers/spree/admin/resource_controller_spec.rb +0 -190
  184. data/spec/controllers/spree/admin/return_authorizations_controller_spec.rb +0 -291
  185. data/spec/controllers/spree/admin/return_items_controller_spec.rb +0 -29
  186. data/spec/controllers/spree/admin/root_controller_spec.rb +0 -43
  187. data/spec/controllers/spree/admin/search_controller_spec.rb +0 -106
  188. data/spec/controllers/spree/admin/shipping_methods_controller_spec.rb +0 -16
  189. data/spec/controllers/spree/admin/stock_items_controller_spec.rb +0 -52
  190. data/spec/controllers/spree/admin/stock_locations_controller_spec.rb +0 -44
  191. data/spec/controllers/spree/admin/store_credits_controller_spec.rb +0 -311
  192. data/spec/controllers/spree/admin/users_controller_spec.rb +0 -264
  193. data/spec/controllers/spree/admin/variants_controller_spec.rb +0 -71
  194. data/spec/features/admin/configuration/payment_methods_spec.rb +0 -167
  195. data/spec/features/admin/configuration/shipping_methods_spec.rb +0 -114
  196. data/spec/features/admin/configuration/stock_locations_spec.rb +0 -54
  197. data/spec/features/admin/configuration/store_spec.rb +0 -62
  198. data/spec/features/admin/configuration/tax_categories_spec.rb +0 -58
  199. data/spec/features/admin/configuration/tax_rates_spec.rb +0 -31
  200. data/spec/features/admin/configuration/taxonomies_spec.rb +0 -54
  201. data/spec/features/admin/configuration/zones_spec.rb +0 -41
  202. data/spec/features/admin/homepage_spec.rb +0 -86
  203. data/spec/features/admin/javascript_format_money_spec.rb +0 -22
  204. data/spec/features/admin/locale_spec.rb +0 -34
  205. data/spec/features/admin/orders/adjustments_promotions_spec.rb +0 -55
  206. data/spec/features/admin/orders/adjustments_spec.rb +0 -130
  207. data/spec/features/admin/orders/cancelling_and_resuming_spec.rb +0 -45
  208. data/spec/features/admin/orders/cancelling_inventory_spec.rb +0 -50
  209. data/spec/features/admin/orders/customer_details_spec.rb +0 -204
  210. data/spec/features/admin/orders/customer_returns_spec.rb +0 -28
  211. data/spec/features/admin/orders/line_items_spec.rb +0 -52
  212. data/spec/features/admin/orders/listing_spec.rb +0 -186
  213. data/spec/features/admin/orders/log_entries_spec.rb +0 -56
  214. data/spec/features/admin/orders/new_order_spec.rb +0 -331
  215. data/spec/features/admin/orders/new_refund_spec.rb +0 -35
  216. data/spec/features/admin/orders/order_details_spec.rb +0 -581
  217. data/spec/features/admin/orders/payments_spec.rb +0 -330
  218. data/spec/features/admin/orders/return_authorizations_spec.rb +0 -27
  219. data/spec/features/admin/orders/return_payment_state_spec.rb +0 -65
  220. data/spec/features/admin/orders/risk_analysis_spec.rb +0 -49
  221. data/spec/features/admin/orders/shipments_spec.rb +0 -145
  222. data/spec/features/admin/payments/store_credits_spec.rb +0 -23
  223. data/spec/features/admin/products/edit/images_spec.rb +0 -76
  224. data/spec/features/admin/products/edit/products_spec.rb +0 -92
  225. data/spec/features/admin/products/edit/taxons_spec.rb +0 -51
  226. data/spec/features/admin/products/edit/variants_spec.rb +0 -63
  227. data/spec/features/admin/products/option_types_spec.rb +0 -116
  228. data/spec/features/admin/products/pricing_spec.rb +0 -127
  229. data/spec/features/admin/products/products_spec.rb +0 -336
  230. data/spec/features/admin/products/properties_spec.rb +0 -141
  231. data/spec/features/admin/products/stock_management_spec.rb +0 -101
  232. data/spec/features/admin/products/variant_spec.rb +0 -89
  233. data/spec/features/admin/promotion_adjustments_spec.rb +0 -277
  234. data/spec/features/admin/promotions/option_value_rule_spec.rb +0 -90
  235. data/spec/features/admin/promotions/product_rule_spec.rb +0 -35
  236. data/spec/features/admin/promotions/promotion_categories_spec.rb +0 -83
  237. data/spec/features/admin/promotions/promotion_spec.rb +0 -52
  238. data/spec/features/admin/promotions/tiered_calculator_spec.rb +0 -76
  239. data/spec/features/admin/promotions/user_rule_spec.rb +0 -42
  240. data/spec/features/admin/reimbursements_spec.rb +0 -18
  241. data/spec/features/admin/store_credits_spec.rb +0 -132
  242. data/spec/features/admin/stores_spec.rb +0 -37
  243. data/spec/features/admin/style_guide_spec.rb +0 -14
  244. data/spec/features/admin/taxons_spec.rb +0 -78
  245. data/spec/features/admin/users_spec.rb +0 -402
  246. data/spec/helpers/admin/base_helper_spec.rb +0 -49
  247. data/spec/helpers/admin/navigation_helper_spec.rb +0 -139
  248. data/spec/helpers/admin/stock_movements_helper_spec.rb +0 -29
  249. data/spec/helpers/admin/store_credit_events_helper_spec.rb +0 -97
  250. data/spec/helpers/promotion_rules_helper_spec.rb +0 -14
  251. data/spec/javascripts/fixtures/_boot.html.erb +0 -8
  252. data/spec/javascripts/fixtures/number_with_currency/with_currency_select.html.erb +0 -3
  253. data/spec/javascripts/fixtures/number_with_currency/without_select.html.erb +0 -3
  254. data/spec/javascripts/format_money_spec.js +0 -48
  255. data/spec/javascripts/spec_helper.js +0 -13
  256. data/spec/javascripts/support/show_errors.js +0 -8
  257. data/spec/javascripts/support/with_translations.js +0 -11
  258. data/spec/javascripts/translation_spec.js +0 -58
  259. data/spec/javascripts/views/number_with_currency_spec.js +0 -72
  260. data/spec/models/spree/backend_configuration/menu_item_spec.rb +0 -17
  261. data/spec/models/spree/backend_configuration_spec.rb +0 -22
  262. data/spec/spec_helper.rb +0 -122
  263. data/spec/support/appear_before_matcher.rb +0 -10
  264. data/spec/support/feature/base_feature_helper.rb +0 -12
  265. data/spec/support/feature/order_feature_helper.rb +0 -27
  266. data/spec/support/ror_ringer.jpeg +0 -0
  267. data/spec/teaspoon_env.rb +0 -51
  268. data/spec/test_views/spree/admin/widgets/edit.html.erb +0 -1
  269. data/spec/test_views/spree/admin/widgets/new.html.erb +0 -1
  270. data/spec/views/spree/admin/shared/navigation_footer_spec.rb +0 -67
@@ -1,330 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- describe 'Payments', type: :feature do
6
- stub_authorization!
7
-
8
- let(:state) { 'checkout' }
9
-
10
- def create_payment(opts = {})
11
- create(
12
- :payment,
13
- {
14
- order: order,
15
- amount: order.outstanding_balance,
16
- payment_method: create(:credit_card_payment_method),
17
- state: state
18
- }.merge(opts)
19
- )
20
- end
21
-
22
- context "with a pre-existing payment" do
23
- let!(:payment) { create_payment }
24
-
25
- let(:order) { create(:completed_order_with_totals, number: 'R100', line_items_price: 50) }
26
-
27
- before do
28
- visit "/admin/orders/#{order.number}/payments"
29
- end
30
-
31
- # Regression tests for https://github.com/spree/spree/issues/1453
32
- context 'with a check payment', js: true do
33
- let(:order) { create(:completed_order_with_totals, number: 'R100') }
34
- let!(:payment) { create_payment(payment_method: create(:check_payment_method, available_to_admin: true)) }
35
-
36
- it 'capturing a check payment from a new order' do
37
- click_icon(:capture)
38
- expect(page).not_to have_content('Cannot perform requested operation')
39
- expect(page).to have_content('Payment Updated')
40
- end
41
-
42
- it 'voids a check payment from a new order' do
43
- click_icon(:void)
44
- expect(page).to have_content('Payment Updated')
45
- end
46
- end
47
-
48
- it 'should list all captures for a payment' do
49
- capture_amount = order.outstanding_balance / 2 * 100
50
- payment.capture!(capture_amount)
51
-
52
- visit spree.admin_order_payment_path(order, payment)
53
- expect(page).to have_content 'Capture Events'
54
- within '#capture_events' do
55
- expect(page).to have_content(capture_amount / 100)
56
- end
57
- end
58
-
59
- it 'displays the address for a credit card when present' do
60
- payment.source.update!(address: create(:address, address1: 'my cc address'))
61
- visit spree.admin_order_payment_path(order, payment)
62
- expect(page).to have_content 'my cc address'
63
- end
64
-
65
- context 'when there are multiple pending payments', :js do
66
- context 'while marking all payments as void' do
67
- let(:card_payment_method) { create(:credit_card_payment_method) }
68
-
69
- let!(:payment) do
70
- create_payment(
71
- payment_method: card_payment_method,
72
- state: :pending
73
- )
74
- end
75
-
76
- let!(:second_payment) do
77
- create_payment(
78
- payment_method: card_payment_method,
79
- state: :pending
80
- )
81
- end
82
-
83
- it 'updates the order payment state correctly at each iteration' do
84
- visit current_path
85
- expect(page).to have_css('#payment_status', text: 'Balance due')
86
-
87
- within '#payments' do
88
- expect(page).to have_selector('.pill-pending', count: 2)
89
- within "#payment_#{payment.id}" do
90
- find('.fa-void').click
91
- end
92
- end
93
-
94
- expect(page).to have_css('#payment_status', text: 'Balance due')
95
-
96
- within '#payments' do
97
- expect(page).to have_selector('.pill-pending', count: 1)
98
- within "#payment_#{payment.id}" do
99
- expect(page).to have_selector('.pill-void', count: 1)
100
- end
101
- end
102
-
103
- within "#payment_#{second_payment.id}" do
104
- find('.fa-void').click
105
- end
106
-
107
- within '#payments' do
108
- expect(page).not_to have_selector('.pill-pending')
109
- expect(page).to have_selector('.pill-void', count: 2)
110
- end
111
- expect(page).to have_css('#payment_status', text: 'Failed')
112
- end
113
- end
114
- end
115
-
116
- it 'lists, updates and creates payments for an order', js: true do
117
- within_row(1) do
118
- expect(column_text(3)).to eq('Credit Card')
119
- expect(column_text(5)).to eq('Checkout')
120
- expect(column_text(6)).to have_content('$150.00')
121
- end
122
-
123
- click_icon :void
124
- expect(page).to have_css('#payment_status', text: 'Failed')
125
- expect(page).to have_content('Payment Updated')
126
-
127
- within_row(1) do
128
- expect(column_text(5)).to eq('Void')
129
- end
130
-
131
- click_on 'New Payment'
132
- expect(page).to have_content('New Payment')
133
- click_button 'Update'
134
- expect(page).to have_content('successfully created!')
135
-
136
- click_icon(:capture)
137
-
138
- expect(page).to have_selector('#payment_status', text: 'Paid')
139
- expect(page).not_to have_selector('#new_payment_section')
140
- end
141
-
142
- # Regression test for https://github.com/spree/spree/issues/1269
143
- it 'cannot create a payment for an order with no payment methods' do
144
- Spree::PaymentMethod.delete_all
145
- order.payments.delete_all
146
-
147
- click_on 'New Payment'
148
- expect(page).to have_content('You cannot create a payment for an order without any payment methods defined.')
149
- expect(page).to have_content('Please define some payment methods first.')
150
- end
151
-
152
- context 'payment is pending', js: true do
153
- let(:state) { 'pending' }
154
-
155
- it 'allows the amount to be edited by clicking on the edit button then saving' do
156
- within_row(1) do
157
- click_icon(:edit)
158
- fill_in('amount', with: '$1')
159
- click_icon(:ok)
160
- expect(page).to have_selector('td.amount span', text: '$1.00')
161
- expect(payment.reload.amount).to eq(1.00)
162
- end
163
- end
164
-
165
- it 'allows the amount change to be cancelled by clicking on the cancel button' do
166
- within_row(1) do
167
- click_icon(:edit)
168
- fill_in 'amount', with: '$1'
169
- click_icon(:cancel)
170
- expect(page).to have_selector('td.amount span', text: '$150.00')
171
- expect(payment.reload.amount).to eq(150.00)
172
- end
173
- end
174
-
175
- it 'displays an error when the amount is invalid' do
176
- within_row(1) do
177
- click_icon(:edit)
178
- fill_in('amount', with: 'invalid')
179
- click_icon(:ok)
180
- end
181
- expect(page).to have_selector('.flash.error', text: 'Invalid resource. Please fix errors and try again.')
182
- expect(payment.reload.amount).to eq(150.00)
183
- end
184
- end
185
-
186
- context 'payment is completed', js: true do
187
- let(:state) { 'completed' }
188
-
189
- it 'does not allow the amount to be edited' do
190
- within_row(1) do
191
- expect(page).not_to have_selector('.fa-edit')
192
- end
193
- end
194
- end
195
- end
196
-
197
- context "with no prior payments" do
198
- let(:order) { create(:order_with_line_items, line_items_count: 1) }
199
- let!(:payment_method) { create(:credit_card_payment_method) }
200
-
201
- # Regression tests for https://github.com/spree/spree/issues/4129
202
- context "with a credit card payment method" do
203
- before do
204
- visit spree.admin_order_payments_path(order)
205
- end
206
-
207
- it "is able to create a new credit card payment with valid information", js: true do
208
- fill_in_with_force "Card Number", with: "4111 1111 1111 1111"
209
- fill_in "Name", with: "Test User"
210
- fill_in_with_force "Expiration", with: "09 / #{Time.current.year + 1}"
211
- fill_in "Card Code", with: "007"
212
- # Regression test for https://github.com/spree/spree/issues/4277
213
- expect(page).to have_css('.ccType[value="visa"]', visible: false)
214
- click_button "Continue"
215
- expect(page).to have_content("Payment has been successfully created!")
216
- end
217
-
218
- it "is unable to create a new payment with invalid information" do
219
- click_button "Continue"
220
- expect(page).to have_content("Payment could not be created.")
221
- expect(page).to have_content("Number can't be blank")
222
- expect(page).to have_content("Name can't be blank")
223
- expect(page).to have_content("Verification Value can't be blank")
224
- expect(page).to have_content("Month is not a number")
225
- expect(page).to have_content("Year is not a number")
226
- end
227
- end
228
-
229
- context "user existing card" do
230
- let!(:cc) do
231
- create(:credit_card, payment_method: payment_method, gateway_customer_profile_id: "BGS-RFRE", user: order.user)
232
- end
233
-
234
- before do
235
- order.user.wallet.add(cc)
236
- visit spree.admin_order_payments_path(order)
237
- end
238
-
239
- it "is able to reuse customer payment source" do
240
- expect(find("#card_#{cc.id}")).to be_checked
241
- click_button "Continue"
242
- expect(page).to have_content("Payment has been successfully created!")
243
- end
244
- end
245
-
246
- context "with a check" do
247
- let(:order) { create(:completed_order_with_totals, line_items_count: 1) }
248
- let!(:payment_method) { create(:check_payment_method) }
249
-
250
- before do
251
- visit spree.admin_order_payments_path(order.reload)
252
- end
253
-
254
- it "can successfully be created and captured", js: true do
255
- click_on 'Update'
256
- expect(page).to have_content("Payment has been successfully created!")
257
- click_icon(:capture)
258
- expect(page).to have_content("Payment Updated")
259
- end
260
- end
261
-
262
- context 'with a soft-deleted payment method' do
263
- let(:order) { create(:completed_order_with_totals, line_items_count: 1) }
264
- let!(:payment_method) { create(:check_payment_method) }
265
- let!(:payment) { create_payment(payment_method: payment_method) }
266
-
267
- before do
268
- payment_method.discard
269
- visit spree.admin_order_payments_path(order.reload)
270
- end
271
-
272
- it "can list and view the payment" do
273
- expect(page).to have_content(payment.number)
274
- click_on payment.number
275
- expect(page).to have_current_path("/admin/orders/#{order.number}/payments/#{payment.id}")
276
- expect(page).to have_content(payment.amount)
277
- end
278
- end
279
- end
280
-
281
- # Previously this would fail unless the method was named "Credit Card"
282
- context "with an differently named payment method" do
283
- let(:order) { create(:order_with_line_items, line_items_count: 1) }
284
- let!(:chequing_payment_method) { create(:check_payment_method) }
285
- let!(:payment_method) { create(:credit_card_payment_method, name: "Multipass!") }
286
-
287
- before do
288
- visit spree.admin_order_payments_path(order.reload)
289
- end
290
-
291
- it "is able to create a new payment", js: true do
292
- choose payment_method.name
293
- fill_in_with_force "Card Number", with: "4111 1111 1111 1111"
294
- fill_in "Name", with: "Test User"
295
- fill_in_with_force "Expiration", with: "09 / #{Time.current.year + 1}"
296
- fill_in "Card Code", with: "007"
297
- click_button "Continue"
298
- expect(page).to have_content("Payment has been successfully created!")
299
- end
300
- end
301
-
302
- context "when required quantity is more than available" do
303
- let(:product) { create(:product_not_backorderable) }
304
-
305
- let(:order) do
306
- create(:order_with_line_items, {
307
- line_items_count: 1,
308
- line_items_attributes: [{ quantity: 11, product: product }],
309
- stock_location: product.master.stock_locations.first
310
- })
311
- end
312
-
313
- let!(:chequing_payment_method) { create(:check_payment_method) }
314
- let!(:payment_method) { create(:credit_card_payment_method, name: "Multipass!") }
315
-
316
- before do
317
- visit spree.admin_order_payments_path(order.reload)
318
- end
319
-
320
- it "displays an error" do
321
- choose payment_method.name
322
- fill_in_with_force "Card Number", with: "4111 1111 1111 1111"
323
- fill_in "Name", with: "Test User"
324
- fill_in_with_force "Expiration", with: "09 / #{Time.current.year + 1}"
325
- fill_in "Card Code", with: "007"
326
- click_button "Continue"
327
- expect(page).to have_content I18n.t('spree.insufficient_stock_for_order')
328
- end
329
- end
330
- end
@@ -1,27 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- describe "ReturnAuthorizations", type: :feature do
6
- include OrderFeatureHelper
7
-
8
- stub_authorization!
9
-
10
- let!(:order) { create(:shipped_order) }
11
- let!(:return_authorization) { create(:return_authorization, order: order) }
12
-
13
- it "can visit the return authorizations list page" do
14
- visit spree.admin_order_return_authorizations_path(order)
15
- end
16
-
17
- describe "edit" do
18
- it "can visit the return authorizations edit page" do
19
- visit spree.edit_admin_order_return_authorization_path(order, return_authorization)
20
- end
21
-
22
- it "return authorizations edit page has a data hook for extensions to add content above, below or within the RA form" do
23
- visit spree.edit_admin_order_return_authorization_path(order, return_authorization)
24
- expect(page).to have_selector("[data-hook=return-authorization-form-wrapper]")
25
- end
26
- end
27
- end
@@ -1,65 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- describe "Return payment state spec" do
6
- stub_authorization!
7
-
8
- before do
9
- Spree::RefundReason.create!(name: Spree::RefundReason::RETURN_PROCESSING_REASON, mutable: false)
10
- allow_any_instance_of(Spree::Admin::ReimbursementsController).to receive(:try_spree_current_user).
11
- and_return(user)
12
- end
13
-
14
- let!(:order) { create(:shipped_order) }
15
- let(:user) { create(:admin_user) }
16
-
17
- # Regression test for https://github.com/spree/spree/issues/6229
18
- it "refunds and has outstanding_balance of zero", js: true do
19
- expect(order).to have_attributes(
20
- total: 110,
21
- refund_total: 0,
22
- payment_total: 110,
23
- outstanding_balance: 0,
24
- payment_state: 'paid'
25
- )
26
-
27
- # From an order with a shipped shipment
28
- visit "/admin/orders/#{order.number}/edit"
29
-
30
- # Create a Return Authorization (select the Original Reimbursement type)
31
- click_on 'RMA'
32
- click_on 'New RMA'
33
-
34
- find('.add-item').click # check first (and only) item
35
- select Spree::StockLocation.first.name, from: 'return_authorization[stock_location_id]', visible: false
36
- click_on 'Create'
37
-
38
- # Create a Customer Return (select the item from 'Items in Return Authorizations')
39
- click_on 'Customer Returns'
40
- click_on 'New Customer Return'
41
-
42
- find('input.add-item').click # check first (and only) item
43
- select 'Received', from: 'customer_return[return_items_attributes][0][reception_status_event]', visible: false
44
- select Spree::StockLocation.first.name, from: 'customer_return[stock_location_id]', visible: false
45
- click_on 'Create'
46
-
47
- # Create reimbursement
48
- click_on 'Create reimbursement'
49
-
50
- # Reimburse.
51
- click_on 'Reimburse'
52
-
53
- expect(page).to have_css('tr.reimbursement-refund')
54
-
55
- order.reload
56
-
57
- expect(order).to have_attributes(
58
- total: 110,
59
- refund_total: 10,
60
- payment_total: 100,
61
- outstanding_balance: 0,
62
- payment_state: 'paid'
63
- )
64
- end
65
- end
@@ -1,49 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- describe 'Order Risk Analysis', type: :feature do
6
- stub_authorization!
7
-
8
- let!(:order) do
9
- create(:completed_order_with_pending_payment)
10
- end
11
-
12
- def visit_order
13
- visit spree.admin_path
14
- click_link 'Orders'
15
- within_row(1) do
16
- click_link order.number
17
- end
18
- end
19
-
20
- context "the order is considered risky" do
21
- before do
22
- allow_any_instance_of(Spree::Admin::BaseController).to receive_messages try_spree_current_user: create(:user)
23
-
24
- order.payments.first.update_column(:avs_response, 'N')
25
- visit_order
26
- end
27
-
28
- it "displays 'Risk Analysis' box" do
29
- expect(page).to have_content 'Risk Analysis'
30
- end
31
-
32
- it "can be approved" do
33
- click_button('Approve')
34
- expect(page).to have_content 'Approver'
35
- expect(page).to have_content 'Approved at'
36
- expect(page).to have_content 'Status: Complete'
37
- end
38
- end
39
-
40
- context "the order is not considered risky" do
41
- before do
42
- visit_order
43
- end
44
-
45
- it "does not display 'Risk Analysis' box" do
46
- expect(page).to_not have_content 'Risk Analysis'
47
- end
48
- end
49
- end