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,141 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'spec_helper'
|
|
4
|
-
|
|
5
|
-
describe "Properties", type: :feature do
|
|
6
|
-
stub_authorization!
|
|
7
|
-
|
|
8
|
-
before(:each) do
|
|
9
|
-
visit spree.admin_path
|
|
10
|
-
click_nav "Products"
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
context "Property index" do
|
|
14
|
-
before do
|
|
15
|
-
create(:property, name: 'shirt size', presentation: 'size')
|
|
16
|
-
create(:property, name: 'shirt fit', presentation: 'fit')
|
|
17
|
-
click_link "Property Types"
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
context "listing product properties" do
|
|
21
|
-
it "should list the existing product properties" do
|
|
22
|
-
within_row(1) do
|
|
23
|
-
expect(column_text(1)).to eq("shirt size")
|
|
24
|
-
expect(column_text(2)).to eq("size")
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
within_row(2) do
|
|
28
|
-
expect(column_text(1)).to eq("shirt fit")
|
|
29
|
-
expect(column_text(2)).to eq("fit")
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
context "searching properties" do
|
|
35
|
-
it 'should list properties matching search query', js: true do
|
|
36
|
-
fill_in "q_name_cont", with: "size"
|
|
37
|
-
click_button 'Search'
|
|
38
|
-
|
|
39
|
-
expect(page).to have_content("shirt size")
|
|
40
|
-
expect(page).not_to have_content("shirt fit")
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
context "creating a property" do
|
|
46
|
-
it "should allow an admin to create a new product property", js: true do
|
|
47
|
-
click_link "Property Types"
|
|
48
|
-
click_link "new_property_link"
|
|
49
|
-
within('#new_property') { expect(page).to have_content("New Property Type") }
|
|
50
|
-
|
|
51
|
-
fill_in "property_name", with: "color of band"
|
|
52
|
-
fill_in "property_presentation", with: "color"
|
|
53
|
-
click_button "Create"
|
|
54
|
-
expect(page).to have_content("successfully created!")
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
context "editing a property type" do
|
|
59
|
-
before(:each) do
|
|
60
|
-
create(:property)
|
|
61
|
-
click_link "Property Types"
|
|
62
|
-
within_row(1) { click_icon :edit }
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
it "should allow an admin to edit an existing product property" do
|
|
66
|
-
fill_in "property_name", with: "model 99"
|
|
67
|
-
click_button "Update"
|
|
68
|
-
expect(page).to have_content("successfully updated!")
|
|
69
|
-
expect(page).to have_content("model 99")
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
it "should show validation errors" do
|
|
73
|
-
fill_in "property_name", with: ""
|
|
74
|
-
click_button "Update"
|
|
75
|
-
expect(page).to have_content("Name can't be blank")
|
|
76
|
-
end
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
context "linking a property to a product", js: true do
|
|
80
|
-
before do
|
|
81
|
-
create(:product)
|
|
82
|
-
visit spree.admin_products_path
|
|
83
|
-
click_icon :edit
|
|
84
|
-
click_link "Product Properties"
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
# Regression test for https://github.com/spree/spree/issues/2279
|
|
88
|
-
it "successfully create and then remove product property" do
|
|
89
|
-
fill_in_property
|
|
90
|
-
|
|
91
|
-
check_property_row_count(2)
|
|
92
|
-
|
|
93
|
-
delete_product_property
|
|
94
|
-
|
|
95
|
-
check_property_row_count(1)
|
|
96
|
-
end
|
|
97
|
-
|
|
98
|
-
# Regression test for https://github.com/spree/spree/issues/4466
|
|
99
|
-
it "successfully remove and create a product property at the same time" do
|
|
100
|
-
fill_in_property
|
|
101
|
-
|
|
102
|
-
expect(page).to have_css('tr.product_property', count: 2)
|
|
103
|
-
|
|
104
|
-
within '#spree_new_product_property' do
|
|
105
|
-
find('[id$=_property_name]').set("New Property")
|
|
106
|
-
find('[id$=_value]').set("New Value")
|
|
107
|
-
end
|
|
108
|
-
|
|
109
|
-
delete_product_property
|
|
110
|
-
|
|
111
|
-
# Give fadeOut time to complete
|
|
112
|
-
expect(page).to have_css('tr.product_property', count: 1)
|
|
113
|
-
|
|
114
|
-
click_button "Update"
|
|
115
|
-
|
|
116
|
-
expect(page).not_to have_content("Product is not found")
|
|
117
|
-
|
|
118
|
-
check_property_row_count(2)
|
|
119
|
-
end
|
|
120
|
-
|
|
121
|
-
def fill_in_property
|
|
122
|
-
expect(page).to have_content('Products')
|
|
123
|
-
fill_in "product_product_properties_attributes_0_property_name", with: "A Property"
|
|
124
|
-
fill_in "product_product_properties_attributes_0_value", with: "A Value"
|
|
125
|
-
click_button "Update"
|
|
126
|
-
click_link "Product Properties"
|
|
127
|
-
end
|
|
128
|
-
|
|
129
|
-
def delete_product_property
|
|
130
|
-
accept_alert do
|
|
131
|
-
click_icon :trash
|
|
132
|
-
end
|
|
133
|
-
expect(page).to have_content 'successfully removed'
|
|
134
|
-
end
|
|
135
|
-
|
|
136
|
-
def check_property_row_count(expected_row_count)
|
|
137
|
-
click_link "Product Properties"
|
|
138
|
-
expect(page).to have_css("tbody#product_properties tr", count: expected_row_count)
|
|
139
|
-
end
|
|
140
|
-
end
|
|
141
|
-
end
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'spec_helper'
|
|
4
|
-
|
|
5
|
-
describe "Product Stock", type: :feature do
|
|
6
|
-
stub_authorization!
|
|
7
|
-
|
|
8
|
-
before(:each) do
|
|
9
|
-
visit spree.admin_path
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
context "given a product with a variant and a stock location" do
|
|
13
|
-
let!(:stock_location) { create(:stock_location, name: 'Default') }
|
|
14
|
-
let!(:product) { create(:product, name: 'apache baseball cap', price: 10) }
|
|
15
|
-
let!(:variant) { create(:variant, product: product) }
|
|
16
|
-
let(:stock_item) { variant.stock_items.find_by(stock_location: stock_location) }
|
|
17
|
-
|
|
18
|
-
before do
|
|
19
|
-
stock_location.stock_item(variant).update_column(:count_on_hand, 10)
|
|
20
|
-
|
|
21
|
-
click_nav "Products"
|
|
22
|
-
within_row(1) { click_icon :edit }
|
|
23
|
-
click_link "Product Stock"
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
# Regression test for https://github.com/spree/spree/issues/3304
|
|
27
|
-
# It is OK to still render the stock page, ensure no errors in this case
|
|
28
|
-
context "with no stock location" do
|
|
29
|
-
before do
|
|
30
|
-
Spree::StockLocation.destroy_all
|
|
31
|
-
find_by_id('content-header').click_link('Products')
|
|
32
|
-
within_row(1) do
|
|
33
|
-
click_icon :edit
|
|
34
|
-
end
|
|
35
|
-
click_link "Product Stock"
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
it "renders" do
|
|
39
|
-
expect(page).to have_content('Productsapache baseball cap')
|
|
40
|
-
expect(page.current_url).to match("admin/products/apache-baseball-cap/stock")
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
it "can create a positive stock adjustment", js: true do
|
|
45
|
-
adjust_count_on_hand('14')
|
|
46
|
-
stock_item.reload
|
|
47
|
-
expect(stock_item.count_on_hand).to eq 24
|
|
48
|
-
expect(stock_item.stock_movements.count).to eq 1
|
|
49
|
-
expect(stock_item.stock_movements.first.quantity).to eq 14
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
it "can create a negative stock adjustment", js: true do
|
|
53
|
-
adjust_count_on_hand('-4')
|
|
54
|
-
stock_item.reload
|
|
55
|
-
expect(stock_item.count_on_hand).to eq 6
|
|
56
|
-
expect(stock_item.stock_movements.count).to eq 1
|
|
57
|
-
expect(stock_item.stock_movements.first.quantity).to eq(-4)
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
it "can toggle backorderable", js: true do
|
|
61
|
-
toggle_backorderable(value: false)
|
|
62
|
-
|
|
63
|
-
click_link "Product Stock"
|
|
64
|
-
within("tr#spree_variant_#{variant.id}") do
|
|
65
|
-
expect(find(:css, "input[type='checkbox']")).not_to be_checked
|
|
66
|
-
end
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
def adjust_count_on_hand(count_on_hand)
|
|
70
|
-
within("tr#spree_variant_#{variant.id}") do
|
|
71
|
-
find(:css, "input[type='number']").set(count_on_hand)
|
|
72
|
-
click_icon :check
|
|
73
|
-
end
|
|
74
|
-
expect(page).to have_content('Updated Successfully')
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
def toggle_backorderable(value: true)
|
|
78
|
-
within("tr#spree_variant_#{variant.id}") do
|
|
79
|
-
find(:css, "input[type='checkbox']").set(value)
|
|
80
|
-
click_icon :check
|
|
81
|
-
end
|
|
82
|
-
expect(page).to have_content('Updated Successfully')
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
context "with stock locations that don't have stock items for variant yet" do
|
|
86
|
-
before do
|
|
87
|
-
create(:stock_location, name: 'Other location', propagate_all_variants: false)
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
it "can add stock items to other stock locations", js: true do
|
|
91
|
-
visit current_url
|
|
92
|
-
within('.variant-stock-items', text: variant.sku) do
|
|
93
|
-
fill_in "variant-count-on-hand-#{variant.id}", with: '3'
|
|
94
|
-
select "Other location", from: "stock_location_id"
|
|
95
|
-
click_icon(:plus)
|
|
96
|
-
end
|
|
97
|
-
expect(page).to have_content('Created successfully')
|
|
98
|
-
end
|
|
99
|
-
end
|
|
100
|
-
end
|
|
101
|
-
end
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'spec_helper'
|
|
4
|
-
|
|
5
|
-
describe "Variants", type: :feature do
|
|
6
|
-
stub_authorization!
|
|
7
|
-
|
|
8
|
-
let(:product) { create(:product_with_option_types, price: "1.99", cost_price: "1.00", weight: "2.5", height: "3.0", width: "1.0", depth: "1.5") }
|
|
9
|
-
|
|
10
|
-
context "creating a new variant" do
|
|
11
|
-
it "should allow an admin to create a new variant" do
|
|
12
|
-
product.options.each do |option|
|
|
13
|
-
create(:option_value, option_type: option.option_type)
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
visit spree.admin_path
|
|
17
|
-
click_nav "Products"
|
|
18
|
-
within_row(1) { click_icon :edit }
|
|
19
|
-
click_link "Variants"
|
|
20
|
-
click_on "New Variant"
|
|
21
|
-
expect(page).to have_field('variant_price', with: "1.99")
|
|
22
|
-
expect(page).to have_field('variant_cost_price', with: "1.00")
|
|
23
|
-
expect(page).to have_field('variant_weight', with: "2.50")
|
|
24
|
-
expect(page).to have_field('variant_height', with: "3.00")
|
|
25
|
-
expect(page).to have_field('variant_width', with: "1.00")
|
|
26
|
-
expect(page).to have_field('variant_depth', with: "1.50")
|
|
27
|
-
expect(page).to have_select('variant[tax_category_id]')
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
context "listing variants" do
|
|
32
|
-
context "currency displaying" do
|
|
33
|
-
context "using Russian Rubles" do
|
|
34
|
-
before do
|
|
35
|
-
stub_spree_preferences(currency: "RUB")
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
let!(:variant) do
|
|
39
|
-
create(:variant, product: product, price: 19.99)
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
# Regression test for https://github.com/spree/spree/issues/2737
|
|
43
|
-
context "uses руб as the currency symbol" do
|
|
44
|
-
it "on the products listing page" do
|
|
45
|
-
visit spree.admin_product_variants_path(product)
|
|
46
|
-
within_row(1) { expect(page).to have_content("19.99 ₽") }
|
|
47
|
-
end
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
context "editing existent variant" do
|
|
54
|
-
let!(:variant) { create(:variant, product: product) }
|
|
55
|
-
|
|
56
|
-
context "if product has an option type" do
|
|
57
|
-
let!(:option_type) { create(:option_type) }
|
|
58
|
-
let!(:option_value) { create(:option_value, option_type: option_type) }
|
|
59
|
-
|
|
60
|
-
before do
|
|
61
|
-
product.option_types << option_type
|
|
62
|
-
variant.option_values << option_value
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
it "page has a field for editing the option value", js: true do
|
|
66
|
-
visit spree.edit_admin_product_variant_path(product, variant)
|
|
67
|
-
expect(page).to have_css("label", text: option_type.presentation)
|
|
68
|
-
expect(page).to have_select('Size', selected: 'S')
|
|
69
|
-
end
|
|
70
|
-
end
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
context "deleting a variant", js: true do
|
|
74
|
-
let!(:variant) { create(:variant, product: product) }
|
|
75
|
-
let!(:option_type) { create(:option_type) }
|
|
76
|
-
let!(:option_value) { create(:option_value, option_type: option_type) }
|
|
77
|
-
|
|
78
|
-
it "can delete a variant" do
|
|
79
|
-
visit spree.admin_product_variants_path(product)
|
|
80
|
-
within 'tr', text: 'Size: S' do
|
|
81
|
-
accept_alert do
|
|
82
|
-
click_icon :trash
|
|
83
|
-
end
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
expect(page).to have_no_text('Size: S')
|
|
87
|
-
end
|
|
88
|
-
end
|
|
89
|
-
end
|
|
@@ -1,286 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'spec_helper'
|
|
4
|
-
|
|
5
|
-
describe "Promotion Adjustments", type: :feature, js: true do
|
|
6
|
-
stub_authorization!
|
|
7
|
-
|
|
8
|
-
context "creating a new promotion", js: true do
|
|
9
|
-
before(:each) do
|
|
10
|
-
visit spree.new_admin_promotion_path
|
|
11
|
-
expect(page).to have_title("New Promotion - Promotions")
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
it "should allow an admin to create a flat rate discount coupon promo" do
|
|
15
|
-
fill_in "Name", with: "SAVE SAVE SAVE"
|
|
16
|
-
fill_in "Promotion Code", with: "order"
|
|
17
|
-
|
|
18
|
-
click_button "Create"
|
|
19
|
-
expect(page).to have_title("SAVE SAVE SAVE - Promotions")
|
|
20
|
-
|
|
21
|
-
select "Item Total", from: "Discount Rules"
|
|
22
|
-
within('#rule_fields') { click_button "Add" }
|
|
23
|
-
|
|
24
|
-
find('[id$=_preferred_amount]').set(30)
|
|
25
|
-
within('#rule_fields') { click_button "Update" }
|
|
26
|
-
|
|
27
|
-
select "Create whole-order adjustment", from: "Adjustment type"
|
|
28
|
-
within('#action_fields') do
|
|
29
|
-
click_button "Add"
|
|
30
|
-
select "Flat Rate", from: I18n.t('spree.admin.promotions.actions.calculator_label')
|
|
31
|
-
fill_in "Amount", with: 5
|
|
32
|
-
end
|
|
33
|
-
within('#actions_container') { click_button "Update" }
|
|
34
|
-
expect(page).to have_text 'successfully updated'
|
|
35
|
-
|
|
36
|
-
promotion = Spree::Promotion.find_by(name: "SAVE SAVE SAVE")
|
|
37
|
-
expect(promotion.codes.first.value).to eq("order")
|
|
38
|
-
|
|
39
|
-
first_rule = promotion.rules.first
|
|
40
|
-
expect(first_rule.class).to eq(Spree::Promotion::Rules::ItemTotal)
|
|
41
|
-
expect(first_rule.preferred_amount).to eq(30)
|
|
42
|
-
|
|
43
|
-
first_action = promotion.actions.first
|
|
44
|
-
expect(first_action.class).to eq(Spree::Promotion::Actions::CreateAdjustment)
|
|
45
|
-
first_action_calculator = first_action.calculator
|
|
46
|
-
expect(first_action_calculator.class).to eq(Spree::Calculator::FlatRate)
|
|
47
|
-
expect(first_action_calculator.preferred_amount).to eq(5)
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
it "should allow an admin to create a single user coupon promo with flat rate discount" do
|
|
51
|
-
fill_in "Name", with: "SAVE SAVE SAVE"
|
|
52
|
-
fill_in "promotion[usage_limit]", with: "1"
|
|
53
|
-
fill_in "Promotion Code", with: "single_use"
|
|
54
|
-
|
|
55
|
-
click_button "Create"
|
|
56
|
-
expect(page).to have_title("SAVE SAVE SAVE - Promotions")
|
|
57
|
-
|
|
58
|
-
select "Create whole-order adjustment", from: "Adjustment type"
|
|
59
|
-
within('#action_fields') do
|
|
60
|
-
click_button "Add"
|
|
61
|
-
select "Flat Rate", from: I18n.t('spree.admin.promotions.actions.calculator_label')
|
|
62
|
-
fill_in "Amount", with: "5"
|
|
63
|
-
end
|
|
64
|
-
within('#actions_container') { click_button "Update" }
|
|
65
|
-
expect(page).to have_text 'successfully updated'
|
|
66
|
-
|
|
67
|
-
promotion = Spree::Promotion.find_by(name: "SAVE SAVE SAVE")
|
|
68
|
-
expect(promotion.usage_limit).to eq(1)
|
|
69
|
-
expect(promotion.codes.first.value).to eq("single_use")
|
|
70
|
-
|
|
71
|
-
first_action = promotion.actions.first
|
|
72
|
-
expect(first_action.class).to eq(Spree::Promotion::Actions::CreateAdjustment)
|
|
73
|
-
first_action_calculator = first_action.calculator
|
|
74
|
-
expect(first_action_calculator.class).to eq(Spree::Calculator::FlatRate)
|
|
75
|
-
expect(first_action_calculator.preferred_amount).to eq(5)
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
it "should allow an admin to create an automatic promo with flat percent discount" do
|
|
79
|
-
fill_in "Name", with: "SAVE SAVE SAVE"
|
|
80
|
-
choose "Apply to all orders"
|
|
81
|
-
click_button "Create"
|
|
82
|
-
expect(page).to have_title("SAVE SAVE SAVE - Promotions")
|
|
83
|
-
|
|
84
|
-
select "Item Total", from: "Discount Rules"
|
|
85
|
-
within('#rule_fields') { click_button "Add" }
|
|
86
|
-
|
|
87
|
-
find('[id$=_preferred_amount]').set(30)
|
|
88
|
-
within('#rule_fields') { click_button "Update" }
|
|
89
|
-
|
|
90
|
-
select "Create whole-order adjustment", from: "Adjustment type"
|
|
91
|
-
within('#action_fields') do
|
|
92
|
-
click_button "Add"
|
|
93
|
-
select "Flat Percent", from: I18n.t('spree.admin.promotions.actions.calculator_label')
|
|
94
|
-
fill_in "Flat Percent", with: "10"
|
|
95
|
-
end
|
|
96
|
-
within('#actions_container') { click_button "Update" }
|
|
97
|
-
expect(page).to have_text 'successfully updated'
|
|
98
|
-
|
|
99
|
-
promotion = Spree::Promotion.find_by(name: "SAVE SAVE SAVE")
|
|
100
|
-
expect(promotion.codes.first).to be_nil
|
|
101
|
-
|
|
102
|
-
first_rule = promotion.rules.first
|
|
103
|
-
expect(first_rule.class).to eq(Spree::Promotion::Rules::ItemTotal)
|
|
104
|
-
expect(first_rule.preferred_amount).to eq(30)
|
|
105
|
-
|
|
106
|
-
first_action = promotion.actions.first
|
|
107
|
-
expect(first_action.class).to eq(Spree::Promotion::Actions::CreateAdjustment)
|
|
108
|
-
first_action_calculator = first_action.calculator
|
|
109
|
-
expect(first_action_calculator.class).to eq(Spree::Calculator::FlatPercentItemTotal)
|
|
110
|
-
expect(first_action_calculator.preferred_flat_percent).to eq(10)
|
|
111
|
-
end
|
|
112
|
-
|
|
113
|
-
it "should allow an admin to create an product promo with percent per item discount" do
|
|
114
|
-
create(:product, name: "RoR Mug")
|
|
115
|
-
|
|
116
|
-
fill_in "Name", with: "SAVE SAVE SAVE"
|
|
117
|
-
choose "Apply to all orders"
|
|
118
|
-
click_button "Create"
|
|
119
|
-
expect(page).to have_title("SAVE SAVE SAVE - Promotions")
|
|
120
|
-
|
|
121
|
-
select "Product(s)", from: "Discount Rules"
|
|
122
|
-
within("#rule_fields") { click_button "Add" }
|
|
123
|
-
select2_search "RoR Mug", from: "Choose products"
|
|
124
|
-
within('#rule_fields') { click_button "Update" }
|
|
125
|
-
|
|
126
|
-
select "Create per-line-item adjustment", from: "Adjustment type"
|
|
127
|
-
within('#action_fields') do
|
|
128
|
-
click_button "Add"
|
|
129
|
-
select "Percent Per Item", from: I18n.t('spree.admin.promotions.actions.calculator_label')
|
|
130
|
-
fill_in "Percent", with: "10"
|
|
131
|
-
end
|
|
132
|
-
within('#actions_container') { click_button "Update" }
|
|
133
|
-
expect(page).to have_text 'successfully updated'
|
|
134
|
-
|
|
135
|
-
promotion = Spree::Promotion.find_by(name: "SAVE SAVE SAVE")
|
|
136
|
-
expect(promotion.codes.first).to be_nil
|
|
137
|
-
|
|
138
|
-
first_rule = promotion.rules.first
|
|
139
|
-
expect(first_rule.class).to eq(Spree::Promotion::Rules::Product)
|
|
140
|
-
expect(first_rule.products.map(&:name)).to include("RoR Mug")
|
|
141
|
-
|
|
142
|
-
first_action = promotion.actions.first
|
|
143
|
-
expect(first_action.class).to eq(Spree::Promotion::Actions::CreateItemAdjustments)
|
|
144
|
-
first_action_calculator = first_action.calculator
|
|
145
|
-
expect(first_action_calculator.class).to eq(Spree::Calculator::PercentOnLineItem)
|
|
146
|
-
expect(first_action_calculator.preferred_percent).to eq(10)
|
|
147
|
-
end
|
|
148
|
-
|
|
149
|
-
it "should allow an admin to create an automatic promotion with free shipping (no code)" do
|
|
150
|
-
fill_in "Name", with: "SAVE SAVE SAVE"
|
|
151
|
-
choose "Apply to all orders"
|
|
152
|
-
click_button "Create"
|
|
153
|
-
expect(page).to have_title("SAVE SAVE SAVE - Promotions")
|
|
154
|
-
|
|
155
|
-
select "Item Total", from: "Discount Rules"
|
|
156
|
-
within('#rule_fields') { click_button "Add" }
|
|
157
|
-
find('[id$=_preferred_amount]').set(30)
|
|
158
|
-
within('#rule_fields') { click_button "Update" }
|
|
159
|
-
|
|
160
|
-
select "Free Shipping", from: "Adjustment type"
|
|
161
|
-
within('#action_fields') { click_button "Add" }
|
|
162
|
-
expect(page).to have_content('Makes all shipments for the order free')
|
|
163
|
-
|
|
164
|
-
promotion = Spree::Promotion.find_by(name: "SAVE SAVE SAVE")
|
|
165
|
-
expect(promotion.codes).to be_empty
|
|
166
|
-
expect(promotion.rules.first).to be_a(Spree::Promotion::Rules::ItemTotal)
|
|
167
|
-
expect(promotion.actions.first).to be_a(Spree::Promotion::Actions::FreeShipping)
|
|
168
|
-
end
|
|
169
|
-
|
|
170
|
-
it "disables the button at submit", :js do
|
|
171
|
-
page.execute_script "$('form').submit(function(e) { e.preventDefault()})"
|
|
172
|
-
fill_in "Name", with: "SAVE SAVE SAVE"
|
|
173
|
-
choose "Apply to all orders"
|
|
174
|
-
click_button "Create"
|
|
175
|
-
|
|
176
|
-
expect(page).to have_button("Create", disabled: true)
|
|
177
|
-
end
|
|
178
|
-
|
|
179
|
-
it "should allow an admin to create an automatic promotion" do
|
|
180
|
-
fill_in "Name", with: "SAVE SAVE SAVE"
|
|
181
|
-
choose "Apply to all orders"
|
|
182
|
-
click_button "Create"
|
|
183
|
-
expect(page).to have_title("SAVE SAVE SAVE - Promotions")
|
|
184
|
-
|
|
185
|
-
promotion = Spree::Promotion.find_by(name: "SAVE SAVE SAVE")
|
|
186
|
-
expect(promotion).to be_apply_automatically
|
|
187
|
-
expect(promotion.path).to be_nil
|
|
188
|
-
expect(promotion.codes).to be_empty
|
|
189
|
-
expect(promotion.rules).to be_blank
|
|
190
|
-
end
|
|
191
|
-
|
|
192
|
-
it "should allow an admin to create a promo with generated codes" do
|
|
193
|
-
fill_in "Name", with: "SAVE SAVE SAVE"
|
|
194
|
-
choose "Multiple promotion codes"
|
|
195
|
-
fill_in "Base code", with: "testing"
|
|
196
|
-
fill_in "Number of codes", with: "10"
|
|
197
|
-
|
|
198
|
-
perform_enqueued_jobs {
|
|
199
|
-
click_button "Create"
|
|
200
|
-
expect(page).to have_title("SAVE SAVE SAVE - Promotions")
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
promotion = Spree::Promotion.find_by(name: "SAVE SAVE SAVE")
|
|
204
|
-
expect(promotion.path).to be_nil
|
|
205
|
-
expect(promotion).not_to be_apply_automatically
|
|
206
|
-
expect(promotion.rules).to be_blank
|
|
207
|
-
|
|
208
|
-
expect(promotion.codes.count).to eq(10)
|
|
209
|
-
end
|
|
210
|
-
|
|
211
|
-
it "ceasing to be eligible for a promotion with item total rule then becoming eligible again" do
|
|
212
|
-
fill_in "Name", with: "SAVE SAVE SAVE"
|
|
213
|
-
choose "Apply to all orders"
|
|
214
|
-
click_button "Create"
|
|
215
|
-
expect(page).to have_title("SAVE SAVE SAVE - Promotions")
|
|
216
|
-
|
|
217
|
-
select "Item Total", from: "Discount Rules"
|
|
218
|
-
within('#rule_fields') { click_button "Add" }
|
|
219
|
-
find('[id$=_preferred_amount]').set(50)
|
|
220
|
-
within('#rule_fields') { click_button "Update" }
|
|
221
|
-
|
|
222
|
-
select "Create whole-order adjustment", from: "Adjustment type"
|
|
223
|
-
within('#action_fields') do
|
|
224
|
-
click_button "Add"
|
|
225
|
-
select "Flat Rate", from: I18n.t('spree.admin.promotions.actions.calculator_label')
|
|
226
|
-
fill_in "Amount", with: "5"
|
|
227
|
-
end
|
|
228
|
-
within('#actions_container') { click_button "Update" }
|
|
229
|
-
expect(page).to have_text 'successfully updated'
|
|
230
|
-
|
|
231
|
-
promotion = Spree::Promotion.find_by(name: "SAVE SAVE SAVE")
|
|
232
|
-
|
|
233
|
-
first_rule = promotion.rules.first
|
|
234
|
-
expect(first_rule.class).to eq(Spree::Promotion::Rules::ItemTotal)
|
|
235
|
-
expect(first_rule.preferred_amount).to eq(50)
|
|
236
|
-
|
|
237
|
-
first_action = promotion.actions.first
|
|
238
|
-
expect(first_action.class).to eq(Spree::Promotion::Actions::CreateAdjustment)
|
|
239
|
-
expect(first_action.calculator.class).to eq(Spree::Calculator::FlatRate)
|
|
240
|
-
expect(first_action.calculator.preferred_amount).to eq(5)
|
|
241
|
-
end
|
|
242
|
-
|
|
243
|
-
context 'creating a promotion with promotion action that has a calculator with complex preferences' do
|
|
244
|
-
before do
|
|
245
|
-
class ComplexCalculator < Spree::Calculator
|
|
246
|
-
preference :amount, :decimal
|
|
247
|
-
preference :currency, :string
|
|
248
|
-
preference :mapping, :hash
|
|
249
|
-
preference :list, :array
|
|
250
|
-
|
|
251
|
-
def self.description
|
|
252
|
-
"Complex Calculator"
|
|
253
|
-
end
|
|
254
|
-
end
|
|
255
|
-
@calculators = Rails.application.config.spree.calculators.promotion_actions_create_item_adjustments
|
|
256
|
-
Rails.application.config.spree.calculators.promotion_actions_create_item_adjustments = [ComplexCalculator]
|
|
257
|
-
end
|
|
258
|
-
|
|
259
|
-
after do
|
|
260
|
-
Rails.application.config.spree.calculators.promotion_actions_create_item_adjustments = @calculators
|
|
261
|
-
end
|
|
262
|
-
|
|
263
|
-
it "does not show array and hash form fields" do
|
|
264
|
-
fill_in "Name", with: "SAVE SAVE SAVE"
|
|
265
|
-
choose "Apply to all orders"
|
|
266
|
-
click_button "Create"
|
|
267
|
-
expect(page).to have_title("SAVE SAVE SAVE - Promotions")
|
|
268
|
-
|
|
269
|
-
select "Create per-line-item adjustment", from: "Adjustment type"
|
|
270
|
-
within('#action_fields') do
|
|
271
|
-
click_button "Add"
|
|
272
|
-
select "Complex Calculator", from: I18n.t('spree.admin.promotions.actions.calculator_label')
|
|
273
|
-
end
|
|
274
|
-
within('#actions_container') { click_button "Update" }
|
|
275
|
-
expect(page).to have_text 'successfully updated'
|
|
276
|
-
|
|
277
|
-
within('#action_fields') do
|
|
278
|
-
expect(page).to have_field('Amount')
|
|
279
|
-
expect(page).to have_field('Currency')
|
|
280
|
-
expect(page).to_not have_field('Mapping')
|
|
281
|
-
expect(page).to_not have_field('List')
|
|
282
|
-
end
|
|
283
|
-
end
|
|
284
|
-
end
|
|
285
|
-
end
|
|
286
|
-
end
|