spree_backend 3.1.5 → 3.1.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (100) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/spree/admin/orders_controller.rb +1 -3
  3. data/app/controllers/spree/admin/products_controller.rb +1 -1
  4. data/app/views/spree/admin/products/_form.html.erb +8 -8
  5. data/app/views/spree/admin/products/index.html.erb +1 -1
  6. data/app/views/spree/admin/shared/_product_tabs.html.erb +4 -4
  7. data/app/views/spree/admin/taxons/edit.html.erb +1 -1
  8. data/spree_backend.gemspec +1 -1
  9. metadata +7 -98
  10. data/spec/controllers/spree/admin/base_controller_spec.rb +0 -46
  11. data/spec/controllers/spree/admin/customer_returns_controller_spec.rb +0 -185
  12. data/spec/controllers/spree/admin/general_settings_controller_spec.rb +0 -41
  13. data/spec/controllers/spree/admin/missing_products_controller_spec.rb +0 -18
  14. data/spec/controllers/spree/admin/orders/customer_details_controller_spec.rb +0 -197
  15. data/spec/controllers/spree/admin/orders_controller_spec.rb +0 -254
  16. data/spec/controllers/spree/admin/payment_methods_controller_spec.rb +0 -49
  17. data/spec/controllers/spree/admin/payments_controller_spec.rb +0 -97
  18. data/spec/controllers/spree/admin/products_controller_spec.rb +0 -99
  19. data/spec/controllers/spree/admin/promotion_actions_controller_spec.rb +0 -21
  20. data/spec/controllers/spree/admin/promotion_rules_controller_spec.rb +0 -21
  21. data/spec/controllers/spree/admin/promotions_controller_spec.rb +0 -44
  22. data/spec/controllers/spree/admin/refunds_controller_spec.rb +0 -32
  23. data/spec/controllers/spree/admin/reimbursements_controller_spec.rb +0 -74
  24. data/spec/controllers/spree/admin/reports_controller_spec.rb +0 -42
  25. data/spec/controllers/spree/admin/resource_controller_spec.rb +0 -252
  26. data/spec/controllers/spree/admin/return_authorizations_controller_spec.rb +0 -225
  27. data/spec/controllers/spree/admin/return_index_controller_spec.rb +0 -37
  28. data/spec/controllers/spree/admin/return_items_controller_spec.rb +0 -27
  29. data/spec/controllers/spree/admin/root_controller_spec.rb +0 -35
  30. data/spec/controllers/spree/admin/search_controller_spec.rb +0 -56
  31. data/spec/controllers/spree/admin/shipping_methods_controller_spec.rb +0 -14
  32. data/spec/controllers/spree/admin/stock_items_controller_spec.rb +0 -19
  33. data/spec/controllers/spree/admin/stock_locations_controller_spec.rb +0 -41
  34. data/spec/controllers/spree/admin/stock_transfers_controller_spec.rb +0 -41
  35. data/spec/controllers/spree/admin/tax_categories_controller_spec.rb +0 -34
  36. data/spec/controllers/spree/admin/users_controller_spec.rb +0 -161
  37. data/spec/controllers/spree/admin/variants_controller_spec.rb +0 -32
  38. data/spec/features/admin/configuration/analytics_tracker_spec.rb +0 -47
  39. data/spec/features/admin/configuration/countries_spec.rb +0 -24
  40. data/spec/features/admin/configuration/general_settings_spec.rb +0 -44
  41. data/spec/features/admin/configuration/payment_methods_spec.rb +0 -63
  42. data/spec/features/admin/configuration/roles_spec.rb +0 -47
  43. data/spec/features/admin/configuration/shipping_methods_spec.rb +0 -62
  44. data/spec/features/admin/configuration/states_spec.rb +0 -68
  45. data/spec/features/admin/configuration/stock_locations_spec.rb +0 -48
  46. data/spec/features/admin/configuration/store_credit_categories_spec.rb +0 -50
  47. data/spec/features/admin/configuration/tax_categories_spec.rb +0 -56
  48. data/spec/features/admin/configuration/tax_rates_spec.rb +0 -18
  49. data/spec/features/admin/configuration/zones_spec.rb +0 -39
  50. data/spec/features/admin/homepage_spec.rb +0 -89
  51. data/spec/features/admin/locale_spec.rb +0 -31
  52. data/spec/features/admin/orders/adjustments_promotions_spec.rb +0 -53
  53. data/spec/features/admin/orders/adjustments_spec.rb +0 -129
  54. data/spec/features/admin/orders/cancelling_and_resuming_spec.rb +0 -47
  55. data/spec/features/admin/orders/customer_details_spec.rb +0 -154
  56. data/spec/features/admin/orders/line_items_spec.rb +0 -51
  57. data/spec/features/admin/orders/listing_spec.rb +0 -222
  58. data/spec/features/admin/orders/log_entries_spec.rb +0 -55
  59. data/spec/features/admin/orders/new_order_spec.rb +0 -160
  60. data/spec/features/admin/orders/order_details_spec.rb +0 -662
  61. data/spec/features/admin/orders/payments_spec.rb +0 -230
  62. data/spec/features/admin/orders/risk_analysis_spec.rb +0 -48
  63. data/spec/features/admin/orders/shipments_spec.rb +0 -64
  64. data/spec/features/admin/orders/state_changes_spec.rb +0 -21
  65. data/spec/features/admin/products/edit/images_spec.rb +0 -86
  66. data/spec/features/admin/products/edit/products_spec.rb +0 -64
  67. data/spec/features/admin/products/edit/taxons_spec.rb +0 -41
  68. data/spec/features/admin/products/edit/variants_spec.rb +0 -56
  69. data/spec/features/admin/products/option_types_spec.rb +0 -114
  70. data/spec/features/admin/products/products_spec.rb +0 -445
  71. data/spec/features/admin/products/properties_spec.rb +0 -147
  72. data/spec/features/admin/products/prototypes_spec.rb +0 -112
  73. data/spec/features/admin/products/stock_management_spec.rb +0 -124
  74. data/spec/features/admin/products/taxonomies_spec.rb +0 -52
  75. data/spec/features/admin/products/variant_spec.rb +0 -50
  76. data/spec/features/admin/promotions/adjustments_spec.rb +0 -259
  77. data/spec/features/admin/promotions/option_value_rule_spec.rb +0 -70
  78. data/spec/features/admin/promotions/tiered_calculator_spec.rb +0 -70
  79. data/spec/features/admin/refund_reasons/refund_reasons_spec.rb +0 -57
  80. data/spec/features/admin/reports_spec.rb +0 -61
  81. data/spec/features/admin/return_authorization_reasons/return_authorization_reasons_spec.rb +0 -63
  82. data/spec/features/admin/returns/customer_returns_spec.rb +0 -80
  83. data/spec/features/admin/returns/return_authorizations_spec.rb +0 -152
  84. data/spec/features/admin/stock_transfer_spec.rb +0 -75
  85. data/spec/features/admin/store_credits_spec.rb +0 -93
  86. data/spec/features/admin/taxons_spec.rb +0 -47
  87. data/spec/features/admin/users_spec.rb +0 -286
  88. data/spec/helpers/admin/base_helper_spec.rb +0 -30
  89. data/spec/helpers/admin/navigation_helper_spec.rb +0 -106
  90. data/spec/helpers/admin/stock_movements_helper_spec.rb +0 -30
  91. data/spec/helpers/promotion_rules_helper_spec.rb +0 -12
  92. data/spec/models/spree/resource_spec.rb +0 -48
  93. data/spec/routing/admin_path_spec.rb +0 -22
  94. data/spec/spec_helper.rb +0 -134
  95. data/spec/support/appear_before_matcher.rb +0 -8
  96. data/spec/support/ror_ringer.jpeg +0 -0
  97. data/spec/test_views/spree/admin/submodule/posts/edit.html.erb +0 -1
  98. data/spec/test_views/spree/admin/submodule/posts/new.html.erb +0 -1
  99. data/spec/test_views/spree/admin/widgets/edit.html.erb +0 -1
  100. data/spec/test_views/spree/admin/widgets/new.html.erb +0 -1
