solidus_backend 2.9.6 → 2.11.0

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 (270) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/spree/backend.js +5 -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/admin_nav.js +24 -0
  7. data/app/assets/javascripts/spree/backend/components/selectable_table.js +5 -0
  8. data/app/assets/javascripts/spree/backend/components/selectable_table/return_items.js +5 -0
  9. data/app/assets/javascripts/spree/backend/components/selectable_table/summary.js +7 -0
  10. data/app/assets/javascripts/spree/backend/components/sortable_table.js +31 -25
  11. data/app/assets/javascripts/spree/backend/components/tabs.js +1 -1
  12. data/app/assets/javascripts/spree/backend/models/order.js +11 -2
  13. data/app/assets/javascripts/spree/backend/models/payment.js +1 -1
  14. data/app/assets/javascripts/spree/backend/models/shipment.js +1 -1
  15. data/app/assets/javascripts/spree/backend/models/stock_item.js +1 -1
  16. data/app/assets/javascripts/spree/backend/option_type_autocomplete.js +2 -2
  17. data/app/assets/javascripts/spree/backend/option_value_picker.js +2 -2
  18. data/app/assets/javascripts/spree/backend/orders/cart.js +6 -0
  19. data/app/assets/javascripts/spree/backend/product_picker.js +2 -2
  20. data/app/assets/javascripts/spree/backend/routes.js +40 -21
  21. data/app/assets/javascripts/spree/backend/shipments.js +5 -67
  22. data/app/assets/javascripts/spree/backend/shipping_methods/stock_locations_picker.js +18 -0
  23. data/app/assets/javascripts/spree/backend/stock_management.js +4 -2
  24. data/app/assets/javascripts/spree/backend/taxon_autocomplete.js +2 -2
  25. data/app/assets/javascripts/spree/backend/taxons.js +3 -3
  26. data/app/assets/javascripts/spree/backend/templates/index.js +2 -1
  27. data/app/assets/javascripts/spree/backend/templates/orders/customer_details/autocomplete.hbs +2 -2
  28. data/app/assets/javascripts/spree/backend/templates/stock_items/stock_location_stock_item.hbs +5 -1
  29. data/app/assets/javascripts/spree/backend/templates/tables/return_item_sum_amount.hbs +7 -0
  30. data/app/assets/javascripts/spree/backend/templates/tables/selectable_label.hbs +6 -0
  31. data/app/assets/javascripts/spree/backend/user_picker.js +3 -4
  32. data/app/assets/javascripts/spree/backend/variant_autocomplete.js +2 -2
  33. data/app/assets/javascripts/spree/backend/views/cart/empty_cart_button.js +29 -0
  34. data/app/assets/javascripts/spree/backend/views/cart/line_item_table.js +5 -0
  35. data/app/assets/javascripts/spree/backend/views/index.js +5 -0
  36. data/app/assets/javascripts/spree/backend/views/order/address.js +8 -6
  37. data/app/assets/javascripts/spree/backend/views/order/customer_select.js +2 -3
  38. data/app/assets/javascripts/spree/backend/views/order/details_adjustments.js +4 -1
  39. data/app/assets/javascripts/spree/backend/views/stock/edit_stock_item_row.js +4 -0
  40. data/app/assets/javascripts/spree/backend/views/tables/return_items.js +9 -0
  41. data/app/assets/javascripts/spree/backend/views/tables/selectable_table.js +70 -0
  42. data/app/assets/javascripts/spree/backend/views/tables/selectable_table/sum_return_item_amount.js +32 -0
  43. data/app/assets/javascripts/spree/backend/views/tables/selectable_table/summary.js +45 -0
  44. data/app/assets/stylesheets/spree/backend/_bootstrap_custom.scss +2 -0
  45. data/app/assets/stylesheets/spree/backend/components/_breadcrumb.scss +3 -3
  46. data/app/assets/stylesheets/spree/backend/components/_messages.scss +4 -0
  47. data/app/assets/stylesheets/spree/backend/components/_navigation.scss +181 -49
  48. data/app/assets/stylesheets/spree/backend/globals/{_mixins.css → _mixins.scss} +0 -0
  49. data/app/assets/stylesheets/spree/backend/globals/_variables.scss +2 -0
  50. data/app/assets/stylesheets/spree/backend/sections/_orders.scss +5 -1
  51. data/app/assets/stylesheets/spree/backend/sections/_style_guide.scss +4 -0
  52. data/app/assets/stylesheets/spree/backend/shared/_forms.scss +1 -0
  53. data/app/assets/stylesheets/spree/backend/shared/_header.scss +5 -1
  54. data/app/assets/stylesheets/spree/backend/shared/_layout.scss +0 -9
  55. data/app/controllers/spree/admin/adjustments_controller.rb +1 -1
  56. data/app/controllers/spree/admin/base_controller.rb +7 -1
  57. data/app/controllers/spree/admin/cancellations_controller.rb +2 -0
  58. data/app/controllers/spree/admin/customer_returns_controller.rb +4 -4
  59. data/app/controllers/spree/admin/images_controller.rb +2 -1
  60. data/app/controllers/spree/admin/orders/customer_details_controller.rb +2 -0
  61. data/app/controllers/spree/admin/orders_controller.rb +9 -4
  62. data/app/controllers/spree/admin/payment_methods_controller.rb +4 -4
  63. data/app/controllers/spree/admin/payments_controller.rb +5 -3
  64. data/app/controllers/spree/admin/product_properties_controller.rb +2 -2
  65. data/app/controllers/spree/admin/products_controller.rb +19 -25
  66. data/app/controllers/spree/admin/promotion_codes_controller.rb +9 -4
  67. data/app/controllers/spree/admin/refunds_controller.rb +19 -0
  68. data/app/controllers/spree/admin/resource_controller.rb +39 -10
  69. data/app/controllers/spree/admin/return_authorizations_controller.rb +1 -1
  70. data/app/controllers/spree/admin/root_controller.rb +1 -1
  71. data/app/controllers/spree/admin/search_controller.rb +1 -2
  72. data/app/controllers/spree/admin/stock_items_controller.rb +6 -5
  73. data/app/controllers/spree/admin/stock_locations_controller.rb +4 -0
  74. data/app/controllers/spree/admin/stock_movements_controller.rb +7 -0
  75. data/app/controllers/spree/admin/style_guide_controller.rb +1 -1
  76. data/app/controllers/spree/admin/taxons/attachment_controller.rb +20 -0
  77. data/app/controllers/spree/admin/taxons_controller.rb +12 -1
  78. data/app/controllers/spree/admin/users/api_key_controller.rb +29 -0
  79. data/app/controllers/spree/admin/users_controller.rb +43 -22
  80. data/app/controllers/spree/admin/variants_controller.rb +4 -2
  81. data/app/controllers/spree/admin/zones_controller.rb +1 -1
  82. data/app/helpers/spree/admin/base_helper.rb +4 -0
  83. data/app/helpers/spree/admin/customer_returns_helper.rb +1 -1
  84. data/app/helpers/spree/admin/navigation_helper.rb +4 -3
  85. data/app/helpers/spree/admin/orders_helper.rb +8 -4
  86. data/app/helpers/spree/admin/stock_movements_helper.rb +8 -4
  87. data/app/helpers/spree/promotion_rules_helper.rb +1 -1
  88. data/app/views/spree/admin/customer_returns/_return_item_selection.html.erb +2 -3
  89. data/app/views/spree/admin/customer_returns/new.html.erb +1 -1
  90. data/app/views/spree/admin/images/index.html.erb +25 -21
  91. data/app/views/spree/admin/option_types/_option_value_fields.html.erb +8 -1
  92. data/app/views/spree/admin/option_types/edit.html.erb +4 -2
  93. data/app/views/spree/admin/orders/_line_items_edit_form.html.erb +1 -0
  94. data/app/views/spree/admin/orders/customer_details/_form.html.erb +13 -13
  95. data/app/views/spree/admin/orders/edit.html.erb +3 -4
  96. data/app/views/spree/admin/orders/index.html.erb +23 -13
  97. data/app/views/spree/admin/payment_methods/_form.html.erb +7 -2
  98. data/app/views/spree/admin/payment_methods/new.html.erb +1 -1
  99. data/app/views/spree/admin/payments/index.html.erb +3 -1
  100. data/app/views/spree/admin/prices/_master_variant_table.html.erb +41 -41
  101. data/app/views/spree/admin/prices/_table.html.erb +3 -3
  102. data/app/views/spree/admin/product_properties/_product_property_fields.html.erb +7 -2
  103. data/app/views/spree/admin/product_properties/index.html.erb +14 -2
  104. data/app/views/spree/admin/products/_form.html.erb +13 -2
  105. data/app/views/spree/admin/products/index.html.erb +1 -1
  106. data/app/views/spree/admin/promotion_code_batches/new.html.erb +1 -1
  107. data/app/views/spree/admin/promotion_codes/index.html.erb +1 -1
  108. data/app/views/spree/admin/promotion_codes/new.html.erb +1 -1
  109. data/app/views/spree/admin/promotions/_actions.html.erb +2 -1
  110. data/app/views/spree/admin/promotions/_activations_new.html.erb +1 -1
  111. data/app/views/spree/admin/promotions/_rules.html.erb +1 -1
  112. data/app/views/spree/admin/promotions/edit.html.erb +2 -2
  113. data/app/views/spree/admin/promotions/index.html.erb +13 -6
  114. data/app/views/spree/admin/return_authorizations/_form.html.erb +3 -10
  115. data/app/views/spree/admin/return_authorizations/index.html.erb +1 -1
  116. data/app/views/spree/admin/return_authorizations/new.html.erb +1 -1
  117. data/app/views/spree/admin/search/users.json.jbuilder +15 -1
  118. data/app/views/spree/admin/shared/_address.html.erb +6 -6
  119. data/app/views/spree/admin/shared/_address_form.html.erb +15 -8
  120. data/app/views/spree/admin/shared/_calculator_fields.html.erb +5 -0
  121. data/app/views/spree/admin/shared/_navigation.html.erb +3 -0
  122. data/app/views/spree/admin/shared/_new_resource_links.html.erb +1 -1
  123. data/app/views/spree/admin/shared/_order_submenu.html.erb +6 -6
  124. data/app/views/spree/admin/shared/_payments_tabs.html.erb +1 -1
  125. data/app/views/spree/admin/shared/_settings_checkout_tabs.html.erb +5 -5
  126. data/app/views/spree/admin/shared/_settings_sub_menu.html.erb +7 -7
  127. data/app/views/spree/admin/shared/_shipping_tabs.html.erb +3 -3
  128. data/app/views/spree/admin/shared/_taxes_tabs.html.erb +2 -2
  129. data/app/views/spree/admin/shared/preference_fields/_encrypted_string.html.erb +12 -0
  130. data/app/views/spree/admin/shipping_methods/_form.html.erb +19 -1
  131. data/app/views/spree/admin/stock_items/_stock_management.html.erb +1 -1
  132. data/app/views/spree/admin/stock_locations/edit.html.erb +1 -1
  133. data/app/views/spree/admin/stock_locations/index.html.erb +4 -2
  134. data/app/views/spree/admin/stock_movements/index.html.erb +30 -1
  135. data/app/views/spree/admin/store_credit_reasons/index.html.erb +1 -1
  136. data/app/views/spree/admin/store_credits/index.html.erb +1 -1
  137. data/app/views/spree/admin/stores/_form.html.erb +6 -0
  138. data/app/views/spree/admin/style_guide/topics/tables/_building_tables.html.erb +27 -3
  139. data/app/views/spree/admin/tax_categories/_form.html.erb +1 -0
  140. data/app/views/spree/admin/tax_rates/_form.html.erb +1 -1
  141. data/app/views/spree/admin/taxonomies/new.html.erb +1 -1
  142. data/app/views/spree/admin/taxons/_form.html.erb +1 -5
  143. data/app/views/spree/admin/taxons/attachment_forms/_paperclip.html.erb +16 -0
  144. data/app/views/spree/admin/users/_form.html.erb +14 -12
  145. data/app/views/spree/admin/users/_tabs.html.erb +1 -1
  146. data/app/views/spree/admin/users/edit.html.erb +5 -6
  147. data/app/views/spree/admin/users/items.html.erb +5 -3
  148. data/app/views/spree/admin/users/orders.html.erb +5 -3
  149. data/app/views/spree/admin/variants/_table_filter.html.erb +1 -1
  150. data/app/views/spree/admin/variants/index.html.erb +2 -2
  151. data/app/views/spree/layouts/admin.html.erb +1 -2
  152. data/config/initializers/form_builder.rb +2 -2
  153. data/config/routes.rb +4 -6
  154. data/lib/spree/backend.rb +1 -0
  155. data/lib/spree/backend/config.rb +9 -0
  156. data/lib/spree/backend/engine.rb +5 -5
  157. data/{app/models → lib}/spree/backend_configuration.rb +19 -3
  158. data/solidus_backend.gemspec +5 -4
  159. data/vendor/assets/stylesheets/solidus_admin/bootstrap/_variables.scss +1 -1
  160. metadata +44 -124
  161. data/app/assets/javascripts/spree/backend/returns/return_item_selection.js +0 -35
  162. data/app/assets/javascripts/spree/backend/templates/variants/autocomplete_stock.hbs +0 -56
  163. data/app/views/spree/admin/orders/_add_product.html.erb +0 -12
  164. data/script/rails +0 -10
  165. data/spec/controllers/spree/admin/base_controller_spec.rb +0 -26
  166. data/spec/controllers/spree/admin/cancellations_controller_spec.rb +0 -83
  167. data/spec/controllers/spree/admin/customer_returns_controller_spec.rb +0 -235
  168. data/spec/controllers/spree/admin/locale_controller_spec.rb +0 -45
  169. data/spec/controllers/spree/admin/missing_products_controller_spec.rb +0 -18
  170. data/spec/controllers/spree/admin/orders/customer_details_controller_spec.rb +0 -128
  171. data/spec/controllers/spree/admin/orders_controller_spec.rb +0 -408
  172. data/spec/controllers/spree/admin/payment_methods_controller_spec.rb +0 -95
  173. data/spec/controllers/spree/admin/payments_controller_spec.rb +0 -194
  174. data/spec/controllers/spree/admin/prices_controller_spec.rb +0 -45
  175. data/spec/controllers/spree/admin/product_properties_controller_spec.rb +0 -71
  176. data/spec/controllers/spree/admin/products_controller_spec.rb +0 -270
  177. data/spec/controllers/spree/admin/promotion_actions_controller_spec.rb +0 -23
  178. data/spec/controllers/spree/admin/promotion_codes_controller_spec.rb +0 -32
  179. data/spec/controllers/spree/admin/promotion_rules_controller_spec.rb +0 -36
  180. data/spec/controllers/spree/admin/promotions_controller_spec.rb +0 -122
  181. data/spec/controllers/spree/admin/refunds_controller_spec.rb +0 -35
  182. data/spec/controllers/spree/admin/reimbursements_controller_spec.rb +0 -137
  183. data/spec/controllers/spree/admin/resource_controller_spec.rb +0 -190
  184. data/spec/controllers/spree/admin/return_authorizations_controller_spec.rb +0 -291
  185. data/spec/controllers/spree/admin/return_items_controller_spec.rb +0 -29
  186. data/spec/controllers/spree/admin/root_controller_spec.rb +0 -43
  187. data/spec/controllers/spree/admin/search_controller_spec.rb +0 -106
  188. data/spec/controllers/spree/admin/shipping_methods_controller_spec.rb +0 -16
  189. data/spec/controllers/spree/admin/stock_items_controller_spec.rb +0 -52
  190. data/spec/controllers/spree/admin/stock_locations_controller_spec.rb +0 -44
  191. data/spec/controllers/spree/admin/store_credits_controller_spec.rb +0 -311
  192. data/spec/controllers/spree/admin/users_controller_spec.rb +0 -264
  193. data/spec/controllers/spree/admin/variants_controller_spec.rb +0 -71
  194. data/spec/features/admin/configuration/payment_methods_spec.rb +0 -167
  195. data/spec/features/admin/configuration/shipping_methods_spec.rb +0 -114
  196. data/spec/features/admin/configuration/stock_locations_spec.rb +0 -54
  197. data/spec/features/admin/configuration/store_spec.rb +0 -62
  198. data/spec/features/admin/configuration/tax_categories_spec.rb +0 -58
  199. data/spec/features/admin/configuration/tax_rates_spec.rb +0 -31
  200. data/spec/features/admin/configuration/taxonomies_spec.rb +0 -54
  201. data/spec/features/admin/configuration/zones_spec.rb +0 -41
  202. data/spec/features/admin/homepage_spec.rb +0 -86
  203. data/spec/features/admin/javascript_format_money_spec.rb +0 -22
  204. data/spec/features/admin/locale_spec.rb +0 -34
  205. data/spec/features/admin/orders/adjustments_promotions_spec.rb +0 -55
  206. data/spec/features/admin/orders/adjustments_spec.rb +0 -130
  207. data/spec/features/admin/orders/cancelling_and_resuming_spec.rb +0 -45
  208. data/spec/features/admin/orders/cancelling_inventory_spec.rb +0 -50
  209. data/spec/features/admin/orders/customer_details_spec.rb +0 -204
  210. data/spec/features/admin/orders/customer_returns_spec.rb +0 -28
  211. data/spec/features/admin/orders/line_items_spec.rb +0 -52
  212. data/spec/features/admin/orders/listing_spec.rb +0 -186
  213. data/spec/features/admin/orders/log_entries_spec.rb +0 -56
  214. data/spec/features/admin/orders/new_order_spec.rb +0 -331
  215. data/spec/features/admin/orders/new_refund_spec.rb +0 -35
  216. data/spec/features/admin/orders/order_details_spec.rb +0 -581
  217. data/spec/features/admin/orders/payments_spec.rb +0 -330
  218. data/spec/features/admin/orders/return_authorizations_spec.rb +0 -27
  219. data/spec/features/admin/orders/return_payment_state_spec.rb +0 -65
  220. data/spec/features/admin/orders/risk_analysis_spec.rb +0 -49
  221. data/spec/features/admin/orders/shipments_spec.rb +0 -145
  222. data/spec/features/admin/payments/store_credits_spec.rb +0 -23
  223. data/spec/features/admin/products/edit/images_spec.rb +0 -76
  224. data/spec/features/admin/products/edit/products_spec.rb +0 -92
  225. data/spec/features/admin/products/edit/taxons_spec.rb +0 -51
  226. data/spec/features/admin/products/edit/variants_spec.rb +0 -63
  227. data/spec/features/admin/products/option_types_spec.rb +0 -116
  228. data/spec/features/admin/products/pricing_spec.rb +0 -127
  229. data/spec/features/admin/products/products_spec.rb +0 -336
  230. data/spec/features/admin/products/properties_spec.rb +0 -141
  231. data/spec/features/admin/products/stock_management_spec.rb +0 -101
  232. data/spec/features/admin/products/variant_spec.rb +0 -89
  233. data/spec/features/admin/promotion_adjustments_spec.rb +0 -277
  234. data/spec/features/admin/promotions/option_value_rule_spec.rb +0 -90
  235. data/spec/features/admin/promotions/product_rule_spec.rb +0 -35
  236. data/spec/features/admin/promotions/promotion_categories_spec.rb +0 -83
  237. data/spec/features/admin/promotions/promotion_spec.rb +0 -52
  238. data/spec/features/admin/promotions/tiered_calculator_spec.rb +0 -76
  239. data/spec/features/admin/promotions/user_rule_spec.rb +0 -42
  240. data/spec/features/admin/reimbursements_spec.rb +0 -18
  241. data/spec/features/admin/store_credits_spec.rb +0 -132
  242. data/spec/features/admin/stores_spec.rb +0 -37
  243. data/spec/features/admin/style_guide_spec.rb +0 -14
  244. data/spec/features/admin/taxons_spec.rb +0 -78
  245. data/spec/features/admin/users_spec.rb +0 -402
  246. data/spec/helpers/admin/base_helper_spec.rb +0 -49
  247. data/spec/helpers/admin/navigation_helper_spec.rb +0 -139
  248. data/spec/helpers/admin/stock_movements_helper_spec.rb +0 -29
  249. data/spec/helpers/admin/store_credit_events_helper_spec.rb +0 -97
  250. data/spec/helpers/promotion_rules_helper_spec.rb +0 -14
  251. data/spec/javascripts/fixtures/_boot.html.erb +0 -8
  252. data/spec/javascripts/fixtures/number_with_currency/with_currency_select.html.erb +0 -3
  253. data/spec/javascripts/fixtures/number_with_currency/without_select.html.erb +0 -3
  254. data/spec/javascripts/format_money_spec.js +0 -48
  255. data/spec/javascripts/spec_helper.js +0 -13
  256. data/spec/javascripts/support/show_errors.js +0 -8
  257. data/spec/javascripts/support/with_translations.js +0 -11
  258. data/spec/javascripts/translation_spec.js +0 -58
  259. data/spec/javascripts/views/number_with_currency_spec.js +0 -72
  260. data/spec/models/spree/backend_configuration/menu_item_spec.rb +0 -17
  261. data/spec/models/spree/backend_configuration_spec.rb +0 -22
  262. data/spec/spec_helper.rb +0 -122
  263. data/spec/support/appear_before_matcher.rb +0 -10
  264. data/spec/support/feature/base_feature_helper.rb +0 -12
  265. data/spec/support/feature/order_feature_helper.rb +0 -27
  266. data/spec/support/ror_ringer.jpeg +0 -0
  267. data/spec/teaspoon_env.rb +0 -51
  268. data/spec/test_views/spree/admin/widgets/edit.html.erb +0 -1
  269. data/spec/test_views/spree/admin/widgets/new.html.erb +0 -1
  270. 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
