spree_backend 3.0.5 → 3.0.6

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 (98) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1 -0
  3. data/Gemfile +6 -0
  4. data/Rakefile +29 -0
  5. data/app/assets/javascripts/spree/backend/admin.js +26 -0
  6. data/app/controllers/spree/admin/resource_controller.rb +4 -2
  7. data/app/helpers/spree/admin/navigation_helper.rb +10 -1
  8. data/app/views/spree/admin/images/new.html.erb +1 -1
  9. data/app/views/spree/admin/payments/_list.html.erb +1 -1
  10. data/app/views/spree/admin/products/_form.html.erb +1 -1
  11. data/app/views/spree/admin/shared/_index_table_options.html.erb +1 -11
  12. data/app/views/spree/admin/shared/sub_menu/_product.html.erb +1 -1
  13. data/script/rails +9 -0
  14. data/spec/controllers/spree/admin/base_controller_spec.rb +46 -0
  15. data/spec/controllers/spree/admin/customer_returns_controller_spec.rb +185 -0
  16. data/spec/controllers/spree/admin/general_settings_controller_spec.rb +41 -0
  17. data/spec/controllers/spree/admin/missing_products_controller_spec.rb +18 -0
  18. data/spec/controllers/spree/admin/orders/customer_details_controller_spec.rb +42 -0
  19. data/spec/controllers/spree/admin/orders_controller_spec.rb +247 -0
  20. data/spec/controllers/spree/admin/payment_methods_controller_spec.rb +49 -0
  21. data/spec/controllers/spree/admin/payments_controller_spec.rb +97 -0
  22. data/spec/controllers/spree/admin/products_controller_spec.rb +53 -0
  23. data/spec/controllers/spree/admin/promotion_actions_controller_spec.rb +21 -0
  24. data/spec/controllers/spree/admin/promotion_rules_controller_spec.rb +21 -0
  25. data/spec/controllers/spree/admin/promotions_controller_spec.rb +44 -0
  26. data/spec/controllers/spree/admin/refunds_controller_spec.rb +32 -0
  27. data/spec/controllers/spree/admin/reimbursements_controller_spec.rb +74 -0
  28. data/spec/controllers/spree/admin/reports_controller_spec.rb +42 -0
  29. data/spec/controllers/spree/admin/resource_controller_spec.rb +276 -0
  30. data/spec/controllers/spree/admin/return_authorizations_controller_spec.rb +225 -0
  31. data/spec/controllers/spree/admin/return_items_controller_spec.rb +27 -0
  32. data/spec/controllers/spree/admin/root_controller_spec.rb +35 -0
  33. data/spec/controllers/spree/admin/search_controller_spec.rb +56 -0
  34. data/spec/controllers/spree/admin/shipping_methods_controller_spec.rb +14 -0
  35. data/spec/controllers/spree/admin/stock_items_controller_spec.rb +19 -0
  36. data/spec/controllers/spree/admin/stock_locations_controller_spec.rb +41 -0
  37. data/spec/controllers/spree/admin/stock_transfers_controller_spec.rb +41 -0
  38. data/spec/controllers/spree/admin/tax_categories_controller_spec.rb +34 -0
  39. data/spec/controllers/spree/admin/users_controller_spec.rb +161 -0
  40. data/spec/controllers/spree/admin/variants_controller_spec.rb +32 -0
  41. data/spec/features/admin/configuration/analytics_tracker_spec.rb +46 -0
  42. data/spec/features/admin/configuration/countries_spec.rb +24 -0
  43. data/spec/features/admin/configuration/general_settings_spec.rb +43 -0
  44. data/spec/features/admin/configuration/payment_methods_spec.rb +63 -0
  45. data/spec/features/admin/configuration/roles_spec.rb +47 -0
  46. data/spec/features/admin/configuration/shipping_methods_spec.rb +62 -0
  47. data/spec/features/admin/configuration/states_spec.rb +68 -0
  48. data/spec/features/admin/configuration/stock_locations_spec.rb +48 -0
  49. data/spec/features/admin/configuration/tax_categories_spec.rb +56 -0
  50. data/spec/features/admin/configuration/tax_rates_spec.rb +18 -0
  51. data/spec/features/admin/configuration/zones_spec.rb +39 -0
  52. data/spec/features/admin/homepage_spec.rb +81 -0
  53. data/spec/features/admin/locale_spec.rb +31 -0
  54. data/spec/features/admin/orders/adjustments_promotions_spec.rb +53 -0
  55. data/spec/features/admin/orders/adjustments_spec.rb +129 -0
  56. data/spec/features/admin/orders/cancelling_and_resuming_spec.rb +47 -0
  57. data/spec/features/admin/orders/customer_details_spec.rb +182 -0
  58. data/spec/features/admin/orders/line_items_spec.rb +51 -0
  59. data/spec/features/admin/orders/listing_spec.rb +225 -0
  60. data/spec/features/admin/orders/log_entries_spec.rb +55 -0
  61. data/spec/features/admin/orders/new_order_spec.rb +161 -0
  62. data/spec/features/admin/orders/order_details_spec.rb +620 -0
  63. data/spec/features/admin/orders/payments_spec.rb +229 -0
  64. data/spec/features/admin/orders/risk_analysis_spec.rb +48 -0
  65. data/spec/features/admin/orders/shipments_spec.rb +64 -0
  66. data/spec/features/admin/orders/state_changes_spec.rb +21 -0
  67. data/spec/features/admin/products/edit/images_spec.rb +86 -0
  68. data/spec/features/admin/products/edit/products_spec.rb +64 -0
  69. data/spec/features/admin/products/edit/taxons_spec.rb +41 -0
  70. data/spec/features/admin/products/edit/variants_spec.rb +56 -0
  71. data/spec/features/admin/products/option_types_spec.rb +113 -0
  72. data/spec/features/admin/products/products_spec.rb +394 -0
  73. data/spec/features/admin/products/properties_spec.rb +140 -0
  74. data/spec/features/admin/products/prototypes_spec.rb +112 -0
  75. data/spec/features/admin/products/stock_management_spec.rb +123 -0
  76. data/spec/features/admin/products/taxonomies_spec.rb +52 -0
  77. data/spec/features/admin/products/variant_spec.rb +50 -0
  78. data/spec/features/admin/promotions/adjustments_spec.rb +255 -0
  79. data/spec/features/admin/promotions/option_value_rule_spec.rb +70 -0
  80. data/spec/features/admin/promotions/tiered_calculator_spec.rb +70 -0
  81. data/spec/features/admin/reports_spec.rb +61 -0
  82. data/spec/features/admin/stock_transfer_spec.rb +75 -0
  83. data/spec/features/admin/taxons_spec.rb +47 -0
  84. data/spec/features/admin/users_spec.rb +284 -0
  85. data/spec/helpers/admin/base_helper_spec.rb +24 -0
  86. data/spec/helpers/admin/navigation_helper_spec.rb +106 -0
  87. data/spec/helpers/admin/stock_movements_helper_spec.rb +30 -0
  88. data/spec/helpers/promotion_rules_helper_spec.rb +12 -0
  89. data/spec/models/spree/resource_spec.rb +48 -0
  90. data/spec/spec_helper.rb +133 -0
  91. data/spec/support/appear_before_matcher.rb +8 -0
  92. data/spec/support/ror_ringer.jpeg +0 -0
  93. data/spec/test_views/spree/admin/submodule/posts/edit.html.erb +1 -0
  94. data/spec/test_views/spree/admin/submodule/posts/new.html.erb +1 -0
  95. data/spec/test_views/spree/admin/widgets/edit.html.erb +1 -0
  96. data/spec/test_views/spree/admin/widgets/new.html.erb +1 -0
  97. data/spree_backend.gemspec +29 -0
  98. metadata +101 -14
