solidus_frontend 2.10.2 → 2.11.0

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.

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,37 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- # This spec is useful for when we just want to make sure a view is rendering correctly
6
- # Walking through the entire checkout process is rather tedious, don't you think?
7
- describe Spree::CheckoutController, type: :controller do
8
- render_views
9
- let(:token) { 'some_token' }
10
- let(:user) { stub_model(Spree::LegacyUser) }
11
-
12
- before do
13
- allow(controller).to receive_messages try_spree_current_user: user
14
- end
15
-
16
- # Regression test for https://github.com/spree/spree/issues/3246
17
- context "when using GBP" do
18
- before do
19
- stub_spree_preferences(currency: "GBP")
20
- end
21
-
22
- context "when order is in delivery" do
23
- before do
24
- # Using a let block won't acknowledge the currency setting
25
- # Therefore we just do it like this...
26
- order = Spree::TestingSupport::OrderWalkthrough.up_to(:address)
27
- allow(controller).to receive_messages current_order: order
28
- end
29
-
30
- it "displays rate cost in correct currency" do
31
- get :edit
32
- html = Nokogiri::HTML(response.body)
33
- expect(html.css('.rate-cost').text).to eq "£10.00"
34
- end
35
- end
36
- end
37
- end
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
- describe Spree::ContentController, type: :controller do
5
- it "should display CVV page" do
6
- get :cvv
7
- expect(response.response_code).to eq(200)
8
- end
9
- end
@@ -1,47 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- describe 'current order tracking', type: :controller do
6
- let!(:store) { create(:store) }
7
- let(:user) { create(:user) }
8
-
9
- controller(Spree::StoreController) do
10
- def index
11
- head :ok
12
- end
13
- end
14
-
15
- let(:order) { FactoryBot.create(:order) }
16
-
17
- it 'automatically tracks who the order was created by & IP address' do
18
- allow(controller).to receive_messages(try_spree_current_user: user)
19
- get :index
20
- expect(controller.current_order(create_order_if_necessary: true).created_by).to eq controller.try_spree_current_user
21
- expect(controller.current_order.last_ip_address).to eq "0.0.0.0"
22
- end
23
-
24
- context "current order creation" do
25
- before { allow(controller).to receive_messages(try_spree_current_user: user) }
26
-
27
- it "doesn't create a new order out of the blue" do
28
- expect {
29
- get :index
30
- }.not_to change { Spree::Order.count }
31
- end
32
- end
33
- end
34
-
35
- describe Spree::OrdersController, type: :controller do
36
- let(:user) { create(:user) }
37
-
38
- before { allow(controller).to receive_messages(try_spree_current_user: user) }
39
-
40
- describe Spree::OrdersController do
41
- it "doesn't create a new order out of the blue" do
42
- expect {
43
- get :edit
44
- }.not_to change { Spree::Order.count }
45
- end
46
- end
47
- end
@@ -1,29 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- describe Spree::HomeController, type: :controller do
6
- it "provides current user to the searcher class" do
7
- user = mock_model(Spree.user_class, last_incomplete_spree_order: nil, spree_api_key: 'fake')
8
- allow(controller).to receive_messages try_spree_current_user: user
9
- expect_any_instance_of(Spree::Config.searcher_class).to receive(:current_user=).with(user)
10
- get :index
11
- expect(response.status).to eq(200)
12
- end
13
-
14
- context "layout" do
15
- it "renders default layout" do
16
- get :index
17
- expect(response).to render_template(layout: 'spree/layouts/spree_application')
18
- end
19
-
20
- context "different layout specified in config" do
21
- before { stub_spree_preferences(layout: 'layouts/application') }
22
-
23
- it "renders specified layout" do
24
- get :index
25
- expect(response).to render_template(layout: 'layouts/application')
26
- end
27
- end
28
- end
29
- end
@@ -1,90 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- module Spree
6
- describe OrdersController, type: :controller do
7
- ORDER_TOKEN = 'ORDER_TOKEN'
8
-
9
- let!(:store) { create(:store) }
10
- let(:order) { Spree::Order.create }
11
- let(:variant) { create(:variant) }
12
-
13
- it 'should understand order routes with token' do
14
- expect(spree.token_order_path('R123456', 'ABCDEF')).to eq('/orders/R123456/token/ABCDEF')
15
- end
16
-
17
- context 'when an order exists in the cookies.signed' do
18
- let(:token) { 'some_token' }
19
-
20
- before do
21
- allow(controller).to receive_messages current_order: order
22
- end
23
-
24
- context '#populate' do
25
- it 'should check if user is authorized for :update' do
26
- expect(controller).to receive(:authorize!).with(:update, order, token)
27
- post :populate, params: { variant_id: variant.id, token: token }
28
- end
29
- end
30
-
31
- context '#edit' do
32
- it 'should check if user is authorized for :read' do
33
- expect(controller).to receive(:authorize!).with(:read, order, token)
34
- get :edit, params: { token: token }
35
- end
36
- end
37
-
38
- context '#update' do
39
- it 'should check if user is authorized for :update' do
40
- allow(order).to receive :update
41
- expect(controller).to receive(:authorize!).with(:update, order, token)
42
- post :update, params: { order: { email: "foo@bar.com" }, token: token }
43
- end
44
- end
45
-
46
- context '#empty' do
47
- it 'should check if user is authorized for :update' do
48
- expect(controller).to receive(:authorize!).with(:update, order, token)
49
- post :empty, params: { token: token }
50
- end
51
- end
52
-
53
- context "#show" do
54
- let(:specified_order) { create(:order) }
55
-
56
- it "should check against the specified order" do
57
- expect(controller).to receive(:authorize!).with(:read, specified_order, token)
58
- get :show, params: { id: specified_order.number, token: token }
59
- end
60
- end
61
- end
62
-
63
- context 'when no authenticated user' do
64
- let(:order) { create(:order, number: 'R123') }
65
-
66
- context '#show' do
67
- context 'when token parameter present' do
68
- it 'always ooverride existing token when passing a new one' do
69
- cookies.signed[:guest_token] = "soo wrong"
70
- get :show, params: { id: 'R123', token: order.guest_token }
71
- expect(cookies.signed[:guest_token]).to eq(order.guest_token)
72
- end
73
-
74
- it 'should store as guest_token in session' do
75
- get :show, params: { id: 'R123', token: order.guest_token }
76
- expect(cookies.signed[:guest_token]).to eq(order.guest_token)
77
- end
78
- end
79
-
80
- context 'when no token present' do
81
- it 'should respond with 404' do
82
- expect {
83
- get :show, params: { id: 'R123' }
84
- }.to raise_error(ActiveRecord::RecordNotFound)
85
- end
86
- end
87
- end
88
- end
89
- end
90
- end
@@ -1,254 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- describe Spree::OrdersController, type: :controller do
6
- let!(:store) { create(:store) }
7
- let(:user) { create(:user) }
8
-
9
- context "Order model mock" do
10
- let(:order) do
11
- Spree::Order.create!
12
- end
13
- let(:variant) { create(:variant) }
14
-
15
- before do
16
- allow(controller).to receive_messages(try_spree_current_user: user)
17
- end
18
-
19
- context "#populate" do
20
- it "should create a new order when none specified" do
21
- post :populate, params: { variant_id: variant.id }
22
- expect(response).to be_redirect
23
- expect(cookies.signed[:guest_token]).not_to be_blank
24
-
25
- order_by_token = Spree::Order.find_by(guest_token: cookies.signed[:guest_token])
26
- assigned_order = assigns[:order]
27
-
28
- expect(assigned_order).to eq order_by_token
29
- expect(assigned_order).to be_persisted
30
- end
31
-
32
- context "with Variant" do
33
- it "should handle population" do
34
- expect do
35
- post :populate, params: { variant_id: variant.id, quantity: 5 }
36
- end.to change { user.orders.count }.by(1)
37
- order = user.orders.last
38
- expect(response).to redirect_to spree.cart_path
39
- expect(order.line_items.size).to eq(1)
40
- line_item = order.line_items.first
41
- expect(line_item.variant_id).to eq(variant.id)
42
- expect(line_item.quantity).to eq(5)
43
- end
44
-
45
- it "shows an error when population fails" do
46
- request.env["HTTP_REFERER"] = spree.root_path
47
- allow_any_instance_of(Spree::LineItem).to(
48
- receive(:valid?).and_return(false)
49
- )
50
- allow_any_instance_of(Spree::LineItem).to(
51
- receive_message_chain(:errors, :full_messages).
52
- and_return(["Order population failed"])
53
- )
54
-
55
- post :populate, params: { variant_id: variant.id, quantity: 5 }
56
-
57
- expect(response).to redirect_to(spree.root_path)
58
- expect(flash[:error]).to eq("Order population failed")
59
- end
60
-
61
- it "shows an error when quantity is invalid" do
62
- request.env["HTTP_REFERER"] = spree.root_path
63
-
64
- post(
65
- :populate,
66
- params: { variant_id: variant.id, quantity: -1 }
67
- )
68
-
69
- expect(response).to redirect_to(spree.root_path)
70
- expect(flash[:error]).to eq(
71
- I18n.t('spree.please_enter_reasonable_quantity')
72
- )
73
- end
74
-
75
- context "when quantity is empty string" do
76
- it "should populate order with 1 of given variant" do
77
- expect do
78
- post :populate, params: { variant_id: variant.id, quantity: '' }
79
- end.to change { Spree::Order.count }.by(1)
80
- order = Spree::Order.last
81
- expect(response).to redirect_to spree.cart_path
82
- expect(order.line_items.size).to eq(1)
83
- line_item = order.line_items.first
84
- expect(line_item.variant_id).to eq(variant.id)
85
- expect(line_item.quantity).to eq(1)
86
- end
87
- end
88
-
89
- context "when quantity is nil" do
90
- it "should populate order with 1 of given variant" do
91
- expect do
92
- post :populate, params: { variant_id: variant.id, quantity: nil }
93
- end.to change { Spree::Order.count }.by(1)
94
- order = Spree::Order.last
95
- expect(response).to redirect_to spree.cart_path
96
- expect(order.line_items.size).to eq(1)
97
- line_item = order.line_items.first
98
- expect(line_item.variant_id).to eq(variant.id)
99
- expect(line_item.quantity).to eq(1)
100
- end
101
- end
102
- end
103
- end
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
-
130
- context "#update" do
131
- context "with authorization" do
132
- before do
133
- allow(controller).to receive :authorize!
134
- allow(controller).to receive_messages current_order: order
135
- end
136
-
137
- it "should render the edit view (on failure)" do
138
- # email validation is only after address state
139
- order.update_column(:state, "delivery")
140
- put :update, params: { order: { email: "" } }
141
- expect(response).to render_template :edit
142
- end
143
-
144
- it "should redirect to cart path (on success)" do
145
- allow(order).to receive(:update).and_return true
146
- put :update
147
- expect(response).to redirect_to(spree.cart_path)
148
- end
149
-
150
- it "should advance the order if :checkout button is pressed" do
151
- allow(order).to receive(:update).and_return true
152
- expect(order).to receive(:next)
153
- put :update, params: { checkout: true }
154
- expect(response).to redirect_to checkout_state_path('address')
155
- end
156
-
157
- context 'trying to apply a coupon code' do
158
- let(:order) { create(:order_with_line_items, state: 'cart') }
159
- let(:coupon_code) { "coupon_code" }
160
-
161
- context "when coupon code is empty" do
162
- let(:coupon_code) { "" }
163
-
164
- it 'does not try to apply coupon code' do
165
- expect(Spree::PromotionHandler::Coupon).not_to receive :new
166
-
167
- put :update, params: { state: order.state, order: { coupon_code: coupon_code } }
168
-
169
- expect(response).to redirect_to(spree.cart_path)
170
- end
171
- end
172
-
173
- context "when coupon code is applied" do
174
- let(:promotion_handler) { instance_double('Spree::PromotionHandler::Coupon', error: nil, success: 'Coupon Applied!') }
175
-
176
- it "continues checkout flow normally" do
177
- expect(Spree::Deprecation).to receive(:warn)
178
-
179
- expect(Spree::PromotionHandler::Coupon)
180
- .to receive_message_chain(:new, :apply)
181
- .and_return(promotion_handler)
182
-
183
- put :update, params: { state: order.state, order: { coupon_code: coupon_code } }
184
-
185
- expect(response).to redirect_to(spree.cart_path)
186
- expect(flash.now[:success]).to eq('Coupon Applied!')
187
- end
188
-
189
- context "when coupon code is not applied" do
190
- let(:promotion_handler) { instance_double('Spree::PromotionHandler::Coupon', error: 'Some error', success: false) }
191
-
192
- it "render cart with coupon error" do
193
- expect(Spree::Deprecation).to receive(:warn)
194
-
195
- expect(Spree::PromotionHandler::Coupon)
196
- .to receive_message_chain(:new, :apply)
197
- .and_return(promotion_handler)
198
-
199
- put :update, params: { state: order.state, order: { coupon_code: coupon_code } }
200
-
201
- expect(response).to render_template :edit
202
- expect(flash.now[:error]).to eq('Some error')
203
- end
204
- end
205
- end
206
- end
207
- end
208
- end
209
-
210
- context "#empty" do
211
- before do
212
- allow(controller).to receive :authorize!
213
- end
214
-
215
- it "should destroy line items in the current order" do
216
- allow(controller).to receive(:current_order).and_return(order)
217
- expect(order).to receive(:empty!)
218
- put :empty
219
- expect(response).to redirect_to(spree.cart_path)
220
- end
221
- end
222
-
223
- # Regression test for https://github.com/spree/spree/issues/2750
224
- context "#update" do
225
- before do
226
- allow(user).to receive :last_incomplete_spree_order
227
- allow(controller).to receive :set_current_order
228
- end
229
-
230
- it "cannot update a blank order" do
231
- put :update, params: { order: { email: "foo" } }
232
- expect(flash[:error]).to eq(I18n.t('spree.order_not_found'))
233
- expect(response).to redirect_to(spree.root_path)
234
- end
235
- end
236
- end
237
-
238
- context "line items quantity is 0" do
239
- let(:order) { Spree::Order.create(store: store) }
240
- let(:variant) { create(:variant) }
241
- let!(:line_item) { order.contents.add(variant, 1) }
242
-
243
- before do
244
- allow(controller).to receive :authorize!
245
- allow(controller).to receive_messages(current_order: order)
246
- end
247
-
248
- it "removes line items on update" do
249
- expect(order.line_items.count).to eq 1
250
- put :update, params: { order: { line_items_attributes: { "0" => { id: line_item.id, quantity: 0 } } } }
251
- expect(order.reload.line_items.count).to eq 0
252
- end
253
- end
254
- end