solidus_backend 1.0.7 → 1.1.0.beta1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of solidus_backend might be problematic. Click here for more details.

Files changed (201) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/spree/backend.js +3 -0
  3. data/app/assets/javascripts/spree/backend/admin.js.erb +17 -24
  4. data/app/assets/javascripts/spree/backend/checkouts/edit.js +3 -5
  5. data/app/assets/javascripts/spree/backend/flash.coffee +17 -0
  6. data/app/assets/javascripts/spree/backend/handlebars_extensions.coffee +9 -0
  7. data/app/assets/javascripts/spree/backend/option_type_autocomplete.js.erb +6 -6
  8. data/app/assets/javascripts/spree/backend/option_value_picker.js +43 -0
  9. data/app/assets/javascripts/spree/backend/product_picker.js +10 -8
  10. data/app/assets/javascripts/spree/backend/promotions.js.coffee +101 -0
  11. data/app/assets/javascripts/spree/backend/routes.js +2 -1
  12. data/app/assets/javascripts/spree/backend/shipments.js.erb +1 -1
  13. data/app/assets/javascripts/spree/backend/stock_management/index_add_forms.coffee +1 -1
  14. data/app/assets/javascripts/spree/backend/stock_movement.js.coffee +2 -2
  15. data/app/assets/javascripts/spree/backend/stock_transfers/variant_form.coffee +1 -1
  16. data/app/assets/javascripts/spree/backend/taxon_autocomplete.js.erb +6 -6
  17. data/app/assets/javascripts/spree/backend/taxons.js.coffee +6 -7
  18. data/app/assets/javascripts/spree/backend/templates/orders/customer_details/autocomplete.hbs +17 -0
  19. data/app/assets/javascripts/spree/backend/templates/products/sortable.hbs +5 -0
  20. data/app/assets/javascripts/spree/backend/templates/promotions/calculators/fields/tiered_flat_rate.hbs +17 -0
  21. data/app/assets/javascripts/spree/backend/templates/promotions/calculators/fields/tiered_percent.hbs +17 -0
  22. data/app/assets/javascripts/spree/backend/templates/promotions/rules/option_values.hbs +10 -0
  23. data/app/assets/javascripts/spree/backend/templates/promotions/rules/option_values_select.hbs +1 -0
  24. data/app/assets/javascripts/spree/backend/templates/stock_items/stock_location_stock_item.hbs +19 -0
  25. data/app/assets/javascripts/spree/backend/templates/stock_transfers/transfer_item.hbs.erb +52 -0
  26. data/app/assets/javascripts/spree/backend/templates/variants/autocomplete.hbs.erb +23 -0
  27. data/app/assets/javascripts/spree/backend/templates/variants/autocomplete_stock.hbs +51 -0
  28. data/app/assets/javascripts/spree/backend/templates/variants/line_items_autocomplete_stock.hbs +67 -0
  29. data/app/assets/javascripts/spree/backend/templates/variants/split.hbs +27 -0
  30. data/app/assets/javascripts/spree/backend/user_picker.js +8 -8
  31. data/app/assets/javascripts/spree/backend/variant_autocomplete.js.coffee.erb +6 -8
  32. data/app/assets/stylesheets/spree/backend/components/_messages.scss +6 -3
  33. data/app/assets/stylesheets/spree/backend/sections/_promotions.scss +16 -0
  34. data/app/controllers/spree/admin/base_controller.rb +1 -1
  35. data/app/controllers/spree/admin/option_types_controller.rb +1 -3
  36. data/app/controllers/spree/admin/orders/customer_details_controller.rb +1 -1
  37. data/app/controllers/spree/admin/orders_controller.rb +6 -11
  38. data/app/controllers/spree/admin/product_properties_controller.rb +9 -0
  39. data/app/controllers/spree/admin/products_controller.rb +20 -5
  40. data/app/controllers/spree/admin/promotions_controller.rb +2 -1
  41. data/app/controllers/spree/admin/reimbursements_controller.rb +20 -0
  42. data/app/controllers/spree/admin/resource_controller.rb +1 -1
  43. data/app/controllers/spree/admin/return_authorizations_controller.rb +5 -0
  44. data/app/controllers/spree/admin/root_controller.rb +1 -1
  45. data/app/controllers/spree/admin/search_controller.rb +2 -4
  46. data/app/controllers/spree/admin/states_controller.rb +1 -1
  47. data/app/controllers/spree/admin/stock_items_controller.rb +1 -1
  48. data/app/controllers/spree/admin/stock_transfers_controller.rb +3 -14
  49. data/app/controllers/spree/admin/users_controller.rb +2 -3
  50. data/app/controllers/spree/admin/variant_property_rule_values_controller.rb +7 -0
  51. data/app/controllers/spree/admin/variants_controller.rb +1 -1
  52. data/app/controllers/spree/admin/zones_controller.rb +1 -1
  53. data/app/helpers/spree/admin/adjustments_helper.rb +4 -9
  54. data/app/helpers/spree/admin/base_helper.rb +7 -6
  55. data/app/helpers/spree/admin/navigation_helper.rb +8 -2
  56. data/app/helpers/spree/admin/orders_helper.rb +1 -1
  57. data/app/helpers/spree/admin/products_helper.rb +2 -4
  58. data/app/helpers/spree/admin/stock_movements_helper.rb +3 -3
  59. data/app/views/spree/admin/adjustments/_adjustment.html.erb +1 -1
  60. data/app/views/spree/admin/orders/_add_line_item.html.erb +0 -5
  61. data/app/views/spree/admin/orders/_add_product.html.erb +0 -3
  62. data/app/views/spree/admin/orders/_carton.html.erb +0 -1
  63. data/app/views/spree/admin/orders/_shipment.html.erb +0 -1
  64. data/app/views/spree/admin/orders/confirm/_shipment.html.erb +0 -1
  65. data/app/views/spree/admin/orders/customer_details/_form.html.erb +1 -1
  66. data/app/views/spree/admin/orders/customer_details/edit.html.erb +0 -1
  67. data/app/views/spree/admin/orders/index.html.erb +1 -2
  68. data/app/views/spree/admin/payment_methods/_form.html.erb +0 -4
  69. data/app/views/spree/admin/payment_methods/index.html.erb +0 -2
  70. data/app/views/spree/admin/payments/source_views/_gateway.html.erb +3 -0
  71. data/app/views/spree/admin/product_properties/index.html.erb +52 -2
  72. data/app/views/spree/admin/promotions/_actions.html.erb +14 -10
  73. data/app/views/spree/admin/promotions/_promotion_action.html.erb +5 -3
  74. data/app/views/spree/admin/promotions/_promotion_rule.html.erb +5 -3
  75. data/app/views/spree/admin/promotions/_rules.html.erb +18 -14
  76. data/app/views/spree/admin/promotions/calculators/tiered_flat_rate/_fields.html.erb +5 -28
  77. data/app/views/spree/admin/promotions/calculators/tiered_percent/_fields.html.erb +5 -27
  78. data/app/views/spree/admin/promotions/edit.html.erb +6 -4
  79. data/app/views/spree/admin/promotions/index.html.erb +1 -1
  80. data/app/views/spree/admin/promotions/rules/_option_value.html.erb +13 -0
  81. data/app/views/spree/admin/refund_reasons/index.html.erb +2 -2
  82. data/app/views/spree/admin/reimbursements/edit.html.erb +1 -1
  83. data/app/views/spree/admin/return_authorizations/_form.html.erb +2 -2
  84. data/app/views/spree/admin/search/users.rabl +1 -1
  85. data/app/views/spree/admin/shared/_order_summary.html.erb +6 -0
  86. data/app/views/spree/admin/shared/_tabs.html.erb +2 -2
  87. data/app/views/spree/admin/shared/_translations.html.erb +16 -46
  88. data/app/views/spree/admin/shared/named_types/_index.html.erb +2 -2
  89. data/app/views/spree/admin/stock_items/_stock_management.html.erb +0 -2
  90. data/app/views/spree/admin/stock_movements/_form.html.erb +0 -2
  91. data/app/views/spree/admin/stock_transfers/edit.html.erb +0 -3
  92. data/app/views/spree/admin/stock_transfers/receive.html.erb +0 -2
  93. data/app/views/spree/admin/stock_transfers/show.html.erb +1 -1
  94. data/app/views/spree/admin/taxons/index.html.erb +0 -1
  95. data/app/views/spree/admin/users/_addresses_form.html.erb +4 -4
  96. data/app/views/spree/layouts/admin.html.erb +11 -9
  97. data/config/routes.rb +5 -0
  98. data/lib/spree/backend.rb +1 -2
  99. metadata +41 -139
  100. data/CHANGELOG.md +0 -1
  101. data/Gemfile +0 -6
  102. data/Rakefile +0 -15
  103. data/app/assets/javascripts/spree/backend/handlebar_extensions.js +0 -9
  104. data/app/assets/javascripts/spree/backend/promotions.js +0 -73
  105. data/app/assets/javascripts/spree/backend/stock_transfer.js.coffee +0 -196
  106. data/app/views/spree/admin/products/_autocomplete.js.erb +0 -14
  107. data/app/views/spree/admin/products/_sortable.html +0 -7
  108. data/app/views/spree/admin/stock_items/_stock_location_stock_item_template.html.erb +0 -21
  109. data/app/views/spree/admin/stock_transfers/_transfer_item_template.html.erb +0 -54
  110. data/app/views/spree/admin/variants/_autocomplete.js.erb +0 -25
  111. data/app/views/spree/admin/variants/_autocomplete_line_items_stock.js.erb +0 -69
  112. data/app/views/spree/admin/variants/_autocomplete_stock.js.erb +0 -53
  113. data/app/views/spree/admin/variants/_split.js.erb +0 -29
  114. data/script/rails +0 -9
  115. data/solidus_backend.gemspec +0 -30
  116. data/spec/controllers/spree/admin/base_controller_spec.rb +0 -24
  117. data/spec/controllers/spree/admin/cancellations_controller_spec.rb +0 -77
  118. data/spec/controllers/spree/admin/customer_returns_controller_spec.rb +0 -234
  119. data/spec/controllers/spree/admin/general_settings_controller_spec.rb +0 -41
  120. data/spec/controllers/spree/admin/missing_products_controller_spec.rb +0 -18
  121. data/spec/controllers/spree/admin/orders/customer_details_controller_spec.rb +0 -80
  122. data/spec/controllers/spree/admin/orders_controller_spec.rb +0 -472
  123. data/spec/controllers/spree/admin/payment_methods_controller_spec.rb +0 -49
  124. data/spec/controllers/spree/admin/payments_controller_spec.rb +0 -175
  125. data/spec/controllers/spree/admin/products_controller_spec.rb +0 -45
  126. data/spec/controllers/spree/admin/promotion_actions_controller_spec.rb +0 -21
  127. data/spec/controllers/spree/admin/promotion_codes_controller_spec.rb +0 -18
  128. data/spec/controllers/spree/admin/promotion_rules_controller_spec.rb +0 -21
  129. data/spec/controllers/spree/admin/promotions_controller_spec.rb +0 -122
  130. data/spec/controllers/spree/admin/refunds_controller_spec.rb +0 -32
  131. data/spec/controllers/spree/admin/reimbursements_controller_spec.rb +0 -75
  132. data/spec/controllers/spree/admin/reports_controller_spec.rb +0 -134
  133. data/spec/controllers/spree/admin/resource_controller_spec.rb +0 -166
  134. data/spec/controllers/spree/admin/return_authorizations_controller_spec.rb +0 -226
  135. data/spec/controllers/spree/admin/return_items_controller_spec.rb +0 -27
  136. data/spec/controllers/spree/admin/root_controller_spec.rb +0 -41
  137. data/spec/controllers/spree/admin/search_controller_spec.rb +0 -104
  138. data/spec/controllers/spree/admin/shipping_methods_controller_spec.rb +0 -14
  139. data/spec/controllers/spree/admin/stock_items_controller_spec.rb +0 -50
  140. data/spec/controllers/spree/admin/stock_locations_controller_spec.rb +0 -41
  141. data/spec/controllers/spree/admin/stock_transfers_controller_spec.rb +0 -331
  142. data/spec/controllers/spree/admin/store_credits_controller_spec.rb +0 -309
  143. data/spec/controllers/spree/admin/users_controller_spec.rb +0 -236
  144. data/spec/controllers/spree/admin/variants_controller_spec.rb +0 -32
  145. data/spec/features/admin/configuration/analytics_tracker_spec.rb +0 -54
  146. data/spec/features/admin/configuration/countries_spec.rb +0 -22
  147. data/spec/features/admin/configuration/general_settings_spec.rb +0 -45
  148. data/spec/features/admin/configuration/payment_methods_spec.rb +0 -125
  149. data/spec/features/admin/configuration/shipping_methods_spec.rb +0 -64
  150. data/spec/features/admin/configuration/states_spec.rb +0 -64
  151. data/spec/features/admin/configuration/stock_locations_spec.rb +0 -50
  152. data/spec/features/admin/configuration/tax_categories_spec.rb +0 -56
  153. data/spec/features/admin/configuration/tax_rates_spec.rb +0 -30
  154. data/spec/features/admin/configuration/taxonomies_spec.rb +0 -52
  155. data/spec/features/admin/configuration/zones_spec.rb +0 -39
  156. data/spec/features/admin/homepage_spec.rb +0 -78
  157. data/spec/features/admin/locale_spec.rb +0 -30
  158. data/spec/features/admin/orders/adjustments_promotions_spec.rb +0 -53
  159. data/spec/features/admin/orders/adjustments_spec.rb +0 -126
  160. data/spec/features/admin/orders/cancelling_and_resuming_spec.rb +0 -48
  161. data/spec/features/admin/orders/cancelling_inventory_spec.rb +0 -48
  162. data/spec/features/admin/orders/customer_details_spec.rb +0 -163
  163. data/spec/features/admin/orders/line_items_spec.rb +0 -50
  164. data/spec/features/admin/orders/listing_spec.rb +0 -130
  165. data/spec/features/admin/orders/log_entries_spec.rb +0 -55
  166. data/spec/features/admin/orders/new_order_spec.rb +0 -197
  167. data/spec/features/admin/orders/order_details_spec.rb +0 -533
  168. data/spec/features/admin/orders/payments_spec.rb +0 -228
  169. data/spec/features/admin/orders/risk_analysis_spec.rb +0 -47
  170. data/spec/features/admin/orders/shipments_spec.rb +0 -65
  171. data/spec/features/admin/payments/store_credits_spec.rb +0 -21
  172. data/spec/features/admin/products/edit/images_spec.rb +0 -87
  173. data/spec/features/admin/products/edit/products_spec.rb +0 -66
  174. data/spec/features/admin/products/edit/taxons_spec.rb +0 -56
  175. data/spec/features/admin/products/edit/variants_spec.rb +0 -61
  176. data/spec/features/admin/products/option_types_spec.rb +0 -114
  177. data/spec/features/admin/products/products_spec.rb +0 -392
  178. data/spec/features/admin/products/properties_spec.rb +0 -139
  179. data/spec/features/admin/products/prototypes_spec.rb +0 -110
  180. data/spec/features/admin/products/stock_management_spec.rb +0 -82
  181. data/spec/features/admin/products/variant_spec.rb +0 -51
  182. data/spec/features/admin/promotion_adjustments_spec.rb +0 -220
  183. data/spec/features/admin/promotions/tiered_calculator_spec.rb +0 -69
  184. data/spec/features/admin/promotions/user_rule_spec.rb +0 -25
  185. data/spec/features/admin/reports_spec.rb +0 -61
  186. data/spec/features/admin/stock_transfer_spec.rb +0 -86
  187. data/spec/features/admin/store_credits_spec.rb +0 -82
  188. data/spec/features/admin/taxons_spec.rb +0 -31
  189. data/spec/features/admin/users_spec.rb +0 -270
  190. data/spec/helpers/admin/base_helper_spec.rb +0 -24
  191. data/spec/helpers/admin/navigation_helper_spec.rb +0 -73
  192. data/spec/helpers/admin/reimbursements_helper_spec.rb +0 -34
  193. data/spec/helpers/admin/stock_movements_helper_spec.rb +0 -29
  194. data/spec/helpers/admin/store_credit_events_helper_spec.rb +0 -95
  195. data/spec/helpers/promotion_rules_helper_spec.rb +0 -12
  196. data/spec/spec_helper.rb +0 -108
  197. data/spec/support/appear_before_matcher.rb +0 -8
  198. data/spec/support/ror_ringer.jpeg +0 -0
  199. data/spec/test_views/spree/admin/widgets/edit.html.erb +0 -1
  200. data/spec/test_views/spree/admin/widgets/new.html.erb +0 -1
  201. data/vendor/assets/javascripts/handlebars.js +0 -2746
