solidus_backend 2.10.1 → 2.11.2

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 (233) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/spree/backend.js +4 -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/selectable_table.js +5 -0
  7. data/app/assets/javascripts/spree/backend/components/selectable_table/return_items.js +5 -0
  8. data/app/assets/javascripts/spree/backend/components/selectable_table/summary.js +7 -0
  9. data/app/assets/javascripts/spree/backend/components/sortable_table.js +31 -25
  10. data/app/assets/javascripts/spree/backend/models/order.js +3 -3
  11. data/app/assets/javascripts/spree/backend/models/payment.js +1 -1
  12. data/app/assets/javascripts/spree/backend/models/shipment.js +1 -1
  13. data/app/assets/javascripts/spree/backend/models/stock_item.js +1 -1
  14. data/app/assets/javascripts/spree/backend/option_type_autocomplete.js +2 -2
  15. data/app/assets/javascripts/spree/backend/option_value_picker.js +2 -2
  16. data/app/assets/javascripts/spree/backend/product_picker.js +2 -2
  17. data/app/assets/javascripts/spree/backend/routes.js +40 -21
  18. data/app/assets/javascripts/spree/backend/shipments.js +5 -5
  19. data/app/assets/javascripts/spree/backend/shipping_methods/stock_locations_picker.js +18 -0
  20. data/app/assets/javascripts/spree/backend/stock_management.js +4 -2
  21. data/app/assets/javascripts/spree/backend/taxon_autocomplete.js +2 -2
  22. data/app/assets/javascripts/spree/backend/taxons.js +3 -3
  23. data/app/assets/javascripts/spree/backend/templates/index.js +2 -0
  24. data/app/assets/javascripts/spree/backend/templates/orders/customer_details/autocomplete.hbs +2 -2
  25. data/app/assets/javascripts/spree/backend/templates/stock_items/stock_location_stock_item.hbs +5 -1
  26. data/app/assets/javascripts/spree/backend/templates/tables/return_item_sum_amount.hbs +7 -0
  27. data/app/assets/javascripts/spree/backend/templates/tables/selectable_label.hbs +6 -0
  28. data/app/assets/javascripts/spree/backend/user_picker.js +3 -4
  29. data/app/assets/javascripts/spree/backend/variant_autocomplete.js +2 -2
  30. data/app/assets/javascripts/spree/backend/views/cart/empty_cart_button.js +2 -2
  31. data/app/assets/javascripts/spree/backend/views/index.js +4 -0
  32. data/app/assets/javascripts/spree/backend/views/order/address.js +1 -1
  33. data/app/assets/javascripts/spree/backend/views/order/customer_select.js +2 -3
  34. data/app/assets/javascripts/spree/backend/views/order/details_adjustments.js +4 -1
  35. data/app/assets/javascripts/spree/backend/views/stock/edit_stock_item_row.js +4 -0
  36. data/app/assets/javascripts/spree/backend/views/tables/return_items.js +9 -0
  37. data/app/assets/javascripts/spree/backend/views/tables/selectable_table.js +70 -0
  38. data/app/assets/javascripts/spree/backend/views/tables/selectable_table/sum_return_item_amount.js +32 -0
  39. data/app/assets/javascripts/spree/backend/views/tables/selectable_table/summary.js +45 -0
  40. data/app/assets/stylesheets/spree/backend/components/_navigation.scss +4 -5
  41. data/app/assets/stylesheets/spree/backend/sections/_orders.scss +5 -1
  42. data/app/assets/stylesheets/spree/backend/sections/_style_guide.scss +4 -0
  43. data/app/assets/stylesheets/spree/backend/shared/_forms.scss +1 -0
  44. data/app/controllers/spree/admin/base_controller.rb +6 -0
  45. data/app/controllers/spree/admin/cancellations_controller.rb +2 -0
  46. data/app/controllers/spree/admin/customer_returns_controller.rb +4 -4
  47. data/app/controllers/spree/admin/images_controller.rb +2 -1
  48. data/app/controllers/spree/admin/orders/customer_details_controller.rb +2 -0
  49. data/app/controllers/spree/admin/orders_controller.rb +7 -2
  50. data/app/controllers/spree/admin/payments_controller.rb +3 -1
  51. data/app/controllers/spree/admin/product_properties_controller.rb +1 -1
  52. data/app/controllers/spree/admin/products_controller.rb +18 -24
  53. data/app/controllers/spree/admin/promotion_codes_controller.rb +9 -4
  54. data/app/controllers/spree/admin/refunds_controller.rb +20 -0
  55. data/app/controllers/spree/admin/resource_controller.rb +27 -7
  56. data/app/controllers/spree/admin/return_authorizations_controller.rb +1 -1
  57. data/app/controllers/spree/admin/root_controller.rb +1 -1
  58. data/app/controllers/spree/admin/search_controller.rb +1 -2
  59. data/app/controllers/spree/admin/stock_items_controller.rb +6 -5
  60. data/app/controllers/spree/admin/stock_locations_controller.rb +4 -0
  61. data/app/controllers/spree/admin/stock_movements_controller.rb +7 -0
  62. data/app/controllers/spree/admin/taxons_controller.rb +12 -1
  63. data/app/controllers/spree/admin/users/api_key_controller.rb +29 -0
  64. data/app/controllers/spree/admin/users_controller.rb +37 -20
  65. data/app/controllers/spree/admin/variants_controller.rb +4 -2
  66. data/app/controllers/spree/admin/zones_controller.rb +1 -1
  67. data/app/helpers/spree/admin/base_helper.rb +4 -0
  68. data/app/helpers/spree/admin/customer_returns_helper.rb +1 -1
  69. data/app/helpers/spree/admin/navigation_helper.rb +1 -1
  70. data/app/helpers/spree/admin/orders_helper.rb +8 -4
  71. data/app/helpers/spree/admin/stock_movements_helper.rb +8 -4
  72. data/app/views/spree/admin/customer_returns/_return_item_selection.html.erb +2 -3
  73. data/app/views/spree/admin/images/index.html.erb +25 -21
  74. data/app/views/spree/admin/option_types/_option_value_fields.html.erb +8 -1
  75. data/app/views/spree/admin/option_types/edit.html.erb +3 -1
  76. data/app/views/spree/admin/orders/customer_details/_form.html.erb +13 -13
  77. data/app/views/spree/admin/orders/index.html.erb +23 -13
  78. data/app/views/spree/admin/payment_methods/_form.html.erb +7 -2
  79. data/app/views/spree/admin/payments/index.html.erb +3 -1
  80. data/app/views/spree/admin/prices/_master_variant_table.html.erb +3 -3
  81. data/app/views/spree/admin/prices/_table.html.erb +3 -3
  82. data/app/views/spree/admin/product_properties/_product_property_fields.html.erb +7 -2
  83. data/app/views/spree/admin/product_properties/index.html.erb +14 -2
  84. data/app/views/spree/admin/products/_form.html.erb +13 -2
  85. data/app/views/spree/admin/products/index.html.erb +1 -1
  86. data/app/views/spree/admin/promotion_codes/index.html.erb +1 -1
  87. data/app/views/spree/admin/promotions/_actions.html.erb +1 -1
  88. data/app/views/spree/admin/promotions/_activations_new.html.erb +1 -1
  89. data/app/views/spree/admin/promotions/_rules.html.erb +1 -1
  90. data/app/views/spree/admin/promotions/edit.html.erb +2 -2
  91. data/app/views/spree/admin/promotions/index.html.erb +12 -5
  92. data/app/views/spree/admin/return_authorizations/_form.html.erb +3 -10
  93. data/app/views/spree/admin/return_authorizations/index.html.erb +1 -1
  94. data/app/views/spree/admin/search/users.json.jbuilder +15 -1
  95. data/app/views/spree/admin/shared/_address.html.erb +6 -6
  96. data/app/views/spree/admin/shared/_address_form.html.erb +15 -8
  97. data/app/views/spree/admin/shared/_order_submenu.html.erb +4 -4
  98. data/app/views/spree/admin/shared/_payments_tabs.html.erb +1 -1
  99. data/app/views/spree/admin/shared/_settings_checkout_tabs.html.erb +5 -5
  100. data/app/views/spree/admin/shared/_settings_sub_menu.html.erb +6 -6
  101. data/app/views/spree/admin/shared/_shipping_tabs.html.erb +3 -3
  102. data/app/views/spree/admin/shared/_taxes_tabs.html.erb +2 -2
  103. data/app/views/spree/admin/shared/preference_fields/_encrypted_string.html.erb +12 -0
  104. data/app/views/spree/admin/shipping_methods/_form.html.erb +18 -0
  105. data/app/views/spree/admin/stock_items/_stock_management.html.erb +1 -1
  106. data/app/views/spree/admin/stock_locations/edit.html.erb +1 -1
  107. data/app/views/spree/admin/stock_locations/index.html.erb +3 -1
  108. data/app/views/spree/admin/stock_movements/index.html.erb +30 -1
  109. data/app/views/spree/admin/stores/_form.html.erb +6 -0
  110. data/app/views/spree/admin/style_guide/topics/tables/_building_tables.html.erb +27 -3
  111. data/app/views/spree/admin/tax_categories/_form.html.erb +1 -0
  112. data/app/views/spree/admin/users/_form.html.erb +2 -2
  113. data/app/views/spree/admin/users/_tabs.html.erb +1 -1
  114. data/app/views/spree/admin/users/edit.html.erb +4 -4
  115. data/app/views/spree/admin/users/items.html.erb +5 -3
  116. data/app/views/spree/admin/users/orders.html.erb +5 -3
  117. data/app/views/spree/admin/variants/_table_filter.html.erb +1 -1
  118. data/app/views/spree/admin/variants/index.html.erb +2 -2
  119. data/config/initializers/form_builder.rb +2 -2
  120. data/lib/spree/backend/engine.rb +0 -2
  121. data/lib/spree/backend_configuration.rb +14 -1
  122. data/solidus_backend.gemspec +4 -4
  123. metadata +24 -123
  124. data/app/assets/javascripts/spree/backend/returns/return_item_selection.js +0 -35
  125. data/script/rails +0 -10
  126. data/spec/controllers/spree/admin/base_controller_spec.rb +0 -26
  127. data/spec/controllers/spree/admin/cancellations_controller_spec.rb +0 -83
  128. data/spec/controllers/spree/admin/customer_returns_controller_spec.rb +0 -235
  129. data/spec/controllers/spree/admin/locale_controller_spec.rb +0 -45
  130. data/spec/controllers/spree/admin/missing_products_controller_spec.rb +0 -18
  131. data/spec/controllers/spree/admin/orders/customer_details_controller_spec.rb +0 -128
  132. data/spec/controllers/spree/admin/orders_controller_spec.rb +0 -408
  133. data/spec/controllers/spree/admin/payment_methods_controller_spec.rb +0 -95
  134. data/spec/controllers/spree/admin/payments_controller_spec.rb +0 -194
  135. data/spec/controllers/spree/admin/prices_controller_spec.rb +0 -45
  136. data/spec/controllers/spree/admin/product_properties_controller_spec.rb +0 -71
  137. data/spec/controllers/spree/admin/products_controller_spec.rb +0 -270
  138. data/spec/controllers/spree/admin/promotion_actions_controller_spec.rb +0 -23
  139. data/spec/controllers/spree/admin/promotion_codes_controller_spec.rb +0 -32
  140. data/spec/controllers/spree/admin/promotion_rules_controller_spec.rb +0 -36
  141. data/spec/controllers/spree/admin/promotions_controller_spec.rb +0 -122
  142. data/spec/controllers/spree/admin/refunds_controller_spec.rb +0 -35
  143. data/spec/controllers/spree/admin/reimbursements_controller_spec.rb +0 -137
  144. data/spec/controllers/spree/admin/resource_controller_spec.rb +0 -201
  145. data/spec/controllers/spree/admin/return_authorizations_controller_spec.rb +0 -291
  146. data/spec/controllers/spree/admin/return_items_controller_spec.rb +0 -29
  147. data/spec/controllers/spree/admin/root_controller_spec.rb +0 -43
  148. data/spec/controllers/spree/admin/search_controller_spec.rb +0 -106
  149. data/spec/controllers/spree/admin/shipping_methods_controller_spec.rb +0 -16
  150. data/spec/controllers/spree/admin/stock_items_controller_spec.rb +0 -52
  151. data/spec/controllers/spree/admin/stock_locations_controller_spec.rb +0 -44
  152. data/spec/controllers/spree/admin/store_credits_controller_spec.rb +0 -311
  153. data/spec/controllers/spree/admin/users_controller_spec.rb +0 -287
  154. data/spec/controllers/spree/admin/variants_controller_spec.rb +0 -71
  155. data/spec/features/admin/configuration/payment_methods_spec.rb +0 -176
  156. data/spec/features/admin/configuration/shipping_methods_spec.rb +0 -126
  157. data/spec/features/admin/configuration/stock_locations_spec.rb +0 -54
  158. data/spec/features/admin/configuration/store_spec.rb +0 -62
  159. data/spec/features/admin/configuration/tax_categories_spec.rb +0 -58
  160. data/spec/features/admin/configuration/tax_rates_spec.rb +0 -31
  161. data/spec/features/admin/configuration/taxonomies_spec.rb +0 -61
  162. data/spec/features/admin/configuration/zones_spec.rb +0 -41
  163. data/spec/features/admin/homepage_spec.rb +0 -86
  164. data/spec/features/admin/javascript_format_money_spec.rb +0 -22
  165. data/spec/features/admin/locale_spec.rb +0 -34
  166. data/spec/features/admin/orders/adjustments_promotions_spec.rb +0 -55
  167. data/spec/features/admin/orders/adjustments_spec.rb +0 -130
  168. data/spec/features/admin/orders/cancelling_and_resuming_spec.rb +0 -45
  169. data/spec/features/admin/orders/cancelling_inventory_spec.rb +0 -50
  170. data/spec/features/admin/orders/customer_details_spec.rb +0 -203
  171. data/spec/features/admin/orders/customer_returns_spec.rb +0 -41
  172. data/spec/features/admin/orders/line_items_spec.rb +0 -52
  173. data/spec/features/admin/orders/listing_spec.rb +0 -186
  174. data/spec/features/admin/orders/log_entries_spec.rb +0 -56
  175. data/spec/features/admin/orders/new_order_spec.rb +0 -379
  176. data/spec/features/admin/orders/new_refund_spec.rb +0 -35
  177. data/spec/features/admin/orders/order_details_spec.rb +0 -591
  178. data/spec/features/admin/orders/payments_spec.rb +0 -330
  179. data/spec/features/admin/orders/return_authorizations_spec.rb +0 -56
  180. data/spec/features/admin/orders/return_payment_state_spec.rb +0 -65
  181. data/spec/features/admin/orders/risk_analysis_spec.rb +0 -49
  182. data/spec/features/admin/orders/shipments_spec.rb +0 -145
  183. data/spec/features/admin/payments/store_credits_spec.rb +0 -23
  184. data/spec/features/admin/products/edit/images_spec.rb +0 -76
  185. data/spec/features/admin/products/edit/products_spec.rb +0 -92
  186. data/spec/features/admin/products/edit/taxons_spec.rb +0 -57
  187. data/spec/features/admin/products/edit/variants_spec.rb +0 -63
  188. data/spec/features/admin/products/option_types_spec.rb +0 -116
  189. data/spec/features/admin/products/pricing_spec.rb +0 -127
  190. data/spec/features/admin/products/products_spec.rb +0 -348
  191. data/spec/features/admin/products/properties_spec.rb +0 -141
  192. data/spec/features/admin/products/stock_management_spec.rb +0 -101
  193. data/spec/features/admin/products/variant_spec.rb +0 -89
  194. data/spec/features/admin/promotion_adjustments_spec.rb +0 -286
  195. data/spec/features/admin/promotions/option_value_rule_spec.rb +0 -90
  196. data/spec/features/admin/promotions/product_rule_spec.rb +0 -35
  197. data/spec/features/admin/promotions/promotion_categories_spec.rb +0 -83
  198. data/spec/features/admin/promotions/promotion_code_batches_spec.rb +0 -37
  199. data/spec/features/admin/promotions/promotion_code_spec.rb +0 -31
  200. data/spec/features/admin/promotions/promotion_spec.rb +0 -52
  201. data/spec/features/admin/promotions/tiered_calculator_spec.rb +0 -76
  202. data/spec/features/admin/promotions/user_rule_spec.rb +0 -42
  203. data/spec/features/admin/reimbursements_spec.rb +0 -18
  204. data/spec/features/admin/store_credits_spec.rb +0 -132
  205. data/spec/features/admin/stores_spec.rb +0 -37
  206. data/spec/features/admin/style_guide_spec.rb +0 -14
  207. data/spec/features/admin/taxons_spec.rb +0 -90
  208. data/spec/features/admin/users_spec.rb +0 -412
  209. data/spec/fixtures/files/ror_ringer.jpeg +0 -0
  210. data/spec/helpers/admin/base_helper_spec.rb +0 -49
  211. data/spec/helpers/admin/navigation_helper_spec.rb +0 -139
  212. data/spec/helpers/admin/stock_movements_helper_spec.rb +0 -29
  213. data/spec/helpers/admin/store_credit_events_helper_spec.rb +0 -97
  214. data/spec/helpers/promotion_rules_helper_spec.rb +0 -14
  215. data/spec/javascripts/fixtures/_boot.html.erb +0 -8
  216. data/spec/javascripts/fixtures/number_with_currency/with_currency_select.html.erb +0 -3
  217. data/spec/javascripts/fixtures/number_with_currency/without_select.html.erb +0 -3
  218. data/spec/javascripts/format_money_spec.js +0 -48
  219. data/spec/javascripts/spec_helper.js +0 -13
  220. data/spec/javascripts/support/show_errors.js +0 -8
  221. data/spec/javascripts/support/with_translations.js +0 -11
  222. data/spec/javascripts/translation_spec.js +0 -58
  223. data/spec/javascripts/views/number_with_currency_spec.js +0 -72
  224. data/spec/lib/spree/backend_configuration/menu_item_spec.rb +0 -17
  225. data/spec/lib/spree/backend_configuration_spec.rb +0 -22
  226. data/spec/spec_helper.rb +0 -123
  227. data/spec/support/appear_before_matcher.rb +0 -10
  228. data/spec/support/feature/base_feature_helper.rb +0 -17
  229. data/spec/support/feature/order_feature_helper.rb +0 -27
  230. data/spec/teaspoon_env.rb +0 -51
  231. data/spec/test_views/spree/admin/widgets/edit.html.erb +0 -1
  232. data/spec/test_views/spree/admin/widgets/new.html.erb +0 -1
  233. 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,56 +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
