solidus_frontend 2.10.2 → 2.11.0

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.

Potentially problematic release.


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

Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/spree/frontend/checkout/address.js +1 -1
  3. data/app/assets/javascripts/spree/frontend/checkout/coupon-code.js +1 -1
  4. data/app/controllers/spree/checkout_controller.rb +9 -5
  5. data/app/controllers/spree/orders_controller.rb +9 -9
  6. data/app/controllers/spree/products_controller.rb +1 -1
  7. data/app/views/spree/address/_form.html.erb +15 -8
  8. data/app/views/spree/address/_form_hidden.html.erb +6 -2
  9. data/app/views/spree/checkout/payment/_gateway.html.erb +1 -1
  10. data/app/views/spree/orders/_form.html.erb +1 -1
  11. data/app/views/spree/shared/_address.html.erb +1 -1
  12. data/app/views/spree/shared/_image.html.erb +3 -2
  13. data/solidus_frontend.gemspec +5 -5
  14. metadata +12 -55
  15. data/script/rails +0 -10
  16. data/spec/controllers/controller_helpers_spec.rb +0 -29
  17. data/spec/controllers/locale_controller_spec.rb +0 -57
  18. data/spec/controllers/spree/checkout_controller_spec.rb +0 -610
  19. data/spec/controllers/spree/checkout_controller_with_views_spec.rb +0 -37
  20. data/spec/controllers/spree/content_controller_spec.rb +0 -9
  21. data/spec/controllers/spree/current_order_tracking_spec.rb +0 -47
  22. data/spec/controllers/spree/home_controller_spec.rb +0 -29
  23. data/spec/controllers/spree/orders_controller_ability_spec.rb +0 -90
  24. data/spec/controllers/spree/orders_controller_spec.rb +0 -254
  25. data/spec/controllers/spree/orders_controller_transitions_spec.rb +0 -33
  26. data/spec/controllers/spree/products_controller_spec.rb +0 -38
  27. data/spec/controllers/spree/taxons_controller_spec.rb +0 -14
  28. data/spec/features/address_spec.rb +0 -78
  29. data/spec/features/automatic_promotion_adjustments_spec.rb +0 -49
  30. data/spec/features/caching/products_spec.rb +0 -48
  31. data/spec/features/caching/taxons_spec.rb +0 -21
  32. data/spec/features/cart_spec.rb +0 -85
  33. data/spec/features/checkout_confirm_insufficient_stock_spec.rb +0 -71
  34. data/spec/features/checkout_spec.rb +0 -758
  35. data/spec/features/checkout_unshippable_spec.rb +0 -37
  36. data/spec/features/coupon_code_spec.rb +0 -266
  37. data/spec/features/currency_spec.rb +0 -20
  38. data/spec/features/first_order_promotion_spec.rb +0 -59
  39. data/spec/features/free_shipping_promotions_spec.rb +0 -60
  40. data/spec/features/locale_spec.rb +0 -26
  41. data/spec/features/order_spec.rb +0 -73
  42. data/spec/features/products_spec.rb +0 -291
  43. data/spec/features/promotion_code_invalidation_spec.rb +0 -54
  44. data/spec/features/quantity_promotions_spec.rb +0 -130
  45. data/spec/features/taxons_spec.rb +0 -158
  46. data/spec/features/template_rendering_spec.rb +0 -20
  47. data/spec/fixtures/thinking-cat.jpg +0 -0
  48. data/spec/generators/solidus/views/override_generator_spec.rb +0 -50
  49. data/spec/helpers/base_helper_spec.rb +0 -13
  50. data/spec/helpers/order_helper_spec.rb +0 -14
  51. data/spec/helpers/taxon_filters_helper_spec.rb +0 -12
  52. data/spec/spec_helper.rb +0 -106
  53. data/spec/support/shared_contexts/checkout_setup.rb +0 -12
  54. data/spec/support/shared_contexts/custom_products.rb +0 -28
  55. data/spec/support/shared_contexts/locales.rb +0 -16
  56. data/spec/views/spree/checkout/_summary_spec.rb +0 -11