@@ -1,309 +0,0 @@
1
- require 'spec_helper'
2
-
3
- shared_examples "update reason loader" do
4
- it "sets the update_reasons variable to a list of categories sorted by category name " do
5
- expect(assigns(:update_reasons)).to eq [update_reason]
6
- end
7
- end
8
-
9
- describe Spree::Admin::StoreCreditsController do
10
- stub_authorization!
11
-
12
- let(:user) { create(:user) }
13
- let(:admin_user) { create(:admin_user) }
14
-
15
- let!(:b_credit_category) { create(:store_credit_category, name: "B category") }
16
- let!(:a_credit_category) { create(:store_credit_category, name: "A category") }
17
- let!(:update_reason) { create(:store_credit_update_reason) }
18
-
19
- describe "#show" do
20
- let!(:store_credit) { create(:store_credit, user: user, category: a_credit_category) }
21
- let!(:event) { create(:store_credit_auth_event, store_credit: store_credit, created_at: 5.days.ago) }
22
-
23
- before { spree_get :show, user_id: user.id, id: store_credit.id }
24
-
25
- it "sets the store_credit variable to a new store credit model" do
26
- expect(assigns(:store_credit)).to eq store_credit
27
- end
28
-
29
- it "sets the store_credit_events variable to the store credit's events in chronological order" do
30
- allocation_event = store_credit.store_credit_events.find_by(action: Spree::StoreCredit::ALLOCATION_ACTION)
31
- expect(assigns(:store_credit_events)).to eq [event, allocation_event]
32
- end
33
- end
34
-
35
- describe "#new" do
36
- before { spree_get :new, user_id: create(:user).id }
37
- it { expect(assigns(:credit_categories)).to eq [a_credit_category, b_credit_category] }
38
- end
39
-
40
- describe "#create" do
41
-
42
- subject { spree_post :create, parameters }
43
-
44
- before {
45
- allow(controller).to receive_messages(try_spree_current_user: admin_user)
46
- create(:primary_credit_type)
47
- }
48
-
49
- context "the passed parameters are valid" do
50
- let(:parameters) do
51
- {
52
- user_id: user.id,
53
- store_credit: {
54
- amount: 1.00,
55
- category_id: a_credit_category.id
56
- }
57
- }
58
- end
59
-
60
- it "creates a new store credit" do
61
- expect { subject }.to change(Spree::StoreCredit, :count).by(1)
62
- end
63
-
64
- it "associates the store credit with the user" do
65
- subject
66
- expect(user.reload.store_credits.count).to eq 1
67
- end
68
-
69
- it "assigns the store credit's created by to the current user" do
70
- subject
71
- expect(user.reload.store_credits.first.created_by).to eq admin_user
72
- end
73
-
74
- it 'sets the admin as the store credit event originator' do
75
- expect { subject }.to change { Spree::StoreCreditEvent.count }.by(1)
76
- expect(Spree::StoreCreditEvent.last.originator).to eq admin_user
77
- end
78
- end
79
-
80
- context "the passed parameters are invalid" do
81
- let(:parameters) do
82
- {
83
- user_id: user.id,
84
- store_credit: {
85
- amount: -1.00,
86
- category_id: a_credit_category.id
87
- }
88
- }
89
- end
90
-
91
- it { expect { subject }.not_to change(Spree::StoreCredit, :count) }
92
- end
93
- end
94
-
95
- describe "#edit_amount" do
96
- let!(:store_credit) { create(:store_credit, user: user, category: a_credit_category) }
97
-
98
- before { spree_get :edit_amount, user_id: user.id, id: store_credit.id }
99
-
100
- it_behaves_like "update reason loader"
101
-
102
- it "sets the store_credit variable to the persisted store credit" do
103
- expect(assigns(:store_credit)).to eq store_credit
104
- end
105
- end
106
-
107
- describe "#edit_validity" do
108
- let!(:store_credit) { create(:store_credit, user: user, category: a_credit_category) }
109
-
110
- before { spree_get :edit_validity, user_id: user.id, id: store_credit.id }
111
-
112
- it_behaves_like "update reason loader"
113
-
114
- it "sets the store_credit variable to the persisted store credit" do
115
- expect(assigns(:store_credit)).to eq store_credit
116
- end
117
- end
118
-
119
- describe "#update" do
120
- let(:memo) { "New memo" }
121
- let!(:store_credit) { create(:store_credit, user: user) }
122
-
123
- subject { spree_put :update, parameters.merge(format: :json) }
124
-
125
- before { allow(controller).to receive_messages(try_spree_current_user: admin_user) }
126
-
127
- context "the passed parameters are valid" do
128
- let(:parameters) do
129
- {
130
- user_id: user.id,
131
- id: store_credit.id,
132
- store_credit: {
133
- memo: memo
134
- }
135
- }
136
- end
137
-
138
- it "updates the memo to be the passed in value" do
139
- expect { subject }.to change { store_credit.reload.memo }.to(memo)
140
- end
141
-
142
- it "returns a success message" do
143
- subject
144
- expect(response).to have_http_status(:ok)
145
- expect(JSON.parse(response.body)['message']).to match("Store credit has been successfully updated!")
146
- end
147
- end
148
-
149
- context "the passed parameters are invalid" do
150
- let(:parameters) do
151
- {
152
- user_id: user.id,
153
- id: store_credit.id,
154
- store_credit: {
155
- category_id: b_credit_category.id
156
- }
157
- }
158
- end
159
- it "doesn't update the store credit's category" do
160
- expect { subject }.to_not change { store_credit.reload.category }
161
- end
162
-
163
- it "returns an error message" do
164
- subject
165
- expect(response).to have_http_status(:bad_request)
166
- expect(JSON.parse(response.body)['message']).to match("Unable to update store credit")
167
- end
168
- end
169
- end
170
-
171
- describe "#update_amount" do
172
- let(:original_amount) { 100.0 }
173
- let!(:store_credit) { create(:store_credit, user: user, amount: original_amount) }
174
- let!(:update_reason) { create(:store_credit_update_reason) }
175
- let(:parameters) do
176
- {
177
- user_id: user.id,
178
- id: store_credit.id,
179
- update_reason_id: update_reason.id,
180
- store_credit: {
181
- amount: updated_amount
182
- }
183
- }
184
- end
185
-
186
- subject { spree_put :update_amount, parameters }
187
-
188
- before { allow(controller).to receive_messages(try_spree_current_user: admin_user) }
189
-
190
- context "the passed parameters are valid" do
191
- let(:updated_amount) { 300.0 }
192
-
193
- context "the store credit has been partially used" do
194
- before { store_credit.update_attributes(amount_used: 10.0) }
195
-
196
- context "the new amount is greater than the used amount" do
197
- let(:updated_amount) { 11.0 }
198
-
199
- before { subject }
200
-
201
- it "updates the amount to be the passed in amount" do
202
- expect(store_credit.reload.amount).to eq updated_amount
203
- end
204
- end
205
-
206
- context "the new amount is less than the used amount" do
207
- let(:updated_amount) { 9.0 }
208
-
209
- before { subject }
210
-
211
- it "does not update the amount" do
212
- expect(store_credit.reload.amount).to eq original_amount
213
- end
214
-
215
- it "renders the edit_amount template" do
216
- expect(response).to render_template :edit_amount
217
- end
218
-
219
- it "adds an error message to the flash" do
220
- expect(flash.now[:error]).to match "Unable to update"
221
- end
222
-
223
- it_behaves_like "update reason loader"
224
- end
225
- end
226
-
227
- context "the store credit has not been used" do
228
- it "sets a success message in the flash" do
229
- subject
230
- expect(flash.now[:success]).to match "Store credit has been successfully updated!"
231
- end
232
-
233
- it "does not create a new store credit" do
234
- expect { subject }.to_not change(Spree::StoreCredit, :count)
235
- end
236
-
237
- it "updates passed amount" do
238
- subject
239
- expect(store_credit.reload.amount).to eq updated_amount
240
- end
241
- end
242
- end
243
-
244
- context "the passed parameters are invalid" do
245
- let(:updated_amount) { -1.00 }
246
-
247
- before { subject }
248
-
249
- it "does not update the amount" do
250
- expect(store_credit.reload.amount).to eq original_amount
251
- end
252
-
253
- it "renders the edit_amount template" do
254
- expect(response).to render_template :edit_amount
255
- end
256
-
257
- it "adds an error message to the flash" do
258
- expect(flash.now[:error]).to match "Unable to update"
259
- end
260
-
261
- it_behaves_like "update reason loader"
262
- end
263
- end
264
-
265
- describe "#invalidate" do
266
- let!(:store_credit) { create(:store_credit, user: user, category: b_credit_category) }
267
-
268
- let(:parameters) do
269
- {
270
- user_id: user.id,
271
- id: store_credit.id,
272
- update_reason_id: update_reason.id
273
- }
274
- end
275
-
276
- subject { spree_put :invalidate, parameters }
277
-
278
- it "attempts to invalidate the store credit" do
279
- expect { subject }.to change { store_credit.reload.invalidated_at }.from(nil)
280
- end
281
-
282
- context "the invalidation is unsuccessful" do
283
- before do
284
- store_credit.authorize(5.0, "USD")
285
- subject
286
- end
287
-
288
- it "doesn't invalidate the store credit" do
289
- expect(store_credit.reload.invalidated_at).to be_nil
290
- end
291
-
292
- it "renders the edit_validity template" do
293
- expect(response).to render_template :edit_validity
294
- end
295
-
296
- it "sets an error message in the flash" do
297
- expect(flash.now[:error]).to match "Unable to invalidate store credit"
298
- end
299
-
300
- it_behaves_like "update reason loader"
301
- end
302
-
303
- context "the invalidation is successful" do
304
- it "redirects to index" do
305
- expect(subject).to redirect_to spree.admin_user_store_credit_path(user, store_credit)
306
- end
307
- end
308
- end
309
- end
@@ -1,236 +0,0 @@
1
- require 'spec_helper'
2
- require 'spree/testing_support/bar_ability'
3
-
4
- describe Spree::Admin::UsersController, :type => :controller do
5
- let(:user) { create(:user) }
6
- let(:mock_user) { mock_model Spree.user_class }
7
-
8
- before do
9
- allow(controller).to receive_messages :spree_current_user => user
10
- user.spree_roles.clear
11
- end
12
-
13
- context "#show" do
14
- before do
15
- user.spree_roles << Spree::Role.find_or_create_by(name: 'admin')
16
- end
17
-
18
- it "redirects to edit" do
19
- spree_get :show, id: user.id
20
- expect(response).to redirect_to spree.edit_admin_user_path(user)
21
- end
22
- end
23
-
24
- context '#authorize_admin' do
25
- before { use_mock_user }
26
-
27
- it 'grant access to users with an admin role' do
28
- user.spree_roles << Spree::Role.find_or_create_by(name: 'admin')
29
- spree_post :index
30
- expect(response).to render_template :index
31
- end
32
-
33
- it "allows admins to update a user's API key" do
34
- user.spree_roles << Spree::Role.find_or_create_by(name: 'admin')
35
- expect(mock_user).to receive(:generate_spree_api_key!).and_return(true)
36
- spree_put :generate_api_key, id: mock_user.id
37
- expect(response).to redirect_to(spree.edit_admin_user_path(mock_user))
38
- end
39
-
40
- it "allows admins to clear a user's API key" do
41
- user.spree_roles << Spree::Role.find_or_create_by(name: 'admin')
42
- expect(mock_user).to receive(:clear_spree_api_key!).and_return(true)
43
- spree_put :clear_api_key, id: mock_user.id
44
- expect(response).to redirect_to(spree.edit_admin_user_path(mock_user))
45
- end
46
-
47
- it 'deny access to users with an bar role' do
48
- user.spree_roles << Spree::Role.find_or_create_by(name: 'bar')
49
- Spree::Ability.register_ability(BarAbility)
50
- spree_post :index
51
- expect(response).to redirect_to '/unauthorized'
52
- end
53
-
54
- it 'deny access to users with an bar role' do
55
- user.spree_roles << Spree::Role.find_or_create_by(name: 'bar')
56
- Spree::Ability.register_ability(BarAbility)
57
- spree_post :update, { id: '9' }
58
- expect(response).to redirect_to '/unauthorized'
59
- end
60
-
61
- it 'deny access to users without an admin role' do
62
- allow(user).to receive_messages :has_spree_role? => false
63
- spree_post :index
64
- expect(response).to redirect_to '/unauthorized'
65
- end
66
- end
67
-
68
- describe "#create" do
69
- let(:dummy_role) { Spree::Role.create(name: "dummyrole") }
70
-
71
- before do
72
- use_mock_user
73
- allow(mock_user).to receive_messages(:spree_roles= => true, :stock_locations= => true)
74
- user.spree_roles << Spree::Role.find_or_create_by(name: 'admin')
75
- end
76
-
77
- context "when the user can manage roles" do
78
- it "can set roles" do
79
- expect(mock_user).to receive(:spree_roles=).with([dummy_role])
80
- spree_post :create, { id: mock_user.id, user: { first_name: "Bob", spree_role_ids: [dummy_role.id] } }
81
- end
82
-
83
- it "can clear roles" do
84
- expect(mock_user).to receive(:spree_roles=).with([])
85
- spree_post :create, { id: mock_user.id, user: { first_name: "Bob"} }
86
- end
87
- end
88
-
89
- context "when the user cannot manage roles" do
90
- before do
91
- user.spree_roles = [Spree::Role.find_or_create_by(name: "user_management")]
92
- end
93
-
94
- it "cannot set roles" do
95
- expect(mock_user).to_not receive(:spree_roles=)
96
- spree_post :create, { user: { spree_role_ids: [dummy_role.id] } }
97
- end
98
-
99
- it "cannot set roles" do
100
- expect(mock_user).to_not receive(:spree_roles=)
101
- spree_post :create, { id: mock_user.id, user: { first_name: "Bob", spree_role_ids: [dummy_role.id] } }
102
- end
103
-
104
- it "cannot clear roles" do
105
- expect(mock_user).to_not receive(:spree_roles=)
106
- spree_post :create, { id: mock_user.id, user: { first_name: "Bob"} }
107
- end
108
- end
109
-
110
- it "can create a shipping_address" do
111
- expect(Spree.user_class).to receive(:new).with(hash_including(
112
- "ship_address_attributes" => { "city" => "New York" }
113
- ))
114
- spree_post :create, { :user => { :ship_address_attributes => { :city => "New York" } } }
115
- end
116
-
117
- it "can create a billing_address" do
118
- expect(Spree.user_class).to receive(:new).with(hash_including(
119
- "bill_address_attributes" => { "city" => "New York" }
120
- ))
121
- spree_post :create, { :user => { :bill_address_attributes => { :city => "New York" } } }
122
- end
123
-
124
- it "can set stock locations" do
125
- location = Spree::StockLocation.create(name: "my_location")
126
- location_2 = Spree::StockLocation.create(name: "my_location_2")
127
- expect(mock_user).to receive(:stock_locations=).with([location, location_2])
128
- spree_post :create, { user: { stock_location_ids: [location.id, location_2.id] } }
129
- end
130
- end
131
-
132
- describe "#update" do
133
- let(:dummy_role) { Spree::Role.create(name: "dummyrole") }
134
- before do
135
- use_mock_user
136
- allow(mock_user).to receive_messages(:spree_roles= => true, :stock_locations= => true)
137
- user.spree_roles << Spree::Role.find_or_create_by(name: 'admin')
138
- end
139
-
140
- context "when the user can manage roles" do
141
- it "can set roles" do
142
- expect(mock_user).to receive(:spree_roles=).with([dummy_role])
143
- spree_put :update, { id: mock_user.id, user: { first_name: "Bob", spree_role_ids: [dummy_role.id] } }
144
- end
145
-
146
- it "can clear roles" do
147
- expect(mock_user).to receive(:spree_roles=).with([])
148
- spree_put :update, { id: mock_user.id, user: { first_name: "Bob"} }
149
- end
150
- end
151
-
152
- context "when the user cannot manage roles" do
153
- before do
154
- user.spree_roles = [Spree::Role.find_or_create_by(name: "user_management")]
155
- end
156
-
157
- it "cannot set roles" do
158
- expect(mock_user).to_not receive(:spree_roles=)
159
- spree_put :update, { id: mock_user.id, user: { first_name: "Bob", spree_role_ids: [dummy_role.id] } }
160
- end
161
-
162
- it "cannot clear roles" do
163
- expect(mock_user).to_not receive(:spree_roles=)
164
- spree_put :update, { id: mock_user.id, user: { first_name: "Bob" } }
165
- end
166
- end
167
-
168
- it "allows shipping address attributes through" do
169
- expect(mock_user).to receive(:update_attributes).with(hash_including(
170
- "ship_address_attributes" => { "city" => "New York" }
171
- ))
172
- spree_put :update, { :id => mock_user.id, :user => { :ship_address_attributes => { :city => "New York" } } }
173
- end
174
-
175
- it "allows billing address attributes through" do
176
- expect(mock_user).to receive(:update_attributes).with(hash_including(
177
- "bill_address_attributes" => { "city" => "New York" }
178
- ))
179
- spree_put :update, { :id => mock_user.id, :user => { :bill_address_attributes => { :city => "New York" } } }
180
- end
181
-
182
- it "can set stock locations" do
183
- location = Spree::StockLocation.create(name: "my_location")
184
- location_2 = Spree::StockLocation.create(name: "my_location_2")
185
- expect(mock_user).to receive(:stock_locations=).with([location, location_2])
186
- spree_put :update, { id: mock_user.id, user: { stock_location_ids: [location.id, location_2.id] } }
187
- end
188
- end
189
-
190
- describe "#orders" do
191
- let(:order) { create(:order) }
192
- before do
193
- user.orders << order
194
- user.spree_roles << Spree::Role.find_or_create_by(name: 'admin')
195
- end
196
-
197
- it "assigns a list of the users orders" do
198
- spree_get :orders, { :id => user.id }
199
- expect(assigns[:orders].count).to eq 1
200
- expect(assigns[:orders].first).to eq order
201
- end
202
-
203
- it "assigns a ransack search for Spree::Order" do
204
- spree_get :orders, { :id => user.id }
205
- expect(assigns[:search]).to be_a Ransack::Search
206
- expect(assigns[:search].klass).to eq Spree::Order
207
- end
208
- end
209
-
210
- describe "#items" do
211
- let(:order) { create(:order) }
212
- before do
213
- user.orders << order
214
- user.spree_roles << Spree::Role.find_or_create_by(name: 'admin')
215
- end
216
-
217
- it "assigns a list of the users orders" do
218
- spree_get :items, { :id => user.id }
219
- expect(assigns[:orders].count).to eq 1
220
- expect(assigns[:orders].first).to eq order
221
- end
222
-
223
- it "assigns a ransack search for Spree::Order" do
224
- spree_get :items, { :id => user.id }
225
- expect(assigns[:search]).to be_a Ransack::Search
226
- expect(assigns[:search].klass).to eq Spree::Order
227
- end
228
- end
229
- end
230
-
231
- def use_mock_user
232
- allow(mock_user).to receive(:save).and_return(true)
233
- allow(mock_user).to receive(:update_attributes).and_return(true)
234
- allow(Spree.user_class).to receive(:find).with(mock_user.id.to_s).and_return(mock_user)
235
- allow(Spree.user_class).to receive(:new).and_return(mock_user)
236
- end