-
12
- describe "create" do
13
- def create_return_authorization
14
- find("#select-all").click
15
- select "NY Warehouse", from: "Stock Location"
16
- click_button "Create"
17
- end
18
-
19
- before do
20
- visit spree.new_admin_order_return_authorization_path(order)
21
- end
22
-
23
- it "creates a return authorization" do
24
- create_return_authorization
25
-
26
- expect(page).to have_content "Return Authorization has been successfully created!"
27
- end
28
-
29
- it "disables the button at submit", :js do
30
- page.execute_script "$('form').submit(function(e) { e.preventDefault()})"
31
-
32
- create_return_authorization
33
-
34
- expect(page).to have_button("Create", disabled: true)
35
- end
36
- end
37
-
38
- describe "when a return authorization exists" do
39
- let!(:return_authorization) { create(:return_authorization, order: order) }
40
-
41
- it "can visit the return authorizations list page" do
42
- visit spree.admin_order_return_authorizations_path(order)
43
- end
44
-
45
- describe "edit" do
46
- it "can visit the return authorizations edit page" do
47
- visit spree.edit_admin_order_return_authorization_path(order, return_authorization)
48
- end
49
-
50
- it "return authorizations edit page has a data hook for extensions to add content above, below or within the RA form" do
51
- visit spree.edit_admin_order_return_authorization_path(order, return_authorization)
52
- expect(page).to have_selector("[data-hook=return-authorization-form-wrapper]")
53
- end
54
- end
55
- end
56
- 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