solidus_backend 2.10.3 → 2.11.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (241) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/spree/backend.js +4 -1
  3. data/app/assets/javascripts/spree/backend/adjustments.js +1 -1
  4. data/app/assets/javascripts/spree/backend/admin.js +18 -29
  5. data/app/assets/javascripts/spree/backend/collections/states.js +1 -1
  6. data/app/assets/javascripts/spree/backend/components/selectable_table.js +5 -0
  7. data/app/assets/javascripts/spree/backend/components/selectable_table/return_items.js +5 -0
  8. data/app/assets/javascripts/spree/backend/components/selectable_table/summary.js +7 -0
  9. data/app/assets/javascripts/spree/backend/components/sortable_table.js +31 -25
  10. data/app/assets/javascripts/spree/backend/models/order.js +3 -3
  11. data/app/assets/javascripts/spree/backend/models/payment.js +1 -1
  12. data/app/assets/javascripts/spree/backend/models/shipment.js +1 -1
  13. data/app/assets/javascripts/spree/backend/models/stock_item.js +1 -1
  14. data/app/assets/javascripts/spree/backend/option_type_autocomplete.js +2 -2
  15. data/app/assets/javascripts/spree/backend/option_value_picker.js +2 -2
  16. data/app/assets/javascripts/spree/backend/product_picker.js +2 -2
  17. data/app/assets/javascripts/spree/backend/routes.js +40 -21
  18. data/app/assets/javascripts/spree/backend/shipments.js +5 -5
  19. data/app/assets/javascripts/spree/backend/shipping_methods/stock_locations_picker.js +18 -0
  20. data/app/assets/javascripts/spree/backend/stock_management.js +4 -2
  21. data/app/assets/javascripts/spree/backend/taxon_autocomplete.js +2 -2
  22. data/app/assets/javascripts/spree/backend/taxons.js +3 -3
  23. data/app/assets/javascripts/spree/backend/templates/index.js +2 -0
  24. data/app/assets/javascripts/spree/backend/templates/orders/customer_details/autocomplete.hbs +2 -2
  25. data/app/assets/javascripts/spree/backend/templates/stock_items/stock_location_stock_item.hbs +5 -1
  26. data/app/assets/javascripts/spree/backend/templates/tables/return_item_sum_amount.hbs +7 -0
  27. data/app/assets/javascripts/spree/backend/templates/tables/selectable_label.hbs +6 -0
  28. data/app/assets/javascripts/spree/backend/user_picker.js +3 -4
  29. data/app/assets/javascripts/spree/backend/variant_autocomplete.js +2 -2
  30. data/app/assets/javascripts/spree/backend/views/cart/empty_cart_button.js +2 -2
  31. data/app/assets/javascripts/spree/backend/views/index.js +4 -0
  32. data/app/assets/javascripts/spree/backend/views/order/address.js +1 -1
  33. data/app/assets/javascripts/spree/backend/views/order/customer_select.js +2 -3
  34. data/app/assets/javascripts/spree/backend/views/order/details_adjustments.js +4 -1
  35. data/app/assets/javascripts/spree/backend/views/stock/edit_stock_item_row.js +4 -0
  36. data/app/assets/javascripts/spree/backend/views/tables/return_items.js +9 -0
  37. data/app/assets/javascripts/spree/backend/views/tables/selectable_table.js +70 -0
  38. data/app/assets/javascripts/spree/backend/views/tables/selectable_table/sum_return_item_amount.js +32 -0
  39. data/app/assets/javascripts/spree/backend/views/tables/selectable_table/summary.js +45 -0
  40. data/app/assets/stylesheets/spree/backend/_bootstrap_custom.scss +1 -1
  41. data/app/assets/stylesheets/spree/backend/components/_actions.scss +62 -0
  42. data/app/assets/stylesheets/spree/backend/components/_messages.scss +6 -6
  43. data/app/assets/stylesheets/spree/backend/components/_navigation.scss +4 -5
  44. data/app/assets/stylesheets/spree/backend/globals/_deprecation.scss +1 -1
  45. data/app/assets/stylesheets/spree/backend/globals/_variables.scss +3 -28
  46. data/app/assets/stylesheets/spree/backend/sections/_orders.scss +5 -1
  47. data/app/assets/stylesheets/spree/backend/sections/_style_guide.scss +4 -0
  48. data/app/assets/stylesheets/spree/backend/shared/_forms.scss +1 -0
  49. data/app/controllers/spree/admin/base_controller.rb +6 -0
  50. data/app/controllers/spree/admin/cancellations_controller.rb +2 -0
  51. data/app/controllers/spree/admin/customer_returns_controller.rb +4 -4
  52. data/app/controllers/spree/admin/images_controller.rb +2 -1
  53. data/app/controllers/spree/admin/orders/customer_details_controller.rb +2 -0
  54. data/app/controllers/spree/admin/orders_controller.rb +7 -2
  55. data/app/controllers/spree/admin/payments_controller.rb +3 -1
  56. data/app/controllers/spree/admin/product_properties_controller.rb +1 -1
  57. data/app/controllers/spree/admin/products_controller.rb +18 -24
  58. data/app/controllers/spree/admin/promotion_codes_controller.rb +9 -4
  59. data/app/controllers/spree/admin/refunds_controller.rb +20 -0
  60. data/app/controllers/spree/admin/resource_controller.rb +27 -7
  61. data/app/controllers/spree/admin/return_authorizations_controller.rb +1 -1
  62. data/app/controllers/spree/admin/root_controller.rb +1 -1
  63. data/app/controllers/spree/admin/search_controller.rb +1 -2
  64. data/app/controllers/spree/admin/stock_items_controller.rb +6 -5
  65. data/app/controllers/spree/admin/stock_locations_controller.rb +4 -0
  66. data/app/controllers/spree/admin/stock_movements_controller.rb +7 -0
  67. data/app/controllers/spree/admin/taxons_controller.rb +12 -1
  68. data/app/controllers/spree/admin/users/api_key_controller.rb +29 -0
  69. data/app/controllers/spree/admin/users_controller.rb +37 -20
  70. data/app/controllers/spree/admin/variants_controller.rb +4 -2
  71. data/app/controllers/spree/admin/zones_controller.rb +1 -1
  72. data/app/helpers/spree/admin/base_helper.rb +4 -0
  73. data/app/helpers/spree/admin/customer_returns_helper.rb +1 -1
  74. data/app/helpers/spree/admin/navigation_helper.rb +1 -1
  75. data/app/helpers/spree/admin/orders_helper.rb +8 -4
  76. data/app/helpers/spree/admin/stock_movements_helper.rb +8 -4
  77. data/app/views/spree/admin/customer_returns/_return_item_selection.html.erb +2 -3
  78. data/app/views/spree/admin/images/index.html.erb +25 -21
  79. data/app/views/spree/admin/option_types/_option_value_fields.html.erb +8 -1
  80. data/app/views/spree/admin/option_types/edit.html.erb +3 -1
  81. data/app/views/spree/admin/orders/customer_details/_form.html.erb +13 -13
  82. data/app/views/spree/admin/orders/index.html.erb +23 -13
  83. data/app/views/spree/admin/payment_methods/_form.html.erb +7 -2
  84. data/app/views/spree/admin/payments/index.html.erb +3 -1
  85. data/app/views/spree/admin/prices/_master_variant_table.html.erb +3 -3
  86. data/app/views/spree/admin/prices/_table.html.erb +3 -3
  87. data/app/views/spree/admin/product_properties/_product_property_fields.html.erb +7 -2
  88. data/app/views/spree/admin/product_properties/index.html.erb +14 -2
  89. data/app/views/spree/admin/products/_form.html.erb +13 -2
  90. data/app/views/spree/admin/products/index.html.erb +2 -2
  91. data/app/views/spree/admin/promotion_codes/index.html.erb +1 -1
  92. data/app/views/spree/admin/promotions/_actions.html.erb +1 -1
  93. data/app/views/spree/admin/promotions/_activations_new.html.erb +1 -1
  94. data/app/views/spree/admin/promotions/_rules.html.erb +1 -1
  95. data/app/views/spree/admin/promotions/edit.html.erb +2 -2
  96. data/app/views/spree/admin/promotions/index.html.erb +12 -5
  97. data/app/views/spree/admin/return_authorizations/_form.html.erb +3 -10
  98. data/app/views/spree/admin/return_authorizations/index.html.erb +1 -1
  99. data/app/views/spree/admin/search/users.json.jbuilder +15 -1
  100. data/app/views/spree/admin/shared/_address.html.erb +6 -6
  101. data/app/views/spree/admin/shared/_address_form.html.erb +15 -8
  102. data/app/views/spree/admin/shared/_order_submenu.html.erb +4 -4
  103. data/app/views/spree/admin/shared/_payments_tabs.html.erb +1 -1
  104. data/app/views/spree/admin/shared/_settings_checkout_tabs.html.erb +5 -5
  105. data/app/views/spree/admin/shared/_settings_sub_menu.html.erb +6 -6
  106. data/app/views/spree/admin/shared/_shipping_tabs.html.erb +3 -3
  107. data/app/views/spree/admin/shared/_taxes_tabs.html.erb +2 -2
  108. data/app/views/spree/admin/shared/preference_fields/_encrypted_string.html.erb +12 -0
  109. data/app/views/spree/admin/shipping_methods/_form.html.erb +18 -0
  110. data/app/views/spree/admin/stock_items/_stock_management.html.erb +1 -1
  111. data/app/views/spree/admin/stock_locations/edit.html.erb +1 -1
  112. data/app/views/spree/admin/stock_locations/index.html.erb +3 -1
  113. data/app/views/spree/admin/stock_movements/index.html.erb +30 -1
  114. data/app/views/spree/admin/store_credits/index.html.erb +1 -1
  115. data/app/views/spree/admin/stores/_form.html.erb +6 -0
  116. data/app/views/spree/admin/style_guide/topics/tables/_building_tables.html.erb +27 -3
  117. data/app/views/spree/admin/style_guide/topics/typography/_colors.html.erb +3 -3
  118. data/app/views/spree/admin/tax_categories/_form.html.erb +1 -0
  119. data/app/views/spree/admin/taxons/attachment_forms/_paperclip.html.erb +1 -1
  120. data/app/views/spree/admin/users/_form.html.erb +2 -2
  121. data/app/views/spree/admin/users/_tabs.html.erb +1 -1
  122. data/app/views/spree/admin/users/edit.html.erb +4 -4
  123. data/app/views/spree/admin/users/items.html.erb +5 -3
  124. data/app/views/spree/admin/users/orders.html.erb +5 -3
  125. data/app/views/spree/admin/variants/_table_filter.html.erb +1 -1
  126. data/app/views/spree/admin/variants/index.html.erb +2 -2
  127. data/config/initializers/form_builder.rb +2 -2
  128. data/lib/spree/backend/engine.rb +0 -2
  129. data/lib/spree/backend_configuration.rb +14 -1
  130. data/solidus_backend.gemspec +4 -4
  131. metadata +20 -119
  132. data/app/assets/javascripts/spree/backend/returns/return_item_selection.js +0 -35
  133. data/script/rails +0 -10
  134. data/spec/controllers/spree/admin/base_controller_spec.rb +0 -26
  135. data/spec/controllers/spree/admin/cancellations_controller_spec.rb +0 -83
  136. data/spec/controllers/spree/admin/customer_returns_controller_spec.rb +0 -235
  137. data/spec/controllers/spree/admin/locale_controller_spec.rb +0 -45
  138. data/spec/controllers/spree/admin/missing_products_controller_spec.rb +0 -18
  139. data/spec/controllers/spree/admin/orders/customer_details_controller_spec.rb +0 -128
  140. data/spec/controllers/spree/admin/orders_controller_spec.rb +0 -408
  141. data/spec/controllers/spree/admin/payment_methods_controller_spec.rb +0 -95
  142. data/spec/controllers/spree/admin/payments_controller_spec.rb +0 -194
  143. data/spec/controllers/spree/admin/prices_controller_spec.rb +0 -45
  144. data/spec/controllers/spree/admin/product_properties_controller_spec.rb +0 -71
  145. data/spec/controllers/spree/admin/products_controller_spec.rb +0 -270
  146. data/spec/controllers/spree/admin/promotion_actions_controller_spec.rb +0 -23
  147. data/spec/controllers/spree/admin/promotion_codes_controller_spec.rb +0 -32
  148. data/spec/controllers/spree/admin/promotion_rules_controller_spec.rb +0 -36
  149. data/spec/controllers/spree/admin/promotions_controller_spec.rb +0 -122
  150. data/spec/controllers/spree/admin/refunds_controller_spec.rb +0 -35
  151. data/spec/controllers/spree/admin/reimbursements_controller_spec.rb +0 -137
  152. data/spec/controllers/spree/admin/resource_controller_spec.rb +0 -201
  153. data/spec/controllers/spree/admin/return_authorizations_controller_spec.rb +0 -291
  154. data/spec/controllers/spree/admin/return_items_controller_spec.rb +0 -29
  155. data/spec/controllers/spree/admin/root_controller_spec.rb +0 -43
  156. data/spec/controllers/spree/admin/search_controller_spec.rb +0 -106
  157. data/spec/controllers/spree/admin/shipping_methods_controller_spec.rb +0 -16
  158. data/spec/controllers/spree/admin/stock_items_controller_spec.rb +0 -52
  159. data/spec/controllers/spree/admin/stock_locations_controller_spec.rb +0 -44
  160. data/spec/controllers/spree/admin/store_credits_controller_spec.rb +0 -311
  161. data/spec/controllers/spree/admin/users_controller_spec.rb +0 -287
  162. data/spec/controllers/spree/admin/variants_controller_spec.rb +0 -71
  163. data/spec/features/admin/configuration/payment_methods_spec.rb +0 -176
  164. data/spec/features/admin/configuration/shipping_methods_spec.rb +0 -126
  165. data/spec/features/admin/configuration/stock_locations_spec.rb +0 -54
  166. data/spec/features/admin/configuration/store_spec.rb +0 -62
  167. data/spec/features/admin/configuration/tax_categories_spec.rb +0 -58
  168. data/spec/features/admin/configuration/tax_rates_spec.rb +0 -31
  169. data/spec/features/admin/configuration/taxonomies_spec.rb +0 -61
  170. data/spec/features/admin/configuration/zones_spec.rb +0 -41
  171. data/spec/features/admin/homepage_spec.rb +0 -86
  172. data/spec/features/admin/javascript_format_money_spec.rb +0 -22
  173. data/spec/features/admin/locale_spec.rb +0 -34
  174. data/spec/features/admin/orders/adjustments_promotions_spec.rb +0 -55
  175. data/spec/features/admin/orders/adjustments_spec.rb +0 -130
  176. data/spec/features/admin/orders/cancelling_and_resuming_spec.rb +0 -45
  177. data/spec/features/admin/orders/cancelling_inventory_spec.rb +0 -50
  178. data/spec/features/admin/orders/customer_details_spec.rb +0 -203
  179. data/spec/features/admin/orders/customer_returns_spec.rb +0 -41
  180. data/spec/features/admin/orders/line_items_spec.rb +0 -52
  181. data/spec/features/admin/orders/listing_spec.rb +0 -186
  182. data/spec/features/admin/orders/log_entries_spec.rb +0 -56
  183. data/spec/features/admin/orders/new_order_spec.rb +0 -379
  184. data/spec/features/admin/orders/new_refund_spec.rb +0 -35
  185. data/spec/features/admin/orders/order_details_spec.rb +0 -591
  186. data/spec/features/admin/orders/payments_spec.rb +0 -330
  187. data/spec/features/admin/orders/return_authorizations_spec.rb +0 -56
  188. data/spec/features/admin/orders/return_payment_state_spec.rb +0 -65
  189. data/spec/features/admin/orders/risk_analysis_spec.rb +0 -49
  190. data/spec/features/admin/orders/shipments_spec.rb +0 -145
  191. data/spec/features/admin/payments/store_credits_spec.rb +0 -23
  192. data/spec/features/admin/products/edit/images_spec.rb +0 -76
  193. data/spec/features/admin/products/edit/products_spec.rb +0 -92
  194. data/spec/features/admin/products/edit/taxons_spec.rb +0 -57
  195. data/spec/features/admin/products/edit/variants_spec.rb +0 -63
  196. data/spec/features/admin/products/option_types_spec.rb +0 -116
  197. data/spec/features/admin/products/pricing_spec.rb +0 -127
  198. data/spec/features/admin/products/products_spec.rb +0 -348
  199. data/spec/features/admin/products/properties_spec.rb +0 -141
  200. data/spec/features/admin/products/stock_management_spec.rb +0 -101
  201. data/spec/features/admin/products/variant_spec.rb +0 -89
  202. data/spec/features/admin/promotion_adjustments_spec.rb +0 -286
  203. data/spec/features/admin/promotions/option_value_rule_spec.rb +0 -90
  204. data/spec/features/admin/promotions/product_rule_spec.rb +0 -35
  205. data/spec/features/admin/promotions/promotion_categories_spec.rb +0 -83
  206. data/spec/features/admin/promotions/promotion_code_batches_spec.rb +0 -37
  207. data/spec/features/admin/promotions/promotion_code_spec.rb +0 -31
  208. data/spec/features/admin/promotions/promotion_spec.rb +0 -52
  209. data/spec/features/admin/promotions/tiered_calculator_spec.rb +0 -76
  210. data/spec/features/admin/promotions/user_rule_spec.rb +0 -42
  211. data/spec/features/admin/reimbursements_spec.rb +0 -18
  212. data/spec/features/admin/store_credits_spec.rb +0 -132
  213. data/spec/features/admin/stores_spec.rb +0 -37
  214. data/spec/features/admin/style_guide_spec.rb +0 -14
  215. data/spec/features/admin/taxons_spec.rb +0 -90
  216. data/spec/features/admin/users_spec.rb +0 -412
  217. data/spec/fixtures/files/ror_ringer.jpeg +0 -0
  218. data/spec/helpers/admin/base_helper_spec.rb +0 -49
  219. data/spec/helpers/admin/navigation_helper_spec.rb +0 -139
  220. data/spec/helpers/admin/stock_movements_helper_spec.rb +0 -29
  221. data/spec/helpers/admin/store_credit_events_helper_spec.rb +0 -97
  222. data/spec/helpers/promotion_rules_helper_spec.rb +0 -14
  223. data/spec/javascripts/fixtures/_boot.html.erb +0 -8
  224. data/spec/javascripts/fixtures/number_with_currency/with_currency_select.html.erb +0 -3
  225. data/spec/javascripts/fixtures/number_with_currency/without_select.html.erb +0 -3
  226. data/spec/javascripts/format_money_spec.js +0 -48
  227. data/spec/javascripts/spec_helper.js +0 -13
  228. data/spec/javascripts/support/show_errors.js +0 -8
  229. data/spec/javascripts/support/with_translations.js +0 -11
  230. data/spec/javascripts/translation_spec.js +0 -58
  231. data/spec/javascripts/views/number_with_currency_spec.js +0 -72
  232. data/spec/lib/spree/backend_configuration/menu_item_spec.rb +0 -17
  233. data/spec/lib/spree/backend_configuration_spec.rb +0 -22
  234. data/spec/spec_helper.rb +0 -123
  235. data/spec/support/appear_before_matcher.rb +0 -10
  236. data/spec/support/feature/base_feature_helper.rb +0 -17
  237. data/spec/support/feature/order_feature_helper.rb +0 -27
  238. data/spec/teaspoon_env.rb +0 -51
  239. data/spec/test_views/spree/admin/widgets/edit.html.erb +0 -1
  240. data/spec/test_views/spree/admin/widgets/new.html.erb +0 -1
  241. data/spec/views/spree/admin/shared/navigation_footer_spec.rb +0 -67
