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,45 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'spec_helper'
|
|
4
|
-
|
|
5
|
-
RSpec.describe Spree::Admin::LocaleController, type: :controller do
|
|
6
|
-
stub_authorization!
|
|
7
|
-
|
|
8
|
-
before { I18n.backend.store_translations(:fr, {}) }
|
|
9
|
-
|
|
10
|
-
after do
|
|
11
|
-
I18n.locale = :en
|
|
12
|
-
I18n.reload!
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
context 'switch_to_locale specified' do
|
|
16
|
-
let(:json_response) { JSON.parse(response.body, symbolize_names: true) }
|
|
17
|
-
|
|
18
|
-
before do
|
|
19
|
-
get :set, params: { switch_to_locale: switch_to_locale, format: :json }
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
context 'available locale' do
|
|
23
|
-
let(:switch_to_locale) { 'fr' }
|
|
24
|
-
|
|
25
|
-
it 'sets locale and returns the location for the redirect' do
|
|
26
|
-
expect(I18n.locale).to eq :fr
|
|
27
|
-
expect(session[:admin_locale]).to eq(switch_to_locale)
|
|
28
|
-
expect(json_response).
|
|
29
|
-
to eq({ locale: switch_to_locale,
|
|
30
|
-
location: spree.admin_url(host: 'test.host') })
|
|
31
|
-
expect(response).to have_http_status(:ok)
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
context 'unavailable locale' do
|
|
36
|
-
let(:switch_to_locale) { 'klingon' }
|
|
37
|
-
|
|
38
|
-
it 'does not change locale and returns 404' do
|
|
39
|
-
expect(I18n.locale).to eq :en
|
|
40
|
-
expect(json_response).to eq({ locale: 'en', })
|
|
41
|
-
expect(response).to have_http_status(:not_found)
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
end
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'spec_helper'
|
|
4
|
-
# This test exists in this file because in the standard admin/products_controller spec
|
|
5
|
-
# There is the stub_authorization call. This call is not triggered for this test because
|
|
6
|
-
# the load_resource filter in Spree::Admin::ResourceController is prepended to the filter chain
|
|
7
|
-
# this means this call is triggered before the authorize_admin call and in this case
|
|
8
|
-
# the load_resource filter halts the request meaning authorize_admin is not called at all.
|
|
9
|
-
describe Spree::Admin::ProductsController, type: :controller do
|
|
10
|
-
stub_authorization!
|
|
11
|
-
|
|
12
|
-
# Regression test for GH https://github.com/spree/spree/issues/538
|
|
13
|
-
it "cannot find a non-existent product" do
|
|
14
|
-
get :edit, params: { id: "non-existent-product" }
|
|
15
|
-
expect(response).to redirect_to(spree.admin_products_path)
|
|
16
|
-
expect(flash[:error]).to eql("Product is not found")
|
|
17
|
-
end
|
|
18
|
-
end
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require "spec_helper"
|
|
4
|
-
require "cancan"
|
|
5
|
-
|
|
6
|
-
describe Spree::Admin::Orders::CustomerDetailsController, type: :controller do
|
|
7
|
-
context "with authorization" do
|
|
8
|
-
stub_authorization!
|
|
9
|
-
|
|
10
|
-
context '#edit' do
|
|
11
|
-
context 'when order has no shipping nor billing address' do
|
|
12
|
-
let(:order) { create(:order, number: "R123456789", ship_address: nil, bill_address: nil) }
|
|
13
|
-
|
|
14
|
-
context "with a checkout_zone set as the country of Canada" do
|
|
15
|
-
let!(:united_states) { create(:country, iso: 'US', states_required: true) }
|
|
16
|
-
let!(:canada) { create(:country, iso: 'CA', states_required: true) }
|
|
17
|
-
let!(:checkout_zone) { create(:zone, name: "Checkout Zone", countries: [canada]) }
|
|
18
|
-
|
|
19
|
-
before do
|
|
20
|
-
stub_spree_preferences(checkout_zone: checkout_zone.name)
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
context "and default_country_iso of the Canada" do
|
|
24
|
-
before do
|
|
25
|
-
stub_spree_preferences(default_country_iso: Spree::Country.find_by!(iso: "CA").iso)
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
it 'defaults the shipping address country to Canada' do
|
|
29
|
-
get :edit, params: { order_id: order.number }
|
|
30
|
-
expect(assigns(:order).shipping_address.country_id).to eq canada.id
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
it 'defaults the billing address country to Canada' do
|
|
34
|
-
get :edit, params: { order_id: order.number }
|
|
35
|
-
expect(assigns(:order).billing_address.country_id).to eq canada.id
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
context "and default_country_iso of the United States" do
|
|
40
|
-
before do
|
|
41
|
-
stub_spree_preferences(default_country_iso: Spree::Country.find_by!(iso: "US").iso)
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
it 'defaults the shipping address country to nil' do
|
|
45
|
-
get :edit, params: { order_id: order.number }
|
|
46
|
-
expect(assigns(:order).shipping_address.country_id).to be_nil
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
it 'defaults the billing address country to nil' do
|
|
50
|
-
get :edit, params: { order_id: order.number }
|
|
51
|
-
expect(assigns(:order).billing_address.country_id).to be_nil
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
context "#update" do
|
|
59
|
-
let(:order) { create(:order, number: "R123456789") }
|
|
60
|
-
|
|
61
|
-
before { allow(Spree::Order).to receive_message_chain(:includes, :find_by!) { order } }
|
|
62
|
-
|
|
63
|
-
it "updates + progresses the order" do
|
|
64
|
-
expect(order).to receive(:update) { true }
|
|
65
|
-
expect(order).to receive(:next) { false }
|
|
66
|
-
attributes = { order_id: order.number, order: { email: "" } }
|
|
67
|
-
put :update, params: attributes
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
it "does refresh the shipment rates with all shipping methods" do
|
|
71
|
-
expect(order).to receive(:refresh_shipment_rates)
|
|
72
|
-
attributes = { order_id: order.number, order: { email: "" } }
|
|
73
|
-
put :update, params: attributes
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
# Regression spec
|
|
77
|
-
context 'completed order' do
|
|
78
|
-
let(:order) { create(:shipped_order) }
|
|
79
|
-
let(:attributes) do
|
|
80
|
-
{
|
|
81
|
-
order_id: order.number,
|
|
82
|
-
guest_checkout: 'false',
|
|
83
|
-
user_id: order.user_id,
|
|
84
|
-
order: { email: "foo@bar.com" }
|
|
85
|
-
}
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
it 'allows the updating of an email address' do
|
|
89
|
-
expect { put :update, params: attributes }.to change { order.reload.email }.to eq 'foo@bar.com'
|
|
90
|
-
expect(response).to be_redirect
|
|
91
|
-
end
|
|
92
|
-
end
|
|
93
|
-
|
|
94
|
-
context "false guest checkout param" do
|
|
95
|
-
let!(:assigned_user){ create :user }
|
|
96
|
-
it "attempts to associate the user" do
|
|
97
|
-
attributes = {
|
|
98
|
-
order_id: order.number,
|
|
99
|
-
user_id: assigned_user.id,
|
|
100
|
-
guest_checkout: 'false',
|
|
101
|
-
order: { email: "" }
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
expect {
|
|
105
|
-
put :update, params: attributes
|
|
106
|
-
}.to change{ order.reload.user }.to(assigned_user)
|
|
107
|
-
end
|
|
108
|
-
end
|
|
109
|
-
|
|
110
|
-
context "not false guest checkout param" do
|
|
111
|
-
it "does not attempt to associate the user" do
|
|
112
|
-
allow(order).to receive_messages(update: true,
|
|
113
|
-
next: false,
|
|
114
|
-
refresh_shipment_rates: true)
|
|
115
|
-
|
|
116
|
-
attributes = {
|
|
117
|
-
order_id: order.number,
|
|
118
|
-
order: { email: "foo@example.com" }
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
expect {
|
|
122
|
-
put :update, params: attributes
|
|
123
|
-
}.not_to change{ order.reload.user }
|
|
124
|
-
end
|
|
125
|
-
end
|
|
126
|
-
end
|
|
127
|
-
end
|
|
128
|
-
end
|
|
@@ -1,408 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'spec_helper'
|
|
4
|
-
require 'cancan'
|
|
5
|
-
|
|
6
|
-
describe Spree::Admin::OrdersController, type: :controller do
|
|
7
|
-
let!(:store) { create(:store) }
|
|
8
|
-
context "with authorization" do
|
|
9
|
-
stub_authorization!
|
|
10
|
-
|
|
11
|
-
before do
|
|
12
|
-
request.env["HTTP_REFERER"] = "http://localhost:3000"
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
let(:order) do
|
|
16
|
-
mock_model(
|
|
17
|
-
Spree::Order,
|
|
18
|
-
completed?: true,
|
|
19
|
-
total: 100,
|
|
20
|
-
number: 'R123456789',
|
|
21
|
-
all_adjustments: adjustments,
|
|
22
|
-
ship_address: mock_model(Spree::Address)
|
|
23
|
-
)
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
let(:adjustments) { double('adjustments') }
|
|
27
|
-
|
|
28
|
-
before do
|
|
29
|
-
allow(Spree::Order).to receive_message_chain(:includes, find_by!: order)
|
|
30
|
-
allow(order).to receive_messages(contents: Spree::OrderContents.new(order))
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
context "#approve" do
|
|
34
|
-
it "approves an order" do
|
|
35
|
-
expect(order.contents).to receive(:approve).with(user: controller.try_spree_current_user)
|
|
36
|
-
put :approve, params: { id: order.number }
|
|
37
|
-
expect(flash[:success]).to eq I18n.t('spree.order_approved')
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
context "#cancel" do
|
|
42
|
-
it "cancels an order" do
|
|
43
|
-
expect(order).to receive(:canceled_by).with(controller.try_spree_current_user)
|
|
44
|
-
put :cancel, params: { id: order.number }
|
|
45
|
-
expect(flash[:success]).to eq I18n.t('spree.order_canceled')
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
context "#resume" do
|
|
50
|
-
it "resumes an order" do
|
|
51
|
-
expect(order).to receive(:resume!)
|
|
52
|
-
put :resume, params: { id: order.number }
|
|
53
|
-
expect(flash[:success]).to eq I18n.t('spree.order_resumed')
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
context "#resend" do
|
|
58
|
-
let(:order) { create(:completed_order_with_totals) }
|
|
59
|
-
it "resends order email" do
|
|
60
|
-
mail_message = double "Mail::Message"
|
|
61
|
-
expect(Spree::OrderMailer).to receive(:confirm_email).with(order, true).and_return mail_message
|
|
62
|
-
expect(mail_message).to receive :deliver_later
|
|
63
|
-
post :resend, params: { id: order.number }
|
|
64
|
-
expect(flash[:success]).to eq I18n.t('spree.order_email_resent')
|
|
65
|
-
end
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
context "pagination" do
|
|
69
|
-
it "can page through the orders" do
|
|
70
|
-
get :index, params: { page: 2, per_page: 10 }
|
|
71
|
-
expect(assigns[:orders].offset_value).to eq(10)
|
|
72
|
-
expect(assigns[:orders].limit_value).to eq(10)
|
|
73
|
-
end
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
# Test for https://github.com/spree/spree/issues/3346
|
|
77
|
-
context "#new" do
|
|
78
|
-
let(:user) { create(:user) }
|
|
79
|
-
before do
|
|
80
|
-
allow(controller).to receive_messages try_spree_current_user: user
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
it "imports a new order and sets the current user as a creator" do
|
|
84
|
-
expect(Spree::Core::Importer::Order).to receive(:import)
|
|
85
|
-
.with(nil, hash_including(created_by_id: controller.try_spree_current_user.id))
|
|
86
|
-
.and_return(order)
|
|
87
|
-
get :new
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
it "sets frontend_viewable to false" do
|
|
91
|
-
expect(Spree::Core::Importer::Order).to receive(:import)
|
|
92
|
-
.with(nil, hash_including(frontend_viewable: false ))
|
|
93
|
-
.and_return(order)
|
|
94
|
-
get :new
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
it "should associate the order with a store" do
|
|
98
|
-
expect(Spree::Core::Importer::Order).to receive(:import)
|
|
99
|
-
.with(user, hash_including(store_id: controller.current_store.id))
|
|
100
|
-
.and_return(order)
|
|
101
|
-
get :new, params: { user_id: user.id }
|
|
102
|
-
end
|
|
103
|
-
|
|
104
|
-
context "when a user_id is passed as a parameter" do
|
|
105
|
-
let(:user) { mock_model(Spree.user_class) }
|
|
106
|
-
before { allow(Spree.user_class).to receive_messages find_by: user }
|
|
107
|
-
|
|
108
|
-
it "imports a new order and assigns the user to the order" do
|
|
109
|
-
expect(Spree::Core::Importer::Order).to receive(:import)
|
|
110
|
-
.with(user, hash_including(created_by_id: controller.try_spree_current_user.id))
|
|
111
|
-
.and_return(order)
|
|
112
|
-
get :new, params: { user_id: user.id }
|
|
113
|
-
end
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
it "should redirect to cart" do
|
|
117
|
-
get :new
|
|
118
|
-
expect(response).to redirect_to(spree.cart_admin_order_path(Spree::Order.last))
|
|
119
|
-
end
|
|
120
|
-
end
|
|
121
|
-
|
|
122
|
-
# Regression test for https://github.com/spree/spree/issues/3684
|
|
123
|
-
# Rendering a form should under no circumstance mutate the order
|
|
124
|
-
context "#edit" do
|
|
125
|
-
it "does not refresh rates if the order is completed" do
|
|
126
|
-
allow(order).to receive_messages completed?: true
|
|
127
|
-
expect(order).not_to receive :refresh_shipment_rates
|
|
128
|
-
get :edit, params: { id: order.number }
|
|
129
|
-
end
|
|
130
|
-
|
|
131
|
-
it "does not refresh the rates if the order is incomplete" do
|
|
132
|
-
allow(order).to receive_messages completed?: false
|
|
133
|
-
expect(order).not_to receive :refresh_shipment_rates
|
|
134
|
-
get :edit, params: { id: order.number }
|
|
135
|
-
end
|
|
136
|
-
|
|
137
|
-
context "when order does not have a ship address" do
|
|
138
|
-
before do
|
|
139
|
-
allow(order).to receive_messages ship_address: nil
|
|
140
|
-
end
|
|
141
|
-
|
|
142
|
-
context 'when order_bill_address_used is true' do
|
|
143
|
-
before { stub_spree_preferences(order_bill_address_used: true) }
|
|
144
|
-
|
|
145
|
-
it "should redirect to the customer details page" do
|
|
146
|
-
get :edit, params: { id: order.number }
|
|
147
|
-
expect(response).to redirect_to(spree.edit_admin_order_customer_path(order))
|
|
148
|
-
end
|
|
149
|
-
end
|
|
150
|
-
|
|
151
|
-
context 'when order_bill_address_used is false' do
|
|
152
|
-
before { stub_spree_preferences(order_bill_address_used: false) }
|
|
153
|
-
|
|
154
|
-
it "should redirect to the customer details page" do
|
|
155
|
-
get :edit, params: { id: order.number }
|
|
156
|
-
expect(response).to redirect_to(spree.edit_admin_order_customer_path(order))
|
|
157
|
-
end
|
|
158
|
-
end
|
|
159
|
-
end
|
|
160
|
-
end
|
|
161
|
-
|
|
162
|
-
describe '#advance' do
|
|
163
|
-
subject do
|
|
164
|
-
put :advance, params: { id: order.number }
|
|
165
|
-
end
|
|
166
|
-
|
|
167
|
-
context 'when incomplete' do
|
|
168
|
-
before do
|
|
169
|
-
allow(order).to receive(:completed?).and_return(false, true)
|
|
170
|
-
allow(order).to receive(:next).and_return(true, false)
|
|
171
|
-
end
|
|
172
|
-
|
|
173
|
-
context 'when successful' do
|
|
174
|
-
before { allow(order).to receive(:can_complete?).and_return(true) }
|
|
175
|
-
|
|
176
|
-
it 'messages and redirects' do
|
|
177
|
-
subject
|
|
178
|
-
expect(flash[:success]).to eq I18n.t('spree.order_ready_for_confirm')
|
|
179
|
-
expect(response).to redirect_to(spree.confirm_admin_order_path(order))
|
|
180
|
-
end
|
|
181
|
-
end
|
|
182
|
-
|
|
183
|
-
context 'when unsuccessful' do
|
|
184
|
-
before do
|
|
185
|
-
allow(order).to receive(:can_complete?).and_return(false)
|
|
186
|
-
allow(order).to receive(:errors).and_return(double(full_messages: ['failed']))
|
|
187
|
-
end
|
|
188
|
-
|
|
189
|
-
it 'messages and redirects' do
|
|
190
|
-
subject
|
|
191
|
-
expect(flash[:error]).to eq order.errors.full_messages
|
|
192
|
-
expect(response).to redirect_to(spree.confirm_admin_order_path(order))
|
|
193
|
-
end
|
|
194
|
-
end
|
|
195
|
-
end
|
|
196
|
-
|
|
197
|
-
context 'when already completed' do
|
|
198
|
-
before { allow(order).to receive_messages completed?: true }
|
|
199
|
-
|
|
200
|
-
it 'messages and redirects' do
|
|
201
|
-
subject
|
|
202
|
-
expect(flash[:notice]).to eq I18n.t('spree.order_already_completed')
|
|
203
|
-
expect(response).to redirect_to(spree.edit_admin_order_path(order))
|
|
204
|
-
end
|
|
205
|
-
end
|
|
206
|
-
end
|
|
207
|
-
|
|
208
|
-
context '#confirm' do
|
|
209
|
-
subject do
|
|
210
|
-
get :confirm, params: { id: order.number }
|
|
211
|
-
end
|
|
212
|
-
|
|
213
|
-
context 'when in confirm' do
|
|
214
|
-
before { allow(order).to receive_messages completed?: false, can_complete?: true }
|
|
215
|
-
|
|
216
|
-
it 'renders the confirm page' do
|
|
217
|
-
subject
|
|
218
|
-
expect(response.status).to eq 200
|
|
219
|
-
expect(response).to render_template(:confirm)
|
|
220
|
-
end
|
|
221
|
-
end
|
|
222
|
-
|
|
223
|
-
context 'when before confirm' do
|
|
224
|
-
before { allow(order).to receive_messages completed?: false, can_complete?: false }
|
|
225
|
-
|
|
226
|
-
it 'renders the confirm_advance template (to allow refreshing of the order)' do
|
|
227
|
-
subject
|
|
228
|
-
expect(response.status).to eq 200
|
|
229
|
-
expect(response).to render_template(:confirm_advance)
|
|
230
|
-
end
|
|
231
|
-
end
|
|
232
|
-
|
|
233
|
-
context 'when already completed' do
|
|
234
|
-
before { allow(order).to receive_messages completed?: true }
|
|
235
|
-
|
|
236
|
-
it 'redirects to edit' do
|
|
237
|
-
subject
|
|
238
|
-
expect(response).to redirect_to(spree.edit_admin_order_path(order))
|
|
239
|
-
end
|
|
240
|
-
end
|
|
241
|
-
end
|
|
242
|
-
|
|
243
|
-
context "#complete" do
|
|
244
|
-
subject do
|
|
245
|
-
put :complete, params: { id: order.number }
|
|
246
|
-
end
|
|
247
|
-
|
|
248
|
-
context 'when successful' do
|
|
249
|
-
before { allow(order).to receive(:complete!) }
|
|
250
|
-
|
|
251
|
-
it 'completes the order' do
|
|
252
|
-
expect(order).to receive(:complete!)
|
|
253
|
-
subject
|
|
254
|
-
end
|
|
255
|
-
|
|
256
|
-
it 'messages and redirects' do
|
|
257
|
-
subject
|
|
258
|
-
expect(flash[:success]).to eq I18n.t('spree.order_completed')
|
|
259
|
-
expect(response).to redirect_to(spree.edit_admin_order_path(order))
|
|
260
|
-
end
|
|
261
|
-
end
|
|
262
|
-
|
|
263
|
-
context 'with an StateMachines::InvalidTransition error' do
|
|
264
|
-
let(:order) { create(:order) }
|
|
265
|
-
|
|
266
|
-
it 'messages and redirects' do
|
|
267
|
-
subject
|
|
268
|
-
expect(response).to redirect_to(spree.confirm_admin_order_path(order))
|
|
269
|
-
expect(flash[:error].to_s).to include("Cannot transition state via :complete from :cart")
|
|
270
|
-
end
|
|
271
|
-
end
|
|
272
|
-
|
|
273
|
-
context 'insufficient stock to complete the order' do
|
|
274
|
-
before do
|
|
275
|
-
expect(order).to receive(:complete!).and_raise Spree::Order::InsufficientStock
|
|
276
|
-
end
|
|
277
|
-
|
|
278
|
-
it 'messages and redirects' do
|
|
279
|
-
subject
|
|
280
|
-
expect(response).to redirect_to(spree.cart_admin_order_path(order))
|
|
281
|
-
expect(flash[:error].to_s).to eq I18n.t('spree.insufficient_stock_for_order')
|
|
282
|
-
end
|
|
283
|
-
end
|
|
284
|
-
end
|
|
285
|
-
|
|
286
|
-
# Test for https://github.com/spree/spree/issues/3919
|
|
287
|
-
context "search" do
|
|
288
|
-
let(:user) { create(:user) }
|
|
289
|
-
|
|
290
|
-
before do
|
|
291
|
-
allow(controller).to receive_messages try_spree_current_user: user
|
|
292
|
-
user.spree_roles << Spree::Role.find_or_create_by(name: 'admin')
|
|
293
|
-
|
|
294
|
-
create_list(:completed_order_with_totals, 2)
|
|
295
|
-
expect(Spree::Order.count).to eq 2
|
|
296
|
-
end
|
|
297
|
-
|
|
298
|
-
context 'by line_items_variant_id_in' do
|
|
299
|
-
it "does not display duplicated results" do
|
|
300
|
-
get :index, params: { q: {
|
|
301
|
-
line_items_variant_id_in: Spree::Order.first.variants.map(&:id)
|
|
302
|
-
} }
|
|
303
|
-
expect(assigns[:orders].size).to eq 1
|
|
304
|
-
end
|
|
305
|
-
end
|
|
306
|
-
|
|
307
|
-
context 'by email' do
|
|
308
|
-
it "does not display duplicated results" do
|
|
309
|
-
get :index, params: { q: {
|
|
310
|
-
email_start: Spree::Order.first.email
|
|
311
|
-
} }
|
|
312
|
-
expect(assigns[:orders].size).to eq 1
|
|
313
|
-
expect(assigns[:orders][0].email).to eq(Spree::Order.first.email)
|
|
314
|
-
end
|
|
315
|
-
end
|
|
316
|
-
end
|
|
317
|
-
|
|
318
|
-
context "#not_finalized_adjustments" do
|
|
319
|
-
let(:order) { create(:order) }
|
|
320
|
-
let!(:finalized_adjustment) { create(:adjustment, finalized: true, adjustable: order, order: order) }
|
|
321
|
-
|
|
322
|
-
it "changes all the finalized adjustments to unfinalized" do
|
|
323
|
-
post :unfinalize_adjustments, params: { id: order.number }
|
|
324
|
-
expect(finalized_adjustment.reload.finalized).to eq(false)
|
|
325
|
-
end
|
|
326
|
-
|
|
327
|
-
it "sets the flash success message" do
|
|
328
|
-
post :unfinalize_adjustments, params: { id: order.number }
|
|
329
|
-
expect(flash[:success]).to eql('All adjustments successfully unfinalized!')
|
|
330
|
-
end
|
|
331
|
-
|
|
332
|
-
it "redirects back" do
|
|
333
|
-
post :unfinalize_adjustments, params: { id: order.number }
|
|
334
|
-
expect(response).to redirect_to(spree.admin_order_adjustments_path(order))
|
|
335
|
-
end
|
|
336
|
-
end
|
|
337
|
-
|
|
338
|
-
context "#finalize_adjustments" do
|
|
339
|
-
let(:order) { create(:order) }
|
|
340
|
-
let!(:not_finalized_adjustment) { create(:adjustment, finalized: false, adjustable: order, order: order) }
|
|
341
|
-
|
|
342
|
-
it "changes all the unfinalized adjustments to finalized" do
|
|
343
|
-
post :finalize_adjustments, params: { id: order.number }
|
|
344
|
-
expect(not_finalized_adjustment.reload.finalized).to eq(true)
|
|
345
|
-
end
|
|
346
|
-
|
|
347
|
-
it "sets the flash success message" do
|
|
348
|
-
post :finalize_adjustments, params: { id: order.number }
|
|
349
|
-
expect(flash[:success]).to eql('All adjustments successfully finalized!')
|
|
350
|
-
end
|
|
351
|
-
|
|
352
|
-
it "redirects back" do
|
|
353
|
-
post :finalize_adjustments, params: { id: order.number }
|
|
354
|
-
expect(response).to redirect_to(spree.admin_order_adjustments_path(order))
|
|
355
|
-
end
|
|
356
|
-
end
|
|
357
|
-
end
|
|
358
|
-
|
|
359
|
-
context '#authorize_admin' do
|
|
360
|
-
let!(:user) { create(:user) }
|
|
361
|
-
let!(:order) { create(:completed_order_with_totals, number: 'R987654321') }
|
|
362
|
-
|
|
363
|
-
before do
|
|
364
|
-
allow(controller).to receive_messages try_spree_current_user: user
|
|
365
|
-
end
|
|
366
|
-
|
|
367
|
-
it 'should grant access to users with an admin role' do
|
|
368
|
-
user.spree_roles << Spree::Role.find_or_create_by(name: 'admin')
|
|
369
|
-
get :index
|
|
370
|
-
expect(response).to render_template :index
|
|
371
|
-
end
|
|
372
|
-
|
|
373
|
-
it 'should deny access to users without an admin role' do
|
|
374
|
-
allow(user).to receive_messages has_spree_role?: false
|
|
375
|
-
get :index
|
|
376
|
-
expect(response).to redirect_to('/unauthorized')
|
|
377
|
-
end
|
|
378
|
-
|
|
379
|
-
context 'with only permissions on Order' do
|
|
380
|
-
stub_authorization! do |_ability|
|
|
381
|
-
can [:admin, :manage], Spree::Order, number: 'R987654321'
|
|
382
|
-
end
|
|
383
|
-
|
|
384
|
-
it 'should restrict returned order(s) on index when using OrderSpecificAbility' do
|
|
385
|
-
number = order.number
|
|
386
|
-
|
|
387
|
-
3.times { create(:completed_order_with_totals) }
|
|
388
|
-
expect(Spree::Order.complete.count).to eq 4
|
|
389
|
-
|
|
390
|
-
allow(user).to receive_messages has_spree_role?: false
|
|
391
|
-
get :index
|
|
392
|
-
expect(response).to render_template :index
|
|
393
|
-
expect(assigns['orders'].size).to eq 1
|
|
394
|
-
expect(assigns['orders'].first.number).to eq number
|
|
395
|
-
end
|
|
396
|
-
end
|
|
397
|
-
end
|
|
398
|
-
|
|
399
|
-
context "order number not given" do
|
|
400
|
-
stub_authorization!
|
|
401
|
-
|
|
402
|
-
it "raise active record not found" do
|
|
403
|
-
expect {
|
|
404
|
-
get :edit, params: { id: 0 }
|
|
405
|
-
}.to raise_error ActiveRecord::RecordNotFound
|
|
406
|
-
end
|
|
407
|
-
end
|
|
408
|
-
end
|