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,145 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- describe "Shipments", type: :feature do
6
- include OrderFeatureHelper
7
-
8
- stub_authorization!
9
-
10
- let!(:order) { create(:order_ready_to_ship, number: "R100", state: "complete", line_items_count: 5) }
11
-
12
- # Regression test for https://github.com/spree/spree/issues/4025
13
- context "a shipment without a shipping method" do
14
- before do
15
- order.shipments.each do |s|
16
- # Deleting the shipping rates causes there to be no shipping methods
17
- s.shipping_rates.delete_all
18
- end
19
- end
20
-
21
- it "can still be displayed" do
22
- visit spree.edit_admin_order_path(order)
23
- end
24
- end
25
-
26
- context "shipping an order", js: true do
27
- before(:each) do
28
- visit spree.admin_path
29
- click_link "Orders"
30
- within_row(1) do
31
- click_link "R100"
32
- end
33
- end
34
-
35
- def ship_shipment
36
- find(".ship-shipment-button").click
37
-
38
- expect(page).to have_content("Shipped package")
39
- expect(order.reload.shipment_state).to eq("shipped")
40
- end
41
-
42
- it "can ship a completed order" do
43
- expect {
44
- perform_enqueued_jobs {
45
- ship_shipment
46
- }
47
- }.to change{ ActionMailer::Base.deliveries.count }.by(1)
48
- end
49
-
50
- it "doesn't send a shipping confirmation email when ask to suppress the mailer" do
51
- uncheck 'Send Mailer'
52
-
53
- expect {
54
- perform_enqueued_jobs {
55
- ship_shipment
56
- }
57
- }.not_to change{ ActionMailer::Base.deliveries.count }
58
- end
59
- end
60
-
61
- context "destroying a shipment", js: true do
62
- before do
63
- visit spree.admin_path
64
- click_link "Orders"
65
- within_row(1) do
66
- click_link "R100"
67
- end
68
- end
69
-
70
- context "when the line item cannot be found" do
71
- it "shows the proper error message" do
72
- expect(page).to have_selector '.delete-item'
73
- order.shipments.first.line_items.each(&:destroy)
74
- accept_alert { first('.delete-item').click }
75
- expect(page).to have_content 'The resource you were looking for could not be found.'
76
- end
77
- end
78
-
79
- context "when the shipment has already been shipped" do
80
- it "shows the proper error message" do
81
- expect(page).to have_selector '.delete-item'
82
- order.shipments.first.ship!
83
- accept_alert { first('.delete-item').click }
84
- expect(page).to have_content 'Cannot remove items from a shipped shipment'
85
- end
86
- end
87
- end
88
-
89
- context "moving variants between shipments", js: true do
90
- let!(:order) { create(:completed_order_with_pending_payment, number: "R100", state: "complete", line_items_count: 5) }
91
- let!(:la) { create(:stock_location, name: "LA") }
92
- before(:each) do
93
- visit spree.admin_path
94
- click_link "Orders"
95
- within_row(1) do
96
- click_link "R100"
97
- end
98
- end
99
-
100
- it "can move a variant to a new and to an existing shipment" do
101
- expect(order.shipments.count).to eq(1)
102
- shipment1 = order.shipments[0]
103
-
104
- within('tr', text: order.line_items[0].sku) { click_icon 'arrows-h' }
105
- complete_split_to('LA')
106
-
107
- expect(page).to have_css("#shipment_#{shipment1.id} tr.stock-item", count: 4)
108
- shipment2 = (order.reload.shipments.to_a - [shipment1]).first
109
- expect(page).to have_css("#shipment_#{shipment2.id} tr.stock-item", count: 1)
110
- within "#shipment_#{shipment2.id}" do
111
- expect(page).to have_content("UPS Ground")
112
- end
113
-
114
- within('tr', text: order.line_items[1].sku) { click_icon 'arrows-h' }
115
- complete_split_to("LA(#{shipment2.number})")
116
- expect(page).to have_css("#shipment_#{shipment2.id} tr.stock-item", count: 2)
117
- expect(page).to have_css("#shipment_#{shipment1.id} tr.stock-item", count: 3)
118
-
119
- within "#shipment_#{shipment2.id}" do
120
- expect(page).to have_content("UPS Ground")
121
- end
122
- end
123
-
124
- context "with a ready-to-ship order" do
125
- let(:variant) { create(:variant) }
126
- let!(:order) do
127
- create(
128
- :order_ready_to_ship,
129
- number: "R100",
130
- line_items_attributes: [{ variant: variant, quantity: 5 }]
131
- )
132
- end
133
-
134
- it "can transfer all items to a new location" do
135
- expect(order.shipments.count).to eq(1)
136
-
137
- within('tr', text: order.line_items[0].sku) { click_icon 'arrows-h' }
138
- complete_split_to('LA', quantity: 5)
139
-
140
- expect(page).to_not have_content("package from 'NY Warehouse'")
141
- expect(page).to have_content("package from 'LA'")
142
- end
143
- end
144
- end
145
- end
@@ -1,23 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- RSpec.describe 'Store credits', type: :feature do
6
- stub_authorization!
7
-
8
- let(:order) { FactoryBot.create(:completed_order_with_totals) }
9
- let(:payment) do
10
- FactoryBot.create(
11
- :store_credit_payment,
12
- order: order,
13
- amount: 20
14
- )
15
- end
16
-
17
- it "viewing a store credit payment" do
18
- visit spree.admin_order_payment_path(order, payment)
19
-
20
- expect(page).to have_content "Store Credit"
21
- expect(page).to have_content "Amount: $20.00"
22
- end
23
- end
@@ -1,76 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- describe "Product Images", type: :feature do
6
- stub_authorization!
7
-
8
- let(:file_path) { Rails.root + "../../spec/support/ror_ringer.jpeg" }
9
- let(:product) { create(:product) }
10
-
11
- before do
12
- # Ensure attachment style keys are symbolized before running all tests
13
- # Otherwise this would result in this error:
14
- # undefined method `processors' for \"48x48>\
15
- Spree::Image.attachment_definitions[:attachment][:styles].symbolize_keys!
16
- end
17
-
18
- context "uploading, editing, and deleting an image", js: true do
19
- it "should allow an admin to upload and edit an image for a product" do
20
- Spree::Image.attachment_definitions[:attachment].delete :storage
21
-
22
- create(:product)
23
-
24
- visit spree.admin_path
25
- click_nav "Products"
26
- click_icon(:edit)
27
- click_link "Images"
28
- click_link "new_image_link"
29
- within_fieldset 'New Image' do
30
- attach_file('image_attachment', file_path)
31
- end
32
- click_button "Update"
33
- expect(page).to have_content("successfully created!")
34
-
35
- # Icons are hidden, so hover to have them pop-up
36
- find('tbody > tr').hover
37
- within_row(1) do
38
- within ".actions" do
39
- click_icon :edit
40
- end
41
- end
42
-
43
- fill_in "image_alt", with: "ruby on rails t-shirt"
44
- click_button "Update"
45
-
46
- expect(page).to have_content "successfully updated!"
47
- expect(page).to have_field "image[alt]", with: "ruby on rails t-shirt"
48
-
49
- find('tbody > tr').hover
50
- accept_alert do
51
- click_icon :trash
52
- end
53
- expect(page).not_to have_field "image[alt]", with: "ruby on rails t-shirt"
54
- end
55
- end
56
-
57
- it "should not see variant column when product has no variants" do
58
- product = create(:product)
59
- product.images.create!(attachment: File.open(file_path))
60
- visit spree.admin_product_images_path(product)
61
-
62
- expect(page).not_to have_content("No Images Found.")
63
- within("table.index") do
64
- # ensure no duplicate images are displayed
65
- expect(page).to have_css("tbody tr", count: 1)
66
-
67
- # ensure variant header is not displayed
68
- within("thead") do
69
- expect(page).not_to have_content("Variant")
70
- end
71
-
72
- # ensure correct cell count
73
- expect(page).to have_css("thead th", count: 4)
74
- end
75
- end
76
- end
@@ -1,92 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- describe 'Product Details', type: :feature do
6
- stub_authorization!
7
-
8
- context 'editing a product' do
9
- it 'should list the product details' do
10
- create(:product, name: 'Bún thịt nướng', sku: 'A100',
11
- description: 'lorem ipsum', available_on: '2013-08-14 01:02:03')
12
-
13
- visit spree.admin_path
14
- click_nav "Products"
15
- within_row(1) { click_icon :edit }
16
-
17
- click_link 'Product Details'
18
-
19
- expect(page).to have_content('ProductsBún thịt nướng')
20
- expect(page).to have_field('product_name', with: 'Bún thịt nướng')
21
- expect(page).to have_field('product_slug', with: 'bun-th-t-n-ng')
22
- expect(page).to have_field('product_description', with: 'lorem ipsum')
23
- expect(page).to have_field('product_price', with: '19.99')
24
- expect(page).to have_field('product_cost_price', with: '17.00')
25
- expect(page).to have_field('product_available_on', with: "2013/08/14")
26
- expect(page).to have_field('product_sku', with: 'A100')
27
- end
28
-
29
- it "should handle slug changes" do
30
- create(:product, name: 'Bún thịt nướng', sku: 'A100',
31
- description: 'lorem ipsum', available_on: '2011-01-01 01:01:01')
32
-
33
- visit spree.admin_path
34
- click_nav "Products"
35
- within('table.index tbody tr:nth-child(1)') do
36
- click_icon(:edit)
37
- end
38
-
39
- fill_in "product_slug", with: 'random-slug-value'
40
- click_button "Update"
41
- expect(page).to have_content("successfully updated!")
42
-
43
- fill_in "product_slug", with: ''
44
- click_button "Update"
45
- within('#product_slug_field') { expect(page).to have_content("can't be blank") }
46
-
47
- fill_in "product_slug", with: 'x'
48
- click_button "Update"
49
- expect(page).to have_content("successfully updated!")
50
- end
51
- end
52
-
53
- context "when default price is deleted" do
54
- it "does not show the master price", js: true do
55
- product = create(:product, name: 'Bún thịt nướng', sku: 'A100',
56
- description: 'lorem ipsum', available_on: '2013-08-14 01:02:03')
57
-
58
- visit spree.admin_path
59
- click_nav "Products"
60
- within_row(1) { click_icon :edit }
61
-
62
- click_link 'Prices'
63
-
64
- within "#spree_price_#{product.master.default_price.id}" do
65
- accept_alert do
66
- click_icon :trash
67
- end
68
- end
69
- expect(page).to have_content("Price has been successfully removed")
70
-
71
- click_link 'Product Details'
72
-
73
- expect(page).not_to have_field('product_price')
74
- expect(page).to have_content('This Product has no price in the default currency (USD).')
75
- end
76
- end
77
-
78
- # Regression test for https://github.com/spree/spree/issues/3385
79
- context "deleting a product", js: true do
80
- it "is still able to find the master variant" do
81
- create(:product)
82
-
83
- visit spree.admin_products_path
84
- within_row(1) do
85
- accept_alert do
86
- click_icon :trash
87
- end
88
- end
89
- expect(page).to have_content('Product has been deleted')
90
- end
91
- end
92
- end
@@ -1,51 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- describe "Product Display Order", type: :feature do
6
- stub_authorization!
7
-
8
- context "managing display order", js: true do
9
- def assert_selected_taxons(taxons)
10
- # Regression test for https://github.com/spree/spree/issues/2139
11
- taxons.each do |taxon|
12
- expect(page).to have_css(".select2-search-choice", text: taxon.name)
13
- end
14
-
15
- expected_value = taxons.map(&:id).join(",")
16
- expect(page).to have_xpath("//*[@id = 'product_taxon_ids' and @value = '#{expected_value}']", visible: :all)
17
- end
18
-
19
- let(:product) { create(:product) }
20
-
21
- it "should allow an admin to manage display order (taxons)" do
22
- taxon_1 = create(:taxon)
23
- taxon_2 = create(:taxon, name: 'Clothing')
24
- product.taxons << taxon_1
25
-
26
- visit spree.edit_admin_product_path(product)
27
-
28
- assert_selected_taxons([taxon_1])
29
-
30
- select2_search "Clothing", from: "Taxon"
31
- assert_selected_taxons([taxon_1, taxon_2])
32
-
33
- click_button "Update"
34
-
35
- expect(find(".flash")).to have_text "Product \"#{product.name}\" has been successfully updated!"
36
- assert_selected_taxons([taxon_1, taxon_2])
37
- end
38
-
39
- context "with an XSS attempt", skip: true do
40
- let(:taxon_name) { %(<script>throw("XSS")</script>) }
41
- let!(:taxon) { create(:taxon, name: taxon_name) }
42
- it "displays the escaped HTML without executing it" do
43
- visit spree.edit_admin_product_path(product)
44
-
45
- select2_search "<script>", from: "Taxon"
46
-
47
- expect(page).to have_content(taxon_name)
48
- end
49
- end
50
- end
51
- end
@@ -1,63 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- describe "Product Variants", type: :feature do
6
- stub_authorization!
7
-
8
- before(:each) do
9
- visit spree.admin_path
10
- end
11
-
12
- context "editing variant option types", js: true do
13
- let!(:product) { create(:product) }
14
-
15
- it "should allow an admin to create option types for a variant" do
16
- click_nav "Products"
17
-
18
- within_row(1) { click_icon :edit }
19
-
20
- within('nav > ul.tabs') { click_link "Variants" }
21
- expect(page).to have_content("To add variants, you must first define")
22
- end
23
-
24
- it "allows admin to create a variant if there are option types" do
25
- click_nav "Products"
26
- click_link "Option Types"
27
- click_link "new_option_type_link"
28
- fill_in "option_type_name", with: "shirt colors"
29
- fill_in "option_type_presentation", with: "colors"
30
- click_button "Create"
31
- expect(page).to have_content("successfully created!")
32
-
33
- page.find('#option_type_option_values_attributes_0_name').set('color')
34
- page.find('#option_type_option_values_attributes_0_presentation').set('black')
35
- click_button "Update"
36
- expect(page).to have_content("successfully updated!")
37
-
38
- visit spree.admin_path
39
- click_nav "Products"
40
- within('table.index tbody tr:nth-child(1)') do
41
- click_icon :edit
42
- end
43
-
44
- select2_search "shirt", from: "Option Types"
45
- click_button "Update"
46
- expect(page).to have_content("successfully updated!")
47
-
48
- within('nav > ul.tabs') { click_link "Variants" }
49
- click_link "New Variant"
50
-
51
- select "black", from: "Colors"
52
- fill_in "variant_sku", with: "A100"
53
- click_button "Create"
54
- expect(page).to have_content("successfully created!")
55
-
56
- within(".index") do
57
- expect(page).to have_content("19.99")
58
- expect(page).to have_content("black")
59
- expect(page).to have_content("A100")
60
- end
61
- end
62
- end
63
- end