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,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
@@ -1,95 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- module Spree
6
- class GatewayWithPassword < PaymentMethod
7
- preference :password, :string, default: "password"
8
- end
9
-
10
- describe Admin::PaymentMethodsController, type: :controller do
11
- stub_authorization!
12
-
13
- let(:payment_method) { GatewayWithPassword.create!(name: "Bogus", preferred_password: "haxme") }
14
-
15
- context "GatewayWithPassword" do
16
- before do
17
- allow(Rails.application.config.spree).to receive(:payment_methods).and_return([GatewayWithPassword])
18
- end
19
-
20
- # regression test for https://github.com/spree/spree/issues/2094
21
- it "does not clear password on update" do
22
- expect(payment_method.preferred_password).to eq("haxme")
23
- put :update, params: { id: payment_method.id, payment_method: { type: payment_method.class.to_s, preferred_password: "" } }
24
- expect(response).to redirect_to(spree.edit_admin_payment_method_path(payment_method))
25
-
26
- payment_method.reload
27
- expect(payment_method.preferred_password).to eq("haxme")
28
- end
29
- end
30
-
31
- context "tries to save invalid payment" do
32
- it "doesn't break, responds nicely" do
33
- post :create, params: { payment_method: { name: "", type: "Spree::PaymentMethod::BogusCreditCard" } }
34
- end
35
- end
36
-
37
- it "can create a payment method of a valid type" do
38
- expect {
39
- post :create, params: { payment_method: { name: "Test Method", type: "Spree::PaymentMethod::BogusCreditCard" } }
40
- }.to change(Spree::PaymentMethod, :count).by(1)
41
-
42
- expect(response).to be_redirect
43
- expect(response).to redirect_to spree.edit_admin_payment_method_path(assigns(:payment_method))
44
- end
45
-
46
- it "can not create a payment method of an invalid type" do
47
- expect {
48
- post :create, params: { payment_method: { name: "Invalid Payment Method", type: "Spree::InvalidType" } }
49
- }.to change(Spree::PaymentMethod, :count).by(0)
50
-
51
- expect(response).to be_redirect
52
- expect(response).to redirect_to spree.new_admin_payment_method_path
53
- end
54
-
55
- describe "#index" do
56
- subject { get :index }
57
-
58
- let!(:first_method) { GatewayWithPassword.create! name: "First", preferred_password: "1235" }
59
- let!(:second_method) { GatewayWithPassword.create! name: "Second", preferred_password: "1235" }
60
-
61
- before do
62
- second_method.move_to_top
63
- end
64
-
65
- it { is_expected.to be_successful }
66
- it { is_expected.to render_template "index" }
67
-
68
- it "respects the order of payment methods by position" do
69
- subject
70
- expect(assigns(:payment_methods).to_a).to eql([second_method, first_method])
71
- end
72
- end
73
-
74
- describe "#update" do
75
- # Regression test for https://github.com/solidusio/solidus/issues/2789
76
- let(:params) do
77
- {
78
- id: payment_method.id,
79
- payment_method: {
80
- name: 'Check',
81
- type: 'Spree::PaymentMethod::Check'
82
- }
83
- }
84
- end
85
-
86
- it 'updates the resource' do
87
- put :update, params: params
88
-
89
- expect(response).to redirect_to(spree.edit_admin_payment_method_path(payment_method))
90
- response_payment_method = Spree::PaymentMethod.find(payment_method.id)
91
- expect(response_payment_method.name).to eql('Check')
92
- end
93
- end
94
- end
95
- end