@@ -0,0 +1,255 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Promotion Adjustments", type: :feature, js: true do
4
+ stub_authorization!
5
+
6
+ context "coupon promotions" do
7
+ before(:each) do
8
+ visit spree.admin_promotions_path
9
+ click_on "New Promotion"
10
+ end
11
+
12
+ it "should allow an admin to create a flat rate discount coupon promo" do
13
+ fill_in "Name", with: "Promotion"
14
+ fill_in "Code", with: "order"
15
+ click_button "Create"
16
+ expect(page).to have_content("Editing Promotion")
17
+
18
+ select2 "Item total", from: "Add rule of type"
19
+ within('#rule_fields') { click_button "Add" }
20
+
21
+ eventually_fill_in "promotion_promotion_rules_attributes_#{Spree::Promotion.count}_preferred_amount_min", :with => 30
22
+ eventually_fill_in "promotion_promotion_rules_attributes_#{Spree::Promotion.count}_preferred_amount_max", :with => 60
23
+ within('#rule_fields') { click_button "Update" }
24
+
25
+ select2 "Create whole-order adjustment", from: "Add action of type"
26
+ within('#action_fields') { click_button "Add" }
27
+ select2 "Flat Rate", from: "Calculator"
28
+ within('#actions_container') { click_button "Update" }
29
+
30
+ within('.calculator-fields') { fill_in "Amount", with: 5 }
31
+ within('#actions_container') { click_button "Update" }
32
+
33
+ promotion = Spree::Promotion.find_by_name("Promotion")
34
+ expect(promotion.code).to eq("order")
35
+
36
+ first_rule = promotion.rules.first
37
+ expect(first_rule.class).to eq(Spree::Promotion::Rules::ItemTotal)
38
+ expect(first_rule.preferred_amount_min).to eq(30)
39
+ expect(first_rule.preferred_amount_max).to eq(60)
40
+
41
+ first_action = promotion.actions.first
42
+ expect(first_action.class).to eq(Spree::Promotion::Actions::CreateAdjustment)
43
+ first_action_calculator = first_action.calculator
44
+ expect(first_action_calculator.class).to eq(Spree::Calculator::FlatRate)
45
+ expect(first_action_calculator.preferred_amount).to eq(5)
46
+ end
47
+
48
+ it "should allow an admin to create a single user coupon promo with flat rate discount" do
49
+ fill_in "Name", with: "Promotion"
50
+ fill_in "Usage Limit", with: "1"
51
+ fill_in "Code", with: "single_use"
52
+ click_button "Create"
53
+ expect(page).to have_content("Editing Promotion")
54
+
55
+ select2 "Create whole-order adjustment", from: "Add action of type"
56
+ within('#action_fields') { click_button "Add" }
57
+ select2 "Flat Rate", from: "Calculator"
58
+ within('#actions_container') { click_button "Update" }
59
+ within('#action_fields') { fill_in "Amount", with: "5" }
60
+ within('#actions_container') { click_button "Update" }
61
+
62
+ promotion = Spree::Promotion.find_by_name("Promotion")
63
+ expect(promotion.usage_limit).to eq(1)
64
+ expect(promotion.code).to eq("single_use")
65
+
66
+ first_action = promotion.actions.first
67
+ expect(first_action.class).to eq(Spree::Promotion::Actions::CreateAdjustment)
68
+ first_action_calculator = first_action.calculator
69
+ expect(first_action_calculator.class).to eq(Spree::Calculator::FlatRate)
70
+ expect(first_action_calculator.preferred_amount).to eq(5)
71
+ end
72
+
73
+ it "should allow an admin to create an automatic promo with flat percent discount" do
74
+ fill_in "Name", with: "Promotion"
75
+ click_button "Create"
76
+ expect(page).to have_content("Editing Promotion")
77
+
78
+ select2 "Item total", from: "Add rule of type"
79
+ within('#rule_fields') { click_button "Add" }
80
+
81
+ eventually_fill_in "promotion_promotion_rules_attributes_1_preferred_amount_min", with: 30
82
+ eventually_fill_in "promotion_promotion_rules_attributes_1_preferred_amount_max", with: 60
83
+ within('#rule_fields') { click_button "Update" }
84
+
85
+ select2 "Create whole-order adjustment", from: "Add action of type"
86
+ within('#action_fields') { click_button "Add" }
87
+ select2 "Flat Percent", from: "Calculator"
88
+ within('#actions_container') { click_button "Update" }
89
+ within('.calculator-fields') { fill_in "Flat Percent", with: "10" }
90
+ within('#actions_container') { click_button "Update" }
91
+
92
+ promotion = Spree::Promotion.find_by_name("Promotion")
93
+ expect(promotion.code).to be_blank
94
+
95
+ first_rule = promotion.rules.first
96
+ expect(first_rule.class).to eq(Spree::Promotion::Rules::ItemTotal)
97
+ expect(first_rule.preferred_amount_min).to eq(30)
98
+ expect(first_rule.preferred_amount_max).to eq(60)
99
+
100
+ first_action = promotion.actions.first
101
+ expect(first_action.class).to eq(Spree::Promotion::Actions::CreateAdjustment)
102
+ first_action_calculator = first_action.calculator
103
+ expect(first_action_calculator.class).to eq(Spree::Calculator::FlatPercentItemTotal)
104
+ expect(first_action_calculator.preferred_flat_percent).to eq(10)
105
+ end
106
+
107
+ it "should allow an admin to create an product promo with percent per item discount" do
108
+ create(:product, name: "RoR Mug")
109
+
110
+ fill_in "Name", with: "Promotion"
111
+ click_button "Create"
112
+ expect(page).to have_content("Editing Promotion")
113
+
114
+ select2 "Product(s)", from: "Add rule of type"
115
+ within("#rule_fields") { click_button "Add" }
116
+ select2_search "RoR Mug", from: "Choose products"
117
+ within('#rule_fields') { click_button "Update" }
118
+
119
+ select2 "Create per-line-item adjustment", from: "Add action of type"
120
+ within('#action_fields') { click_button "Add" }
121
+ select2 "Percent Per Item", from: "Calculator"
122
+ within('#actions_container') { click_button "Update" }
123
+ within('.calculator-fields') { fill_in "Percent", with: "10" }
124
+ within('#actions_container') { click_button "Update" }
125
+
126
+ promotion = Spree::Promotion.find_by_name("Promotion")
127
+ expect(promotion.code).to be_blank
128
+
129
+ first_rule = promotion.rules.first
130
+ expect(first_rule.class).to eq(Spree::Promotion::Rules::Product)
131
+ expect(first_rule.products.map(&:name)).to include("RoR Mug")
132
+
133
+ first_action = promotion.actions.first
134
+ expect(first_action.class).to eq(Spree::Promotion::Actions::CreateItemAdjustments)
135
+ first_action_calculator = first_action.calculator
136
+ expect(first_action_calculator.class).to eq(Spree::Calculator::PercentOnLineItem)
137
+ expect(first_action_calculator.preferred_percent).to eq(10)
138
+ end
139
+
140
+ xit "should allow an admin to create an automatic promotion with free shipping (no code)" do
141
+ fill_in "Name", with: "Promotion"
142
+ click_button "Create"
143
+ expect(page).to have_content("Editing Promotion")
144
+
145
+ select2 "Item total", from: "Add rule of type"
146
+ within('#rule_fields') { click_button "Add" }
147
+ eventually_fill_in "promotion_promotion_rules_attributes_1_preferred_amount", with: "30"
148
+ within('#rule_fields') { click_button "Update" }
149
+
150
+ select2 "Create whole-order adjustment", from: "Add action of type"
151
+ within('#action_fields') { click_button "Add" }
152
+ select2 "Free Shipping", from: "Calculator"
153
+ within('#actions_container') { click_button "Update" }
154
+
155
+ promotion = Spree::Promotion.find_by_name("Promotion")
156
+ expect(promotion.code).to be_blank
157
+
158
+ first_rule = promotion.rules.first
159
+ expect(first_rule.class).to eq(Spree::Promotion::Rules::ItemTotal)
160
+
161
+ first_action = promotion.actions.first
162
+ expect(first_action.class).to eq(Spree::Promotion::Actions::CreateAdjustment)
163
+ first_action_calculator = first_action.calculator
164
+ expect(first_action_calculator.class).to eq(Spree::Calculator::FreeShipping)
165
+ end
166
+
167
+ it "should allow an admin to create an automatic promo requiring a landing page to be visited" do
168
+ fill_in "Name", with: "Promotion"
169
+ fill_in "Path", with: "content/cvv"
170
+ click_button "Create"
171
+ expect(page).to have_content("Editing Promotion")
172
+
173
+ select2 "Create whole-order adjustment", from: "Add action of type"
174
+ within('#action_fields') { click_button "Add" }
175
+ select2 "Flat Rate", from: "Calculator"
176
+ within('#actions_container') { click_button "Update" }
177
+ within('.calculator-fields') { fill_in "Amount", with: "4" }
178
+ within('#actions_container') { click_button "Update" }
179
+
180
+ promotion = Spree::Promotion.find_by_name("Promotion")
181
+ expect(promotion.path).to eq("content/cvv")
182
+ expect(promotion.code).to be_blank
183
+ expect(promotion.rules).to be_blank
184
+
185
+ first_action = promotion.actions.first
186
+ expect(first_action.class).to eq(Spree::Promotion::Actions::CreateAdjustment)
187
+ first_action_calculator = first_action.calculator
188
+ expect(first_action_calculator.class).to eq(Spree::Calculator::FlatRate)
189
+ expect(first_action_calculator.preferred_amount).to eq(4)
190
+ end
191
+
192
+ it "should allow an admin to create a promotion that adds a 'free' item to the cart" do
193
+ create(:product, name: "RoR Mug")
194
+ fill_in "Name", with: "Promotion"
195
+ fill_in "Code", with: "complex"
196
+ click_button "Create"
197
+ expect(page).to have_content("Editing Promotion")
198
+
199
+ select2 "Create line items", from: "Add action of type"
200
+
201
+ within('#action_fields') { click_button "Add" }
202
+
203
+ page.find('.create_line_items .select2-choice').click
204
+ page.find('.select2-input').set('RoR Mug')
205
+ page.find('.select2-highlighted').click
206
+
207
+ within('#actions_container') { click_button "Update" }
208
+
209
+ select2 "Create whole-order adjustment", from: "Add action of type"
210
+ within('#new_promotion_action_form') { click_button "Add" }
211
+ select2 "Flat Rate", from: "Calculator"
212
+ within('#actions_container') { click_button "Update" }
213
+ within('.create_adjustment .calculator-fields') { fill_in "Amount", with: "40.00" }
214
+ within('#actions_container') { click_button "Update" }
215
+
216
+ promotion = Spree::Promotion.find_by_name("Promotion")
217
+ expect(promotion.code).to eq("complex")
218
+
219
+ first_action = promotion.actions.first
220
+ expect(first_action.class).to eq(Spree::Promotion::Actions::CreateLineItems)
221
+ line_item = expect(first_action.promotion_action_line_items).not_to be_empty
222
+ end
223
+
224
+ it "ceasing to be eligible for a promotion with item total rule then becoming eligible again" do
225
+ fill_in "Name", with: "Promotion"
226
+ click_button "Create"
227
+ expect(page).to have_content("Editing Promotion")
228
+
229
+ select2 "Item total", from: "Add rule of type"
230
+ within('#rule_fields') { click_button "Add" }
231
+ eventually_fill_in "promotion_promotion_rules_attributes_1_preferred_amount_min", with: "50"
232
+ eventually_fill_in "promotion_promotion_rules_attributes_1_preferred_amount_max", with: "150"
233
+ within('#rule_fields') { click_button "Update" }
234
+
235
+ select2 "Create whole-order adjustment", from: "Add action of type"
236
+ within('#action_fields') { click_button "Add" }
237
+ select2 "Flat Rate", from: "Calculator"
238
+ within('#actions_container') { click_button "Update" }
239
+ within('.calculator-fields') { fill_in "Amount", with: "5" }
240
+ within('#actions_container') { click_button "Update" }
241
+
242
+ promotion = Spree::Promotion.find_by_name("Promotion")
243
+
244
+ first_rule = promotion.rules.first
245
+ expect(first_rule.class).to eq(Spree::Promotion::Rules::ItemTotal)
246
+ expect(first_rule.preferred_amount_min).to eq(50)
247
+ expect(first_rule.preferred_amount_max).to eq(150)
248
+
249
+ first_action = promotion.actions.first
250
+ expect(first_action.class).to eq(Spree::Promotion::Actions::CreateAdjustment)
251
+ expect(first_action.calculator.class).to eq(Spree::Calculator::FlatRate)
252
+ expect(first_action.calculator.preferred_amount).to eq(5)
253
+ end
254
+ end
255
+ end
@@ -0,0 +1,70 @@
1
+ require 'spec_helper'
2
+
3
+ feature 'Promotion with option value rule' do
4
+ stub_authorization!
5
+
6
+ given(:variant) { create :variant }
7
+ given!(:product) { variant.product }
8
+ given!(:option_value) { variant.option_values.first }
9
+
10
+ given(:promotion) { create :promotion }
11
+
12
+ background do
13
+ visit spree.edit_admin_promotion_path(promotion)
14
+ end
15
+
16
+ scenario "adding an option value rule", js: true do
17
+ select2 "Option Value(s)", from: "Add rule of type"
18
+ within("#rule_fields") { click_button "Add" }
19
+
20
+ within("#rules .promotion-block") do
21
+ click_button "Add"
22
+
23
+ expect(page.body).to have_content("Product")
24
+ expect(page.body).to have_content("Option Values")
25
+ end
26
+
27
+ within('.promo-rule-option-value') do
28
+ targetted_select2_search product.name, from: '.js-promo-rule-option-value-product-select'
29
+ targetted_select2_search(
30
+ option_value.name,
31
+ from: '.js-promo-rule-option-value-option-values-select'
32
+ )
33
+ end
34
+
35
+ within('#rules_container') { click_button "Update" }
36
+
37
+ first_rule = promotion.rules(true).first
38
+ expect(first_rule.class).to eq Spree::Promotion::Rules::OptionValue
39
+ expect(first_rule.preferred_eligible_values).to eq Hash[product.id => [option_value.id]]
40
+ end
41
+
42
+ context "with an existing option value rule" do
43
+ given(:variant1) { create :variant }
44
+ given(:variant2) { create :variant }
45
+ background do
46
+ rule = Spree::Promotion::Rules::OptionValue.new
47
+ rule.promotion = promotion
48
+ rule.preferred_eligible_values = Hash[
49
+ variant1.product_id => variant1.option_values.pluck(:id),
50
+ variant2.product_id => variant2.option_values.pluck(:id)
51
+ ]
52
+ rule.save!
53
+
54
+ visit spree.edit_admin_promotion_path(promotion)
55
+ end
56
+
57
+ scenario "deleting a product", js: true do
58
+ within(".promo-rule-option-value:last-child") do
59
+ find(".delete").click
60
+ end
61
+
62
+ within('#rule_fields') { click_button "Update" }
63
+
64
+ first_rule = promotion.rules(true).first
65
+ expect(first_rule.preferred_eligible_values).to eq(
66
+ Hash[variant1.product_id => variant1.option_values.pluck(:id)]
67
+ )
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,70 @@
1
+ require 'spec_helper'
2
+
3
+ feature "Tiered Calculator Promotions" do
4
+ stub_authorization!
5
+
6
+ let(:promotion) { create :promotion }
7
+
8
+ background do
9
+ visit spree.edit_admin_promotion_path(promotion)
10
+ end
11
+
12
+ scenario "adding a tiered percent calculator", js: true do
13
+ select2 "Create whole-order adjustment", from: "Add action of type"
14
+ within('#action_fields') { click_button "Add" }
15
+
16
+ select2 "Tiered Percent", from: "Calculator"
17
+ within('#actions_container') { click_button "Update" }
18
+
19
+ within("#actions_container .settings") do
20
+ expect(page.body).to have_content("Base Percent")
21
+ expect(page.body).to have_content("Tiers")
22
+
23
+ click_button "Add"
24
+ end
25
+
26
+ fill_in "Base Percent", with: 5
27
+
28
+ within(".tier") do
29
+ find(".js-base-input").set(100)
30
+ page.execute_script("$('.js-base-input').change();")
31
+ find(".js-value-input").set(10)
32
+ page.execute_script("$('.js-value-input').change();")
33
+ end
34
+ within('#actions_container') { click_button "Update" }
35
+
36
+ first_action = promotion.actions.first
37
+ expect(first_action.class).to eq Spree::Promotion::Actions::CreateAdjustment
38
+
39
+ first_action_calculator = first_action.calculator
40
+ expect(first_action_calculator.class).to eq Spree::Calculator::TieredPercent
41
+ expect(first_action_calculator.preferred_base_percent).to eq 5
42
+ expect(first_action_calculator.preferred_tiers).to eq Hash[100.0 => 10.0]
43
+ end
44
+
45
+ context "with an existing tiered flat rate calculator" do
46
+ let(:promotion) { create :promotion, :with_order_adjustment }
47
+
48
+ background do
49
+ action = promotion.actions.first
50
+
51
+ action.calculator = Spree::Calculator::TieredFlatRate.new
52
+ action.calculator.preferred_base_amount = 5
53
+ action.calculator.preferred_tiers = Hash[100 => 10, 200 => 15, 300 => 20]
54
+ action.calculator.save!
55
+
56
+ visit spree.edit_admin_promotion_path(promotion)
57
+ end
58
+
59
+ scenario "deleting a tier", js: true do
60
+ within(".tier:nth-child(2)") do
61
+ click_icon :delete
62
+ end
63
+
64
+ within('#actions_container') { click_button "Update" }
65
+
66
+ calculator = promotion.actions.first.calculator
67
+ expect(calculator.preferred_tiers).to eq Hash[100.0 => 10.0, 300.0 => 20.0]
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,61 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Reports", :type => :feature do
4
+ stub_authorization!
5
+
6
+ context "visiting the admin reports page" do
7
+ it "should have the right content" do
8
+ visit spree.admin_path
9
+ click_link "Reports"
10
+ click_link "Sales Total"
11
+
12
+ expect(page).to have_content("Sales Totals")
13
+ expect(page).to have_content("Item Total")
14
+ expect(page).to have_content("Adjustment Total")
15
+ expect(page).to have_content("Sales Total")
16
+ end
17
+ end
18
+
19
+ context "searching the admin reports page" do
20
+ before do
21
+ order = create(:order)
22
+ order.update_columns({:adjustment_total => 100})
23
+ order.completed_at = Time.now
24
+ order.save!
25
+
26
+ order = create(:order)
27
+ order.update_columns({:adjustment_total => 200})
28
+ order.completed_at = Time.now
29
+ order.save!
30
+
31
+ #incomplete order
32
+ order = create(:order)
33
+ order.update_columns({:adjustment_total => 50})
34
+ order.save!
35
+
36
+ order = create(:order)
37
+ order.update_columns({:adjustment_total => 200})
38
+ order.completed_at = 3.years.ago
39
+ order.created_at = 3.years.ago
40
+ order.save!
41
+
42
+ order = create(:order)
43
+ order.update_columns({:adjustment_total => 200})
44
+ order.completed_at = 3.years.from_now
45
+ order.created_at = 3.years.from_now
46
+ order.save!
47
+ end
48
+
49
+ it "should allow me to search for reports" do
50
+ visit spree.admin_path
51
+ click_link "Reports"
52
+ click_link "Sales Total"
53
+
54
+ fill_in "q_completed_at_gt", :with => 1.week.ago
55
+ fill_in "q_completed_at_lt", :with => 1.week.from_now
56
+ click_button "Search"
57
+
58
+ expect(page).to have_content("$300.00")
59
+ end
60
+ end
61
+ end