solidus_frontend 2.4.2 → 2.5.0.beta1

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 (132) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +1 -5
  3. data/Rakefile +7 -7
  4. data/app/assets/config/solidus_frontend_manifest.js +0 -2
  5. data/app/assets/javascripts/spree/frontend.js +0 -1
  6. data/app/assets/javascripts/spree/frontend/cart.js +30 -0
  7. data/app/assets/javascripts/spree/frontend/checkout.js +24 -0
  8. data/app/assets/javascripts/spree/frontend/checkout/address.js +128 -0
  9. data/app/assets/javascripts/spree/frontend/checkout/coupon-code.js +40 -0
  10. data/app/assets/javascripts/spree/frontend/checkout/payment.js +55 -0
  11. data/app/assets/javascripts/spree/frontend/product.js +81 -0
  12. data/app/assets/stylesheets/spree/frontend/_variables.scss +3 -0
  13. data/app/assets/stylesheets/spree/frontend/screen.css.scss +2 -2
  14. data/app/controllers/spree/checkout_controller.rb +3 -3
  15. data/app/controllers/spree/locale_controller.rb +2 -2
  16. data/app/controllers/spree/orders_controller.rb +5 -6
  17. data/app/controllers/spree/products_controller.rb +0 -1
  18. data/app/controllers/spree/store_controller.rb +1 -1
  19. data/app/controllers/spree/taxons_controller.rb +0 -1
  20. data/app/views/spree/address/_form.html.erb +23 -21
  21. data/app/views/spree/checkout/_address.html.erb +5 -5
  22. data/app/views/spree/checkout/_confirm.html.erb +3 -3
  23. data/app/views/spree/checkout/_delivery.html.erb +18 -14
  24. data/app/views/spree/checkout/_payment.html.erb +6 -6
  25. data/app/views/spree/checkout/_summary.html.erb +5 -5
  26. data/app/views/spree/checkout/edit.html.erb +2 -6
  27. data/app/views/spree/checkout/payment/_gateway.html.erb +9 -9
  28. data/app/views/spree/content/cvv.html.erb +1 -1
  29. data/app/views/spree/orders/_adjustments.html.erb +4 -4
  30. data/app/views/spree/orders/_form.html.erb +6 -6
  31. data/app/views/spree/orders/_line_item.html.erb +4 -4
  32. data/app/views/spree/orders/edit.html.erb +9 -9
  33. data/app/views/spree/orders/show.html.erb +4 -4
  34. data/app/views/spree/payments/_payment.html.erb +1 -1
  35. data/app/views/spree/products/_cart_form.html.erb +7 -7
  36. data/app/views/spree/products/_image.html.erb +2 -2
  37. data/app/views/spree/products/_promotions.html.erb +1 -1
  38. data/app/views/spree/products/_properties.html.erb +1 -1
  39. data/app/views/spree/products/_taxons.html.erb +1 -1
  40. data/app/views/spree/products/index.html.erb +1 -1
  41. data/app/views/spree/products/show.html.erb +1 -1
  42. data/app/views/spree/shared/_address.html.erb +2 -2
  43. data/app/views/spree/shared/_filters.html.erb +2 -2
  44. data/app/views/spree/shared/_footer.html.erb +1 -1
  45. data/app/views/spree/shared/_image.html.erb +12 -0
  46. data/app/views/spree/shared/_login_bar_items.html.erb +1 -0
  47. data/app/views/spree/shared/_main_nav_bar.html.erb +2 -2
  48. data/app/views/spree/shared/_nav_bar.html.erb +1 -0
  49. data/app/views/spree/shared/_order_details.html.erb +20 -20
  50. data/app/views/spree/shared/_products.html.erb +3 -3
  51. data/app/views/spree/shared/_search.html.erb +3 -3
  52. data/app/views/spree/shared/_shipment_tracking.html.erb +1 -1
  53. data/app/views/spree/shared/_taxonomies.html.erb +2 -2
  54. data/lib/generators/solidus/views/override_generator.rb +1 -0
  55. data/lib/spree/frontend.rb +4 -2
  56. data/solidus_frontend.gemspec +1 -2
  57. data/spec/controllers/spree/checkout_controller_spec.rb +12 -12
  58. data/spec/controllers/spree/current_order_tracking_spec.rb +1 -1
  59. data/spec/controllers/spree/orders_controller_ability_spec.rb +6 -4
  60. data/spec/controllers/spree/orders_controller_spec.rb +4 -3
  61. data/spec/controllers/spree/orders_controller_transitions_spec.rb +1 -1
  62. data/spec/controllers/spree/products_controller_spec.rb +3 -2
  63. data/spec/features/caching/products_spec.rb +7 -7
  64. data/spec/features/cart_spec.rb +1 -1
  65. data/spec/features/checkout_spec.rb +10 -9
  66. data/spec/features/coupon_code_spec.rb +12 -13
  67. data/spec/features/locale_spec.rb +0 -38
  68. data/spec/features/order_spec.rb +1 -1
  69. data/spec/features/products_spec.rb +4 -4
  70. data/spec/features/promotion_code_invalidation_spec.rb +3 -3
  71. data/spec/features/quantity_promotions_spec.rb +5 -5
  72. data/spec/generators/solidus/views/override_generator_spec.rb +2 -1
  73. data/spec/spec_helper.rb +19 -41
  74. data/spec/support/shared_contexts/custom_products.rb +17 -17
  75. metadata +19 -88
  76. data/Gemfile +0 -7
  77. data/app/assets/javascripts/spree/frontend/cart.js.coffee +0 -15
  78. data/app/assets/javascripts/spree/frontend/checkout.js.coffee +0 -17
  79. data/app/assets/javascripts/spree/frontend/checkout/address.js.coffee +0 -91
  80. data/app/assets/javascripts/spree/frontend/checkout/coupon-code.js.coffee +0 -34
  81. data/app/assets/javascripts/spree/frontend/checkout/payment.js.coffee +0 -42
  82. data/app/assets/javascripts/spree/frontend/product.js.coffee +0 -47
  83. data/vendor/assets/javascripts/jquery.validate/additional-methods.min.js +0 -12
  84. data/vendor/assets/javascripts/jquery.validate/jquery.validate.min.js +0 -12
  85. data/vendor/assets/javascripts/jquery.validate/localization/messages_ar.js +0 -25
  86. data/vendor/assets/javascripts/jquery.validate/localization/messages_bg.js +0 -25
  87. data/vendor/assets/javascripts/jquery.validate/localization/messages_ca.js +0 -25
  88. data/vendor/assets/javascripts/jquery.validate/localization/messages_cs.js +0 -25
  89. data/vendor/assets/javascripts/jquery.validate/localization/messages_da.js +0 -22
  90. data/vendor/assets/javascripts/jquery.validate/localization/messages_de.js +0 -22
  91. data/vendor/assets/javascripts/jquery.validate/localization/messages_el.js +0 -25
  92. data/vendor/assets/javascripts/jquery.validate/localization/messages_es.js +0 -25
  93. data/vendor/assets/javascripts/jquery.validate/localization/messages_et.js +0 -23
  94. data/vendor/assets/javascripts/jquery.validate/localization/messages_eu.js +0 -25
  95. data/vendor/assets/javascripts/jquery.validate/localization/messages_fa.js +0 -25
  96. data/vendor/assets/javascripts/jquery.validate/localization/messages_fi.js +0 -23
  97. data/vendor/assets/javascripts/jquery.validate/localization/messages_fr.js +0 -47
  98. data/vendor/assets/javascripts/jquery.validate/localization/messages_ge.js +0 -23
  99. data/vendor/assets/javascripts/jquery.validate/localization/messages_he.js +0 -25
  100. data/vendor/assets/javascripts/jquery.validate/localization/messages_hr.js +0 -25
  101. data/vendor/assets/javascripts/jquery.validate/localization/messages_hu.js +0 -24
  102. data/vendor/assets/javascripts/jquery.validate/localization/messages_it.js +0 -25
  103. data/vendor/assets/javascripts/jquery.validate/localization/messages_ja.js +0 -25
  104. data/vendor/assets/javascripts/jquery.validate/localization/messages_ka.js +0 -25
  105. data/vendor/assets/javascripts/jquery.validate/localization/messages_kk.js +0 -25
  106. data/vendor/assets/javascripts/jquery.validate/localization/messages_ko.js +0 -25
  107. data/vendor/assets/javascripts/jquery.validate/localization/messages_lt.js +0 -25
  108. data/vendor/assets/javascripts/jquery.validate/localization/messages_lv.js +0 -25
  109. data/vendor/assets/javascripts/jquery.validate/localization/messages_ms.js +0 -25
  110. data/vendor/assets/javascripts/jquery.validate/localization/messages_nl.js +0 -35
  111. data/vendor/assets/javascripts/jquery.validate/localization/messages_no.js +0 -25
  112. data/vendor/assets/javascripts/jquery.validate/localization/messages_pl.js +0 -25
  113. data/vendor/assets/javascripts/jquery.validate/localization/messages_ptbr.js +0 -24
  114. data/vendor/assets/javascripts/jquery.validate/localization/messages_ptpt.js +0 -24
  115. data/vendor/assets/javascripts/jquery.validate/localization/messages_ro.js +0 -25
  116. data/vendor/assets/javascripts/jquery.validate/localization/messages_ru.js +0 -25
  117. data/vendor/assets/javascripts/jquery.validate/localization/messages_se.js +0 -23
  118. data/vendor/assets/javascripts/jquery.validate/localization/messages_si.js +0 -25
  119. data/vendor/assets/javascripts/jquery.validate/localization/messages_sk.js +0 -22
  120. data/vendor/assets/javascripts/jquery.validate/localization/messages_sl.js +0 -25
  121. data/vendor/assets/javascripts/jquery.validate/localization/messages_sr.js +0 -25
  122. data/vendor/assets/javascripts/jquery.validate/localization/messages_sv.js +0 -23
  123. data/vendor/assets/javascripts/jquery.validate/localization/messages_th.js +0 -25
  124. data/vendor/assets/javascripts/jquery.validate/localization/messages_tr.js +0 -25
  125. data/vendor/assets/javascripts/jquery.validate/localization/messages_tw.js +0 -24
  126. data/vendor/assets/javascripts/jquery.validate/localization/messages_uk.js +0 -25
  127. data/vendor/assets/javascripts/jquery.validate/localization/messages_vi.js +0 -25
  128. data/vendor/assets/javascripts/jquery.validate/localization/messages_zh.js +0 -25
  129. data/vendor/assets/javascripts/jquery.validate/localization/messages_zhtw.js +0 -26
  130. data/vendor/assets/javascripts/jquery.validate/localization/methods_de.js +0 -12
  131. data/vendor/assets/javascripts/jquery.validate/localization/methods_nl.js +0 -9
  132. data/vendor/assets/javascripts/jquery.validate/localization/methods_pt.js +0 -9
