solidus_backend 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.
- checksums.yaml +4 -4
- data/app/assets/javascripts/spree/backend.js +4 -1
- data/app/assets/javascripts/spree/backend/adjustments.js +1 -1
- data/app/assets/javascripts/spree/backend/admin.js +18 -29
- data/app/assets/javascripts/spree/backend/collections/states.js +1 -1
- data/app/assets/javascripts/spree/backend/components/selectable_table.js +5 -0
- data/app/assets/javascripts/spree/backend/components/selectable_table/return_items.js +5 -0
- data/app/assets/javascripts/spree/backend/components/selectable_table/summary.js +7 -0
- data/app/assets/javascripts/spree/backend/components/sortable_table.js +31 -25
- data/app/assets/javascripts/spree/backend/models/order.js +3 -3
- data/app/assets/javascripts/spree/backend/models/payment.js +1 -1
- data/app/assets/javascripts/spree/backend/models/shipment.js +1 -1
- data/app/assets/javascripts/spree/backend/models/stock_item.js +1 -1
- data/app/assets/javascripts/spree/backend/option_type_autocomplete.js +2 -2
- data/app/assets/javascripts/spree/backend/option_value_picker.js +2 -2
- data/app/assets/javascripts/spree/backend/product_picker.js +2 -2
- data/app/assets/javascripts/spree/backend/routes.js +40 -21
- data/app/assets/javascripts/spree/backend/shipments.js +5 -5
- data/app/assets/javascripts/spree/backend/shipping_methods/stock_locations_picker.js +18 -0
- data/app/assets/javascripts/spree/backend/stock_management.js +4 -2
- data/app/assets/javascripts/spree/backend/taxon_autocomplete.js +2 -2
- data/app/assets/javascripts/spree/backend/taxons.js +3 -3
- data/app/assets/javascripts/spree/backend/templates/index.js +2 -0
- data/app/assets/javascripts/spree/backend/templates/orders/customer_details/autocomplete.hbs +2 -2
- data/app/assets/javascripts/spree/backend/templates/stock_items/stock_location_stock_item.hbs +5 -1
- data/app/assets/javascripts/spree/backend/templates/tables/return_item_sum_amount.hbs +7 -0
- data/app/assets/javascripts/spree/backend/templates/tables/selectable_label.hbs +6 -0
- data/app/assets/javascripts/spree/backend/user_picker.js +3 -4
- data/app/assets/javascripts/spree/backend/variant_autocomplete.js +2 -2
- data/app/assets/javascripts/spree/backend/views/cart/empty_cart_button.js +2 -2
- data/app/assets/javascripts/spree/backend/views/index.js +4 -0
- data/app/assets/javascripts/spree/backend/views/order/address.js +1 -1
- data/app/assets/javascripts/spree/backend/views/order/customer_select.js +2 -3
- data/app/assets/javascripts/spree/backend/views/order/details_adjustments.js +4 -1
- data/app/assets/javascripts/spree/backend/views/stock/edit_stock_item_row.js +4 -0
- data/app/assets/javascripts/spree/backend/views/tables/return_items.js +9 -0
- data/app/assets/javascripts/spree/backend/views/tables/selectable_table.js +70 -0
- data/app/assets/javascripts/spree/backend/views/tables/selectable_table/sum_return_item_amount.js +32 -0
- data/app/assets/javascripts/spree/backend/views/tables/selectable_table/summary.js +45 -0
- data/app/assets/stylesheets/spree/backend/components/_navigation.scss +4 -5
- data/app/assets/stylesheets/spree/backend/sections/_orders.scss +5 -1
- data/app/assets/stylesheets/spree/backend/sections/_style_guide.scss +4 -0
- data/app/assets/stylesheets/spree/backend/shared/_forms.scss +1 -0
- data/app/controllers/spree/admin/base_controller.rb +6 -0
- data/app/controllers/spree/admin/cancellations_controller.rb +2 -0
- data/app/controllers/spree/admin/customer_returns_controller.rb +4 -4
- data/app/controllers/spree/admin/images_controller.rb +2 -1
- data/app/controllers/spree/admin/orders/customer_details_controller.rb +2 -0
- data/app/controllers/spree/admin/orders_controller.rb +7 -2
- data/app/controllers/spree/admin/payments_controller.rb +3 -1
- data/app/controllers/spree/admin/product_properties_controller.rb +1 -1
- data/app/controllers/spree/admin/products_controller.rb +18 -24
- data/app/controllers/spree/admin/promotion_codes_controller.rb +9 -4
- data/app/controllers/spree/admin/refunds_controller.rb +20 -0
- data/app/controllers/spree/admin/resource_controller.rb +27 -7
- data/app/controllers/spree/admin/return_authorizations_controller.rb +1 -1
- data/app/controllers/spree/admin/root_controller.rb +1 -1
- data/app/controllers/spree/admin/search_controller.rb +1 -2
- data/app/controllers/spree/admin/stock_items_controller.rb +6 -5
- data/app/controllers/spree/admin/stock_locations_controller.rb +4 -0
- data/app/controllers/spree/admin/stock_movements_controller.rb +7 -0
- data/app/controllers/spree/admin/taxons_controller.rb +12 -1
- data/app/controllers/spree/admin/users/api_key_controller.rb +29 -0
- data/app/controllers/spree/admin/users_controller.rb +37 -20
- data/app/controllers/spree/admin/variants_controller.rb +4 -2
- data/app/controllers/spree/admin/zones_controller.rb +1 -1
- data/app/helpers/spree/admin/base_helper.rb +4 -0
- data/app/helpers/spree/admin/customer_returns_helper.rb +1 -1
- data/app/helpers/spree/admin/navigation_helper.rb +1 -1
- data/app/helpers/spree/admin/orders_helper.rb +8 -4
- data/app/helpers/spree/admin/stock_movements_helper.rb +8 -4
- data/app/views/spree/admin/customer_returns/_return_item_selection.html.erb +2 -3
- data/app/views/spree/admin/images/index.html.erb +25 -21
- data/app/views/spree/admin/option_types/_option_value_fields.html.erb +8 -1
- data/app/views/spree/admin/option_types/edit.html.erb +3 -1
- data/app/views/spree/admin/orders/customer_details/_form.html.erb +13 -13
- data/app/views/spree/admin/orders/index.html.erb +23 -13
- data/app/views/spree/admin/payment_methods/_form.html.erb +7 -2
- data/app/views/spree/admin/payments/index.html.erb +3 -1
- data/app/views/spree/admin/prices/_master_variant_table.html.erb +3 -3
- data/app/views/spree/admin/prices/_table.html.erb +3 -3
- data/app/views/spree/admin/product_properties/_product_property_fields.html.erb +7 -2
- data/app/views/spree/admin/product_properties/index.html.erb +14 -2
- data/app/views/spree/admin/products/_form.html.erb +13 -2
- data/app/views/spree/admin/products/index.html.erb +2 -2
- data/app/views/spree/admin/promotion_codes/index.html.erb +1 -1
- data/app/views/spree/admin/promotions/_actions.html.erb +1 -1
- data/app/views/spree/admin/promotions/_activations_new.html.erb +1 -1
- data/app/views/spree/admin/promotions/_rules.html.erb +1 -1
- data/app/views/spree/admin/promotions/edit.html.erb +2 -2
- data/app/views/spree/admin/promotions/index.html.erb +12 -5
- data/app/views/spree/admin/return_authorizations/_form.html.erb +3 -10
- data/app/views/spree/admin/return_authorizations/index.html.erb +1 -1
- data/app/views/spree/admin/search/users.json.jbuilder +15 -1
- data/app/views/spree/admin/shared/_address.html.erb +6 -6
- data/app/views/spree/admin/shared/_address_form.html.erb +15 -8
- data/app/views/spree/admin/shared/_order_submenu.html.erb +4 -4
- data/app/views/spree/admin/shared/_payments_tabs.html.erb +1 -1
- data/app/views/spree/admin/shared/_settings_checkout_tabs.html.erb +5 -5
- data/app/views/spree/admin/shared/_settings_sub_menu.html.erb +6 -6
- data/app/views/spree/admin/shared/_shipping_tabs.html.erb +3 -3
- data/app/views/spree/admin/shared/_taxes_tabs.html.erb +2 -2
- data/app/views/spree/admin/shared/preference_fields/_encrypted_string.html.erb +12 -0
- data/app/views/spree/admin/shipping_methods/_form.html.erb +18 -0
- data/app/views/spree/admin/stock_items/_stock_management.html.erb +1 -1
- data/app/views/spree/admin/stock_locations/edit.html.erb +1 -1
- data/app/views/spree/admin/stock_locations/index.html.erb +3 -1
- data/app/views/spree/admin/stock_movements/index.html.erb +30 -1
- data/app/views/spree/admin/store_credits/index.html.erb +1 -1
- data/app/views/spree/admin/stores/_form.html.erb +6 -0
- data/app/views/spree/admin/style_guide/topics/tables/_building_tables.html.erb +27 -3
- data/app/views/spree/admin/tax_categories/_form.html.erb +1 -0
- data/app/views/spree/admin/users/_form.html.erb +2 -2
- data/app/views/spree/admin/users/_tabs.html.erb +1 -1
- data/app/views/spree/admin/users/edit.html.erb +4 -4
- data/app/views/spree/admin/users/items.html.erb +5 -3
- data/app/views/spree/admin/users/orders.html.erb +5 -3
- data/app/views/spree/admin/variants/_table_filter.html.erb +1 -1
- data/app/views/spree/admin/variants/index.html.erb +2 -2
- data/config/initializers/form_builder.rb +2 -2
- data/lib/spree/backend/engine.rb +0 -2
- data/lib/spree/backend_configuration.rb +14 -1
- data/solidus_backend.gemspec +4 -4
- metadata +24 -123
- data/app/assets/javascripts/spree/backend/returns/return_item_selection.js +0 -35
- data/script/rails +0 -10
- data/spec/controllers/spree/admin/base_controller_spec.rb +0 -26
- data/spec/controllers/spree/admin/cancellations_controller_spec.rb +0 -83
- data/spec/controllers/spree/admin/customer_returns_controller_spec.rb +0 -235
- data/spec/controllers/spree/admin/locale_controller_spec.rb +0 -45
- data/spec/controllers/spree/admin/missing_products_controller_spec.rb +0 -18
- data/spec/controllers/spree/admin/orders/customer_details_controller_spec.rb +0 -128
- data/spec/controllers/spree/admin/orders_controller_spec.rb +0 -408
- data/spec/controllers/spree/admin/payment_methods_controller_spec.rb +0 -95
- data/spec/controllers/spree/admin/payments_controller_spec.rb +0 -194
- data/spec/controllers/spree/admin/prices_controller_spec.rb +0 -45
- data/spec/controllers/spree/admin/product_properties_controller_spec.rb +0 -71
- data/spec/controllers/spree/admin/products_controller_spec.rb +0 -270
- data/spec/controllers/spree/admin/promotion_actions_controller_spec.rb +0 -23
- data/spec/controllers/spree/admin/promotion_codes_controller_spec.rb +0 -32
- data/spec/controllers/spree/admin/promotion_rules_controller_spec.rb +0 -36
- data/spec/controllers/spree/admin/promotions_controller_spec.rb +0 -122
- data/spec/controllers/spree/admin/refunds_controller_spec.rb +0 -35
- data/spec/controllers/spree/admin/reimbursements_controller_spec.rb +0 -137
- data/spec/controllers/spree/admin/resource_controller_spec.rb +0 -201
- data/spec/controllers/spree/admin/return_authorizations_controller_spec.rb +0 -291
- data/spec/controllers/spree/admin/return_items_controller_spec.rb +0 -29
- data/spec/controllers/spree/admin/root_controller_spec.rb +0 -43
- data/spec/controllers/spree/admin/search_controller_spec.rb +0 -106
- data/spec/controllers/spree/admin/shipping_methods_controller_spec.rb +0 -16
- data/spec/controllers/spree/admin/stock_items_controller_spec.rb +0 -52
- data/spec/controllers/spree/admin/stock_locations_controller_spec.rb +0 -44
- data/spec/controllers/spree/admin/store_credits_controller_spec.rb +0 -311
- data/spec/controllers/spree/admin/users_controller_spec.rb +0 -287
- data/spec/controllers/spree/admin/variants_controller_spec.rb +0 -71
- data/spec/features/admin/configuration/payment_methods_spec.rb +0 -176
- data/spec/features/admin/configuration/shipping_methods_spec.rb +0 -126
- data/spec/features/admin/configuration/stock_locations_spec.rb +0 -54
- data/spec/features/admin/configuration/store_spec.rb +0 -62
- data/spec/features/admin/configuration/tax_categories_spec.rb +0 -58
- data/spec/features/admin/configuration/tax_rates_spec.rb +0 -31
- data/spec/features/admin/configuration/taxonomies_spec.rb +0 -61
- data/spec/features/admin/configuration/zones_spec.rb +0 -41
- data/spec/features/admin/homepage_spec.rb +0 -86
- data/spec/features/admin/javascript_format_money_spec.rb +0 -22
- data/spec/features/admin/locale_spec.rb +0 -34
- data/spec/features/admin/orders/adjustments_promotions_spec.rb +0 -55
- data/spec/features/admin/orders/adjustments_spec.rb +0 -130
- data/spec/features/admin/orders/cancelling_and_resuming_spec.rb +0 -45
- data/spec/features/admin/orders/cancelling_inventory_spec.rb +0 -50
- data/spec/features/admin/orders/customer_details_spec.rb +0 -203
- data/spec/features/admin/orders/customer_returns_spec.rb +0 -41
- data/spec/features/admin/orders/line_items_spec.rb +0 -52
- data/spec/features/admin/orders/listing_spec.rb +0 -186
- data/spec/features/admin/orders/log_entries_spec.rb +0 -56
- data/spec/features/admin/orders/new_order_spec.rb +0 -379
- data/spec/features/admin/orders/new_refund_spec.rb +0 -35
- data/spec/features/admin/orders/order_details_spec.rb +0 -591
- data/spec/features/admin/orders/payments_spec.rb +0 -330
- data/spec/features/admin/orders/return_authorizations_spec.rb +0 -56
- data/spec/features/admin/orders/return_payment_state_spec.rb +0 -65
- data/spec/features/admin/orders/risk_analysis_spec.rb +0 -49
- data/spec/features/admin/orders/shipments_spec.rb +0 -145
- data/spec/features/admin/payments/store_credits_spec.rb +0 -23
- data/spec/features/admin/products/edit/images_spec.rb +0 -76
- data/spec/features/admin/products/edit/products_spec.rb +0 -92
- data/spec/features/admin/products/edit/taxons_spec.rb +0 -57
- data/spec/features/admin/products/edit/variants_spec.rb +0 -63
- data/spec/features/admin/products/option_types_spec.rb +0 -116
- data/spec/features/admin/products/pricing_spec.rb +0 -127
- data/spec/features/admin/products/products_spec.rb +0 -348
- data/spec/features/admin/products/properties_spec.rb +0 -141
- data/spec/features/admin/products/stock_management_spec.rb +0 -101
- data/spec/features/admin/products/variant_spec.rb +0 -89
- data/spec/features/admin/promotion_adjustments_spec.rb +0 -286
- data/spec/features/admin/promotions/option_value_rule_spec.rb +0 -90
- data/spec/features/admin/promotions/product_rule_spec.rb +0 -35
- data/spec/features/admin/promotions/promotion_categories_spec.rb +0 -83
- data/spec/features/admin/promotions/promotion_code_batches_spec.rb +0 -37
- data/spec/features/admin/promotions/promotion_code_spec.rb +0 -31
- data/spec/features/admin/promotions/promotion_spec.rb +0 -52
- data/spec/features/admin/promotions/tiered_calculator_spec.rb +0 -76
- data/spec/features/admin/promotions/user_rule_spec.rb +0 -42
- data/spec/features/admin/reimbursements_spec.rb +0 -18
- data/spec/features/admin/store_credits_spec.rb +0 -132
- data/spec/features/admin/stores_spec.rb +0 -37
- data/spec/features/admin/style_guide_spec.rb +0 -14
- data/spec/features/admin/taxons_spec.rb +0 -90
- data/spec/features/admin/users_spec.rb +0 -412
- data/spec/fixtures/files/ror_ringer.jpeg +0 -0
- data/spec/helpers/admin/base_helper_spec.rb +0 -49
- data/spec/helpers/admin/navigation_helper_spec.rb +0 -139
- data/spec/helpers/admin/stock_movements_helper_spec.rb +0 -29
- data/spec/helpers/admin/store_credit_events_helper_spec.rb +0 -97
- data/spec/helpers/promotion_rules_helper_spec.rb +0 -14
- data/spec/javascripts/fixtures/_boot.html.erb +0 -8
- data/spec/javascripts/fixtures/number_with_currency/with_currency_select.html.erb +0 -3
- data/spec/javascripts/fixtures/number_with_currency/without_select.html.erb +0 -3
- data/spec/javascripts/format_money_spec.js +0 -48
- data/spec/javascripts/spec_helper.js +0 -13
- data/spec/javascripts/support/show_errors.js +0 -8
- data/spec/javascripts/support/with_translations.js +0 -11
- data/spec/javascripts/translation_spec.js +0 -58
- data/spec/javascripts/views/number_with_currency_spec.js +0 -72
- data/spec/lib/spree/backend_configuration/menu_item_spec.rb +0 -17
- data/spec/lib/spree/backend_configuration_spec.rb +0 -22
- data/spec/spec_helper.rb +0 -123
- data/spec/support/appear_before_matcher.rb +0 -10
- data/spec/support/feature/base_feature_helper.rb +0 -17
- data/spec/support/feature/order_feature_helper.rb +0 -27
- data/spec/teaspoon_env.rb +0 -51
- data/spec/test_views/spree/admin/widgets/edit.html.erb +0 -1
- data/spec/test_views/spree/admin/widgets/new.html.erb +0 -1
- 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
|