solidus_backend 2.10.1 → 2.11.2

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 (233) 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 +1 -1
  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/stores/_form.html.erb +6 -0
  110. data/app/views/spree/admin/style_guide/topics/tables/_building_tables.html.erb +27 -3
  111. data/app/views/spree/admin/tax_categories/_form.html.erb +1 -0
  112. data/app/views/spree/admin/users/_form.html.erb +2 -2
  113. data/app/views/spree/admin/users/_tabs.html.erb +1 -1
  114. data/app/views/spree/admin/users/edit.html.erb +4 -4
  115. data/app/views/spree/admin/users/items.html.erb +5 -3
  116. data/app/views/spree/admin/users/orders.html.erb +5 -3
  117. data/app/views/spree/admin/variants/_table_filter.html.erb +1 -1
  118. data/app/views/spree/admin/variants/index.html.erb +2 -2
  119. data/config/initializers/form_builder.rb +2 -2
  120. data/lib/spree/backend/engine.rb +0 -2
  121. data/lib/spree/backend_configuration.rb +14 -1
  122. data/solidus_backend.gemspec +4 -4
  123. metadata +24 -123
  124. data/app/assets/javascripts/spree/backend/returns/return_item_selection.js +0 -35
  125. data/script/rails +0 -10
  126. data/spec/controllers/spree/admin/base_controller_spec.rb +0 -26
  127. data/spec/controllers/spree/admin/cancellations_controller_spec.rb +0 -83
  128. data/spec/controllers/spree/admin/customer_returns_controller_spec.rb +0 -235
  129. data/spec/controllers/spree/admin/locale_controller_spec.rb +0 -45
  130. data/spec/controllers/spree/admin/missing_products_controller_spec.rb +0 -18
  131. data/spec/controllers/spree/admin/orders/customer_details_controller_spec.rb +0 -128
  132. data/spec/controllers/spree/admin/orders_controller_spec.rb +0 -408
  133. data/spec/controllers/spree/admin/payment_methods_controller_spec.rb +0 -95
  134. data/spec/controllers/spree/admin/payments_controller_spec.rb +0 -194
  135. data/spec/controllers/spree/admin/prices_controller_spec.rb +0 -45
  136. data/spec/controllers/spree/admin/product_properties_controller_spec.rb +0 -71
  137. data/spec/controllers/spree/admin/products_controller_spec.rb +0 -270
  138. data/spec/controllers/spree/admin/promotion_actions_controller_spec.rb +0 -23
  139. data/spec/controllers/spree/admin/promotion_codes_controller_spec.rb +0 -32
  140. data/spec/controllers/spree/admin/promotion_rules_controller_spec.rb +0 -36
  141. data/spec/controllers/spree/admin/promotions_controller_spec.rb +0 -122
  142. data/spec/controllers/spree/admin/refunds_controller_spec.rb +0 -35
  143. data/spec/controllers/spree/admin/reimbursements_controller_spec.rb +0 -137
  144. data/spec/controllers/spree/admin/resource_controller_spec.rb +0 -201
  145. data/spec/controllers/spree/admin/return_authorizations_controller_spec.rb +0 -291
  146. data/spec/controllers/spree/admin/return_items_controller_spec.rb +0 -29
  147. data/spec/controllers/spree/admin/root_controller_spec.rb +0 -43
  148. data/spec/controllers/spree/admin/search_controller_spec.rb +0 -106
  149. data/spec/controllers/spree/admin/shipping_methods_controller_spec.rb +0 -16
  150. data/spec/controllers/spree/admin/stock_items_controller_spec.rb +0 -52
  151. data/spec/controllers/spree/admin/stock_locations_controller_spec.rb +0 -44
  152. data/spec/controllers/spree/admin/store_credits_controller_spec.rb +0 -311
  153. data/spec/controllers/spree/admin/users_controller_spec.rb +0 -287
  154. data/spec/controllers/spree/admin/variants_controller_spec.rb +0 -71
  155. data/spec/features/admin/configuration/payment_methods_spec.rb +0 -176
  156. data/spec/features/admin/configuration/shipping_methods_spec.rb +0 -126
  157. data/spec/features/admin/configuration/stock_locations_spec.rb +0 -54
  158. data/spec/features/admin/configuration/store_spec.rb +0 -62
  159. data/spec/features/admin/configuration/tax_categories_spec.rb +0 -58
  160. data/spec/features/admin/configuration/tax_rates_spec.rb +0 -31
  161. data/spec/features/admin/configuration/taxonomies_spec.rb +0 -61
  162. data/spec/features/admin/configuration/zones_spec.rb +0 -41
  163. data/spec/features/admin/homepage_spec.rb +0 -86
  164. data/spec/features/admin/javascript_format_money_spec.rb +0 -22
  165. data/spec/features/admin/locale_spec.rb +0 -34
  166. data/spec/features/admin/orders/adjustments_promotions_spec.rb +0 -55
  167. data/spec/features/admin/orders/adjustments_spec.rb +0 -130
  168. data/spec/features/admin/orders/cancelling_and_resuming_spec.rb +0 -45
  169. data/spec/features/admin/orders/cancelling_inventory_spec.rb +0 -50
  170. data/spec/features/admin/orders/customer_details_spec.rb +0 -203
  171. data/spec/features/admin/orders/customer_returns_spec.rb +0 -41
  172. data/spec/features/admin/orders/line_items_spec.rb +0 -52
  173. data/spec/features/admin/orders/listing_spec.rb +0 -186
  174. data/spec/features/admin/orders/log_entries_spec.rb +0 -56
  175. data/spec/features/admin/orders/new_order_spec.rb +0 -379
  176. data/spec/features/admin/orders/new_refund_spec.rb +0 -35
  177. data/spec/features/admin/orders/order_details_spec.rb +0 -591
  178. data/spec/features/admin/orders/payments_spec.rb +0 -330
  179. data/spec/features/admin/orders/return_authorizations_spec.rb +0 -56
  180. data/spec/features/admin/orders/return_payment_state_spec.rb +0 -65
  181. data/spec/features/admin/orders/risk_analysis_spec.rb +0 -49
  182. data/spec/features/admin/orders/shipments_spec.rb +0 -145
  183. data/spec/features/admin/payments/store_credits_spec.rb +0 -23
  184. data/spec/features/admin/products/edit/images_spec.rb +0 -76
  185. data/spec/features/admin/products/edit/products_spec.rb +0 -92
  186. data/spec/features/admin/products/edit/taxons_spec.rb +0 -57
  187. data/spec/features/admin/products/edit/variants_spec.rb +0 -63
  188. data/spec/features/admin/products/option_types_spec.rb +0 -116
  189. data/spec/features/admin/products/pricing_spec.rb +0 -127
  190. data/spec/features/admin/products/products_spec.rb +0 -348
  191. data/spec/features/admin/products/properties_spec.rb +0 -141
  192. data/spec/features/admin/products/stock_management_spec.rb +0 -101
  193. data/spec/features/admin/products/variant_spec.rb +0 -89
  194. data/spec/features/admin/promotion_adjustments_spec.rb +0 -286
  195. data/spec/features/admin/promotions/option_value_rule_spec.rb +0 -90
  196. data/spec/features/admin/promotions/product_rule_spec.rb +0 -35
  197. data/spec/features/admin/promotions/promotion_categories_spec.rb +0 -83
  198. data/spec/features/admin/promotions/promotion_code_batches_spec.rb +0 -37
  199. data/spec/features/admin/promotions/promotion_code_spec.rb +0 -31
  200. data/spec/features/admin/promotions/promotion_spec.rb +0 -52
  201. data/spec/features/admin/promotions/tiered_calculator_spec.rb +0 -76
  202. data/spec/features/admin/promotions/user_rule_spec.rb +0 -42
  203. data/spec/features/admin/reimbursements_spec.rb +0 -18
  204. data/spec/features/admin/store_credits_spec.rb +0 -132
  205. data/spec/features/admin/stores_spec.rb +0 -37
  206. data/spec/features/admin/style_guide_spec.rb +0 -14
  207. data/spec/features/admin/taxons_spec.rb +0 -90
  208. data/spec/features/admin/users_spec.rb +0 -412
  209. data/spec/fixtures/files/ror_ringer.jpeg +0 -0
  210. data/spec/helpers/admin/base_helper_spec.rb +0 -49
  211. data/spec/helpers/admin/navigation_helper_spec.rb +0 -139
  212. data/spec/helpers/admin/stock_movements_helper_spec.rb +0 -29
  213. data/spec/helpers/admin/store_credit_events_helper_spec.rb +0 -97
  214. data/spec/helpers/promotion_rules_helper_spec.rb +0 -14
  215. data/spec/javascripts/fixtures/_boot.html.erb +0 -8
  216. data/spec/javascripts/fixtures/number_with_currency/with_currency_select.html.erb +0 -3
  217. data/spec/javascripts/fixtures/number_with_currency/without_select.html.erb +0 -3
  218. data/spec/javascripts/format_money_spec.js +0 -48
  219. data/spec/javascripts/spec_helper.js +0 -13
  220. data/spec/javascripts/support/show_errors.js +0 -8
  221. data/spec/javascripts/support/with_translations.js +0 -11
  222. data/spec/javascripts/translation_spec.js +0 -58
  223. data/spec/javascripts/views/number_with_currency_spec.js +0 -72
  224. data/spec/lib/spree/backend_configuration/menu_item_spec.rb +0 -17
  225. data/spec/lib/spree/backend_configuration_spec.rb +0 -22
  226. data/spec/spec_helper.rb +0 -123
  227. data/spec/support/appear_before_matcher.rb +0 -10
  228. data/spec/support/feature/base_feature_helper.rb +0 -17
  229. data/spec/support/feature/order_feature_helper.rb +0 -27
  230. data/spec/teaspoon_env.rb +0 -51
  231. data/spec/test_views/spree/admin/widgets/edit.html.erb +0 -1
  232. data/spec/test_views/spree/admin/widgets/new.html.erb +0 -1
  233. 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