solidus_frontend 2.9.6 → 2.10.3

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

Potentially problematic release.


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

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 59a3b04e427501e6c465c89d3a7a5278be8b999ab29dbbe0af9841df1d1032c8
4
- data.tar.gz: f62b17d100120614790bf81f0f0f202f1b55918489b242f8b89cb311406f96a2
3
+ metadata.gz: 91b81a0499cfcc80c2679550b7d6db2ad71924487a5d46dbac789addd97edfda
4
+ data.tar.gz: a50ea281edb618f5ccc671bca43341e403e6e550aa7d0875a0b581ab663ddc32
5
5
  SHA512:
6
- metadata.gz: 7385f7eb310a92fcb4eaf18b2fd377cf08ee0c863bd806724dd860ad70d99dceadb59807edf6dcd6b8d2608a12e1064f301c912664d44616c235f6ac79e6ec6e
7
- data.tar.gz: dda5bfdd5c4c33f6bbdda2692d24a24ec0953686c4ebfec47137451fd830a7a36e884b1577fef5a24f03c0007f95401820c6118ac38e2ed6452215f449d22454
6
+ metadata.gz: 53f459be7840d780e768a38a3ddc1355246cdf421fe0c28a0f2e9172ef0327d47266f43fa58a0aeea1595603d8f83da9b061e41706c20e48f256e90f38e5ff59
7
+ data.tar.gz: 781d5b3e99617412f0f3eb7e8871c68c47d94d05fb26d689c961cc8e4414e340e14362ec4bd19f3c546184c81c79c9249784e2988954bca79ecf7f498b1dbddf
@@ -963,8 +963,8 @@ p[data-hook="use_billing"] {
963
963
  }
964
964
 
965
965
  input[type="text"] {
966
- flex: 3 0;
967
- width: 100%;
966
+ flex: 1 auto;
967
+ width: 50%;
968
968
  margin-right: 5px;
969
969
  }
970
970
 