@@ -1,10 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # frozen_string_literal: true
3
-
4
- # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
5
-
6
- ENGINE_ROOT = File.expand_path('..', __dir__)
7
- ENGINE_PATH = File.expand_path('../lib/spree/backend/engine', __dir__)
8
-
9
- require 'rails/all'
10
- require 'rails/engine/commands'
@@ -1,26 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Spree's rpsec controller tests get the Spree::ControllerHacks
4
- # we don't need those for the anonymous controller here, so
5
- # we call process directly instead of get
6
- require 'spec_helper'
7
-
8
- describe Spree::Admin::BaseController, type: :controller do
9
- controller(Spree::Admin::BaseController) do
10
- def index
11
- authorize! :update, Spree::Order
12
- render plain: 'test'
13
- end
14
- end
15
-
16
- context "unauthorized request" do
17
- before do
18
- allow_any_instance_of(Spree::Admin::BaseController).to receive(:try_spree_current_user).and_return(nil)
19
- end
20
-
21
- it "redirects to unauthorized" do
22
- get :index
23
- expect(response).to redirect_to '/unauthorized'
24
- end
25
- end
26
- end
@@ -1,83 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- describe Spree::Admin::CancellationsController do
6
- stub_authorization!
7
-
8
- describe "#index" do
9
- subject { get :index, params: { order_id: order.number } }
10
-
11
- let(:order) { create(:order_ready_to_ship, line_items_count: 1) }
12
-
13
- context "for an order with inventory" do
14
- render_views
15
-
16
- it "succeeds" do
17
- expect(response).to be_ok
18
- end
19
- end
20
- end
21
-
22
- describe "#cancel" do
23
- subject { post :short_ship, params: { order_id: order.number, inventory_unit_ids: inventory_units.map(&:id) } }
24
-
25
- let(:order) { create(:order_with_line_items, line_items_attributes: [{ quantity: 4 }]) }
26
- let(:referer) { "order_admin_page" }
27
-
28
- context "no inventory unit ids are provided" do
29
- subject { post :short_ship, params: { order_id: order.number } }
30
-
31
- it "redirects back" do
32
- subject
33
- expect(response).to redirect_to(spree.admin_order_cancellations_path(order))
34
- end
35
-
36
- it "sets an error message" do
37
- subject
38
- expect(flash[:error]).to eq I18n.t('spree.no_inventory_selected')
39
- end
40
- end
41
-
42
- context "unable to find all the inventory" do
43
- let(:inventory_units) { [Spree::InventoryUnit.new(id: -1)] }
44
-
45
- it "redirects back" do
46
- subject
47
- expect(response).to redirect_to(spree.admin_order_cancellations_path(order))
48
- end
49
-
50
- it "sets an error message" do
51
- subject
52
- expect(flash[:error]).to eq I18n.t('spree.unable_to_find_all_inventory_units')
53
- end
54
- end
55
-
56
- context "successfully cancels inventory" do
57
- let(:inventory_units) { order.inventory_units.not_canceled }
58
-
59
- it "redirects to admin order edit" do
60
- subject
61
- expect(response).to redirect_to(spree.edit_admin_order_path(order))
62
- end
63
-
64
- it "sets an success message" do
65
- subject
66
- expect(flash[:success]).to eq I18n.t('spree.inventory_canceled')
67
- end
68
-
69
- it "creates a unit cancel" do
70
- expect { subject }.to change { Spree::UnitCancel.count }.by(4)
71
- end
72
-
73
- it "cancels the inventory" do
74
- subject
75
- expect(order.reload.inventory_units.map(&:state).uniq).to match_array(['canceled'])
76
- end
77
-
78
- it "adjusts the order" do
79
- expect { subject }.to change { order.reload.total }.by(-40.0)
80
- end
81
- end
82
- end
83
- end
@@ -1,235 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- module Spree
6
- module Admin
7
- describe CustomerReturnsController, type: :controller do
8
- stub_authorization!
9
-
10
- describe "#index" do
11
- let(:order) { customer_return.order }
12
- let(:customer_return) { create(:customer_return) }
13
-
14
- subject do
15
- get :index, params: { order_id: customer_return.order.to_param }
16
- end
17
-
18
- before { subject }
19
-
20
- it "loads the order" do
21
- expect(assigns(:order)).to eq order
22
- end
23
-
24
- it "loads the customer return" do
25
- expect(assigns(:customer_returns)).to include(customer_return)
26
- end
27
- end
28
-
29
- describe "#new" do
30
- let(:order) { create(:shipped_order, line_items_count: 1) }
31
- let!(:inactive_reimbursement_type) { create(:reimbursement_type, active: false) }
32
- let!(:first_active_reimbursement_type) { create(:reimbursement_type) }
33
- let!(:second_active_reimbursement_type) { create(:reimbursement_type) }
34
-
35
- subject do
36
- get :new, params: { order_id: order.to_param }
37
- end
38
-
39
- it "loads the order" do
40
- subject
41
- expect(assigns(:order)).to eq order
42
- end
43
-
44
- it "builds a new customer return" do
45
- subject
46
- expect(assigns(:customer_return)).to_not be_persisted
47
- end
48
-
49
- context "with previous customer return" do
50
- let(:return_reason_1) { create(:return_reason) }
51
- let(:return_reason_2) { create(:return_reason) }
52
- let(:return_reason_3) { create(:return_reason) }
53
- let!(:inactive_rma_reason) { create(:return_reason, active: false) }
54
-
55
- let(:order) { create(:shipped_order, line_items_count: 4) }
56
- let(:rma) { create(:return_authorization, order: order, reason: return_reason_1) }
57
-
58
- let!(:rma_return_item) { create(:return_item, return_authorization: rma, inventory_unit: order.inventory_units.first, return_reason: return_reason_2) }
59
- let!(:customer_return_return_item) { create(:return_item, return_authorization: nil, inventory_unit: order.inventory_units.last, return_reason: return_reason_3) }
60
-
61
- context "all return items are associated with a customer return" do
62
- let!(:previous_customer_return) { create(:customer_return_without_return_items, return_items: [rma_return_item, customer_return_return_item]) }
63
-
64
- before { subject }
65
-
66
- it "loads the possible return items" do
67
- total_inventory_count = 4
68
- rma_return_items_count = 1
69
- customer_return_return_items_count = 1
70
- expect(assigns(:new_return_items).length).to eq(total_inventory_count - rma_return_items_count - customer_return_return_items_count)
71
- end
72
-
73
- it "builds new return items" do
74
- expect(assigns(:new_return_items).all? { |return_item| !return_item.persisted? }).to eq true
75
- end
76
-
77
- it "does not have any rma return items" do
78
- expect(assigns(:rma_return_items)).to eq []
79
- end
80
-
81
- it "loads the correct return authorization reasons" do
82
- expect(assigns(:reasons)).to match_array([return_reason_1, return_reason_2, return_reason_3])
83
- end
84
- end
85
-
86
- context "there is a return item associated with an rma but not a customer return" do
87
- let!(:previous_customer_return) { create(:customer_return_without_return_items, return_items: [customer_return_return_item]) }
88
-
89
- before do
90
- subject
91
- end
92
-
93
- it "loads the possible return items" do
94
- rma_return_item_count = rma.return_items.count
95
- total_unit_count = order.inventory_units.count
96
- customer_returned_count = previous_customer_return.return_items.count
97
- expected_total = total_unit_count - customer_returned_count - rma_return_item_count
98
- expect(assigns(:new_return_items).length).to eq expected_total
99
- end
100
-
101
- it "builds new return items" do
102
- expect(assigns(:new_return_items).all? { |return_item| !return_item.persisted? }).to eq true
103
- end
104
-
105
- it "loads the persisted rma return items" do
106
- expect(assigns(:rma_return_items).all?(&:persisted?)).to eq true
107
- end
108
-
109
- it "has one rma return item" do
110
- expect(assigns(:rma_return_items)).to include(rma_return_item)
111
- end
112
-
113
- it "loads the correct return authorization reasons" do
114
- expect(assigns(:reasons)).to match_array([return_reason_1, return_reason_2, return_reason_3])
115
- end
116
- end
117
- end
118
- end
119
-
120
- describe "#edit" do
121
- let(:order) { customer_return.order }
122
- let(:customer_return) { create(:customer_return, line_items_count: 3) }
123
-
124
- let!(:inactive_rma_reason) { create(:return_reason, active: false) }
125
-
126
- let!(:accepted_return_item) { customer_return.return_items.order('id').first.tap(&:accept!) }
127
- let!(:rejected_return_item) { customer_return.return_items.order('id').second.tap(&:reject!) }
128
- let!(:manual_intervention_return_item) { customer_return.return_items.order('id').third.tap(&:require_manual_intervention!) }
129
-
130
- subject do
131
- get :edit, params: { order_id: order.to_param, id: customer_return.to_param }
132
- end
133
-
134
- it "loads the order" do
135
- subject
136
- expect(assigns(:order)).to eq order
137
- end
138
-
139
- it "loads the customer return" do
140
- subject
141
- expect(assigns(:customer_return)).to eq customer_return
142
- end
143
-
144
- it "loads the accepted return items" do
145
- subject
146
- expect(assigns(:accepted_return_items)).to eq [accepted_return_item]
147
- end
148
-
149
- it "loads the rejected return items" do
150
- subject
151
- expect(assigns(:rejected_return_items)).to eq [rejected_return_item]
152
- end
153
-
154
- it "loads the return items that require manual intervention" do
155
- subject
156
- expect(assigns(:manual_intervention_return_items)).to eq [manual_intervention_return_item]
157
- end
158
-
159
- it "loads the return items that are still pending" do
160
- subject
161
- expect(assigns(:pending_return_items)).to eq []
162
- end
163
-
164
- it "loads the reimbursements that are still pending" do
165
- subject
166
- expect(assigns(:pending_reimbursements)).to eq []
167
- end
168
-
169
- it "loads the correct return authorization reasons" do
170
- subject
171
- expect(assigns(:reasons)).to match(Spree::ReturnReason.active)
172
- end
173
-
174
- context "a return item has an inactive return authorization reason" do
175
- before(:each) do
176
- accepted_return_item.update(return_reason_id: inactive_rma_reason.id)
177
- end
178
-
179
- it "includes the inactive return authorization reason" do
180
- subject
181
- expect(assigns(:reasons)).to match(Spree::ReturnReason.active + [inactive_rma_reason])
182
- end
183
- end
184
- end
185
-
186
- describe "#create" do
187
- let(:order) { create(:shipped_order, line_items_count: 1) }
188
- let(:reception_status_event) { 'receive' }
189
- let(:stock_location_id) { order.shipments.last.stock_location.id }
190
- let(:customer_return_params) do
191
- {
192
- order_id: order.to_param,
193
- customer_return: {
194
- stock_location_id: stock_location_id,
195
- return_items_attributes: {
196
- "0" => {
197
- returned: "1",
198
- amount: "15.99",
199
- inventory_unit_id: order.inventory_units.shipped.last.id,
200
- reception_status_event: reception_status_event
201
- }
202
- }
203
- }
204
- }
205
- end
206
-
207
- subject { post :create, params: customer_return_params }
208
-
209
- it { expect { subject }.to change { Spree::CustomerReturn.count }.by(1) }
210
- it do
211
- subject
212
- expect(response).to redirect_to spree.edit_admin_order_customer_return_path(order, id: Spree::CustomerReturn.last.id)
213
- end
214
-
215
- it 'executes the reception status event on the return items' do
216
- subject
217
- customer_return = Spree::CustomerReturn.last
218
- expect(customer_return.return_items.map(&:reception_status).uniq).to eq ['received']
219
- end
220
-
221
- context "missing stock location" do
222
- let(:stock_location_id) { '' }
223
- it { expect{ subject }.to_not change { Spree::CustomerReturn.count } }
224
- it { subject; expect(response).to render_template(:new) }
225
- end
226
-
227
- context "missing reception status event" do
228
- let(:reception_status_event) { '' }
229
- it { expect{ subject }.to_not change { Spree::CustomerReturn.count } }
230
- it { subject; expect(response).to redirect_to spree.new_admin_order_customer_return_path(order) }
231
- end
232
- end
233
- end
234
- end
235
- end
@@ -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