@@ -12,11 +12,11 @@
12
12
  <div data-hook="products_search_results_heading">
13
13
  <% if products.empty? %>
14
14
  <div data-hook="products_search_results_heading_no_results_found">
15
- <%= Spree.t(:no_products_found) %>
15
+ <%= t('spree.no_products_found') %>
16
16
  </div>
17
17
  <% elsif params.key?(:keywords) %>
18
18
  <div data-hook="products_search_results_heading_results_found">
19
- <h6 class="search-results-title"><%= Spree.t(:search_results, keywords: h(params[:keywords])) %></h6>
19
+ <h6 class="search-results-title"><%= t('spree.search_results', keywords: h(params[:keywords])) %></h6>
20
20
  </div>
21
21
  <% end %>
22
22
  </div>
@@ -28,7 +28,7 @@
28
28
  <li id="product_<%= product.id %>" class="columns three <%= cycle("alpha", "secondary", "", "omega secondary", name: "classes") %>" data-hook="products_list_item" itemscope itemtype="http://schema.org/Product">
29
29
  <% cache(@taxon.present? ? [I18n.locale, current_pricing_options, @taxon, product] : [I18n.locale, current_pricing_options, product]) do %>
30
30
  <div class="product-image">
31
- <%= link_to image_tag(product.display_image.attachment(:small), itemprop: "image"), url, itemprop: 'url' %>
31
+ <%= link_to(render('spree/shared/image', image: product.display_image, size: :small, itemprop: "image"), url, itemprop: 'url') %>
32
32
  </div>