- describe "Cancelling + Resuming", type: :feature do
6
- stub_authorization!
7
-
8
- let(:user) { build_stubbed(:user, id: 123, spree_api_key: 'fake') }
9
-
10
- before do
11
- allow(user).to receive(:has_spree_role?).and_return(true)
12
- allow_any_instance_of(Spree::Admin::BaseController).to receive(:try_spree_current_user).and_return(user)
13
- end
14
-
15
- let(:order) do
16
- order = create(:order)
17
- order.update_columns({
18
- state: 'complete',
19
- completed_at: Time.current
20
- })
21
- order
22
- end
23
-
24
- it "can cancel an order" do
25
- visit spree.edit_admin_order_path(order.number)
26
- click_button 'Cancel'
27
- within(".additional-info") do
28
- expect(find('dt#order_status + dd')).to have_content("Canceled")
29
- end
30
- end
31
-
32
- context "with a cancelled order" do
33
- before do
34
- order.update_column(:state, 'canceled')
35
- end
36
-
37
- it "can resume an order" do
38
- visit spree.edit_admin_order_path(order.number)
39
- click_button 'Resume'
40
- within(".additional-info") do
41
- expect(find('dt#order_status + dd')).to have_content("Resumed")
42
- end
43
- end
44
- end
45
- end
@@ -1,50 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- describe "Cancel items" do
6
- stub_authorization!
7
-
8
- let!(:order) do
9
- create(
10
- :order_ready_to_ship,
11
- number: "R100",
12
- state: "complete",
13
- line_items_count: 1
14
- )
15
- end
16
-
17
- def visit_order
18
- visit spree.admin_path
19
- click_link "Orders"
20
- within_row(1) do
21
- click_link "R100"
22
- end
23
- end
24
-
25
- context "when some items are cancelable" do
26
- it "can cancel the item" do
27
- visit_order
28
-
29
- click_link 'Cancel Items'
30
-
31
- within_row(1) do
32
- check 'inventory_unit_ids[]'
33
- end
34
-
35
- click_button "Cancel Items"
36
- expect(page).to have_content("Inventory canceled")
37
- expect(page).to have_content("1 x Canceled")
38
- end
39
- end
40
-
41
- context "when all items are not cancelable" do
42
- before { order.inventory_units.each(&:cancel!) }
43
-
44
- it "does not display the link to cancel items" do
45
- visit_order
46
-
47
- expect(page).to have_no_content('Cancel Items')
48
- end
49
- end
50
- end
@@ -1,204 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- describe "Customer Details", type: :feature, js: true do
6
- include OrderFeatureHelper
7
-
8
- stub_authorization!
9
-
10
- let(:country) { create(:country, name: "Kangaland") }
11
- let(:state) { create(:state, name: "Alabama", country: country) }
12
- let!(:shipping_method) { create(:shipping_method) }
13
- let!(:order) { create(:order, ship_address: ship_address, bill_address: bill_address, state: 'complete', completed_at: "2011-02-01 12:36:15") }
14
- let!(:product) { create(:product_in_stock) }
15
-
16
- # We need a unique name that will appear for the customer dropdown
17
- let!(:ship_address) { create(:address, country: country, state: state, first_name: "Rumpelstiltskin") }
18
- let!(:bill_address) { create(:address, country: country, state: state, first_name: "Rumpelstiltskin") }
19
-
20
- let!(:user) { create(:user, email: 'foobar@example.com', ship_address: ship_address, bill_address: bill_address) }
21
-
22
- context "brand new order" do
23
- let(:quantity) { 1 }
24
-
25
- before do
26
- visit spree.admin_path
27
- click_link "Orders"
28
- click_link "New Order"
29
-
30
- add_line_item product.name, quantity: quantity
31
-
32
- expect(page).to have_css('.line-item')
33
- click_link "Customer"
34
- targetted_select2 "foobar@example.com", from: "#s2id_customer_search"
35
- end
36
-
37
- # Regression test for https://github.com/spree/spree/issues/3335 and https://github.com/spree/spree/issues/5317
38
- it "associates a user when not using guest checkout" do
39
- # 5317 - Address prefills using user's default.
40
- expect(page).to have_field('First Name', with: user.bill_address.firstname)
41
- expect(page).to have_field('Last Name', with: user.bill_address.lastname)
42
- expect(page).to have_field('Street Address', with: user.bill_address.address1)
43
- expect(page).to have_field("Street Address (cont'd)", with: user.bill_address.address2)
44
- expect(page).to have_field('City', with: user.bill_address.city)
45
- expect(page).to have_field('Zip Code', with: user.bill_address.zipcode)
46
- expect(page).to have_select('Country', selected: "United States of America", visible: false)
47
- expect(page).to have_select('State', selected: user.bill_address.state.name, visible: false)
48
- expect(page).to have_field('Phone', with: user.bill_address.phone)
49
- click_button "Update"
50
- expect(Spree::Order.last.user).not_to be_nil
51
- end
52
-
53
- # Regression test for https://github.com/solidusio/solidus/pull/2176
54
- it "does not reset guest checkout to true when returning to customer tab" do
55
- click_button "Update"
56
- click_link "Customer"
57
- expect(find('#guest_checkout_true')).not_to be_checked
58
- end
59
-
60
- context "when required quantity is more than available" do
61
- let(:quantity) { 11 }
62
- let!(:product) { create(:product_not_backorderable) }
63
-
64
- it "displays an error" do
65
- click_button "Update"
66
- expect(page).to have_content I18n.t('spree.insufficient_stock_for_order')
67
- end
68
- end
69
- end
70
-
71
- context "editing an order" do
72
- before do
73
- stub_spree_preferences(
74
- default_country_iso: country.iso,
75
- company: true
76
- )
77
-
78
- visit spree.admin_path
79
- click_link "Orders"
80
- within('table#listing_orders') { click_icon(:edit) }
81
- end
82
-
83
- context "selected country has no state" do
84
- before { create(:country, iso: "BRA", name: "Brazil") }
85
-
86
- it "changes state field to text input" do
87
- click_link "Customer"
88
-
89
- within("#billing") do
90
- select "Brazil", from: "Country"
91
- fill_in "order_bill_address_attributes_state_name", with: "Piaui"
92
- end
93
-
94
- click_button "Update"
95
- expect(page).to have_content "Customer Details Updated"
96
- click_link "Customer"
97
- expect(page).to have_field("order_bill_address_attributes_state_name", with: "Piaui")
98
- end
99
- end
100
-
101
- it "should be able to update customer details for an existing order" do
102
- order.ship_address = create(:address)
103
- order.save!
104
-
105
- click_link "Customer"
106
- within("#shipping") { fill_in_address }
107
- within("#billing") { fill_in_address }
108
-
109
- click_button "Update"
110
- click_link "Customer"
111
-
112
- # Regression test for https://github.com/spree/spree/issues/2950 and https://github.com/spree/spree/issues/2433
113
- # This act should transition the state of the order as far as it will go too
114
- within("#order_tab_summary") do
115
- expect(find("dt#order_status + dd")).to have_content("Complete")
116
- end
117
- end
118
-
119
- it "should show validation errors" do
120
- order.update_attributes!(ship_address_id: nil)
121
- click_link "Customer"
122
- click_button "Update"
123
- expect(page).to have_content("Shipping address first name can't be blank")
124
- end
125
-
126
- context "for an order in confirm state with a user" do
127
- let(:user) { order.user }
128
-
129
- before do
130
- order.update_columns(
131
- ship_address_id: ship_address.id,
132
- bill_address_id: bill_address.id,
133
- state: "confirm",
134
- completed_at: nil
135
- )
136
- end
137
-
138
- it "updating order email works" do
139
- click_link "Customer"
140
- fill_in "order_email", with: "newemail@example.com"
141
- click_button "Update"
142
- expect(page).to have_content 'Customer Details Updated'
143
- click_link "Customer"
144
- expect(page).to have_field 'Customer E-Mail', with: order.reload.email
145
- within '#order_user_link' do
146
- expect(page).to have_link user.email
147
- end
148
- end
149
- end
150
-
151
- context "country associated was removed" do
152
- let(:brazil) { create(:country, iso: "BR", name: "Brazil") }
153
-
154
- before do
155
- order.bill_address.country.destroy
156
- stub_spree_preferences(default_country_iso: brazil.iso)
157
- end
158
-
159
- it "sets default country when displaying form" do
160
- click_link "Cart"
161
- click_link "Customer"
162
- expect(page).to have_field("order_bill_address_attributes_country_id", with: brazil.id, visible: false)
163
- end
164
- end
165
-
166
- # Regression test for https://github.com/spree/spree/issues/942
167
- context "errors when no shipping methods are available" do
168
- before do
169
- Spree::ShippingMethod.delete_all
170
- end
171
-
172
- specify do
173
- click_link "Customer"
174
- # Need to fill in valid information so it passes validations
175
- fill_in "order_ship_address_attributes_firstname", with: "John 99"
176
- fill_in "order_ship_address_attributes_lastname", with: "Doe"
177
- fill_in "order_ship_address_attributes_lastname", with: "Company"
178
- fill_in "order_ship_address_attributes_address1", with: "100 first lane"
179
- fill_in "order_ship_address_attributes_address2", with: "#101"
180
- fill_in "order_ship_address_attributes_city", with: "Bethesda"
181
- fill_in "order_ship_address_attributes_zipcode", with: "20170"
182
-
183
- within("#shipping") do
184
- select 'Alabama', from: "State"
185
- end
186
-
187
- fill_in "order_ship_address_attributes_phone", with: "123-456-7890"
188
- click_button "Update"
189
- end
190
- end
191
- end
192
-
193
- def fill_in_address
194
- fill_in "First Name", with: "John 99"
195
- fill_in "Last Name", with: "Doe"
196
- fill_in "Company", with: "Company"
197
- fill_in "Street Address", with: "100 first lane"
198
- fill_in "Street Address (cont'd)", with: "#101"
199
- fill_in "City", with: "Bethesda"
200
- fill_in "Zip Code", with: "20170"
201
- select 'Alabama', from: "State"
202
- fill_in "Phone", with: "123-456-7890"
203
- end
204
- end
@@ -1,28 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- describe 'Customer returns', type: :feature do
6
- stub_authorization!
7
-
8
- context 'when the order has more than one line item' do
9
- let(:order) { create :shipped_order, line_items_count: 2 }
10
-
11
- context 'when creating a return with state "Received"' do
12
- it 'marks the order as returned', :js do
13
- visit spree.new_admin_order_customer_return_path(order)
14
-
15
- find('#select-all').click
16
- page.execute_script "$('select.add-item').val('receive')"
17
- select 'NY Warehouse', from: 'Stock Location'
18
- click_button 'Create'
19
-
20
- expect(page).to have_content 'Customer Return has been successfully created'
21
-
22
- within 'dd.order-state' do
23
- expect(page).to have_content 'Returned'
24
- end
25
- end
26
- end
27
- end
28
- end
@@ -1,52 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- # Tests for https://github.com/spree/spree/issues/3958's features
6
- describe "Order Line Items", type: :feature, js: true do
7
- stub_authorization!
8
-
9
- before do
10
- # Removing the delivery step causes the order page to render a different
11
- # partial, called _line_items, which shows line items rather than shipments
12
- allow(Spree::Order).to receive_messages checkout_step_names: [:address, :payment, :confirm, :complete]
13
- end
14
-
15
- let!(:order) do
16
- order = create(:order_with_line_items, line_items_count: 1)
17
- order.shipments.destroy_all
18
- order
19
- end
20
-
21
- it "can edit a line item's quantity" do
22
- visit spree.cart_admin_order_path(order)
23
- within(".line-items") do
24
- find(".edit-line-item").click
25
- fill_in "quantity", with: 10
26
- find(".save-line-item").click
27
- end
28
- within '.line-item-qty-show' do
29
- expect(page).to have_content("10")
30
- end
31
- within '.line-item-total' do
32
- expect(page).to have_content("$100.00")
33
- end
34
- end
35
-
36
- it "can delete a line item" do
37
- visit spree.cart_admin_order_path(order)
38
-
39
- product_name = find(".line-items tr:nth-child(1) .line-item-name").text
40
-
41
- within(".line-items") do
42
- within_row(1) do
43
- accept_alert do
44
- find(".delete-line-item").click
45
- end
46
- end
47
- end
48
-
49
- expect(find('#order_total')).to have_content("$0.00")
50
- expect(page).not_to have_content(product_name)
51
- end
52
- end
@@ -1,186 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- describe "Orders Listing", type: :feature, js: true do
6
- stub_authorization!
7
-
8
- let!(:promotion) { create(:promotion_with_item_adjustment, code: "vnskseiw") }
9
- let(:promotion_code) { promotion.codes.first }
10
-
11
- before(:each) do
12
- allow_any_instance_of(Spree::OrderInventory).to receive(:add_to_shipment)
13
- @order1 = create(:order_with_line_items, created_at: 1.day.from_now, completed_at: 1.day.from_now, number: "R100")
14
- @order2 = create(:order, created_at: 1.day.ago, completed_at: 1.day.ago, number: "R200")
15
- visit spree.admin_orders_path
16
- end
17
-
18
- it 'displays the new order button' do
19
- expect(page).to have_link('New Order')
20
- end
21
-
22
- context 'without create permission' do
23
- custom_authorization! do |_user|
24
- can :manage, Spree::Order
25
- cannot :create, Spree::Order
26
- end
27
-
28
- it 'does not display the new order button' do
29
- expect(page).to_not have_link('New Order')
30
- end
31
- end
32
-
33
- context "listing orders" do
34
- it "should list existing orders" do
35
- within_row(1) do
36
- expect(column_text(2)).to eq "R100"
37
- expect(column_text(3)).to eq "Cart"
38
- end
39
-
40
- within_row(2) do
41
- expect(column_text(2)).to eq "R200"
42
- end
43
- end
44
-
45
- it "should be able to sort the orders listing" do
46
- # default is completed_at desc
47
- within_row(1) { expect(page).to have_content("R100") }
48
- within_row(2) { expect(page).to have_content("R200") }
49
-
50
- click_link "Completed at", exact: false
51
-
52
- # Completed at desc
53
- within_row(1) { expect(page).to have_content("R200") }
54
- within_row(2) { expect(page).to have_content("R100") }
55
-
56
- within('table#listing_orders thead') { click_link "Number" }
57
-
58
- # number asc
59
- within_row(1) { expect(page).to have_content("R100") }
60
- within_row(2) { expect(page).to have_content("R200") }
61
- end
62
- end
63
-
64
- context "searching orders" do
65
- context "when there are multiple stores" do
66
- let(:stores) { FactoryBot.create_pair(:store) }
67
-
68
- before do
69
- stores.each do |store|
70
- FactoryBot.create(:completed_order_with_totals, number: "R#{store.id}999", store: store)
71
- end
72
- end
73
-
74
- it "can find the orders belonging to a specific store" do
75
- main_store, other_store = stores
76
-
77
- click_on "Filter Results"
78
- select main_store.name, from: I18n.t('spree.store')
79
- click_on "Filter Results"
80
-
81
- within_row(1) do
82
- expect(page).to have_content("R#{main_store.id}999")
83
- end
84
-
85
- # Ensure that the other order doesn't show up
86
- within("table#listing_orders") { expect(page).not_to have_content("R#{other_store.id}999") }
87
- end
88
- end
89
-
90
- context "when there's a single store" do
91
- it "should be able to search orders" do
92
- click_on "Filter Results"
93
- fill_in "q_number_start", with: "R200"
94
- click_on 'Filter Results'
95
- within_row(1) do
96
- expect(page).to have_content("R200")
97
- end
98
-
99
- # Ensure that the other order doesn't show up
100
- within("table#listing_orders") { expect(page).not_to have_content("R100") }
101
- end
102
-
103
- it "should be able to filter on variant_id" do
104
- click_on "Filter Results"
105
- select2_search @order1.products.first.sku, from: I18n.t('spree.variant')
106
- click_on 'Filter Results'
107
-
108
- within_row(1) do
109
- expect(page).to have_content(@order1.number)
110
- end
111
-
112
- expect(page).not_to have_content(@order2.number)
113
- end
114
-
115
- context "when pagination is really short" do
116
- before do
117
- stub_spree_preferences(orders_per_page: 1)
118
- end
119
-
120
- # Regression test for https://github.com/spree/spree/issues/4004
121
- it "should be able to go from page to page for incomplete orders" do
122
- 10.times { Spree::Order.create email: "incomplete@example.com" }
123
- click_on "Filter Results"
124
- uncheck "q_completed_at_not_null"
125
- click_on 'Filter Results'
126
- within(".pagination", match: :first) do
127
- click_link "2"
128
- end
129
- expect(page).to have_content("incomplete@example.com")
130
- click_on "Filter Results"
131
- expect(find("#q_completed_at_not_null")).not_to be_checked
132
- end
133
- end
134
-
135
- it "should be able to search orders using only completed at input" do
136
- click_on "Filter Results"
137
- fill_in "q_created_at_gt", with: Date.current
138
-
139
- click_on 'Filter Results'
140
- within_row(1) { expect(page).to have_content("R100") }
141
-
142
- # Ensure that the other order doesn't show up
143
- within("table#listing_orders") { expect(page).not_to have_content("R200") }
144
- end
145
-
146
- context "filter on promotions" do
147
- before(:each) do
148
- @order1.order_promotions.build(
149
- promotion: promotion,
150
- promotion_code: promotion_code
151
- )
152
- @order1.save
153
- visit spree.admin_orders_path
154
- end
155
-
156
- it "only shows the orders with the selected promotion" do
157
- click_on "Filter Results"
158
- fill_in "q_order_promotions_promotion_code_value_start", with: promotion.codes.first.value
159
- click_on 'Filter Results'
160
- within_row(1) { expect(page).to have_content("R100") }
161
- within("table#listing_orders") { expect(page).not_to have_content("R200") }
162
- end
163
- end
164
-
165
- context "when toggling the completed orders checkbox" do
166
- before do
167
- create(:order, number: 'R300', completed_at: nil, state: 'cart')
168
- end
169
-
170
- it "shows both complete and incomplete orders" do
171
- check "q_completed_at_not_null"
172
- click_on "Filter Results"
173
-
174
- expect(page).to have_content("R200")
175
- expect(page).to_not have_content("R300")
176
-
177
- uncheck "q_completed_at_not_null"
178
- click_on 'Filter Results'
179
-
180
- expect(page).to have_content("R200")
181
- expect(page).to have_content("R300")
182
- end
183
- end
184
- end
185
- end
186
- end