@@ -1268,7 +1268,7 @@ table.order-summary {
1268
1268
  // # Logo
1269
1269
  #logo {
1270
1270
  padding: 20px 0;
1271
-
1271
+
1272
1272
  > a {
1273
1273
  display: inline-block;
1274
1274
  }
@@ -149,6 +149,10 @@ module Spree
149
149
  redirect_to(spree.cart_path) && return unless @order
150
150
  end
151
151
 
152
+ # Allow the customer to only go back or stay on the current state
153
+ # when trying to change it via params[:state]. It's not allowed to
154
+ # jump forward and skip states (unless #skip_state_validation? is
155
+ # truthy).
152
156
  def set_state_if_present
153
157
  if params[:state]
154
158
  redirect_to checkout_state_path(@order.state) if @order.can_go_to_state?(params[:state]) && !skip_state_validation?
@@ -42,6 +42,10 @@ module Spree
42
42
  @order = current_order || Spree::Order.incomplete.find_or_initialize_by(guest_token: cookies.signed[:guest_token])
43
43
  authorize! :read, @order, cookies.signed[:guest_token]
44
44
  associate_user
45
+ if params[:id] && @order.number != params[:id]
46
+ flash[:error] = t('spree.cannot_edit_orders')
47
+ redirect_to cart_path
48
+ end
45
49
  end
46
50
 
47
51
  # Adds a new item to the order (creating a new order if none already exists)
@@ -59,8 +63,8 @@ module Spree
59
63
 
60
64
  begin
61
65
  @line_item = @order.contents.add(variant, quantity)
62
- rescue ActiveRecord::RecordInvalid => e
63
- @order.errors.add(:base, e.record.errors.full_messages.join(", "))
66
+ rescue ActiveRecord::RecordInvalid => error
67
+ @order.errors.add(:base, error.record.errors.full_messages.join(", "))
64
68
  end
65
69
 
66
70
  respond_with(@order) do |format|
@@ -24,6 +24,7 @@ module Solidus
24
24
  def copy_views
25
25
  views_to_copy.each do |file|
26
26
  next if File.directory?(file)
27
+
27
28
  dest_file = Pathname.new(file).relative_path_from(source_dir)
28
29
  copy_file file, Rails.root.join('app', 'views', 'spree', dest_file)
29
30
  end
@@ -33,8 +34,8 @@ module Solidus
33
34
 
34
35
  def views_to_copy
35
36
  if @options['only']
36
- VIEWS.select do |v|
37
- Pathname.new(v).relative_path_from(source_dir).to_s.include?(@options['only'])
37
+ VIEWS.select do |view|
38
+ Pathname.new(view).relative_path_from(source_dir).to_s.include?(@options['only'])
38
39
  end
39
40
  else
40
41
  VIEWS
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spree/frontend_configuration'
4
+
5
+ module Spree
6
+ module Frontend
7
+ Config = Spree::FrontendConfiguration.new
8
+ end
9
+ end
@@ -1,13 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'spree/frontend/config'
4
+
3
5
  module Spree
4
6
  module Frontend
5
7
  class Engine < ::Rails::Engine
6
8
  config.middleware.use "Spree::Frontend::Middleware::SeoAssist"
7
9
 
8
- initializer "spree.frontend.environment", before: :load_config_initializers do |_app|
9
- Spree::Frontend::Config = Spree::FrontendConfiguration.new
10
- end
10
+ # Leave initializer empty for backwards-compatability. Other apps
11
+ # might still rely on this event.
12
+ initializer "spree.frontend.environment", before: :load_config_initializers do; end
11
13
  end
12
14
  end
13
15
  end
@@ -38,11 +38,11 @@ module Spree
38
38
  end
39
39
 
40
40
  def build_query(params)
41
- params.map { |k, v|
42
- if v.class == Array
43
- build_query(v.map { |x| ["#{k}[]", x] })
41
+ params.map { |key, value|
42
+ if value.class == Array
43
+ build_query(value.map { |parameter| ["#{key}[]", parameter] })
44
44
  else
45
- k + "=" + Rack::Utils.escape(v)
45
+ key + "=" + Rack::Utils.escape(value)
46
46
  end
47
47
  }.join("&")
48
48
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Spree
4
4
  class FrontendConfiguration < Preferences::Configuration
5
- preference :locale, :string, default: Rails.application.config.i18n.default_locale
5
+ preference :locale, :string, default: I18n.default_locale
6
6
 
7
7
  # Add your terms and conditions in app/views/spree/checkout/_terms_and_conditions.en.html.erb
8
8
  preference :require_terms_and_conditions_acceptance, :boolean, default: false
@@ -18,7 +18,7 @@ Gem::Specification.new do |s|
18
18
  s.require_path = 'lib'
19
19
  s.requirements << 'none'
20
20
 
21
- s.required_ruby_version = '>= 2.2.2'
21
+ s.required_ruby_version = '>= 2.4.0'
22
22
  s.required_rubygems_version = '>= 1.8.23'
23
23
 
24
24
  s.add_dependency 'solidus_api', s.version
@@ -28,6 +28,7 @@ Gem::Specification.new do |s|
28
28
  s.add_dependency 'font-awesome-rails', '~> 4.0'
29
29
  s.add_dependency 'jquery-rails'
30
30
  s.add_dependency 'kaminari', '~> 1.1'
31
+ s.add_dependency 'responders'
31
32
  s.add_dependency 'sassc-rails'
32
33
  s.add_dependency 'truncate_html', '~> 0.9', '>= 0.9.2'
33
34
 
@@ -91,7 +91,7 @@ describe Spree::CheckoutController, type: :controller do
91
91
 
92
92
  context "with the order in the cart state", partial_double_verification: false do
93
93
  before do
94
- order.update_attributes! user: user
94
+ order.update! user: user
95
95
  order.update_column(:state, "cart")
96
96
  end
97
97
 
@@ -140,7 +140,7 @@ describe Spree::CheckoutController, type: :controller do
140
140
 
141
141
  context "with the order in the address state", partial_double_verification: false do
142
142
  before do
143
- order.update_attributes! user: user
143
+ order.update! user: user
144
144
  order.update_columns(ship_address_id: create(:address).id, state: "address")
145
145
  end
146
146
 
@@ -213,7 +213,7 @@ describe Spree::CheckoutController, type: :controller do
213
213
  end
214
214
 
215
215
  before do
216
- order.update_attributes! user: user
216
+ order.update! user: user
217
217
  3.times { order.next! } # should put us in the payment state
218
218
  end
219
219
 
@@ -245,7 +245,7 @@ describe Spree::CheckoutController, type: :controller do
245
245
  end
246
246
 
247
247
  before do
248
- order.update_attributes! user: user
248
+ order.update! user: user
249
249
  3.times { order.next! } # should put us in the payment state
250
250
  end
251
251
 
@@ -300,7 +300,7 @@ describe Spree::CheckoutController, type: :controller do
300
300
 
301
301
  context "when in the confirm state" do
302
302
  before do
303
- order.update_attributes! user: user
303
+ order.update! user: user
304
304
  order.update_column(:state, "confirm")
305
305
  # An order requires a payment to reach the complete state
306
306
  # This is because payment_required? is true on the order
@@ -330,7 +330,7 @@ describe Spree::CheckoutController, type: :controller do
330
330
 
331
331
  context "save unsuccessful" do
332
332
  before do
333
- order.update_attributes! user: user
333
+ order.update! user: user
334
334
  allow(order).to receive_messages valid?: false
335
335
  end
336
336
 
@@ -367,7 +367,7 @@ describe Spree::CheckoutController, type: :controller do
367
367
 
368
368
  context "Spree::Core::GatewayError" do
369
369
  before do
370
- order.update_attributes! user: user
370
+ order.update! user: user
371
371
  allow(order).to receive(:next).and_raise(Spree::Core::GatewayError.new("Invalid something or other."))
372
372
  post :update, params: { state: "address", order: { bill_address_attributes: address_params } }
373
373
  end
@@ -37,7 +37,7 @@ module Spree
37
37
 
38
38
  context '#update' do
39
39
  it 'should check if user is authorized for :update' do
40
- allow(order).to receive :update_attributes
40
+ allow(order).to receive :update
41
41
  expect(controller).to receive(:authorize!).with(:update, order, token)
42
42
  post :update, params: { order: { email: "foo@bar.com" }, token: token }
43
43
  end
@@ -102,6 +102,31 @@ describe Spree::OrdersController, type: :controller do
102
102
  end
103
103
  end
104
104
 
105
+ context '#edit' do
106
+ before do
107
+ allow(controller).to receive :authorize!
108
+ allow(controller).to receive_messages current_order: order
109
+ end
110
+
111
+ it 'should render cart' do
112
+ get :edit, params: { id: order.number }
113
+
114
+ expect(flash[:error]).to be_nil
115
+ expect(response).to be_ok
116
+ end
117
+
118
+ context 'with another order number than the current_order' do
119
+ let(:other_order) { create(:completed_order_with_totals) }
120
+
121
+ it 'should display error message' do
122
+ get :edit, params: { id: other_order.number }
123
+
124
+ expect(flash[:error]).to eq "You may only edit your current shopping cart."
125
+ expect(response).to redirect_to cart_path
126
+ end
127
+ end
128
+ end
129
+
105
130
  context "#update" do
106
131
  context "with authorization" do
107
132
  before do
@@ -117,13 +142,13 @@ describe Spree::OrdersController, type: :controller do
117
142
  end
118
143
 
119
144
  it "should redirect to cart path (on success)" do
120
- allow(order).to receive(:update_attributes).and_return true
145
+ allow(order).to receive(:update).and_return true
121
146
  put :update
122
147
  expect(response).to redirect_to(spree.cart_path)
123
148
  end
124
149
 
125
150
  it "should advance the order if :checkout button is pressed" do
126
- allow(order).to receive(:update_attributes).and_return true
151
+ allow(order).to receive(:update).and_return true
127
152
  expect(order).to receive(:next)
128
153
  put :update, params: { checkout: true }
129
154
  expect(response).to redirect_to checkout_state_path('address')
@@ -680,6 +680,57 @@ describe "Checkout", type: :feature, inaccessible: true do
680
680
  end
681
681
  end
682
682
 
683
+ # Regression test for: https://github.com/solidusio/solidus/issues/2998
684
+ context 'when two shipping categories are available' do
685
+ let!(:first_category) { create(:shipping_category) }
686
+ let!(:second_category) { create(:shipping_category) }
687
+
688
+ let!(:first_shipping_method) do
689
+ create(:shipping_method,
690
+ shipping_categories: [first_category],
691
+ stores: [store])
692
+ end
693
+
694
+ let!(:second_shipping_method) do
695
+ create(:shipping_method,
696
+ shipping_categories: [second_category],
697
+ stores: [store])
698
+ end
699
+
700
+ context 'assigned to two different products' do
701
+ let!(:first_product) do
702
+ create(:product,
703
+ name: 'First product',
704
+ shipping_category: first_category)
705
+ end
706
+
707
+ let!(:second_product) do
708
+ create(:product,
709
+ name: 'Second product',
710
+ shipping_category: second_category)
711
+ end
712
+
713
+ before do
714
+ stock_location.stock_items.update_all(count_on_hand: 10)
715
+ end
716
+
717
+ it 'transitions successfully to the delivery step', js: true do
718
+ visit spree.product_path(first_product)
719
+ click_button 'add-to-cart-button'
720
+ visit spree.product_path(second_product)
721
+ click_button 'add-to-cart-button'
722
+
723
+ click_button 'Checkout'
724
+
725
+ fill_in_address
726
+ fill_in 'order_email', with: 'test@example.com'
727
+ click_button 'Save and Continue'
728
+
729
+ expect(Spree::Order.last.state).to eq('delivery')
730
+ end
731
+ end
732
+ end
733
+
683
734
  def fill_in_credit_card(number: "4111 1111 1111 1111")
684
735
  fill_in "Name on card", with: 'Mary Doe'
685
736
  fill_in_with_force "Card Number", with: number
@@ -51,20 +51,20 @@ describe "Visiting Products", type: :feature, inaccessible: true do
51
51
  end
52
52
 
53
53
  it 'displays metas' do
54
- jersey.update_attributes metas
54
+ jersey.update metas
55
55
  click_link jersey.name
56
56
  expect(page).to have_meta(:description, 'Brand new Ruby on Rails Jersey')
57
57
  expect(page).to have_meta(:keywords, 'ror, jersey, ruby')
58
58
  end
59
59
 
60
60
  it 'displays title if set' do
61
- jersey.update_attributes metas
61
+ jersey.update metas
62
62
  click_link jersey.name
63
63
  expect(page).to have_title('Ruby on Rails Baseball Jersey Buy High Quality Geek Apparel')
64
64
  end
65
65
 
66
66
  it "doesn't use meta_title as heading on page" do
67
- jersey.update_attributes metas
67
+ jersey.update metas
68
68
  click_link jersey.name
69
69
  within("h1") do
70
70
  expect(page).to have_content(jersey.name)
@@ -73,7 +73,7 @@ describe "Visiting Products", type: :feature, inaccessible: true do
73
73
  end
74
74
 
75
75
  it 'uses product name in title when meta_title set to empty string' do
76
- jersey.update_attributes meta_title: ''
76
+ jersey.update meta_title: ''
77
77
  click_link jersey.name
78
78
  expect(page).to have_title('Ruby on Rails Baseball Jersey - ' + store_name)
79
79
  end
@@ -30,14 +30,14 @@ describe "viewing products", type: :feature, inaccessible: true do
30
30
 
31
31
  describe 'meta tags and title' do
32
32
  it 'displays metas' do
33
- t_shirts.update_attributes metas
33
+ t_shirts.update metas
34
34
  visit '/t/category/super-clothing/t-shirts'
35
35
  expect(page).to have_meta(:description, 'Brand new Ruby on Rails TShirts')
36
36
  expect(page).to have_meta(:keywords, 'ror, tshirt, ruby')
37
37
  end
38
38
 
39
39
  it 'display title if set' do
40
- t_shirts.update_attributes metas
40
+ t_shirts.update metas
41
41
  visit '/t/category/super-clothing/t-shirts'
42
42
  expect(page).to have_title("Ruby On Rails TShirt")
43
43
  end
@@ -49,7 +49,7 @@ describe "viewing products", type: :feature, inaccessible: true do
49
49
 
50
50
  # Regression test for https://github.com/spree/spree/issues/2814
51
51
  it "doesn't use meta_title as heading on page" do
52
- t_shirts.update_attributes metas
52
+ t_shirts.update metas
53
53
  visit '/t/category/super-clothing/t-shirts'
54
54
  within("h1.taxon-title") do
55
55
  expect(page).to have_content(t_shirts.name)
@@ -57,7 +57,7 @@ describe "viewing products", type: :feature, inaccessible: true do
57
57
  end
58
58
 
59
59
  it 'uses taxon name in title when meta_title set to empty string' do
60
- t_shirts.update_attributes meta_title: ''
60
+ t_shirts.update meta_title: ''
61
61
  visit '/t/category/super-clothing/t-shirts'
62
62
  expect(page).to have_title('Category - T-Shirts - ' + store_name)
63
63
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solidus_frontend
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.9.6
4
+ version: 2.10.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Solidus Team
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-07-16 00:00:00.000000000 Z
11
+ date: 2020-11-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: solidus_api
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 2.9.6
19
+ version: 2.10.3
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 2.9.6
26
+ version: 2.10.3
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: solidus_core
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: 2.9.6
33
+ version: 2.10.3
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - '='
39
39
  - !ruby/object:Gem::Version
40
- version: 2.9.6
40
+ version: 2.10.3
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: canonical-rails
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -94,6 +94,20 @@ dependencies:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: '1.1'
97
+ - !ruby/object:Gem::Dependency
98
+ name: responders
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: sassc-rails
99
113
  requirement: !ruby/object:Gem::Requirement
@@ -204,7 +218,6 @@ files:
204
218
  - app/controllers/spree/taxons_controller.rb
205
219
  - app/helpers/spree/orders_helper.rb
206
220
  - app/helpers/spree/taxon_filters_helper.rb
207
- - app/models/spree/frontend_configuration.rb
208
221
  - app/views/spree/address/_form.html.erb
209
222
  - app/views/spree/address/_form_hidden.html.erb
210
223
  - app/views/spree/checkout/_address.html.erb
@@ -264,8 +277,10 @@ files:
264
277
  - lib/generators/solidus/views/override_generator.rb
265
278
  - lib/solidus_frontend.rb
266
279
  - lib/spree/frontend.rb
280
+ - lib/spree/frontend/config.rb
267
281
  - lib/spree/frontend/engine.rb
268
282
  - lib/spree/frontend/middleware/seo_assist.rb
283
+ - lib/spree/frontend_configuration.rb
269
284
  - lib/spree_frontend.rb
270
285
  - lib/tasks/rake_util.rb
271
286
  - lib/tasks/taxon.rake
@@ -316,7 +331,7 @@ homepage: http://solidus.io/
316
331
  licenses:
317
332
  - BSD-3-Clause
318
333
  metadata: {}
319
- post_install_message:
334
+ post_install_message:
320
335
  rdoc_options: []
321
336
  require_paths:
322
337
  - lib
@@ -324,7 +339,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
324
339
  requirements:
325
340
  - - ">="
326
341
  - !ruby/object:Gem::Version
327
- version: 2.2.2
342
+ version: 2.4.0
328
343
  required_rubygems_version: !ruby/object:Gem::Requirement
329
344
  requirements:
330
345
  - - ">="
@@ -332,8 +347,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
332
347
  version: 1.8.23
333
348
  requirements:
334
349
  - none
335
- rubygems_version: 3.0.3
336
- signing_key:
350
+ rubygems_version: 3.1.4
351
+ signing_key:
337
352
  specification_version: 4
338
353
  summary: Cart and storefront for the Solidus e-commerce project.
339
354
  test_files: []