33
33
  <%= link_to truncate(product.name, length: 50), url, class: 'info', itemprop: "name", title: product.name %>
34
34
  <span itemprop="offers" itemscope itemtype="http://schema.org/Offer">
@@ -2,10 +2,10 @@
2
2
  <%= form_tag spree.products_path, method: :get do %>
3
3
  <% cache [I18n.locale, @taxons] do %>
4
4
  <%= select_tag :taxon,
5
- options_for_select([[Spree.t(:all_departments), '']] +
5
+ options_for_select([[t('spree.all_departments'), '']] +
6
6
  @taxons.map {|t| [t.name, t.id]},
7
7
  @taxon ? @taxon.id : params[:taxon]), 'aria-label' => 'Taxon' %>
8
8
  <% end %>
9
- <%= search_field_tag :keywords, params[:keywords], placeholder: Spree.t(:search) %>
10
- <%= submit_tag Spree.t(:search), name: nil %>
9
+ <%= search_field_tag :keywords, params[:keywords], placeholder: t('spree.search') %>
10
+ <%= submit_tag t('spree.search'), name: nil %>
11
11
  <% end %>
@@ -1,6 +1,6 @@
1
1
  <% shipments = order.shipments.trackable %>
2
2
  <% if shipments.any? %>
3
- <h6><%= Spree.t(:tracking) %></h6>
3
+ <h6><%= t('spree.tracking') %></h6>
4
4
  <div class="tracking">
5
5
  <% shipments.each do |shipment| %>
6
6
  <%= link_to_tracking(shipment) %>
@@ -1,8 +1,8 @@
1
1
  <% max_level = Spree::Config[:max_level_in_taxons_menu] || 1 %>
2
2
  <nav id="taxonomies" class="sidebar-item" data-hook>
3
3
  <% @taxonomies.each do |taxonomy| %>
4
- <% cache [I18n.locale, taxonomy, max_level] do %>
5
- <h6 class='taxonomy-root'><%= Spree.t(:shop_by_taxonomy, taxonomy: taxonomy.name) %></h6>
4
+ <% cache [I18n.locale, taxonomy, @taxon, max_level] do %>
5
+ <h6 class='taxonomy-root'><%= t('spree.shop_by_taxonomy', taxonomy: taxonomy.name) %></h6>
6
6
  <%= taxons_tree(taxonomy.root, @taxon, max_level) %>
7
7
  <% end %>
8
8
  <% end %>
@@ -1,4 +1,5 @@
1
1
  require 'rails'
2
+ require 'rails/generators'
2
3
 
3
4
  module Solidus
4
5
  module Views
@@ -1,11 +1,13 @@
1
1
  require 'rails/all'
2
2
  require 'jquery-rails'
3
3
  require 'canonical-rails'
4
- require 'coffee-rails'
5
4
  require 'sass-rails'
6
5
  require 'font-awesome-rails'
6
+ require 'responders'
7
+ require 'kaminari'
7
8
 
8
- require 'spree/core'
9
+ require 'solidus_core'
10
+ require 'solidus_api'
9
11
 
10
12
  require 'spree/frontend/middleware/seo_assist'
11
13
  require 'spree/frontend/engine'
@@ -26,10 +26,9 @@ Gem::Specification.new do |s|
26
26
  s.add_dependency 'canonical-rails', '~> 0.2.0'
27
27
  s.add_dependency 'jquery-rails'
28
28
  s.add_dependency 'sass-rails'
29
- s.add_dependency 'coffee-rails'
30
29
  s.add_dependency 'font-awesome-rails', '~> 4.0'
31
30
  s.add_dependency 'truncate_html', '~> 0.9', '>= 0.9.2'
32
- s.add_dependency 'kaminari', '>= 0.17', '< 2.0'
31
+ s.add_dependency 'kaminari', '~> 1.1'
33
32
 
34
33
  s.add_development_dependency 'capybara-accessible'
35
34
  end
@@ -3,10 +3,10 @@ require 'spec_helper'
3
3
  describe Spree::CheckoutController, type: :controller do
4
4
  let(:token) { 'some_token' }
5
5
  let(:user) { create(:user) }
6
- let(:order) { FactoryGirl.create(:order_with_totals) }
6
+ let(:order) { FactoryBot.create(:order_with_totals) }
7
7
 
8
8
  let(:address_params) do
9
- address = FactoryGirl.build(:address)
9
+ address = FactoryBot.build(:address)
10
10
  address.attributes.except("created_at", "updated_at")
11
11
  end
12
12
 
@@ -85,7 +85,7 @@ describe Spree::CheckoutController, type: :controller do
85
85
  before do
86
86
  # Must have *a* shipping method and a payment method so updating from address works
87
87
  allow(order).to receive_messages ensure_available_shipping_rates: true
88
- order.line_items << FactoryGirl.create(:line_item)
88
+ order.line_items << FactoryBot.create(:line_item)
89
89
  end
90
90
 
91
91
  context "with the order in the cart state" do
@@ -291,7 +291,7 @@ describe Spree::CheckoutController, type: :controller do
291
291
 
292
292
  it "should populate the flash message" do
293
293
  post :update, params: { state: "confirm" }
294
- expect(flash.notice).to eq(Spree.t(:order_processed_successfully))
294
+ expect(flash.notice).to eq(I18n.t('spree.order_processed_successfully'))
295
295
  end
296
296
 
297
297
  it "should remove completed order from current_order" do
@@ -346,14 +346,14 @@ describe Spree::CheckoutController, type: :controller do
346
346
 
347
347
  it "should render the edit template and display exception message" do
348
348
  expect(response).to render_template :edit
349
- expect(flash.now[:error]).to eq(Spree.t(:spree_gateway_error_flash_for_checkout))
349
+ expect(flash.now[:error]).to eq(I18n.t('spree.spree_gateway_error_flash_for_checkout'))
350
350
  expect(assigns(:order).errors[:base]).to include("Invalid something or other.")
351
351
  end
352
352
  end
353
353
 
354
354
  context "fails to transition from address" do
355
355
  let(:order) do
356
- FactoryGirl.create(:order_with_line_items).tap do |order|
356
+ FactoryBot.create(:order_with_line_items).tap do |order|
357
357
  order.next!
358
358
  expect(order.state).to eq('address')
359
359
  end
@@ -387,7 +387,7 @@ describe Spree::CheckoutController, type: :controller do
387
387
 
388
388
  it "due to no available shipping rates for any of the shipments" do
389
389
  put :update, params: { state: "address", order: {} }
390
- expect(flash[:error]).to eq(Spree.t(:items_cannot_be_shipped))
390
+ expect(flash[:error]).to eq(I18n.t('spree.items_cannot_be_shipped'))
391
391
  expect(response).to redirect_to(spree.checkout_state_path('address'))
392
392
  end
393
393
  end
@@ -395,13 +395,13 @@ describe Spree::CheckoutController, type: :controller do
395
395
 
396
396
  context "when GatewayError is raised" do
397
397
  let(:order) do
398
- FactoryGirl.create(:order_with_line_items).tap do |order|
398
+ FactoryBot.create(:order_with_line_items).tap do |order|
399
399
  until order.state == 'payment'
400
400
  order.next!
401
401
  end
402
402
  # So that the confirmation step is skipped and we get straight to the action.
403
- payment_method = FactoryGirl.create(:simple_credit_card_payment_method)
404
- payment = FactoryGirl.create(:payment, payment_method: payment_method, amount: order.total)
403
+ payment_method = FactoryBot.create(:simple_credit_card_payment_method)
404
+ payment = FactoryBot.create(:payment, payment_method: payment_method, amount: order.total)
405
405
  order.payments << payment
406
406
  order.next!
407
407
  end
@@ -413,9 +413,9 @@ describe Spree::CheckoutController, type: :controller do
413
413
  end
414
414
 
415
415
  it "fails to transition from payment to complete" do
416
- allow_any_instance_of(Spree::Payment).to receive(:process!).and_raise(Spree::Core::GatewayError.new(Spree.t(:payment_processing_failed)))
416
+ allow_any_instance_of(Spree::Payment).to receive(:process!).and_raise(Spree::Core::GatewayError.new(I18n.t('spree.payment_processing_failed')))
417
417
  put :update, params: { state: order.state, order: {} }
418
- expect(flash[:error]).to eq(Spree.t(:payment_processing_failed))
418
+ expect(flash[:error]).to eq(I18n.t('spree.payment_processing_failed'))
419
419
  end
420
420
  end
421
421
  end
@@ -10,7 +10,7 @@ describe 'current order tracking', type: :controller do
10
10
  end
11
11
  end
12
12
 
13
- let(:order) { FactoryGirl.create(:order) }
13
+ let(:order) { FactoryBot.create(:order) }
14
14
 
15
15
  it 'automatically tracks who the order was created by & IP address' do
16
16
  allow(controller).to receive_messages(try_spree_current_user: user)
@@ -8,6 +8,7 @@ module Spree
8
8
  let(:user) { create(:user) }
9
9
  let(:guest_user) { create(:user) }
10
10
  let(:order) { Spree::Order.create }
11
+ let(:variant) { create(:variant) }
11
12
 
12
13
  it 'should understand order routes with token' do
13
14
  expect(spree.token_order_path('R123456', 'ABCDEF')).to eq('/orders/R123456/token/ABCDEF')
@@ -25,11 +26,11 @@ module Spree
25
26
  context '#populate' do
26
27
  it 'should check if user is authorized for :edit' do
27
28
  expect(controller).to receive(:authorize!).with(:edit, order, token)
28
- post :populate, params: { token: token }
29
+ post :populate, params: { variant_id: variant.id, token: token }
29
30
  end
30
31
  it "should check against the specified order" do
31
32
  expect(controller).to receive(:authorize!).with(:edit, specified_order, token)
32
- post :populate, params: { id: specified_order.number, token: token }
33
+ post :populate, params: { id: specified_order.number, variant_id: variant.id, token: token }
33
34
  end
34
35
  end
35
36
 
@@ -95,8 +96,9 @@ module Spree
95
96
 
96
97
  context 'when no token present' do
97
98
  it 'should respond with 404' do
98
- get :show, params: { id: 'R123' }
99
- expect(response.code).to eq('404')
99
+ expect {
100
+ get :show, params: { id: 'R123' }
101
+ }.to raise_error(ActiveRecord::RecordNotFound)
100
102
  end
101
103
  end
102
104
  end
@@ -16,7 +16,8 @@ describe Spree::OrdersController, type: :controller do
16
16
 
17
17
  context "#populate" do
18
18
  it "should create a new order when none specified" do
19
- post :populate
19
+ post :populate, params: { variant_id: variant.id }
20
+ expect(response).to be_redirect
20
21
  expect(cookies.signed[:guest_token]).not_to be_blank
21
22
 
22
23
  order_by_token = Spree::Order.find_by(guest_token: cookies.signed[:guest_token])
@@ -65,7 +66,7 @@ describe Spree::OrdersController, type: :controller do
65
66
 
66
67
  expect(response).to redirect_to(spree.root_path)
67
68
  expect(flash[:error]).to eq(
68
- Spree.t(:please_enter_reasonable_quantity)
69
+ I18n.t('spree.please_enter_reasonable_quantity')
69
70
  )
70
71
  end
71
72
 
@@ -150,7 +151,7 @@ describe Spree::OrdersController, type: :controller do
150
151
 
151
152
  it "cannot update a blank order" do
152
153
  put :update, params: { order: { email: "foo" } }
153
- expect(flash[:error]).to eq(Spree.t(:order_not_found))
154
+ expect(flash[:error]).to eq(I18n.t('spree.order_not_found'))
154
155
  expect(response).to redirect_to(spree.root_path)
155
156
  end
156
157
  end
@@ -22,7 +22,7 @@ module Spree
22
22
 
23
23
  it "correctly calls the transition callback" do
24
24
  expect(order.did_transition).to be_nil
25
- order.line_items << FactoryGirl.create(:line_item)
25
+ order.line_items << FactoryBot.create(:line_item)
26
26
  put :update, params: { checkout: "checkout" }
27
27
  expect(order.did_transition).to be true
28
28
  end
@@ -11,8 +11,9 @@ describe Spree::ProductsController, type: :controller do
11
11
  end
12
12
 
13
13
  it "cannot view non-active products" do
14
- get :show, params: { id: product.to_param }
15
- expect(response.status).to eq(404)
14
+ expect {
15
+ get :show, params: { id: product.to_param }
16
+ }.to raise_error(ActiveRecord::RecordNotFound)
16
17
  end
17
18
 
18
19
  it "should provide the current user to the searcher class" do
@@ -30,23 +30,23 @@ describe 'products', type: :feature, caching: true do
30
30
  expect(cache_writes.count).to eq(2)
31
31
  end
32
32
 
33
- it "busts the cache when all products are deleted" do
34
- product.destroy
35
- product2.destroy
33
+ it "busts the cache when all products are soft-deleted" do
34
+ product.discard
35
+ product2.discard
36
36
  visit spree.root_path
37
37
  assert_written_to_cache("views/en/USD/spree/products/all--#{Date.today.to_s(:number)}-0")
38
38
  expect(cache_writes.count).to eq(1)
39
39
  end
40
40
 
41
- it "busts the cache when the newest product is deleted" do
42
- product.destroy
41
+ it "busts the cache when the newest product is soft-deleted" do
42
+ product.discard
43
43
  visit spree.root_path
44
44
  assert_written_to_cache("views/en/USD/spree/products/all--#{product2.updated_at.utc.to_s(:number)}")
45
45
  expect(cache_writes.count).to eq(1)
46
46
  end
47
47
 
48
- it "busts the cache when an older product is deleted" do
49
- product2.destroy
48
+ it "busts the cache when an older product is soft-deleted" do
49
+ product2.discard
50
50
  visit spree.root_path
51
51
  assert_written_to_cache("views/en/USD/spree/products/all--#{product.updated_at.utc.to_s(:number)}")
52
52
  expect(cache_writes.count).to eq(1)
@@ -27,7 +27,7 @@ describe "Cart", type: :feature, inaccessible: true do
27
27
  it "does not error out with a 404 when GET'ing to /orders/populate" do
28
28
  visit '/orders/populate'
29
29
  within(".error") do
30
- expect(page).to have_content(Spree.t(:populate_get_error))
30
+ expect(page).to have_content(I18n.t('spree.populate_get_error'))
31
31
  end
32
32
  end
33
33
 
@@ -88,7 +88,7 @@ describe "Checkout", type: :feature, inaccessible: true do
88
88
  let!(:order) do
89
89
  order = Spree::Order.create!(
90
90
  email: "spree@example.com",
91
- store: Spree::Store.first || FactoryGirl.create(:store)
91
+ store: Spree::Store.first || FactoryBot.create(:store)
92
92
  )
93
93
 
94
94
  order.reload
@@ -348,7 +348,7 @@ describe "Checkout", type: :feature, inaccessible: true do
348
348
  choose "use_existing_card_no"
349
349
 
350
350
  fill_in "Name on card", with: 'Spree Commerce'
351
- fill_in "Card Number", with: '4111111111111111'
351
+ fill_in "Card Number", with: '4111 1111 1111 1111'
352
352
  fill_in "card_expiry", with: '04 / 20'
353
353
  fill_in "Card Code", with: '123'
354
354
 
@@ -365,7 +365,7 @@ describe "Checkout", type: :feature, inaccessible: true do
365
365
 
366
366
  # regression for https://github.com/spree/spree/issues/2921
367
367
  context "goes back from payment to add another item", js: true do
368
- let!(:store) { FactoryGirl.create(:store) }
368
+ let!(:store) { FactoryBot.create(:store) }
369
369
  let!(:bag) { create(:product, name: "RoR Bag") }
370
370
 
371
371
  it "transit nicely through checkout steps again" do
@@ -484,7 +484,7 @@ describe "Checkout", type: :feature, inaccessible: true do
484
484
  fill_in "Coupon Code", with: 'invalid'
485
485
  click_on "Apply Code"
486
486
 
487
- expect(page).to have_content(Spree.t(:coupon_code_not_found))
487
+ expect(page).to have_content(I18n.t('spree.coupon_code_not_found'))
488
488
  end
489
489
  end
490
490
 
@@ -522,7 +522,7 @@ describe "Checkout", type: :feature, inaccessible: true do
522
522
 
523
523
  choose "Credit Card"
524
524
  fill_in "Name on card", with: 'Spree Commerce'
525
- fill_in "Card Number", with: '4111111111111111'
525
+ fill_in "Card Number", with: '4111 1111 1111 1111'
526
526
  fill_in "card_expiry", with: '04 / 20'
527
527
  fill_in "Card Code", with: '123'
528
528
  click_button "Save and Continue"
@@ -580,12 +580,12 @@ describe "Checkout", type: :feature, inaccessible: true do
580
580
  end
581
581
 
582
582
  it "displays a thank you message" do
583
- expect(page).to have_content(Spree.t(:thank_you_for_your_order))
583
+ expect(page).to have_content(I18n.t('spree.thank_you_for_your_order'))
584
584
  end
585
585
 
586
586
  it "does not display a thank you message on that order future visits" do
587
587
  visit spree.order_path(order)
588
- expect(page).to_not have_content(Spree.t(:thank_you_for_your_order))
588
+ expect(page).to_not have_content(I18n.t('spree.thank_you_for_your_order'))
589
589
  end
590
590
  end
591
591
 
@@ -607,6 +607,7 @@ describe "Checkout", type: :feature, inaccessible: true do
607
607
  state_name_css = "order_bill_address_attributes_state_name"
608
608
 
609
609
  select "Canada", from: "order_bill_address_attributes_country_id"
610
+ fill_in 'Customer E-Mail', with: 'test@example.com'
610
611
  fill_in state_name_css, with: xss_string
611
612
  fill_in "Zip", with: "H0H0H0"
612
613
 
@@ -654,7 +655,7 @@ describe "Checkout", type: :feature, inaccessible: true do
654
655
  click_on "Save and Continue"
655
656
  click_on "Save and Continue"
656
657
 
657
- fill_in_credit_card(number: "4111111111111111")
658
+ fill_in_credit_card(number: "4111 1111 1111 1111")
658
659
  click_on "Save and Continue"
659
660
 
660
661
  expect(page).to have_current_path("/checkout/confirm")
@@ -663,7 +664,7 @@ describe "Checkout", type: :feature, inaccessible: true do
663
664
 
664
665
  def fill_in_credit_card(number:)
665
666
  fill_in "Card Number", with: number
666
- fill_in "Expiration", with: "1224"
667
+ fill_in "Expiration", with: "12 / 24"
667
668
  fill_in "Card Code", with: "123"
668
669
  end
669
670
 
@@ -58,13 +58,13 @@ describe "Coupon code promotions", type: :feature, js: true do
58
58
  it "informs about an invalid coupon code" do
59
59
  fill_in "order_coupon_code", with: "coupon_codes_rule_man"
60
60
  click_button "Save and Continue"
61
- expect(page).to have_content(Spree.t(:coupon_code_not_found))
61
+ expect(page).to have_content(I18n.t('spree.coupon_code_not_found'))
62
62
  end
63
63
 
64
64
  it "can enter an invalid coupon code, then a real one" do
65
65
  fill_in "order_coupon_code", with: "coupon_codes_rule_man"
66
66
  click_button "Save and Continue"
67
- expect(page).to have_content(Spree.t(:coupon_code_not_found))
67
+ expect(page).to have_content(I18n.t('spree.coupon_code_not_found'))
68
68
  fill_in "order_coupon_code", with: "onetwo"
69
69
  click_button "Save and Continue"
70
70
  expect(page).to have_content("Promotion (Onetwo) -$10.00")
@@ -90,13 +90,13 @@ describe "Coupon code promotions", type: :feature, js: true do
90
90
  it "can enter a coupon code and receives success notification" do
91
91
  fill_in "order_coupon_code", with: "onetwo"
92
92
  click_button "Update"
93
- expect(page).to have_content(Spree.t(:coupon_code_applied))
93
+ expect(page).to have_content(I18n.t('spree.coupon_code_applied'))
94
94
  end
95
95
 
96
96
  it "can enter a promotion code with both upper and lower case letters" do
97
97
  fill_in "order_coupon_code", with: "ONETwO"
98
98
  click_button "Update"
99
- expect(page).to have_content(Spree.t(:coupon_code_applied))
99
+ expect(page).to have_content(I18n.t('spree.coupon_code_applied'))
100
100
  end
101
101
 
102
102
  it "informs the user about a coupon code which has exceeded its usage" do
@@ -104,7 +104,7 @@ describe "Coupon code promotions", type: :feature, js: true do
104
104
 
105
105
  fill_in "order_coupon_code", with: "onetwo"
106
106
  click_button "Update"
107
- expect(page).to have_content(Spree.t(:coupon_code_max_usage))
107
+ expect(page).to have_content(I18n.t('spree.coupon_code_max_usage'))
108
108
  end
109
109
 
110
110
  context "informs the user if the coupon code is not eligible" do
@@ -120,7 +120,7 @@ describe "Coupon code promotions", type: :feature, js: true do
120
120
 
121
121
  fill_in "order_coupon_code", with: "onetwo"
122
122
  click_button "Update"
123
- expect(page).to have_content(Spree.t(:item_total_less_than_or_equal, scope: [:eligibility_errors, :messages], amount: "$100.00"))
123
+ expect(page).to have_content(I18n.t(:item_total_less_than_or_equal, scope: [:spree, :eligibility_errors, :messages], amount: "$100.00"))
124
124
  end
125
125
  end
126
126
 
@@ -130,7 +130,7 @@ describe "Coupon code promotions", type: :feature, js: true do
130
130
  promotion.save!
131
131
  fill_in "order_coupon_code", with: "onetwo"
132
132
  click_button "Update"
133
- expect(page).to have_content(Spree.t(:coupon_code_expired))
133
+ expect(page).to have_content(I18n.t('spree.coupon_code_expired'))
134
134
  end
135
135
 
136
136
  context "calculates the correct amount of money saved with flat percent promotions" do
@@ -174,13 +174,12 @@ describe "Coupon code promotions", type: :feature, js: true do
174
174
  calculator = Spree::Calculator::FlatPercentItemTotal.new
175
175
  calculator.preferred_flat_percent = 100
176
176
 
177
- action = Spree::Promotion::Actions::CreateAdjustment.new
178
- action.calculator = calculator
179
- action.promotion = promotion
180
- action.save
177
+ promotion.promotion_actions.first.discard
181
178
 
182
- promotion.promotion_actions = [action]
183
- promotion.save
179
+ Spree::Promotion::Actions::CreateAdjustment.create!(
180
+ calculator: calculator,
181
+ promotion: promotion
182
+ )
184
183
 
185
184
  create(:product, name: "Spree Mug", price: 10)
186
185
  end