@@ -1,47 +0,0 @@
1
- require 'spec_helper'
2
-
3
- feature "Taxonomies and taxons" do
4
- stub_authorization!
5
-
6
- scenario "admin should be able to edit taxon" do
7
- visit spree.new_admin_taxonomy_path
8
-
9
- fill_in "Name", with: "Hello"
10
- click_button "Create"
11
-
12
- @taxonomy = Spree::Taxonomy.last
13
-
14
- visit spree.edit_admin_taxonomy_taxon_path(@taxonomy, @taxonomy.root.id)
15
-
16
- fill_in "taxon_name", with: "Shirt"
17
- fill_in "taxon_description", with: "Discover our new rails shirts"
18
-
19
- fill_in "permalink_part", with: "shirt-rails"
20
- click_button "Update"
21
- expect(page).to have_content("Taxon \"Shirt\" has been successfully updated!")
22
- end
23
-
24
- scenario "admin should be able to remove a product from a taxon", js: true do
25
- taxon_1 = create(:taxon, name: 'Clothing')
26
- product = create(:product)
27
- product.taxons << taxon_1
28
-
29
- visit spree.admin_taxons_path
30
- select_clothing_from_select2
31
-
32
- find('.product').hover
33
- find('.product .dropdown-toggle').click
34
- click_link "Delete From Taxon"
35
- wait_for_ajax
36
-
37
- visit current_path
38
- select_clothing_from_select2
39
-
40
- expect(page).to have_content("No results")
41
- end
42
-
43
- def select_clothing_from_select2
44
- targetted_select2_search "Clothing", from: "#s2id_taxon_id"
45
- wait_for_ajax
46
- end
47
- end
@@ -1,286 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe 'Users', type: :feature do
4
- include Spree::BaseHelper
5
- stub_authorization!
6
- include Spree::Admin::BaseHelper
7
-
8
- let!(:country) { create(:country) }
9
- let!(:user_a) { create(:user_with_addresses, email: 'a@example.com') }
10
- let!(:user_b) { create(:user_with_addresses, email: 'b@example.com') }
11
-
12
- let(:order) { create(:completed_order_with_totals, user: user_a, number: "R123") }
13
-
14
- let(:order_2) do
15
- create(:completed_order_with_totals, user: user_a, number: "R456").tap do |o|
16
- li = o.line_items.last
17
- li.update_column(:price, li.price + 10)
18
- end
19
- end
20
-
21
- let(:orders) { [order, order_2] }
22
-
23
- before do
24
- stub_const('Spree::User', create(:user, email: 'example@example.com').class)
25
- end
26
-
27
- shared_examples_for 'a user page' do
28
- it 'has lifetime stats' do
29
- orders
30
- visit current_url # need to refresh after creating the orders for specs that did not require orders
31
- within("#user-lifetime-stats") do
32
- [:total_sales, :num_orders, :average_order_value, :member_since].each do |stat_name|
33
- expect(page).to have_content Spree.t(stat_name)
34
- end
35
- expect(page).to have_content (order.total + order_2.total)
36
- expect(page).to have_content orders.count
37
- expect(page).to have_content (orders.sum(&:total) / orders.count)
38
- expect(page).to have_content pretty_time(user_a.created_at)
39
- end
40
- end
41
-
42
- it 'can go back to the users list' do
43
- expect(page).to have_link Spree.t(:users), href: spree.admin_users_path
44
- end
45
-
46
- it 'can navigate to the account page' do
47
- expect(page).to have_link Spree.t(:"admin.user.account"), href: spree.edit_admin_user_path(user_a)
48
- end
49
-
50
- it 'can navigate to the order history' do
51
- expect(page).to have_link Spree.t(:"admin.user.orders"), href: spree.orders_admin_user_path(user_a)
52
- end
53
-
54
- it 'can navigate to the items purchased' do
55
- expect(page).to have_link Spree.t(:"admin.user.items"), href: spree.items_admin_user_path(user_a)
56
- end
57
- end
58
-
59
- shared_examples_for 'a sortable attribute' do
60
- before { click_link sort_link }
61
-
62
- it "can sort asc" do
63
- within_table(table_id) do
64
- expect(page).to have_text text_match_1
65
- expect(page).to have_text text_match_2
66
- expect(text_match_1).to appear_before text_match_2
67
- end
68
- end
69
-
70
- it "can sort desc" do
71
- within_table(table_id) do
72
- click_link sort_link
73
-
74
- expect(page).to have_text text_match_1
75
- expect(page).to have_text text_match_2
76
- expect(text_match_2).to appear_before text_match_1
77
- end
78
- end
79
- end
80
-
81
- before do
82
- visit spree.admin_path
83
- click_link 'Users'
84
- end
85
-
86
- context 'users index' do
87
-
88
- context "email" do
89
- it_behaves_like "a sortable attribute" do
90
- let(:text_match_1) { user_a.email }
91
- let(:text_match_2) { user_b.email }
92
- let(:table_id) { "listing_users" }
93
- let(:sort_link) { "users_email_title" }
94
- end
95
- end
96
-
97
- it 'displays the correct results for a user search' do
98
- fill_in 'q_email_cont', with: user_a.email, visible: false
99
- click_button 'Search', visible: false
100
- within_table('listing_users') do
101
- expect(page).to have_text user_a.email
102
- expect(page).not_to have_text user_b.email
103
- end
104
- end
105
- end
106
-
107
- context 'editing users' do
108
- before { click_link user_a.email }
109
-
110
- it_behaves_like 'a user page'
111
-
112
- it 'can edit the user email' do
113
- fill_in 'user_email', with: 'a@example.com99'
114
- click_button 'Update'
115
-
116
- expect(user_a.reload.email).to eq 'a@example.com99'
117
- expect(page).to have_text 'Account updated'
118
- expect(find_field('user_email').value).to eq 'a@example.com99'
119
- end
120
-
121
- it 'can edit the user password' do
122
- fill_in 'user_password', with: 'welcome'
123
- fill_in 'user_password_confirmation', with: 'welcome'
124
- click_button 'Update'
125
-
126
- expect(page).to have_text 'Account updated'
127
- end
128
-
129
- it 'can edit user roles' do
130
- Spree::Role.create name: "admin"
131
- click_link 'Users'
132
- click_link user_a.email
133
-
134
- check 'user_spree_role_admin'
135
- click_button 'Update'
136
- expect(page).to have_text 'Account updated'
137
- expect(find_field('user_spree_role_admin')['checked']).to be true
138
- end
139
-
140
- it 'can edit user shipping address' do
141
- click_link "Addresses"
142
-
143
- within("#admin_user_edit_addresses") do
144
- fill_in "user_ship_address_attributes_address1", with: "1313 Mockingbird Ln"
145
- click_button 'Update'
146
- expect(find_field('user_ship_address_attributes_address1').value).to eq "1313 Mockingbird Ln"
147
- end
148
-
149
- expect(user_a.reload.ship_address.address1).to eq "1313 Mockingbird Ln"
150
- end
151
-
152
- it 'can edit user billing address' do
153
- click_link "Addresses"
154
-
155
- within("#admin_user_edit_addresses") do
156
- fill_in "user_bill_address_attributes_address1", with: "1313 Mockingbird Ln"
157
- click_button 'Update'
158
- expect(find_field('user_bill_address_attributes_address1').value).to eq "1313 Mockingbird Ln"
159
- end
160
-
161
- expect(user_a.reload.bill_address.address1).to eq "1313 Mockingbird Ln"
162
- end
163
-
164
- context 'no api key exists' do
165
- it 'can generate a new api key' do
166
- within("#admin_user_edit_api_key") do
167
- expect(user_a.spree_api_key).to be_blank
168
- click_button Spree.t('generate_key', :scope => 'api')
169
- end
170
-
171
- expect(user_a.reload.spree_api_key).to be_present
172
-
173
- within("#admin_user_edit_api_key") do
174
- expect(find("#current-api-key").text).to match /Key: #{user_a.spree_api_key}/
175
- end
176
- end
177
- end
178
-
179
- context 'an api key exists' do
180
- before do
181
- user_a.generate_spree_api_key!
182
- expect(user_a.reload.spree_api_key).to be_present
183
- visit current_path
184
- end
185
-
186
- it 'can clear an api key' do
187
- within("#admin_user_edit_api_key") do
188
- click_button Spree.t('clear_key', :scope => 'api')
189
- end
190
-
191
- expect(user_a.reload.spree_api_key).to be_blank
192
- expect { find("#current-api-key") }.to raise_error Capybara::ElementNotFound
193
- end
194
-
195
- it 'can regenerate an api key' do
196
- old_key = user_a.spree_api_key
197
-
198
- within("#admin_user_edit_api_key") do
199
- click_button Spree.t('regenerate_key', :scope => 'api')
200
- end
201
-
202
- expect(user_a.reload.spree_api_key).to be_present
203
- expect(user_a.reload.spree_api_key).not_to eq old_key
204
-
205
- within("#admin_user_edit_api_key") do
206
- expect(find("#current-api-key").text).to match /Key: #{user_a.spree_api_key}/
207
- end
208
- end
209
- end
210
- end
211
-
212
- context 'order history with sorting' do
213
-
214
- before do
215
- orders
216
- click_link user_a.email
217
- within("#sidebar") { click_link Spree.t(:"admin.user.orders") }
218
- end
219
-
220
- it_behaves_like 'a user page'
221
-
222
- context "completed_at" do
223
- it_behaves_like "a sortable attribute" do
224
- let(:text_match_1) { order_time(order.completed_at) }
225
- let(:text_match_2) { order_time(order_2.completed_at) }
226
- let(:table_id) { "listing_orders" }
227
- let(:sort_link) { "orders_completed_at_title" }
228
- end
229
- end
230
-
231
- [:number, :state, :total].each do |attr|
232
- context attr do
233
- it_behaves_like "a sortable attribute" do
234
- let(:text_match_1) { order.send(attr).to_s }
235
- let(:text_match_2) { order_2.send(attr).to_s }
236
- let(:table_id) { "listing_orders" }
237
- let(:sort_link) { "orders_#{attr}_title" }
238
- end
239
- end
240
- end
241
- end
242
-
243
- context 'items purchased with sorting' do
244
-
245
- before do
246
- orders
247
- click_link user_a.email
248
- within("#sidebar") { click_link Spree.t(:"admin.user.items") }
249
- end
250
-
251
- it_behaves_like 'a user page'
252
-
253
- context "completed_at" do
254
- it_behaves_like "a sortable attribute" do
255
- let(:text_match_1) { order_time(order.completed_at) }
256
- let(:text_match_2) { order_time(order_2.completed_at) }
257
- let(:table_id) { "listing_items" }
258
- let(:sort_link) { "orders_completed_at_title" }
259
- end
260
- end
261
-
262
- [:number, :state].each do |attr|
263
- context attr do
264
- it_behaves_like "a sortable attribute" do
265
- let(:text_match_1) { order.send(attr).to_s }
266
- let(:text_match_2) { order_2.send(attr).to_s }
267
- let(:table_id) { "listing_items" }
268
- let(:sort_link) { "orders_#{attr}_title" }
269
- end
270
- end
271
- end
272
-
273
- it "has item attributes" do
274
- items = order.line_items | order_2.line_items
275
- expect(page).to have_table 'listing_items'
276
- within_table('listing_items') do
277
- items.each do |item|
278
- expect(page).to have_selector(".item-name", text: item.product.name)
279
- expect(page).to have_selector(".item-price", text: item.single_money.to_html)
280
- expect(page).to have_selector(".item-quantity", text: item.quantity)
281
- expect(page).to have_selector(".item-total", text: item.money.to_html)
282
- end
283
- end
284
- end
285
- end
286
- end
@@ -1,30 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Spree::Admin::BaseHelper, :type => :helper do
4
- include Spree::Admin::BaseHelper
5
-
6
- context "#datepicker_field_value" do
7
- it "should return nil when date is empty" do
8
- date = nil
9
- expect(datepicker_field_value(date)).to be_nil
10
- end
11
-
12
- it "should return a formatted date when date is present" do
13
- date = "2013-08-14".to_time
14
- expect(datepicker_field_value(date)).to eq("2013/08/14")
15
- end
16
- end
17
-
18
- context "#plural_resource_name" do
19
- it "should return correct form of class" do
20
- resource_class = Spree::Product
21
- expect(plural_resource_name(resource_class)).to eq("Products")
22
- end
23
- end
24
-
25
- context "#order_time" do
26
- it "prints in a format" do
27
- expect(order_time(DateTime.new(2016, 5, 6, 13, 33))).to eq "2016-05-06 1:33 PM"
28
- end
29
- end
30
- end
@@ -1,106 +0,0 @@
1
- # coding: UTF-8
2
- require 'spec_helper'
3
-
4
- describe Spree::Admin::NavigationHelper, type: :helper do
5
-
6
- describe "#tab" do
7
- before do
8
- allow(helper).to receive(:cannot?).and_return false
9
- end
10
-
11
- context "creating an admin tab" do
12
- it "should capitalize the first letter of each word in the tab's label" do
13
- admin_tab = helper.tab(:orders)
14
- expect(admin_tab).to include("Orders")
15
- end
16
- end
17
-
18
- it "should accept options with label and capitalize each word of it" do
19
- admin_tab = helper.tab(:orders, label: "delivered orders")
20
- expect(admin_tab).to include("Delivered Orders")
21
- end
22
-
23
- it "should capitalize words with unicode characters" do
24
- # overview
25
- admin_tab = helper.tab(:orders, label: "přehled")
26
- expect(admin_tab).to include("Přehled")
27
- end
28
-
29
- describe "selection" do
30
- context "when match_path option is not supplied" do
31
- subject(:tab) { helper.tab(:orders) }
32
-
33
- it "should be selected if the controller matches" do
34
- allow(controller).to receive(:controller_name).and_return("orders")
35
- expect(subject).to include('selected')
36
- end
37
-
38
- it "should not be selected if the controller does not match" do
39
- allow(controller).to receive(:controller_name).and_return("bonobos")
40
- expect(subject).not_to include('selected')
41
- end
42
-
43
- end
44
-
45
- context "when match_path option is supplied" do
46
- before do
47
- allow(helper).to receive(:request).and_return(double(ActionDispatch::Request, fullpath: "/admin/orders/edit/1"))
48
- end
49
-
50
- it "should be selected if the fullpath matches" do
51
- allow(controller).to receive(:controller_name).and_return("bonobos")
52
- tab = helper.tab(:orders, label: "delivered orders", match_path: '/orders')
53
- expect(tab).to include('selected')
54
- end
55
-
56
- it "should be selected if the fullpath matches a regular expression" do
57
- allow(controller).to receive(:controller_name).and_return("bonobos")
58
- tab = helper.tab(:orders, label: "delivered orders", match_path: /orders$|orders\//)
59
- expect(tab).to include('selected')
60
- end
61
-
62
- it "should not be selected if the fullpath does not match" do
63
- allow(controller).to receive(:controller_name).and_return("bonobos")
64
- tab = helper.tab(:orders, label: "delivered orders", match_path: '/shady')
65
- expect(tab).not_to include('selected')
66
- end
67
-
68
- it "should not be selected if the fullpath does not match a regular expression" do
69
- allow(controller).to receive(:controller_name).and_return("bonobos")
70
- tab = helper.tab(:orders, label: "delivered orders", match_path: /shady$|shady\//)
71
- expect(tab).not_to include('selected')
72
- end
73
- end
74
- end
75
- end
76
-
77
- describe '#klass_for' do
78
-
79
- it 'returns correct klass for Spree model' do
80
- expect(klass_for(:products)).to eq(Spree::Product)
81
- expect(klass_for(:product_properties)).to eq(Spree::ProductProperty)
82
- end
83
-
84
- it 'returns correct klass for non-spree model' do
85
- class MyUser
86
- end
87
- expect(klass_for(:my_users)).to eq(MyUser)
88
-
89
- Object.send(:remove_const, 'MyUser')
90
- end
91
-
92
- it 'returns correct namespaced klass for non-spree model' do
93
- module My
94
- class User
95
- end
96
- end
97
-
98
- expect(klass_for(:my_users)).to eq(My::User)
99
-
100
- My.send(:remove_const, 'User')
101
- Object.send(:remove_const, 'My')
102
- end
103
-
104
- end
105
-
106
- end