solidus_backend 2.10.2 → 2.11.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (234) 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/components/_navigation.scss +4 -5
  41. data/app/assets/stylesheets/spree/backend/sections/_orders.scss +5 -1
  42. data/app/assets/stylesheets/spree/backend/sections/_style_guide.scss +4 -0
  43. data/app/assets/stylesheets/spree/backend/shared/_forms.scss +1 -0
  44. data/app/controllers/spree/admin/base_controller.rb +6 -0
  45. data/app/controllers/spree/admin/cancellations_controller.rb +2 -0
  46. data/app/controllers/spree/admin/customer_returns_controller.rb +4 -4
  47. data/app/controllers/spree/admin/images_controller.rb +2 -1
  48. data/app/controllers/spree/admin/orders/customer_details_controller.rb +2 -0
  49. data/app/controllers/spree/admin/orders_controller.rb +7 -2
  50. data/app/controllers/spree/admin/payments_controller.rb +3 -1
  51. data/app/controllers/spree/admin/product_properties_controller.rb +1 -1
  52. data/app/controllers/spree/admin/products_controller.rb +18 -24
  53. data/app/controllers/spree/admin/promotion_codes_controller.rb +9 -4
  54. data/app/controllers/spree/admin/refunds_controller.rb +20 -0
  55. data/app/controllers/spree/admin/resource_controller.rb +27 -7
  56. data/app/controllers/spree/admin/return_authorizations_controller.rb +1 -1
  57. data/app/controllers/spree/admin/root_controller.rb +1 -1
  58. data/app/controllers/spree/admin/search_controller.rb +1 -2
  59. data/app/controllers/spree/admin/stock_items_controller.rb +6 -5
  60. data/app/controllers/spree/admin/stock_locations_controller.rb +4 -0
  61. data/app/controllers/spree/admin/stock_movements_controller.rb +7 -0
  62. data/app/controllers/spree/admin/taxons_controller.rb +12 -1
  63. data/app/controllers/spree/admin/users/api_key_controller.rb +29 -0
  64. data/app/controllers/spree/admin/users_controller.rb +37 -20
  65. data/app/controllers/spree/admin/variants_controller.rb +4 -2
  66. data/app/controllers/spree/admin/zones_controller.rb +1 -1
  67. data/app/helpers/spree/admin/base_helper.rb +4 -0
  68. data/app/helpers/spree/admin/customer_returns_helper.rb +1 -1
  69. data/app/helpers/spree/admin/navigation_helper.rb +1 -1
  70. data/app/helpers/spree/admin/orders_helper.rb +8 -4
  71. data/app/helpers/spree/admin/stock_movements_helper.rb +8 -4
  72. data/app/views/spree/admin/customer_returns/_return_item_selection.html.erb +2 -3
  73. data/app/views/spree/admin/images/index.html.erb +25 -21
  74. data/app/views/spree/admin/option_types/_option_value_fields.html.erb +8 -1
  75. data/app/views/spree/admin/option_types/edit.html.erb +3 -1
  76. data/app/views/spree/admin/orders/customer_details/_form.html.erb +13 -13
  77. data/app/views/spree/admin/orders/index.html.erb +23 -13
  78. data/app/views/spree/admin/payment_methods/_form.html.erb +7 -2
  79. data/app/views/spree/admin/payments/index.html.erb +3 -1
  80. data/app/views/spree/admin/prices/_master_variant_table.html.erb +3 -3
  81. data/app/views/spree/admin/prices/_table.html.erb +3 -3
  82. data/app/views/spree/admin/product_properties/_product_property_fields.html.erb +7 -2
  83. data/app/views/spree/admin/product_properties/index.html.erb +14 -2
  84. data/app/views/spree/admin/products/_form.html.erb +13 -2
  85. data/app/views/spree/admin/products/index.html.erb +2 -2
  86. data/app/views/spree/admin/promotion_codes/index.html.erb +1 -1
  87. data/app/views/spree/admin/promotions/_actions.html.erb +1 -1
  88. data/app/views/spree/admin/promotions/_activations_new.html.erb +1 -1
  89. data/app/views/spree/admin/promotions/_rules.html.erb +1 -1
  90. data/app/views/spree/admin/promotions/edit.html.erb +2 -2
  91. data/app/views/spree/admin/promotions/index.html.erb +12 -5
  92. data/app/views/spree/admin/return_authorizations/_form.html.erb +3 -10
  93. data/app/views/spree/admin/return_authorizations/index.html.erb +1 -1
  94. data/app/views/spree/admin/search/users.json.jbuilder +15 -1
  95. data/app/views/spree/admin/shared/_address.html.erb +6 -6
  96. data/app/views/spree/admin/shared/_address_form.html.erb +15 -8
  97. data/app/views/spree/admin/shared/_order_submenu.html.erb +4 -4
  98. data/app/views/spree/admin/shared/_payments_tabs.html.erb +1 -1
  99. data/app/views/spree/admin/shared/_settings_checkout_tabs.html.erb +5 -5
  100. data/app/views/spree/admin/shared/_settings_sub_menu.html.erb +6 -6
  101. data/app/views/spree/admin/shared/_shipping_tabs.html.erb +3 -3
  102. data/app/views/spree/admin/shared/_taxes_tabs.html.erb +2 -2
  103. data/app/views/spree/admin/shared/preference_fields/_encrypted_string.html.erb +12 -0
  104. data/app/views/spree/admin/shipping_methods/_form.html.erb +18 -0
  105. data/app/views/spree/admin/stock_items/_stock_management.html.erb +1 -1
  106. data/app/views/spree/admin/stock_locations/edit.html.erb +1 -1
  107. data/app/views/spree/admin/stock_locations/index.html.erb +3 -1
  108. data/app/views/spree/admin/stock_movements/index.html.erb +30 -1
  109. data/app/views/spree/admin/store_credits/index.html.erb +1 -1
  110. data/app/views/spree/admin/stores/_form.html.erb +6 -0
  111. data/app/views/spree/admin/style_guide/topics/tables/_building_tables.html.erb +27 -3
  112. data/app/views/spree/admin/tax_categories/_form.html.erb +1 -0
  113. data/app/views/spree/admin/users/_form.html.erb +2 -2
  114. data/app/views/spree/admin/users/_tabs.html.erb +1 -1
  115. data/app/views/spree/admin/users/edit.html.erb +4 -4
  116. data/app/views/spree/admin/users/items.html.erb +5 -3
  117. data/app/views/spree/admin/users/orders.html.erb +5 -3
  118. data/app/views/spree/admin/variants/_table_filter.html.erb +1 -1
  119. data/app/views/spree/admin/variants/index.html.erb +2 -2
  120. data/config/initializers/form_builder.rb +2 -2
  121. data/lib/spree/backend/engine.rb +0 -2
  122. data/lib/spree/backend_configuration.rb +14 -1
  123. data/solidus_backend.gemspec +4 -4
  124. metadata +24 -123
  125. data/app/assets/javascripts/spree/backend/returns/return_item_selection.js +0 -35
  126. data/script/rails +0 -10
  127. data/spec/controllers/spree/admin/base_controller_spec.rb +0 -26
  128. data/spec/controllers/spree/admin/cancellations_controller_spec.rb +0 -83
  129. data/spec/controllers/spree/admin/customer_returns_controller_spec.rb +0 -235
  130. data/spec/controllers/spree/admin/locale_controller_spec.rb +0 -45
  131. data/spec/controllers/spree/admin/missing_products_controller_spec.rb +0 -18
  132. data/spec/controllers/spree/admin/orders/customer_details_controller_spec.rb +0 -128
  133. data/spec/controllers/spree/admin/orders_controller_spec.rb +0 -408
  134. data/spec/controllers/spree/admin/payment_methods_controller_spec.rb +0 -95
  135. data/spec/controllers/spree/admin/payments_controller_spec.rb +0 -194
  136. data/spec/controllers/spree/admin/prices_controller_spec.rb +0 -45
  137. data/spec/controllers/spree/admin/product_properties_controller_spec.rb +0 -71
  138. data/spec/controllers/spree/admin/products_controller_spec.rb +0 -270
  139. data/spec/controllers/spree/admin/promotion_actions_controller_spec.rb +0 -23
  140. data/spec/controllers/spree/admin/promotion_codes_controller_spec.rb +0 -32
  141. data/spec/controllers/spree/admin/promotion_rules_controller_spec.rb +0 -36
  142. data/spec/controllers/spree/admin/promotions_controller_spec.rb +0 -122
  143. data/spec/controllers/spree/admin/refunds_controller_spec.rb +0 -35
  144. data/spec/controllers/spree/admin/reimbursements_controller_spec.rb +0 -137
  145. data/spec/controllers/spree/admin/resource_controller_spec.rb +0 -201
  146. data/spec/controllers/spree/admin/return_authorizations_controller_spec.rb +0 -291
  147. data/spec/controllers/spree/admin/return_items_controller_spec.rb +0 -29
  148. data/spec/controllers/spree/admin/root_controller_spec.rb +0 -43
  149. data/spec/controllers/spree/admin/search_controller_spec.rb +0 -106
  150. data/spec/controllers/spree/admin/shipping_methods_controller_spec.rb +0 -16
  151. data/spec/controllers/spree/admin/stock_items_controller_spec.rb +0 -52
  152. data/spec/controllers/spree/admin/stock_locations_controller_spec.rb +0 -44
  153. data/spec/controllers/spree/admin/store_credits_controller_spec.rb +0 -311
  154. data/spec/controllers/spree/admin/users_controller_spec.rb +0 -287
  155. data/spec/controllers/spree/admin/variants_controller_spec.rb +0 -71
  156. data/spec/features/admin/configuration/payment_methods_spec.rb +0 -176
  157. data/spec/features/admin/configuration/shipping_methods_spec.rb +0 -126
  158. data/spec/features/admin/configuration/stock_locations_spec.rb +0 -54
  159. data/spec/features/admin/configuration/store_spec.rb +0 -62
  160. data/spec/features/admin/configuration/tax_categories_spec.rb +0 -58
  161. data/spec/features/admin/configuration/tax_rates_spec.rb +0 -31
  162. data/spec/features/admin/configuration/taxonomies_spec.rb +0 -61
  163. data/spec/features/admin/configuration/zones_spec.rb +0 -41
  164. data/spec/features/admin/homepage_spec.rb +0 -86
  165. data/spec/features/admin/javascript_format_money_spec.rb +0 -22
  166. data/spec/features/admin/locale_spec.rb +0 -34
  167. data/spec/features/admin/orders/adjustments_promotions_spec.rb +0 -55
  168. data/spec/features/admin/orders/adjustments_spec.rb +0 -130
  169. data/spec/features/admin/orders/cancelling_and_resuming_spec.rb +0 -45
  170. data/spec/features/admin/orders/cancelling_inventory_spec.rb +0 -50
  171. data/spec/features/admin/orders/customer_details_spec.rb +0 -203
  172. data/spec/features/admin/orders/customer_returns_spec.rb +0 -41
  173. data/spec/features/admin/orders/line_items_spec.rb +0 -52
  174. data/spec/features/admin/orders/listing_spec.rb +0 -186
  175. data/spec/features/admin/orders/log_entries_spec.rb +0 -56
  176. data/spec/features/admin/orders/new_order_spec.rb +0 -379
  177. data/spec/features/admin/orders/new_refund_spec.rb +0 -35
  178. data/spec/features/admin/orders/order_details_spec.rb +0 -591
  179. data/spec/features/admin/orders/payments_spec.rb +0 -330
  180. data/spec/features/admin/orders/return_authorizations_spec.rb +0 -56
  181. data/spec/features/admin/orders/return_payment_state_spec.rb +0 -65
  182. data/spec/features/admin/orders/risk_analysis_spec.rb +0 -49
  183. data/spec/features/admin/orders/shipments_spec.rb +0 -145
  184. data/spec/features/admin/payments/store_credits_spec.rb +0 -23
  185. data/spec/features/admin/products/edit/images_spec.rb +0 -76
  186. data/spec/features/admin/products/edit/products_spec.rb +0 -92
  187. data/spec/features/admin/products/edit/taxons_spec.rb +0 -57
  188. data/spec/features/admin/products/edit/variants_spec.rb +0 -63
  189. data/spec/features/admin/products/option_types_spec.rb +0 -116
  190. data/spec/features/admin/products/pricing_spec.rb +0 -127
  191. data/spec/features/admin/products/products_spec.rb +0 -348
  192. data/spec/features/admin/products/properties_spec.rb +0 -141
  193. data/spec/features/admin/products/stock_management_spec.rb +0 -101
  194. data/spec/features/admin/products/variant_spec.rb +0 -89
  195. data/spec/features/admin/promotion_adjustments_spec.rb +0 -286
  196. data/spec/features/admin/promotions/option_value_rule_spec.rb +0 -90
  197. data/spec/features/admin/promotions/product_rule_spec.rb +0 -35
  198. data/spec/features/admin/promotions/promotion_categories_spec.rb +0 -83
  199. data/spec/features/admin/promotions/promotion_code_batches_spec.rb +0 -37
  200. data/spec/features/admin/promotions/promotion_code_spec.rb +0 -31
  201. data/spec/features/admin/promotions/promotion_spec.rb +0 -52
  202. data/spec/features/admin/promotions/tiered_calculator_spec.rb +0 -76
  203. data/spec/features/admin/promotions/user_rule_spec.rb +0 -42
  204. data/spec/features/admin/reimbursements_spec.rb +0 -18
  205. data/spec/features/admin/store_credits_spec.rb +0 -132
  206. data/spec/features/admin/stores_spec.rb +0 -37
  207. data/spec/features/admin/style_guide_spec.rb +0 -14
  208. data/spec/features/admin/taxons_spec.rb +0 -90
  209. data/spec/features/admin/users_spec.rb +0 -412
  210. data/spec/fixtures/files/ror_ringer.jpeg +0 -0
  211. data/spec/helpers/admin/base_helper_spec.rb +0 -49
  212. data/spec/helpers/admin/navigation_helper_spec.rb +0 -139
  213. data/spec/helpers/admin/stock_movements_helper_spec.rb +0 -29
  214. data/spec/helpers/admin/store_credit_events_helper_spec.rb +0 -97
  215. data/spec/helpers/promotion_rules_helper_spec.rb +0 -14
  216. data/spec/javascripts/fixtures/_boot.html.erb +0 -8
  217. data/spec/javascripts/fixtures/number_with_currency/with_currency_select.html.erb +0 -3
  218. data/spec/javascripts/fixtures/number_with_currency/without_select.html.erb +0 -3
  219. data/spec/javascripts/format_money_spec.js +0 -48
  220. data/spec/javascripts/spec_helper.js +0 -13
  221. data/spec/javascripts/support/show_errors.js +0 -8
  222. data/spec/javascripts/support/with_translations.js +0 -11
  223. data/spec/javascripts/translation_spec.js +0 -58
  224. data/spec/javascripts/views/number_with_currency_spec.js +0 -72
  225. data/spec/lib/spree/backend_configuration/menu_item_spec.rb +0 -17
  226. data/spec/lib/spree/backend_configuration_spec.rb +0 -22
  227. data/spec/spec_helper.rb +0 -123
  228. data/spec/support/appear_before_matcher.rb +0 -10
  229. data/spec/support/feature/base_feature_helper.rb +0 -17
  230. data/spec/support/feature/order_feature_helper.rb +0 -27
  231. data/spec/teaspoon_env.rb +0 -51
  232. data/spec/test_views/spree/admin/widgets/edit.html.erb +0 -1
  233. data/spec/test_views/spree/admin/widgets/new.html.erb +0 -1
  234. data/spec/views/spree/admin/shared/navigation_footer_spec.rb +0 -67