@@ -1,73 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- describe 'orders', type: :feature do
6
- let(:order) { Spree::TestingSupport::OrderWalkthrough.up_to(:complete) }
7
- let(:user) { create(:user) }
8
-
9
- before do
10
- order.update_attribute(:user_id, user.id)
11
- allow_any_instance_of(Spree::OrdersController).to receive_messages(try_spree_current_user: user)
12
- end
13
-
14
- it "can visit an order" do
15
- # Regression test for current_user call on orders/show
16
- visit spree.order_path(order)
17
- end
18
-
19
- it "should display line item price" do
20
- # Regression test for https://github.com/spree/spree/issues/2772
21
- line_item = order.line_items.first
22
- line_item.target_shipment = create(:shipment)
23
- line_item.price = 19.00
24
- line_item.save!
25
-
26
- visit spree.order_path(order)
27
-
28
- # Tests view spree/shared/_order_details
29
- within 'td.price' do
30
- expect(page).to have_content "19.00"
31
- end
32
- end
33
-
34
- it "should have credit card info if paid with credit card" do
35
- create(:payment, order: order)
36
- visit spree.order_path(order)
37
- within '.payment-info' do
38
- expect(page).to have_content "Ending in 1111"
39
- end
40
- end
41
-
42
- it "should have payment method name visible if not paid with credit card" do
43
- create(:check_payment, order: order)
44
- visit spree.order_path(order)
45
- within '.payment-info' do
46
- expect(page).to have_content "Check"
47
- end
48
- end
49
-
50
- # Regression test for https://github.com/spree/spree/issues/2282
51
- context "can support a credit card with blank information" do
52
- before do
53
- credit_card = create(:credit_card)
54
- credit_card.update_column(:cc_type, '')
55
- payment = order.payments.first
56
- payment.source = credit_card
57
- payment.save!
58
- end
59
-
60
- specify do
61
- visit spree.order_path(order)
62
- expect(find('.payment-info')).to have_no_css('img')
63
- end
64
- end
65
-
66
- it "should return the correct title when displaying a completed order" do
67
- visit spree.order_path(order)
68
-
69
- within '#order_summary' do
70
- expect(page).to have_content("#{I18n.t('spree.order')} #{order.number}")
71
- end
72
- end
73
- end
@@ -1,291 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- describe "Visiting Products", type: :feature, inaccessible: true do
6
- include_context "custom products"
7
-
8
- let(:store_name) do
9
- ((first_store = Spree::Store.first) && first_store.name).to_s
10
- end
11
-
12
- before(:each) do
13
- visit spree.root_path
14
- end
15
-
16
- it "should be able to show the shopping cart after adding a product to it" do
17
- click_link "Ruby on Rails Ringer T-Shirt"
18
- expect(page).to have_content("$19.99")
19
-
20
- click_button 'add-to-cart-button'
21
- expect(page).to have_content("Shopping Cart")
22
- end
23
-
24
- # Regression spec for Spree [PR#7442](https://github.com/spree/spree/pull/7442)
25
- context "when generating product links" do
26
- let(:product) { Spree::Product.available.first }
27
-
28
- it "should not use the *_url helper to generate the product links" do
29
- visit spree.root_path
30
- expect(page).not_to have_xpath(".//a[@href='#{spree.product_url(product, host: current_host)}']")
31
- end
32
-
33
- it "should use *_path helper to generate the product links" do
34
- visit spree.root_path
35
- expect(page).to have_xpath(".//a[@href='#{spree.product_path(product)}']")
36
- end
37
- end
38
-
39
- describe 'meta tags and title' do
40
- let(:jersey) { Spree::Product.find_by(name: 'Ruby on Rails Baseball Jersey') }
41
- let(:metas) { { meta_description: 'Brand new Ruby on Rails Jersey', meta_title: 'Ruby on Rails Baseball Jersey Buy High Quality Geek Apparel', meta_keywords: 'ror, jersey, ruby' } }
42
-
43
- it 'should return the correct title when displaying a single product' do
44
- click_link jersey.name
45
- expect(page).to have_title('Ruby on Rails Baseball Jersey - ' + store_name)
46
- within('div#product-description') do
47
- within('h1.product-title') do
48
- expect(page).to have_content('Ruby on Rails Baseball Jersey')
49
- end
50
- end
51
- end
52
-
53
- it 'displays metas' do
54
- jersey.update metas
55
- click_link jersey.name
56
- expect(page).to have_meta(:description, 'Brand new Ruby on Rails Jersey')
57
- expect(page).to have_meta(:keywords, 'ror, jersey, ruby')
58
- end
59
-
60
- it 'displays title if set' do
61
- jersey.update metas
62
- click_link jersey.name
63
- expect(page).to have_title('Ruby on Rails Baseball Jersey Buy High Quality Geek Apparel')
64
- end
65
-
66
- it "doesn't use meta_title as heading on page" do
67
- jersey.update metas
68
- click_link jersey.name
69
- within("h1") do
70
- expect(page).to have_content(jersey.name)
71
- expect(page).not_to have_content(jersey.meta_title)
72
- end
73
- end
74
-
75
- it 'uses product name in title when meta_title set to empty string' do
76
- jersey.update meta_title: ''
77
- click_link jersey.name
78
- expect(page).to have_title('Ruby on Rails Baseball Jersey - ' + store_name)
79
- end
80
- end
81
-
82
- describe 'schema.org markup' do
83
- let(:product) { Spree::Product.available.first }
84
-
85
- it 'has correct schema.org/Offer attributes' do
86
- expect(page).to have_css("#product_#{product.id} [itemprop='price'][content='19.99']")
87
- expect(page).to have_css("#product_#{product.id} [itemprop='priceCurrency'][content='USD']")
88
- click_link product.name
89
- expect(page).to have_css("[itemprop='price'][content='19.99']")
90
- expect(page).to have_css("[itemprop='priceCurrency'][content='USD']")
91
- end
92
- end
93
-
94
- context "using Russian Rubles as a currency" do
95
- before do
96
- stub_spree_preferences(currency: "RUB")
97
- end
98
-
99
- let!(:product) do
100
- product = Spree::Product.find_by(name: "Ruby on Rails Ringer T-Shirt")
101
- product.price = 19.99
102
- product.tap(&:save)
103
- end
104
-
105
- # Regression tests for https://github.com/spree/spree/issues/2737
106
- context "uses руб as the currency symbol" do
107
- it "on products page" do
108
- visit spree.root_path
109
- within("#product_#{product.id}") do
110
- within(".price") do
111
- expect(page).to have_content("19.99 ₽")
112
- end
113
- end
114
- end
115
-
116
- it "on product page" do
117
- visit spree.product_path(product)
118
- within(".price") do
119
- expect(page).to have_content("19.99 ₽")
120
- end
121
- end
122
-
123
- it "when adding a product to the cart", js: true do
124
- visit spree.product_path(product)
125
- click_button "Add To Cart"
126
- click_link "Home"
127
- within(".cart-info") do
128
- expect(page).to have_content("19.99 ₽")
129
- end
130
- end
131
-
132
- it "when on the 'address' state of the cart" do
133
- visit spree.product_path(product)
134
- click_button "Add To Cart"
135
- click_button "Checkout"
136
- within("tr[data-hook=item_total]") do
137
- expect(page).to have_content("19.99 ₽")
138
- end
139
- end
140
- end
141
- end
142
-
143
- it "should be able to search for a product" do
144
- fill_in "keywords", with: "shirt"
145
- click_button "Search"
146
-
147
- expect(page.all('ul.product-listing li').size).to eq(1)
148
- end
149
-
150
- context "a product with variants" do
151
- let(:product) { Spree::Product.find_by(name: "Ruby on Rails Baseball Jersey") }
152
- let(:option_value) { create(:option_value) }
153
- let!(:variant) { product.variants.create!(price: 5.59) }
154
-
155
- before do
156
- # Need to have two images to trigger the error
157
- image = File.open(File.expand_path('../fixtures/thinking-cat.jpg', __dir__))
158
- product.images.create!(attachment: image)
159
- product.images.create!(attachment: image)
160
-
161
- product.option_types << option_value.option_type
162
- variant.option_values << option_value
163
- end
164
-
165
- it "displays price of first variant listed", js: true do
166
- click_link product.name
167
- within("#product-price") do
168
- expect(page).to have_content variant.price
169
- expect(page).not_to have_content I18n.t('spree.out_of_stock')
170
- end
171
- end
172
-
173
- it "doesn't display out of stock for master product" do
174
- product.master.stock_items.update_all count_on_hand: 0, backorderable: false
175
-
176
- click_link product.name
177
- within("#product-price") do
178
- expect(page).not_to have_content I18n.t('spree.out_of_stock')
179
- end
180
- end
181
- end
182
-
183
- context "a product with variants, images only for the variants" do
184
- let(:product) { Spree::Product.find_by(name: "Ruby on Rails Baseball Jersey") }
185
-
186
- before do
187
- image = File.open(File.expand_path('../fixtures/thinking-cat.jpg', __dir__))
188
- v1 = product.variants.create!(price: 9.99)
189
- v2 = product.variants.create!(price: 10.99)
190
- v1.images.create!(attachment: image)
191
- v2.images.create!(attachment: image)
192
- end
193
-
194
- it "should not display no image available" do
195
- visit spree.root_path
196
- expect(page).to have_xpath("//img[contains(@src,'thinking-cat')]")
197
- end
198
- end
199
-
200
- it "should be able to hide products without price" do
201
- expect(page.all('ul.product-listing li').size).to eq(9)
202
- stub_spree_preferences(show_products_without_price: false)
203
- stub_spree_preferences(currency: "CAN")
204
- visit spree.root_path
205
- expect(page.all('ul.product-listing li').size).to eq(0)
206
- end
207
-
208
- it "should be able to display products priced under 10 dollars" do
209
- within(:css, '#taxonomies') { click_link "Ruby on Rails" }
210
- check "Price_Range_Under_$10.00"
211
- within(:css, '#sidebar_products_search') { click_button "Search" }
212
- expect(page).to have_content("No products found")
213
- end
214
-
215
- it "should be able to display products priced between 15 and 18 dollars" do
216
- within(:css, '#taxonomies') { click_link "Ruby on Rails" }
217
- check "Price_Range_$15.00_-_$18.00"
218
- within(:css, '#sidebar_products_search') { click_button "Search" }
219
-
220
- expect(page.all('ul.product-listing li').size).to eq(3)
221
- tmp = page.all('ul.product-listing li a').map(&:text).flatten.compact
222
- tmp.delete("")
223
- expect(tmp.sort!).to eq(["Ruby on Rails Mug", "Ruby on Rails Stein", "Ruby on Rails Tote"])
224
- end
225
-
226
- it "should be able to display products priced between 15 and 18 dollars across multiple pages" do
227
- stub_spree_preferences(products_per_page: 2)
228
- within(:css, '#taxonomies') { click_link "Ruby on Rails" }
229
- check "Price_Range_$15.00_-_$18.00"
230
- within(:css, '#sidebar_products_search') { click_button "Search" }
231
-
232
- expect(page.all('ul.product-listing li').size).to eq(2)
233
- products = page.all('ul.product-listing li a[itemprop=name]')
234
- expect(products.count).to eq(2)
235
-
236
- find('nav.pagination .next a').click
237
- products = page.all('ul.product-listing li a[itemprop=name]')
238
- expect(products.count).to eq(1)
239
- end
240
-
241
- it "should be able to display products priced 18 dollars and above" do
242
- within(:css, '#taxonomies') { click_link "Ruby on Rails" }
243
- check "Price_Range_$18.00_-_$20.00"
244
- check "Price_Range_$20.00_or_over"
245
- within(:css, '#sidebar_products_search') { click_button "Search" }
246
-
247
- expect(page.all('ul.product-listing li').size).to eq(4)
248
- tmp = page.all('ul.product-listing li a').map(&:text).flatten.compact
249
- tmp.delete("")
250
- expect(tmp.sort!).to eq(["Ruby on Rails Bag",
251
- "Ruby on Rails Baseball Jersey",
252
- "Ruby on Rails Jr. Spaghetti",
253
- "Ruby on Rails Ringer T-Shirt"])
254
- end
255
-
256
- it "should be able to put a product without a description in the cart" do
257
- product = FactoryBot.create(:base_product, description: nil, name: 'Sample', price: '19.99')
258
- visit spree.product_path(product)
259
- expect(page).to have_content "This product has no description"
260
- click_button 'add-to-cart-button'
261
- expect(page).to have_content "This product has no description"
262
- end
263
-
264
- it "shouldn't be able to put a product without a current price in the cart" do
265
- product = FactoryBot.create(:base_product, description: nil, name: 'Sample', price: '19.99')
266
- stub_spree_preferences(currency: "CAN")
267
- stub_spree_preferences(show_products_without_price: true)
268
- visit spree.product_path(product)
269
- expect(page).to have_content "This product is not available in the selected currency."
270
- expect(page).not_to have_content "add-to-cart-button"
271
- end
272
-
273
- it "should be able to list products without a price" do
274
- product = FactoryBot.create(:base_product, description: nil, name: 'Sample', price: '19.99')
275
- stub_spree_preferences(currency: "CAN")
276
- stub_spree_preferences(show_products_without_price: true)
277
- visit spree.products_path
278
- expect(page).to have_content(product.name)
279
- end
280
-
281
- it "should return the correct title when displaying a single product" do
282
- product = Spree::Product.find_by(name: "Ruby on Rails Baseball Jersey")
283
- click_link product.name
284
-
285
- within("div#product-description") do
286
- within("h1.product-title") do
287
- expect(page).to have_content("Ruby on Rails Baseball Jersey")
288
- end
289
- end
290
- end
291
- end
@@ -1,54 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- RSpec.feature "Promotion Code Invalidation", js: true do
6
- given!(:promotion) do
7
- FactoryBot.create(
8
- :promotion_with_item_adjustment,
9
- code: "PROMO",
10
- per_code_usage_limit: 1,
11
- adjustment_rate: 5
12
- )
13
- end
14
-
15
- background do
16
- create(:store)
17
- FactoryBot.create(:product, name: "DL-44")
18
- FactoryBot.create(:product, name: "E-11")
19
-
20
- visit spree.root_path
21
- click_link "DL-44"
22
- click_button "Add To Cart"
23
-
24
- visit spree.root_path
25
- click_link "E-11"
26
- click_button "Add To Cart"
27
- end
28
-
29
- scenario "adding the promotion to a cart with two applicable items" do
30
- fill_in "Coupon code", with: "PROMO"
31
- click_button "Apply Code"
32
-
33
- expect(page).to have_content("The coupon code was successfully applied to your order")
34
-
35
- within("#cart_adjustments") do
36
- expect(page).to have_content("-$10.00")
37
- end
38
-
39
- # Remove an item
40
- fill_in "order_line_items_attributes_0_quantity", with: 0
41
- click_button "Update"
42
- within("#cart_adjustments") do
43
- expect(page).to have_content("-$5.00")
44
- end
45
-
46
- # Add it back
47
- visit spree.root_path
48
- click_link "DL-44"
49
- click_button "Add To Cart"
50
- within("#cart_adjustments") do
51
- expect(page).to have_content("-$10.00")
52
- end
53
- end
54
- end
@@ -1,130 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- RSpec.feature "Quantity Promotions", js: true do
6
- given(:action) do
7
- Spree::Promotion::Actions::CreateQuantityAdjustments.create(
8
- calculator: calculator,
9
- preferred_group_size: 2
10
- )
11
- end
12
-
13
- given(:promotion) { FactoryBot.create(:promotion, code: "PROMO") }
14
- given(:calculator) { FactoryBot.create(:calculator, preferred_amount: 5) }
15
-
16
- background do
17
- create(:store)
18
- FactoryBot.create(:product, name: "DL-44")
19
- FactoryBot.create(:product, name: "E-11")
20
- promotion.actions << action
21
-
22
- visit spree.root_path
23
- click_link "DL-44"
24
- click_button "Add To Cart"
25
- end
26
-
27
- scenario "adding and removing items from the cart" do
28
- # Attempt to use the code with too few items.
29
- fill_in "coupon_code", with: "PROMO"
30
- click_button "Apply Code"
31
- expect(page).to have_content("This coupon code could not be applied to the cart at this time")
32
-
33
- # Add another item to our cart.
34
- visit spree.root_path
35
- click_link "DL-44"
36
- click_button "Add To Cart"
37
-
38
- # Using the code should now succeed.
39
- fill_in "coupon_code", with: "PROMO"
40
- click_button "Apply Code"
41
- expect(page).to have_content("The coupon code was successfully applied to your order")
42
- within("#cart_adjustments") do
43
- expect(page).to have_content("-$10.00")
44
- end
45
-
46
- # Reduce quantity by 1, making promotion not apply.
47
- fill_in "order_line_items_attributes_0_quantity", with: 1
48
- click_button "Update"
49
- expect(page).to_not have_content("#cart_adjustments")
50
-
51
- # Bump quantity to 3, making promotion apply "once."
52
- fill_in "order_line_items_attributes_0_quantity", with: 3
53
- click_button "Update"
54
- within("#cart_adjustments") do
55
- expect(page).to have_content("-$10.00")
56
- end
57
-
58
- # Bump quantity to 4, making promotion apply "twice."
59
- fill_in "order_line_items_attributes_0_quantity", with: 4
60
- click_button "Update"
61
- within("#cart_adjustments") do
62
- expect(page).to have_content("-$20.00")
63
- end
64
- end
65
-
66
- # Catches an earlier issue with quantity calculation.
67
- scenario "adding odd numbers of items to the cart" do
68
- # Bump quantity to 3
69
- fill_in "order_line_items_attributes_0_quantity", with: 3
70
- click_button "Update"
71
-
72
- # Apply the promo code and see a $10 discount (for 2 of the 3 items)
73
- fill_in "coupon_code", with: "PROMO"
74
- click_button "Apply Code"
75
- expect(page).to have_content("The coupon code was successfully applied to your order")
76
- within("#cart_adjustments") do
77
- expect(page).to have_content("-$10.00")
78
- end
79
-
80
- # Add a different product to our cart with quantity of 2.
81
- visit spree.root_path
82
- click_link "E-11"
83
- fill_in "quantity", with: "2"
84
- click_button "Add To Cart"
85
-
86
- # We now have 5 items total, so discount should increase.
87
- within("#cart_adjustments") do
88
- expect(page).to have_content("-$20.00")
89
- end
90
- end
91
-
92
- context "with a group size of 3" do
93
- given(:action) do
94
- Spree::Promotion::Actions::CreateQuantityAdjustments.create(
95
- calculator: calculator,
96
- preferred_group_size: 3
97
- )
98
- end
99
-
100
- background { FactoryBot.create(:product, name: "DC-15A") }
101
-
102
- scenario "odd number of changes to quantities" do
103
- fill_in "order_line_items_attributes_0_quantity", with: 3
104
- click_button "Update"
105
-
106
- # Apply the promo code and see a $15 discount
107
- fill_in "coupon_code", with: "PROMO"
108
- click_button "Apply Code"
109
- expect(page).to have_content("The coupon code was successfully applied to your order")
110
- within("#cart_adjustments") do
111
- expect(page).to have_content("-$15.00")
112
- end
113
-
114
- # Add two different products to our cart
115
- visit spree.root_path
116
- click_link "E-11"
117
- click_button "Add To Cart"
118
- within("#cart_adjustments") do
119
- expect(page).to have_content("-$15.00")
120
- end
121
-
122
- # Reduce quantity of first item to 2
123
- fill_in "order_line_items_attributes_0_quantity", with: 2
124
- click_button "Update"
125
- within("#cart_adjustments") do
126
- expect(page).to have_content("-$15.00")
127
- end
128
- end
129
- end
130
- end