@@ -1,90 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- feature 'Promotion with option value rule' do
6
- stub_authorization!
7
-
8
- given(:variant) { create :variant }
9
- given!(:product) { variant.product }
10
- given!(:option_value) { variant.option_values.first }
11
-
12
- given(:promotion) { create :promotion }
13
-
14
- background do
15
- visit spree.edit_admin_promotion_path(promotion)
16
- end
17
-
18
- scenario "adding an option value rule", js: true do
19
- select "Option Value(s)", from: "Discount Rules"
20
- within("#rules_container") { click_button "Add" }
21
-
22
- within("#rules_container .promotion-block") do
23
- expect(page).to have_content("Product")
24
- expect(page).to have_content("Option Values")
25
-
26
- click_button "Add"
27
- end
28
-
29
- within('.promo-rule-option-value') do
30
- targetted_select2_search product.name, from: '.js-promo-rule-option-value-product-select'
31
- targetted_select2_search option_value.name, from: '.js-promo-rule-option-value-option-values-select'
32
- end
33
-
34
- within('#rules_container') { click_button "Update" }
35
-
36
- expect(page).to have_content("has been successfully updated")
37
-
38
- first_rule = promotion.rules.reload.first
39
- expect(first_rule.class).to eq Spree::Promotion::Rules::OptionValue
40
- expect(first_rule.preferred_eligible_values).to eq Hash[product.id => [option_value.id]]
41
- end
42
-
43
- context "with an attempted XSS" do
44
- let(:xss_string) { %(<script>throw("XSS")</script>) }
45
- before do
46
- option_value.update!(name: xss_string)
47
- end
48
- scenario "adding an option value rule", js: true do
49
- select "Option Value(s)", from: "Discount Rules"
50
- within("#rules_container") { click_button "Add" }
51
-
52
- within("#rules_container .promotion-block") do
53
- click_button "Add"
54
- end
55
-
56
- within('.promo-rule-option-value') do
57
- targetted_select2_search product.name, from: '.js-promo-rule-option-value-product-select'
58
- targetted_select2_search option_value.name, from: '.js-promo-rule-option-value-option-values-select'
59
- end
60
- end
61
- end
62
-
63
- context "with an existing option value rule" do
64
- given(:variant1) { create :variant }
65
- given(:variant2) { create :variant }
66
- background do
67
- rule = Spree::Promotion::Rules::OptionValue.new
68
- rule.promotion = promotion
69
- rule.preferred_eligible_values = Hash[
70
- variant1.product_id => variant1.option_values.pluck(:id),
71
- variant2.product_id => variant2.option_values.pluck(:id)
72
- ]
73
- rule.save!
74
-
75
- visit spree.edit_admin_promotion_path(promotion)
76
- end
77
-
78
- scenario "deleting a product", js: true do
79
- expect(page).to have_css('.promo-rule-option-value', count: 2)
80
- all('.promo-rule-option-value')[1].find('.remove').click
81
-
82
- within('#rules_container') { click_button "Update" }
83
-
84
- expect(page).to have_content("has been successfully updated")
85
-
86
- first_rule = promotion.rules.reload.first
87
- expect(first_rule.preferred_eligible_values).to eq Hash[variant1.product_id => variant1.option_values.pluck(:id)]
88
- end
89
- end
90
- end
@@ -1,35 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- feature 'Promotion with product rule', js: true do
6
- stub_authorization!
7
-
8
- given!(:product) { create :product, name: "BlamCo Mac & Cheese", sku: "PRODUCT_SKU" }
9
- given!(:variant) { create :variant, sku: "VARIANT_SKU", product: product }
10
- given!(:option_value) { variant.option_values.first }
11
-
12
- given(:promotion) { create :promotion }
13
-
14
- def add_promotion_rule_of_type(type)
15
- select type, from: "Discount Rules"
16
- within("#rules_container") { click_button "Add" }
17
- end
18
-
19
- background do
20
- visit spree.edit_admin_promotion_path(promotion)
21
- add_promotion_rule_of_type("Product(s)")
22
- end
23
-
24
- it "can select by product sku" do
25
- select2_search product.name, from: "Choose products", search: "PRODUCT_SKU"
26
- end
27
-
28
- it "can select by variant sku" do
29
- select2_search product.name, from: "Choose products", search: "VARIANT_SKU"
30
- end
31
-
32
- it "can select by product name" do
33
- select2_search product.name, from: "Choose products"
34
- end
35
- end
@@ -1,83 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe 'Promotion Categories', type: :feature do
4
- stub_authorization!
5
-
6
- context "index" do
7
- before do
8
- create(:promotion_category, name: 'name1', code: 'code1')
9
- create(:promotion_category, name: 'name2', code: 'code2')
10
- visit spree.admin_promotion_categories_path
11
- end
12
-
13
- context "listing promotion categories" do
14
- it "should list the existing promotion categories" do
15
- within_row(1) do
16
- expect(column_text(1)).to eq("name1")
17
- expect(column_text(2)).to eq("code1")
18
- end
19
-
20
- within_row(2) do
21
- expect(column_text(1)).to eq("name2")
22
- expect(column_text(2)).to eq("code2")
23
- end
24
- end
25
- end
26
- end
27
-
28
- context "create" do
29
- before do
30
- visit spree.admin_promotion_categories_path
31
- click_on "New Promotion Category"
32
- end
33
-
34
- it "should allow an admin to create a new promotion category" do
35
- fill_in "promotion_category_name", with: "promotion test"
36
- fill_in "promotion_category_code", with: "prtest"
37
- click_button "Create"
38
- expect(page).to have_content("successfully created!")
39
- end
40
-
41
- it "should not allow admin to create promotion category when invalid data" do
42
- fill_in "promotion_category_name", with: ""
43
- fill_in "promotion_category_code", with: "prtest"
44
- click_button "Create"
45
- expect(page).to have_content("Name can't be blank")
46
- end
47
- end
48
-
49
- context "edit" do
50
- before(:each) do
51
- create(:promotion_category, name: 'name1')
52
- visit spree.admin_promotion_categories_path
53
- within_row(1) { click_icon :edit }
54
- end
55
-
56
- it "should allow an admin to edit an existing promotion category" do
57
- fill_in "promotion_category_name", with: "name 99"
58
- click_button "Update"
59
- expect(page).to have_content("successfully updated!")
60
- expect(page).to have_content("name 99")
61
- end
62
-
63
- it "should show validation errors" do
64
- fill_in "promotion_category_name", with: ""
65
- click_button "Update"
66
- expect(page).to have_content("Name can't be blank")
67
- end
68
- end
69
-
70
- context "delete" do
71
- before(:each) do
72
- create(:promotion_category, name: 'name1')
73
- visit spree.admin_promotion_categories_path
74
- end
75
-
76
- it "should allow an admin to delete an existing promotion category", js: true do
77
- accept_alert do
78
- click_icon :trash
79
- end
80
- expect(page).to have_content("successfully removed!")
81
- end
82
- end
83
- end
@@ -1,37 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "spec_helper"
4
-
5
- feature "Promotion Code Batches", partial_double_verification: false do
6
- stub_authorization!
7
-
8
- describe "create" do
9
- let(:promotion) { create :promotion }
10
-
11
- before do
12
- user = double.as_null_object
13
- allow_any_instance_of(ActionView::Base).to receive(:spree_current_user) { user }
14
- visit spree.new_admin_promotion_promotion_code_batch_path(promotion)
15
- end
16
-
17
- def create_code_batch
18
- fill_in "Base code", with: "base"
19
- fill_in "Number of codes", with: 3
20
- click_button "Create"
21
- end
22
-
23
- it "creates a new promotion code batch and disables the submit button", :js do
24
- create_code_batch
25
-
26
- expect(page).to have_content "Promotion Code Batch has been successfully created!"
27
-
28
- visit spree.new_admin_promotion_promotion_code_batch_path(promotion)
29
-
30
- page.execute_script "$('form').submit(function(e) { e.preventDefault()})"
31
-
32
- create_code_batch
33
-
34
- expect(page).to have_button("Create", disabled: true)
35
- end
36
- end
37
- end
@@ -1,31 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "spec_helper"
4
-
5
- feature "Promotion Codes" do
6
- stub_authorization!
7
-
8
- describe "create" do
9
- let(:promotion) { create :promotion }
10
-
11
- before do
12
- visit spree.new_admin_promotion_promotion_code_path(promotion)
13
- end
14
-
15
- it "creates a new promotion code" do
16
- fill_in "Value", with: "XYZ"
17
- click_button "Create"
18
-
19
- expect(page).to have_content "Promotion Code has been successfully created!"
20
- end
21
-
22
- it "disables the button at submit", :js do
23
- page.execute_script "$('form').submit(function(e) { e.preventDefault()})"
24
-
25
- fill_in "Value", with: "XYZ"
26
- click_button "Create"
27
-
28
- expect(page).to have_button("Create", disabled: true)
29
- end
30
- end
31
- end
@@ -1,52 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- feature 'Promotions' do
6
- stub_authorization!
7
-
8
- context 'index' do
9
- context 'when no promotions' do
10
- scenario 'shows no promotions found message' do
11
- visit spree.admin_promotions_path
12
- expect(page).to have_content('No Promotions found.')
13
- end
14
- end
15
-
16
- context 'when promotion is active' do
17
- given!(:promotion) { create :promotion }
18
-
19
- scenario 'promotion status is active' do
20
- visit spree.admin_promotions_path
21
-
22
- within_row(1) do
23
- expect(column_text(3)).to eq("Active")
24
- end
25
- end
26
- end
27
-
28
- context 'when promotion is in the future' do
29
- given!(:promotion) { create :promotion, starts_at: 1.day.after }
30
-
31
- scenario 'promotion status is not started' do
32
- visit spree.admin_promotions_path
33
-
34
- within_row(1) do
35
- expect(column_text(3)).to eq("Not started")
36
- end
37
- end
38
- end
39
-
40
- context 'when promotion is in the past' do
41
- given!(:promotion) { create :promotion, expires_at: 1.day.ago }
42
-
43
- scenario 'promotion status is expired' do
44
- visit spree.admin_promotions_path
45
-
46
- within_row(1) do
47
- expect(column_text(3)).to eq("Expired")
48
- end
49
- end
50
- end
51
- end
52
- end
@@ -1,76 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- feature "Tiered Calculator Promotions" do
6
- stub_authorization!
7
-
8
- let(:promotion) { create :promotion }
9
-
10
- background do
11
- visit spree.edit_admin_promotion_path(promotion)
12
- end
13
-
14
- scenario "adding a tiered percent calculator", js: true do
15
- select "Create whole-order adjustment", from: "Adjustment type"
16
- within('#action_fields') { click_button "Add" }
17
-
18
- select "Tiered Percent", from: I18n.t('spree.admin.promotions.actions.calculator_label')
19
- within('#actions_container') { click_button "Update" }
20
-
21
- within("#actions_container .settings") do
22
- expect(page).to have_content("Base Percent")
23
- expect(page).to have_content("Tiers")
24
-
25
- page.find('a.button').click
26
- end
27
-
28
- fill_in "Base Percent", with: 5
29
-
30
- within(".tier") do
31
- find("input:last-child").set(100)
32
- find("input:first-child").set(10)
33
- end
34
-
35
- within('#actions_container') { click_button "Update" }
36
-
37
- first_action = promotion.actions.first
38
- expect(first_action.class).to eq Spree::Promotion::Actions::CreateAdjustment
39
-
40
- first_action_calculator = first_action.calculator
41
- expect(first_action_calculator.class).to eq Spree::Calculator::TieredPercent
42
- expect(first_action_calculator.preferred_base_percent).to eq 5
43
- expect(first_action_calculator.preferred_tiers).to eq(BigDecimal(100) => BigDecimal(10))
44
- end
45
-
46
- context "with an existing tiered flat rate calculator" do
47
- let(:promotion) { create :promotion, :with_order_adjustment }
48
-
49
- background do
50
- action = promotion.actions.first
51
-
52
- action.calculator = Spree::Calculator::TieredFlatRate.new
53
- action.calculator.preferred_base_amount = 5
54
- action.calculator.preferred_tiers = { 100 => 10, 200 => 15, 300 => 20 }
55
- action.calculator.save!
56
-
57
- visit spree.edit_admin_promotion_path(promotion)
58
- end
59
-
60
- scenario "deleting a tier", js: true do
61
- within(".tier:nth-child(2)") do
62
- find(".remove").click
63
- end
64
-
65
- within('#actions_container') { click_button "Update" }
66
-
67
- expect(page).to have_text('has been successfully updated!')
68
-
69
- calculator = promotion.actions.first.calculator
70
- expect(calculator.preferred_tiers).to eq({
71
- BigDecimal(100) => 10,
72
- BigDecimal(300) => 20
73
- })
74
- end
75
- end
76
- end
@@ -1,42 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- feature 'Promotion with user rule', js: true do
6
- stub_authorization!
7
-
8
- given(:promotion) { create :promotion }
9
-
10
- background do
11
- visit spree.edit_admin_promotion_path(promotion)
12
- end
13
-
14
- context "multiple users" do
15
- let!(:user) { create(:user, email: 'foo@example.com') }
16
- let!(:other_user) { create(:user, email: 'bar@example.com') }
17
-
18
- scenario "searching a user" do
19
- select "User", from: "Discount Rules"
20
- within("#rules_container") { click_button "Add" }
21
-
22
- select2_search "foo", from: "Choose users", select: false
23
-
24
- expect(page).to have_content('foo@example.com')
25
- expect(page).not_to have_content('bar@example.com')
26
- end
27
- end
28
-
29
- context "with an attempted XSS" do
30
- let(:xss_string) { %(<script>throw("XSS")</script>) }
31
- given!(:user) { create(:user, email: xss_string) }
32
-
33
- scenario "adding an option value rule" do
34
- select "User", from: "Discount Rules"
35
- within("#rules_container") { click_button "Add" }
36
-
37
- select2_search "<script>", from: "Choose users"
38
-
39
- expect(page).to have_content(xss_string)
40
- end
41
- end
42
- end