solidus_frontend 1.3.2 → 1.4.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.
Potentially problematic release.
This version of solidus_frontend might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/README.md +3 -10
- data/app/assets/javascripts/spree/frontend/checkout/coupon-code.js.coffee +34 -0
- data/app/assets/javascripts/spree/frontend/checkout/payment.js.coffee +0 -36
- data/app/assets/javascripts/spree/frontend/checkout.js.coffee +5 -4
- data/app/assets/stylesheets/spree/frontend/screen.css.scss +1 -1
- data/app/controllers/spree/checkout_controller.rb +3 -3
- data/app/controllers/spree/orders_controller.rb +9 -4
- data/app/controllers/spree/products_controller.rb +6 -1
- data/app/controllers/spree/store_controller.rb +1 -1
- data/app/views/spree/checkout/_payment.html.erb +6 -0
- data/app/views/spree/layouts/spree_application.html.erb +1 -1
- data/config/routes.rb +2 -7
- data/solidus_frontend.gemspec +1 -1
- data/spec/controllers/controller_extension_spec.rb +5 -5
- data/spec/controllers/controller_helpers_spec.rb +1 -1
- data/spec/controllers/spree/checkout_controller_spec.rb +50 -95
- data/spec/controllers/spree/checkout_controller_with_views_spec.rb +1 -1
- data/spec/controllers/spree/content_controller_spec.rb +1 -1
- data/spec/controllers/spree/current_order_tracking_spec.rb +3 -3
- data/spec/controllers/spree/home_controller_spec.rb +3 -3
- data/spec/controllers/spree/orders_controller_ability_spec.rb +12 -12
- data/spec/controllers/spree/orders_controller_spec.rb +9 -9
- data/spec/controllers/spree/orders_controller_transitions_spec.rb +1 -1
- data/spec/controllers/spree/products_controller_spec.rb +4 -4
- data/spec/controllers/spree/taxons_controller_spec.rb +1 -1
- data/spec/features/checkout_spec.rb +10 -11
- data/spec/features/checkout_unshippable_spec.rb +1 -1
- data/spec/features/products_spec.rb +15 -0
- data/spec/spec_helper.rb +1 -1
- metadata +12 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 111fd307fe43d1f1a14dbb8b4fed5f1213f01042
|
4
|
+
data.tar.gz: 8764df5f034dc79a7d17c6280e341289a470a602
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a0598c73595c2e08fc1ff92f7916f2cb4c4e54adbb534536367b42b0ceb14e1db3781918a29a45b437c74ec1dcc82ae66962bf1fc5881c8dbf676380ff98a55f
|
7
|
+
data.tar.gz: 64841adb0db0a35c7dbb8e868472da68c153ccc7d3c2d3cdfc9aede5f35be91a939ef330fb4c0f9b6cc1f7746ecf0e7200c6617e533a5d23e1bccd019f99c6af
|
data/README.md
CHANGED
@@ -1,11 +1,9 @@
|
|
1
|
-
|
2
|
-
====
|
1
|
+
# solidus\_frontend
|
3
2
|
|
4
|
-
|
3
|
+
Frontend contains controllers and views implementing a storefront and cart for Solidus.
|
5
4
|
|
6
5
|
|
7
|
-
Testing
|
8
|
-
-------
|
6
|
+
## Testing
|
9
7
|
|
10
8
|
Create the test site
|
11
9
|
|
@@ -14,8 +12,3 @@ Create the test site
|
|
14
12
|
Run the tests
|
15
13
|
|
16
14
|
bundle exec rake spec
|
17
|
-
|
18
|
-
Run the coverage. After the rake task open coverage/index.html
|
19
|
-
|
20
|
-
bundle exec rake rcov
|
21
|
-
|
@@ -0,0 +1,34 @@
|
|
1
|
+
Spree.onCouponCodeApply = (e) ->
|
2
|
+
couponCodeField = $('#order_coupon_code')
|
3
|
+
couponCode = $.trim(couponCodeField.val())
|
4
|
+
return if couponCode == ''
|
5
|
+
|
6
|
+
couponStatus = $("#coupon_status")
|
7
|
+
successClass = 'success'
|
8
|
+
errorClass = 'alert'
|
9
|
+
url = Spree.url(Spree.routes.apply_coupon_code(Spree.current_order_id),
|
10
|
+
{
|
11
|
+
order_token: Spree.current_order_token,
|
12
|
+
coupon_code: couponCode
|
13
|
+
}
|
14
|
+
)
|
15
|
+
|
16
|
+
couponStatus.removeClass([successClass,errorClass].join(" "));
|
17
|
+
|
18
|
+
req = Spree.ajax
|
19
|
+
method: "PUT",
|
20
|
+
url: url
|
21
|
+
|
22
|
+
req.done (data) ->
|
23
|
+
window.location.reload();
|
24
|
+
couponCodeField.val('')
|
25
|
+
couponStatus.addClass(successClass).html("Coupon code applied successfully.")
|
26
|
+
|
27
|
+
req.fail (xhr) ->
|
28
|
+
# handler = JSON.parse(xhr.responseText)
|
29
|
+
handler = xhr.responseJSON
|
30
|
+
couponStatus.addClass(errorClass).html(handler["error"])
|
31
|
+
|
32
|
+
Spree.ready ($) ->
|
33
|
+
$('#coupon-code-apply-button').click (e) ->
|
34
|
+
Spree.onCouponCodeApply(e)
|
@@ -40,40 +40,4 @@ Spree.ready ($) ->
|
|
40
40
|
# i.e. if user enters invalid data
|
41
41
|
($ 'input[type="radio"]:checked').click()
|
42
42
|
|
43
|
-
$('#checkout_form_payment').submit ->
|
44
|
-
# Coupon code application may take a number of seconds.
|
45
|
-
# Informing the user that this is happening is a good way to indicate some progress to them.
|
46
|
-
# In addition to this, if the coupon code FAILS then they don't lose their just-entered payment data.
|
47
|
-
coupon_code_field = $('#order_coupon_code')
|
48
|
-
coupon_code = $.trim(coupon_code_field.val())
|
49
|
-
if (coupon_code != '')
|
50
|
-
if $('#coupon_status').length == 0
|
51
|
-
coupon_status = $("<div id='coupon_status'></div>")
|
52
|
-
coupon_code_field.parent().append(coupon_status)
|
53
|
-
else
|
54
|
-
coupon_status = $("#coupon_status")
|
55
|
-
|
56
|
-
url = Spree.url(Spree.routes.apply_coupon_code(Spree.current_order_id),
|
57
|
-
{
|
58
|
-
order_token: Spree.current_order_token,
|
59
|
-
coupon_code: coupon_code
|
60
|
-
}
|
61
|
-
)
|
62
|
-
|
63
|
-
coupon_status.removeClass();
|
64
|
-
Spree.ajax({
|
65
|
-
async: false,
|
66
|
-
method: "PUT",
|
67
|
-
url: url,
|
68
|
-
success: (data) ->
|
69
|
-
coupon_code_field.val('')
|
70
|
-
coupon_status.addClass("success").html("Coupon code applied successfully.")
|
71
|
-
return true
|
72
|
-
error: (xhr) ->
|
73
|
-
handler = JSON.parse(xhr.responseText)
|
74
|
-
coupon_status.addClass("error").html(handler["error"])
|
75
|
-
$('.continue').attr('disabled', false)
|
76
|
-
return false
|
77
|
-
})
|
78
|
-
|
79
43
|
Spree.onPayment()
|
@@ -1,7 +1,8 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
1
|
+
#= require jquery.payment
|
2
|
+
#= require_self
|
3
|
+
#= require spree/frontend/checkout/address
|
4
|
+
#= require spree/frontend/checkout/payment
|
5
|
+
#= require spree/frontend/checkout/coupon-code
|
5
6
|
|
6
7
|
Spree.disableSaveOnClick = ->
|
7
8
|
($ 'form.edit_order').submit ->
|
@@ -4,9 +4,9 @@ module Spree
|
|
4
4
|
# checkout which has nothing to do with updating an order that this approach
|
5
5
|
# is warranted.
|
6
6
|
class CheckoutController < Spree::StoreController
|
7
|
-
|
8
|
-
|
9
|
-
|
7
|
+
before_action :load_order
|
8
|
+
around_action :lock_order
|
9
|
+
before_action :set_state_if_present
|
10
10
|
|
11
11
|
before_action :ensure_order_not_completed
|
12
12
|
before_action :ensure_checkout_allowed
|
@@ -6,11 +6,11 @@ module Spree
|
|
6
6
|
|
7
7
|
respond_to :html
|
8
8
|
|
9
|
-
|
9
|
+
before_action :assign_order, only: :update
|
10
10
|
# note: do not lock the #edit action because that's where we redirect when we fail to acquire a lock
|
11
|
-
|
12
|
-
|
13
|
-
|
11
|
+
around_action :lock_order, only: :update
|
12
|
+
before_action :apply_coupon_code, only: :update
|
13
|
+
skip_before_action :verify_authenticity_token, only: [:populate]
|
14
14
|
|
15
15
|
def show
|
16
16
|
@order = Order.find_by_number!(params[:id])
|
@@ -66,6 +66,11 @@ module Spree
|
|
66
66
|
end
|
67
67
|
end
|
68
68
|
|
69
|
+
def populate_redirect
|
70
|
+
flash[:error] = Spree.t(:populate_get_error)
|
71
|
+
redirect_to('/cart')
|
72
|
+
end
|
73
|
+
|
69
74
|
def empty
|
70
75
|
if @order = current_order
|
71
76
|
@order.empty!
|
@@ -15,7 +15,12 @@ module Spree
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def show
|
18
|
-
@variants = @product.
|
18
|
+
@variants = @product.
|
19
|
+
variants_including_master.
|
20
|
+
display_includes.
|
21
|
+
with_prices(current_pricing_options).
|
22
|
+
includes([:option_values, :images])
|
23
|
+
|
19
24
|
@product_properties = @product.product_properties.includes(:property)
|
20
25
|
@taxon = Spree::Taxon.find(params[:taxon_id]) if params[:taxon_id]
|
21
26
|
end
|
@@ -59,7 +59,13 @@
|
|
59
59
|
<p class='field' data-hook='coupon_code'>
|
60
60
|
<%= form.label :coupon_code %><br />
|
61
61
|
<%= form.text_field :coupon_code %>
|
62
|
+
<button type="button" class="button" id="coupon-code-apply-button">
|
63
|
+
<%= Spree.t(:apply_code) %>
|
64
|
+
</button>
|
65
|
+
|
62
66
|
</p>
|
67
|
+
<div id='coupon_status'></div>
|
68
|
+
|
63
69
|
</div>
|
64
70
|
</fieldset>
|
65
71
|
|
data/config/routes.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
Spree::Core::Engine.
|
1
|
+
Spree::Core::Engine.routes.draw do
|
2
2
|
root to: 'home#index'
|
3
3
|
|
4
4
|
resources :products, only: [:index, :show]
|
@@ -10,12 +10,7 @@ Spree::Core::Engine.add_routes do
|
|
10
10
|
get '/checkout/:state', to: 'checkout#edit', as: :checkout_state
|
11
11
|
get '/checkout', to: 'checkout#edit', as: :checkout
|
12
12
|
|
13
|
-
|
14
|
-
request.flash[:error] = Spree.t(:populate_get_error)
|
15
|
-
request.referer || '/cart'
|
16
|
-
end
|
17
|
-
|
18
|
-
get '/orders/populate', to: populate_redirect
|
13
|
+
get '/orders/populate', to: 'orders#populate_redirect'
|
19
14
|
get '/orders/:id/token/:token' => 'orders#show', :as => :token_order
|
20
15
|
|
21
16
|
resources :orders, except: [:index, :new, :create, :destroy] do
|
data/solidus_frontend.gemspec
CHANGED
@@ -21,7 +21,7 @@ Gem::Specification.new do |s|
|
|
21
21
|
s.add_dependency 'solidus_api', s.version
|
22
22
|
s.add_dependency 'solidus_core', s.version
|
23
23
|
|
24
|
-
s.add_dependency 'canonical-rails', '~> 0.
|
24
|
+
s.add_dependency 'canonical-rails', '~> 0.1.1'
|
25
25
|
s.add_dependency 'jquery-rails'
|
26
26
|
s.add_dependency 'sass-rails'
|
27
27
|
s.add_dependency 'coffee-rails'
|
@@ -49,7 +49,7 @@ describe Spree::CustomController, type: :controller do
|
|
49
49
|
|
50
50
|
describe "GET" do
|
51
51
|
it "has value success" do
|
52
|
-
|
52
|
+
get :index
|
53
53
|
expect(response).to be_success
|
54
54
|
expect(response.body).to match(/success!!!/)
|
55
55
|
end
|
@@ -66,7 +66,7 @@ describe Spree::CustomController, type: :controller do
|
|
66
66
|
|
67
67
|
describe "GET" do
|
68
68
|
it "has value success" do
|
69
|
-
|
69
|
+
get :index
|
70
70
|
expect(response).to be_success
|
71
71
|
expect(response.body).to match(/success!!!/)
|
72
72
|
end
|
@@ -83,7 +83,7 @@ describe Spree::CustomController, type: :controller do
|
|
83
83
|
|
84
84
|
describe "GET" do
|
85
85
|
it "has value success" do
|
86
|
-
|
86
|
+
get :index
|
87
87
|
expect(response).to be_redirect
|
88
88
|
end
|
89
89
|
end
|
@@ -100,7 +100,7 @@ describe Spree::CustomController, type: :controller do
|
|
100
100
|
|
101
101
|
describe "POST" do
|
102
102
|
it "has value success" do
|
103
|
-
|
103
|
+
post :create
|
104
104
|
expect(response).to be_success
|
105
105
|
expect(response.body).to match(/success!/)
|
106
106
|
end
|
@@ -116,7 +116,7 @@ describe Spree::CustomController, type: :controller do
|
|
116
116
|
|
117
117
|
describe "POST" do
|
118
118
|
it "should not effect the wrong controller" do
|
119
|
-
|
119
|
+
get :index
|
120
120
|
expect(response.body).to match(/neutral/)
|
121
121
|
end
|
122
122
|
end
|
@@ -18,7 +18,7 @@ describe Spree::ProductsController, type: :controller do
|
|
18
18
|
# Regression test for https://github.com/spree/spree/issues/1184
|
19
19
|
it "sets the default locale based off Spree::Frontend::Config[:locale]" do
|
20
20
|
expect(I18n.locale).to eq(:en)
|
21
|
-
|
21
|
+
get :index
|
22
22
|
expect(I18n.locale).to eq(:de)
|
23
23
|
end
|
24
24
|
end
|
@@ -20,31 +20,31 @@ describe Spree::CheckoutController, type: :controller do
|
|
20
20
|
it 'should check if the user is authorized for :edit' do
|
21
21
|
expect(controller).to receive(:authorize!).with(:edit, order, token)
|
22
22
|
request.cookie_jar.signed[:guest_token] = token
|
23
|
-
|
23
|
+
get :edit, { state: 'address' }
|
24
24
|
end
|
25
25
|
|
26
26
|
it "should redirect to the cart path unless checkout_allowed?" do
|
27
27
|
allow(order).to receive_messages checkout_allowed?: false
|
28
|
-
|
28
|
+
get :edit, { state: "delivery" }
|
29
29
|
expect(response).to redirect_to(spree.cart_path)
|
30
30
|
end
|
31
31
|
|
32
32
|
it "should redirect to the cart path if current_order is nil" do
|
33
33
|
allow(controller).to receive(:current_order).and_return(nil)
|
34
|
-
|
34
|
+
get :edit, { state: "delivery" }
|
35
35
|
expect(response).to redirect_to(spree.cart_path)
|
36
36
|
end
|
37
37
|
|
38
38
|
it "should redirect to cart if order is completed" do
|
39
39
|
allow(order).to receive_messages(completed?: true)
|
40
|
-
|
40
|
+
get :edit, { state: "address" }
|
41
41
|
expect(response).to redirect_to(spree.cart_path)
|
42
42
|
end
|
43
43
|
|
44
44
|
# Regression test for https://github.com/spree/spree/issues/2280
|
45
45
|
it "should redirect to current step trying to access a future step" do
|
46
46
|
order.update_column(:state, "address")
|
47
|
-
|
47
|
+
get :edit, { state: "delivery" }
|
48
48
|
expect(response).to redirect_to spree.checkout_state_path("address")
|
49
49
|
end
|
50
50
|
|
@@ -58,7 +58,7 @@ describe Spree::CheckoutController, type: :controller do
|
|
58
58
|
it "should associate the order with a user" do
|
59
59
|
order.update_column :user_id, nil
|
60
60
|
expect(order).to receive(:associate_user!).with(user)
|
61
|
-
|
61
|
+
get :edit, {}, order_id: 1
|
62
62
|
end
|
63
63
|
end
|
64
64
|
end
|
@@ -67,12 +67,12 @@ describe Spree::CheckoutController, type: :controller do
|
|
67
67
|
it 'should check if the user is authorized for :edit' do
|
68
68
|
expect(controller).to receive(:authorize!).with(:edit, order, token)
|
69
69
|
request.cookie_jar.signed[:guest_token] = token
|
70
|
-
|
70
|
+
post :update, { state: 'address' }
|
71
71
|
end
|
72
72
|
|
73
73
|
context "save successful" do
|
74
|
-
def
|
75
|
-
|
74
|
+
def post_address
|
75
|
+
post :update, {
|
76
76
|
state: "address",
|
77
77
|
order: {
|
78
78
|
bill_address_attributes: address_params,
|
@@ -81,9 +81,9 @@ describe Spree::CheckoutController, type: :controller do
|
|
81
81
|
}
|
82
82
|
end
|
83
83
|
|
84
|
-
let!(:payment_method) { create(:payment_method) }
|
85
84
|
before do
|
86
85
|
# Must have *a* shipping method and a payment method so updating from address works
|
86
|
+
allow(order).to receive_messages available_payment_methods: [stub_model(Spree::PaymentMethod)]
|
87
87
|
allow(order).to receive_messages ensure_available_shipping_rates: true
|
88
88
|
order.line_items << FactoryGirl.create(:line_item)
|
89
89
|
end
|
@@ -95,24 +95,24 @@ describe Spree::CheckoutController, type: :controller do
|
|
95
95
|
end
|
96
96
|
|
97
97
|
it "should assign order" do
|
98
|
-
|
98
|
+
post :update, { state: "address" }
|
99
99
|
expect(assigns[:order]).not_to be_nil
|
100
100
|
end
|
101
101
|
|
102
102
|
it "should advance the state" do
|
103
|
-
|
103
|
+
post_address
|
104
104
|
expect(order.reload.state).to eq("delivery")
|
105
105
|
end
|
106
106
|
|
107
107
|
it "should redirect the next state" do
|
108
|
-
|
108
|
+
post_address
|
109
109
|
expect(response).to redirect_to spree.checkout_state_path("delivery")
|
110
110
|
end
|
111
111
|
|
112
112
|
context "current_user respond to save address method" do
|
113
113
|
it "calls persist order address on user" do
|
114
114
|
expect(user).to receive(:persist_order_address)
|
115
|
-
|
115
|
+
post :update, {
|
116
116
|
state: "address",
|
117
117
|
order: {
|
118
118
|
bill_address_attributes: address_params,
|
@@ -125,7 +125,7 @@ describe Spree::CheckoutController, type: :controller do
|
|
125
125
|
|
126
126
|
context "current_user doesnt respond to persist_order_address" do
|
127
127
|
it "doesnt raise any error" do
|
128
|
-
|
128
|
+
post :update, {
|
129
129
|
state: "address",
|
130
130
|
order: {
|
131
131
|
bill_address_attributes: address_params,
|
@@ -144,25 +144,27 @@ describe Spree::CheckoutController, type: :controller do
|
|
144
144
|
end
|
145
145
|
|
146
146
|
context "with a billing and shipping address" do
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
ship_address_attributes: order.ship_address.attributes.except("created_at", "updated_at"),
|
156
|
-
use_billing: false
|
157
|
-
}
|
147
|
+
subject do
|
148
|
+
post :update, {
|
149
|
+
state: "address",
|
150
|
+
order: {
|
151
|
+
bill_address_attributes: order.bill_address.attributes.except("created_at", "updated_at").compact,
|
152
|
+
ship_address_attributes: order.ship_address.attributes.except("created_at", "updated_at").compact,
|
153
|
+
use_billing: false
|
154
|
+
}
|
158
155
|
}
|
156
|
+
end
|
159
157
|
|
160
|
-
|
158
|
+
it "doesn't change bill address" do
|
159
|
+
expect {
|
160
|
+
subject
|
161
|
+
}.not_to change { order.reload.ship_address.id }
|
161
162
|
end
|
162
163
|
|
163
|
-
it "
|
164
|
-
expect
|
165
|
-
|
164
|
+
it "doesn't change ship address" do
|
165
|
+
expect {
|
166
|
+
subject
|
167
|
+
}.not_to change { order.reload.bill_address.id }
|
166
168
|
end
|
167
169
|
end
|
168
170
|
end
|
@@ -208,7 +210,7 @@ describe Spree::CheckoutController, type: :controller do
|
|
208
210
|
end
|
209
211
|
|
210
212
|
it 'sets the payment amount' do
|
211
|
-
|
213
|
+
post :update, params
|
212
214
|
order.reload
|
213
215
|
expect(order.state).to eq('new_step')
|
214
216
|
expect(order.payments.size).to eq(1)
|
@@ -216,53 +218,6 @@ describe Spree::CheckoutController, type: :controller do
|
|
216
218
|
end
|
217
219
|
end
|
218
220
|
|
219
|
-
context "when in the payment state" do
|
220
|
-
let(:order) { create(:order_with_line_items) }
|
221
|
-
let(:payment_method) { create(:credit_card_payment_method) }
|
222
|
-
|
223
|
-
let(:params) do
|
224
|
-
{
|
225
|
-
state: 'payment',
|
226
|
-
order: {
|
227
|
-
payments_attributes: [
|
228
|
-
{
|
229
|
-
payment_method_id: payment_method.id.to_s,
|
230
|
-
source_attributes: attributes_for(:credit_card)
|
231
|
-
}
|
232
|
-
]
|
233
|
-
}
|
234
|
-
}
|
235
|
-
end
|
236
|
-
|
237
|
-
before do
|
238
|
-
order.update_attributes! user: user
|
239
|
-
3.times { order.next! } # should put us in the payment state
|
240
|
-
end
|
241
|
-
|
242
|
-
context 'with a permitted payment method' do
|
243
|
-
it 'sets the payment amount' do
|
244
|
-
post :update, params
|
245
|
-
order.reload
|
246
|
-
expect(order.state).to eq('confirm')
|
247
|
-
expect(order.payments.size).to eq(1)
|
248
|
-
expect(order.payments.first.amount).to eq(order.total)
|
249
|
-
end
|
250
|
-
end
|
251
|
-
|
252
|
-
context 'with an unpermitted payment method' do
|
253
|
-
before { payment_method.update!(display_on: "back_end") }
|
254
|
-
|
255
|
-
it 'sets the payment amount' do
|
256
|
-
expect {
|
257
|
-
post :update, params
|
258
|
-
}.to raise_error(ActiveRecord::RecordNotFound)
|
259
|
-
|
260
|
-
expect(order.state).to eq('payment')
|
261
|
-
expect(order.payments).to be_empty
|
262
|
-
end
|
263
|
-
end
|
264
|
-
end
|
265
|
-
|
266
221
|
context "when in the confirm state" do
|
267
222
|
before do
|
268
223
|
order.update_attributes! user: user
|
@@ -276,17 +231,17 @@ describe Spree::CheckoutController, type: :controller do
|
|
276
231
|
|
277
232
|
# This inadvertently is a regression test for https://github.com/spree/spree/issues/2694
|
278
233
|
it "should redirect to the order view" do
|
279
|
-
|
234
|
+
post :update, { state: "confirm" }
|
280
235
|
expect(response).to redirect_to spree.order_path(order)
|
281
236
|
end
|
282
237
|
|
283
238
|
it "should populate the flash message" do
|
284
|
-
|
239
|
+
post :update, { state: "confirm" }
|
285
240
|
expect(flash.notice).to eq(Spree.t(:order_processed_successfully))
|
286
241
|
end
|
287
242
|
|
288
243
|
it "should remove completed order from current_order" do
|
289
|
-
|
244
|
+
post :update, { state: "confirm" }, { order_id: "foofah" }
|
290
245
|
expect(assigns(:current_order)).to be_nil
|
291
246
|
expect(assigns(:order)).to eql controller.current_order
|
292
247
|
end
|
@@ -300,16 +255,16 @@ describe Spree::CheckoutController, type: :controller do
|
|
300
255
|
end
|
301
256
|
|
302
257
|
it "should not assign order" do
|
303
|
-
|
258
|
+
post :update, { state: "address", email: '' }
|
304
259
|
expect(assigns[:order]).not_to be_nil
|
305
260
|
end
|
306
261
|
|
307
262
|
it "should not change the order state" do
|
308
|
-
|
263
|
+
post :update, { state: 'address' }
|
309
264
|
end
|
310
265
|
|
311
266
|
it "should render the edit template" do
|
312
|
-
|
267
|
+
post :update, { state: 'address' }
|
313
268
|
expect(response).to render_template :edit
|
314
269
|
end
|
315
270
|
end
|
@@ -319,11 +274,11 @@ describe Spree::CheckoutController, type: :controller do
|
|
319
274
|
|
320
275
|
it "should not change the state if order is completed" do
|
321
276
|
expect(order).not_to receive(:update_attribute)
|
322
|
-
|
277
|
+
post :update, { state: "confirm" }
|
323
278
|
end
|
324
279
|
|
325
280
|
it "should redirect to the cart_path" do
|
326
|
-
|
281
|
+
post :update, { state: "confirm" }
|
327
282
|
expect(response).to redirect_to spree.cart_path
|
328
283
|
end
|
329
284
|
end
|
@@ -332,7 +287,7 @@ describe Spree::CheckoutController, type: :controller do
|
|
332
287
|
before do
|
333
288
|
order.update_attributes! user: user
|
334
289
|
allow(order).to receive(:next).and_raise(Spree::Core::GatewayError.new("Invalid something or other."))
|
335
|
-
|
290
|
+
post :update, { state: "address" }
|
336
291
|
end
|
337
292
|
|
338
293
|
it "should render the edit template and display exception message" do
|
@@ -363,7 +318,7 @@ describe Spree::CheckoutController, type: :controller do
|
|
363
318
|
end
|
364
319
|
|
365
320
|
it "due to the order having errors" do
|
366
|
-
|
321
|
+
put :update, state: order.state, order: {}
|
367
322
|
expect(flash[:error]).to eq("Base error\nAdjustments error")
|
368
323
|
expect(response).to redirect_to(spree.checkout_state_path('address'))
|
369
324
|
end
|
@@ -398,7 +353,7 @@ describe Spree::CheckoutController, type: :controller do
|
|
398
353
|
expect(order.shipments.count).to eq(1)
|
399
354
|
order.shipments.first.shipping_rates.delete_all
|
400
355
|
order.update_attributes(state: 'confirm')
|
401
|
-
|
356
|
+
put :update, state: order.state, order: {}
|
402
357
|
expect(flash[:error]).to eq(Spree.t(:items_cannot_be_shipped))
|
403
358
|
expect(response).to redirect_to(spree.checkout_state_path('confirm'))
|
404
359
|
end
|
@@ -426,7 +381,7 @@ describe Spree::CheckoutController, type: :controller do
|
|
426
381
|
|
427
382
|
it "fails to transition from payment to complete" do
|
428
383
|
allow_any_instance_of(Spree::Payment).to receive(:process!).and_raise(Spree::Core::GatewayError.new(Spree.t(:payment_processing_failed)))
|
429
|
-
|
384
|
+
put :update, state: order.state, order: {}
|
430
385
|
expect(flash[:error]).to eq(Spree.t(:payment_processing_failed))
|
431
386
|
end
|
432
387
|
end
|
@@ -448,7 +403,7 @@ describe Spree::CheckoutController, type: :controller do
|
|
448
403
|
|
449
404
|
context "and back orders are not allowed" do
|
450
405
|
before do
|
451
|
-
|
406
|
+
post :update, { state: "payment" }
|
452
407
|
end
|
453
408
|
|
454
409
|
it "should redirect to cart" do
|
@@ -470,12 +425,12 @@ describe Spree::CheckoutController, type: :controller do
|
|
470
425
|
|
471
426
|
it "doesn't set shipping address on the order" do
|
472
427
|
expect(order).to_not receive(:ship_address=)
|
473
|
-
|
428
|
+
post :update, state: order.state
|
474
429
|
end
|
475
430
|
|
476
431
|
it "doesn't remove unshippable items before payment" do
|
477
432
|
expect {
|
478
|
-
|
433
|
+
post :update, { state: "payment" }
|
479
434
|
}.to_not change { order.line_items }
|
480
435
|
end
|
481
436
|
end
|
@@ -485,7 +440,7 @@ describe Spree::CheckoutController, type: :controller do
|
|
485
440
|
allow(controller).to receive_messages check_authorization: true
|
486
441
|
|
487
442
|
expect {
|
488
|
-
|
489
|
-
}.to change { order.line_items }
|
443
|
+
post :update, { state: "payment" }
|
444
|
+
}.to change { order.line_items.to_a.size }.from(1).to(0)
|
490
445
|
end
|
491
446
|
end
|
@@ -6,7 +6,7 @@ describe 'current order tracking', type: :controller do
|
|
6
6
|
|
7
7
|
controller(Spree::StoreController) do
|
8
8
|
def index
|
9
|
-
|
9
|
+
head :ok
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
@@ -24,7 +24,7 @@ describe 'current order tracking', type: :controller do
|
|
24
24
|
|
25
25
|
it "doesn't create a new order out of the blue" do
|
26
26
|
expect {
|
27
|
-
|
27
|
+
get :index
|
28
28
|
}.not_to change { Spree::Order.count }
|
29
29
|
end
|
30
30
|
end
|
@@ -38,7 +38,7 @@ describe Spree::OrdersController, type: :controller do
|
|
38
38
|
describe Spree::OrdersController do
|
39
39
|
it "doesn't create a new order out of the blue" do
|
40
40
|
expect {
|
41
|
-
|
41
|
+
get :edit
|
42
42
|
}.not_to change { Spree::Order.count }
|
43
43
|
end
|
44
44
|
end
|
@@ -5,13 +5,13 @@ describe Spree::HomeController, type: :controller do
|
|
5
5
|
user = mock_model(Spree.user_class, last_incomplete_spree_order: nil, spree_api_key: 'fake')
|
6
6
|
allow(controller).to receive_messages try_spree_current_user: user
|
7
7
|
expect_any_instance_of(Spree::Config.searcher_class).to receive(:current_user=).with(user)
|
8
|
-
|
8
|
+
get :index
|
9
9
|
expect(response.status).to eq(200)
|
10
10
|
end
|
11
11
|
|
12
12
|
context "layout" do
|
13
13
|
it "renders default layout" do
|
14
|
-
|
14
|
+
get :index
|
15
15
|
expect(response).to render_template(layout: 'spree/layouts/spree_application')
|
16
16
|
end
|
17
17
|
|
@@ -19,7 +19,7 @@ describe Spree::HomeController, type: :controller do
|
|
19
19
|
before { Spree::Config.layout = 'layouts/application' }
|
20
20
|
|
21
21
|
it "renders specified layout" do
|
22
|
-
|
22
|
+
get :index
|
23
23
|
expect(response).to render_template(layout: 'layouts/application')
|
24
24
|
end
|
25
25
|
end
|
@@ -25,22 +25,22 @@ module Spree
|
|
25
25
|
context '#populate' do
|
26
26
|
it 'should check if user is authorized for :edit' do
|
27
27
|
expect(controller).to receive(:authorize!).with(:edit, order, token)
|
28
|
-
|
28
|
+
post :populate, token: token
|
29
29
|
end
|
30
30
|
it "should check against the specified order" do
|
31
31
|
expect(controller).to receive(:authorize!).with(:edit, specified_order, token)
|
32
|
-
|
32
|
+
post :populate, id: specified_order.number, token: token
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
36
36
|
context '#edit' do
|
37
37
|
it 'should check if user is authorized for :edit' do
|
38
38
|
expect(controller).to receive(:authorize!).with(:edit, order, token)
|
39
|
-
|
39
|
+
get :edit, token: token
|
40
40
|
end
|
41
41
|
it "should check against the specified order" do
|
42
42
|
expect(controller).to receive(:authorize!).with(:edit, specified_order, token)
|
43
|
-
|
43
|
+
get :edit, id: specified_order.number, token: token
|
44
44
|
end
|
45
45
|
end
|
46
46
|
|
@@ -48,30 +48,30 @@ module Spree
|
|
48
48
|
it 'should check if user is authorized for :edit' do
|
49
49
|
allow(order).to receive :update_attributes
|
50
50
|
expect(controller).to receive(:authorize!).with(:edit, order, token)
|
51
|
-
|
51
|
+
post :update, order: { email: "foo@bar.com" }, token: token
|
52
52
|
end
|
53
53
|
it "should check against the specified order" do
|
54
54
|
allow(order).to receive :update_attributes
|
55
55
|
expect(controller).to receive(:authorize!).with(:edit, specified_order, token)
|
56
|
-
|
56
|
+
post :update, order: { email: "foo@bar.com" }, id: specified_order.number, token: token
|
57
57
|
end
|
58
58
|
end
|
59
59
|
|
60
60
|
context '#empty' do
|
61
61
|
it 'should check if user is authorized for :edit' do
|
62
62
|
expect(controller).to receive(:authorize!).with(:edit, order, token)
|
63
|
-
|
63
|
+
post :empty, token: token
|
64
64
|
end
|
65
65
|
it "should check against the specified order" do
|
66
66
|
expect(controller).to receive(:authorize!).with(:edit, specified_order, token)
|
67
|
-
|
67
|
+
post :empty, id: specified_order.number, token: token
|
68
68
|
end
|
69
69
|
end
|
70
70
|
|
71
71
|
context "#show" do
|
72
72
|
it "should check against the specified order" do
|
73
73
|
expect(controller).to receive(:authorize!).with(:edit, specified_order, token)
|
74
|
-
|
74
|
+
get :show, id: specified_order.number, token: token
|
75
75
|
end
|
76
76
|
end
|
77
77
|
end
|
@@ -83,19 +83,19 @@ module Spree
|
|
83
83
|
context 'when token parameter present' do
|
84
84
|
it 'always ooverride existing token when passing a new one' do
|
85
85
|
cookies.signed[:guest_token] = "soo wrong"
|
86
|
-
|
86
|
+
get :show, { id: 'R123', token: order.guest_token }
|
87
87
|
expect(cookies.signed[:guest_token]).to eq(order.guest_token)
|
88
88
|
end
|
89
89
|
|
90
90
|
it 'should store as guest_token in session' do
|
91
|
-
|
91
|
+
get :show, { id: 'R123', token: order.guest_token }
|
92
92
|
expect(cookies.signed[:guest_token]).to eq(order.guest_token)
|
93
93
|
end
|
94
94
|
end
|
95
95
|
|
96
96
|
context 'when no token present' do
|
97
97
|
it 'should respond with 404' do
|
98
|
-
|
98
|
+
get :show, { id: 'R123' }
|
99
99
|
expect(response.code).to eq('404')
|
100
100
|
end
|
101
101
|
end
|
@@ -16,7 +16,7 @@ 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
|
-
|
19
|
+
post :populate, {}, {}
|
20
20
|
expect(cookies.signed[:guest_token]).not_to be_blank
|
21
21
|
expect(Spree::Order.find_by_guest_token(cookies.signed[:guest_token])).to be_persisted
|
22
22
|
end
|
@@ -24,7 +24,7 @@ describe Spree::OrdersController, type: :controller do
|
|
24
24
|
context "with Variant" do
|
25
25
|
it "should handle population" do
|
26
26
|
expect do
|
27
|
-
|
27
|
+
post :populate, variant_id: variant.id, quantity: 5
|
28
28
|
end.to change { user.orders.count }.by(1)
|
29
29
|
order = user.orders.last
|
30
30
|
expect(response).to redirect_to spree.cart_path
|
@@ -44,7 +44,7 @@ describe Spree::OrdersController, type: :controller do
|
|
44
44
|
and_return(["Order population failed"])
|
45
45
|
)
|
46
46
|
|
47
|
-
|
47
|
+
post :populate, variant_id: variant.id, quantity: 5
|
48
48
|
|
49
49
|
expect(response).to redirect_to(spree.root_path)
|
50
50
|
expect(flash[:error]).to eq("Order population failed")
|
@@ -53,7 +53,7 @@ describe Spree::OrdersController, type: :controller do
|
|
53
53
|
it "shows an error when quantity is invalid" do
|
54
54
|
request.env["HTTP_REFERER"] = spree.root_path
|
55
55
|
|
56
|
-
|
56
|
+
post(
|
57
57
|
:populate,
|
58
58
|
variant_id: variant.id, quantity: -1
|
59
59
|
)
|
@@ -76,13 +76,13 @@ describe Spree::OrdersController, type: :controller do
|
|
76
76
|
it "should render the edit view (on failure)" do
|
77
77
|
# email validation is only after address state
|
78
78
|
order.update_column(:state, "delivery")
|
79
|
-
|
79
|
+
put :update, { order: { email: "" } }, { order_id: order.id }
|
80
80
|
expect(response).to render_template :edit
|
81
81
|
end
|
82
82
|
|
83
83
|
it "should redirect to cart path (on success)" do
|
84
84
|
allow(order).to receive(:update_attributes).and_return true
|
85
|
-
|
85
|
+
put :update, {}, { order_id: 1 }
|
86
86
|
expect(response).to redirect_to(spree.cart_path)
|
87
87
|
end
|
88
88
|
end
|
@@ -96,7 +96,7 @@ describe Spree::OrdersController, type: :controller do
|
|
96
96
|
it "should destroy line items in the current order" do
|
97
97
|
allow(controller).to receive(:current_order).and_return(order)
|
98
98
|
expect(order).to receive(:empty!)
|
99
|
-
|
99
|
+
put :empty
|
100
100
|
expect(response).to redirect_to(spree.cart_path)
|
101
101
|
end
|
102
102
|
end
|
@@ -109,7 +109,7 @@ describe Spree::OrdersController, type: :controller do
|
|
109
109
|
end
|
110
110
|
|
111
111
|
it "cannot update a blank order" do
|
112
|
-
|
112
|
+
put :update, order: { email: "foo" }
|
113
113
|
expect(flash[:error]).to eq(Spree.t(:order_not_found))
|
114
114
|
expect(response).to redirect_to(spree.root_path)
|
115
115
|
end
|
@@ -128,7 +128,7 @@ describe Spree::OrdersController, type: :controller do
|
|
128
128
|
|
129
129
|
it "removes line items on update" do
|
130
130
|
expect(order.line_items.count).to eq 1
|
131
|
-
|
131
|
+
put :update, order: { line_items_attributes: { "0" => { id: line_item.id, quantity: 0 } } }
|
132
132
|
expect(order.reload.line_items.count).to eq 0
|
133
133
|
end
|
134
134
|
end
|
@@ -23,7 +23,7 @@ module Spree
|
|
23
23
|
it "correctly calls the transition callback" do
|
24
24
|
expect(order.did_transition).to be_nil
|
25
25
|
order.line_items << FactoryGirl.create(:line_item)
|
26
|
-
|
26
|
+
put :update, { checkout: "checkout" }, { order_id: 1 }
|
27
27
|
expect(order.did_transition).to be true
|
28
28
|
end
|
29
29
|
end
|
@@ -6,12 +6,12 @@ describe Spree::ProductsController, type: :controller do
|
|
6
6
|
# Regression test for https://github.com/spree/spree/issues/1390
|
7
7
|
it "allows admins to view non-active products" do
|
8
8
|
allow(controller).to receive_messages spree_current_user: mock_model(Spree.user_class, has_spree_role?: true, last_incomplete_spree_order: nil, spree_api_key: 'fake')
|
9
|
-
|
9
|
+
get :show, id: product.to_param
|
10
10
|
expect(response.status).to eq(200)
|
11
11
|
end
|
12
12
|
|
13
13
|
it "cannot view non-active products" do
|
14
|
-
|
14
|
+
get :show, id: product.to_param
|
15
15
|
expect(response.status).to eq(404)
|
16
16
|
end
|
17
17
|
|
@@ -19,7 +19,7 @@ describe Spree::ProductsController, type: :controller do
|
|
19
19
|
user = mock_model(Spree.user_class, last_incomplete_spree_order: nil, spree_api_key: 'fake')
|
20
20
|
allow(controller).to receive_messages spree_current_user: user
|
21
21
|
expect_any_instance_of(Spree::Config.searcher_class).to receive(:current_user=).with(user)
|
22
|
-
|
22
|
+
get :index
|
23
23
|
expect(response.status).to eq(200)
|
24
24
|
end
|
25
25
|
|
@@ -30,6 +30,6 @@ describe Spree::ProductsController, type: :controller do
|
|
30
30
|
request.env['HTTP_REFERER'] = "not|a$url"
|
31
31
|
|
32
32
|
# Previously a URI::InvalidURIError exception was being thrown
|
33
|
-
|
33
|
+
get :show, id: product.to_param
|
34
34
|
end
|
35
35
|
end
|
@@ -6,7 +6,7 @@ describe Spree::TaxonsController, type: :controller do
|
|
6
6
|
user = mock_model(Spree.user_class, last_incomplete_spree_order: nil, spree_api_key: 'fake')
|
7
7
|
allow(controller).to receive_messages spree_current_user: user
|
8
8
|
expect_any_instance_of(Spree::Config.searcher_class).to receive(:current_user=).with(user)
|
9
|
-
|
9
|
+
get :show, id: taxon.permalink
|
10
10
|
expect(response.status).to eq(200)
|
11
11
|
end
|
12
12
|
end
|
@@ -77,9 +77,9 @@ describe "Checkout", type: :feature, inaccessible: true do
|
|
77
77
|
|
78
78
|
# Regression test for https://github.com/spree/spree/issues/2694 and https://github.com/spree/spree/issues/4117
|
79
79
|
context "doesn't allow bad credit card numbers" do
|
80
|
-
let!(:payment_method) { create(:credit_card_payment_method) }
|
81
80
|
before(:each) do
|
82
81
|
order = OrderWalkthrough.up_to(:delivery)
|
82
|
+
allow(order).to receive_messages(available_payment_methods: [create(:credit_card_payment_method)])
|
83
83
|
|
84
84
|
user = create(:user)
|
85
85
|
order.user = user
|
@@ -180,8 +180,7 @@ describe "Checkout", type: :feature, inaccessible: true do
|
|
180
180
|
end
|
181
181
|
|
182
182
|
context "user has payment sources", js: true do
|
183
|
-
|
184
|
-
let!(:bogus) { create(:credit_card_payment_method) }
|
183
|
+
let(:bogus) { create(:credit_card_payment_method) }
|
185
184
|
let(:user) { create(:user) }
|
186
185
|
|
187
186
|
let!(:credit_card) do
|
@@ -190,6 +189,7 @@ describe "Checkout", type: :feature, inaccessible: true do
|
|
190
189
|
|
191
190
|
before do
|
192
191
|
order = OrderWalkthrough.up_to(:delivery)
|
192
|
+
allow(order).to receive_messages(available_payment_methods: [bogus])
|
193
193
|
|
194
194
|
allow_any_instance_of(Spree::CheckoutController).to receive_messages(current_order: order)
|
195
195
|
allow_any_instance_of(Spree::CheckoutController).to receive_messages(try_spree_current_user: user)
|
@@ -317,7 +317,7 @@ describe "Checkout", type: :feature, inaccessible: true do
|
|
317
317
|
end
|
318
318
|
end
|
319
319
|
|
320
|
-
context "
|
320
|
+
context "Coupon promotions", js: true do
|
321
321
|
let!(:promotion) { create(:promotion, name: "Huhuhu", code: "huhu") }
|
322
322
|
let!(:calculator) { Spree::Calculator::FlatPercentItemTotal.create(preferred_flat_percent: "10") }
|
323
323
|
let!(:action) { Spree::Promotion::Actions::CreateItemAdjustments.create(calculator: calculator) }
|
@@ -336,20 +336,19 @@ describe "Checkout", type: :feature, inaccessible: true do
|
|
336
336
|
expect(page).to have_current_path(spree.checkout_state_path("payment"))
|
337
337
|
end
|
338
338
|
|
339
|
-
it "
|
339
|
+
it "applies them & refreshes the page on user clicking the Apply Code button" do
|
340
340
|
fill_in "Coupon Code", with: promotion.codes.first.value
|
341
|
-
click_on "
|
341
|
+
click_on "Apply Code"
|
342
342
|
|
343
343
|
expect(page).to have_content(promotion.name)
|
344
|
-
expect(
|
344
|
+
expect(page).to have_content("-$2.00")
|
345
345
|
end
|
346
346
|
|
347
|
-
context "invalid coupon" do
|
348
|
-
it "doesnt
|
347
|
+
context "with invalid coupon" do
|
348
|
+
it "doesnt apply the promotion" do
|
349
349
|
fill_in "Coupon Code", with: 'invalid'
|
350
|
-
click_on "
|
350
|
+
click_on "Apply Code"
|
351
351
|
|
352
|
-
expect(Spree::Payment.count).to eq 0
|
353
352
|
expect(page).to have_content(Spree.t(:coupon_code_not_found))
|
354
353
|
end
|
355
354
|
end
|
@@ -9,7 +9,7 @@ describe "checkout with unshippable items", type: :feature, inaccessible: true d
|
|
9
9
|
order.reload
|
10
10
|
line_item = order.line_items.last
|
11
11
|
stock_item = stock_location.stock_item(line_item.variant)
|
12
|
-
stock_item.adjust_count_on_hand(
|
12
|
+
stock_item.adjust_count_on_hand(0)
|
13
13
|
stock_item.backorderable = false
|
14
14
|
stock_item.save!
|
15
15
|
|
@@ -20,6 +20,21 @@ describe "Visiting Products", type: :feature, inaccessible: true do
|
|
20
20
|
expect(page).to have_content("Shopping Cart")
|
21
21
|
end
|
22
22
|
|
23
|
+
# Regression spec for Spree [PR#7442](https://github.com/spree/spree/pull/7442)
|
24
|
+
context "when generating product links" do
|
25
|
+
let(:product) { Spree::Product.available.first }
|
26
|
+
|
27
|
+
it "should not use the *_url helper to generate the product links" do
|
28
|
+
visit spree.root_path
|
29
|
+
expect(page).not_to have_xpath(".//a[@href='#{spree.product_url(product, host: current_host)}']")
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should use *_path helper to generate the product links" do
|
33
|
+
visit spree.root_path
|
34
|
+
expect(page).to have_xpath(".//a[@href='#{spree.product_path(product)}']")
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
23
38
|
describe 'meta tags and title' do
|
24
39
|
let(:jersey) { Spree::Product.find_by_name('Ruby on Rails Baseball Jersey') }
|
25
40
|
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' } }
|
data/spec/spec_helper.rb
CHANGED
@@ -48,7 +48,7 @@ require 'spree/testing_support/caching'
|
|
48
48
|
require 'paperclip/matchers'
|
49
49
|
|
50
50
|
require 'capybara-screenshot/rspec'
|
51
|
-
Capybara.
|
51
|
+
Capybara.save_path = ENV['CIRCLE_ARTIFACTS'] if ENV['CIRCLE_ARTIFACTS']
|
52
52
|
|
53
53
|
if ENV['WEBDRIVER'] == 'accessible'
|
54
54
|
require 'capybara/accessible'
|
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: 1.
|
4
|
+
version: 1.4.0.beta1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Solidus Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-08-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: solidus_api
|
@@ -16,42 +16,42 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 1.
|
19
|
+
version: 1.4.0.beta1
|
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: 1.
|
26
|
+
version: 1.4.0.beta1
|
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: 1.
|
33
|
+
version: 1.4.0.beta1
|
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: 1.
|
40
|
+
version: 1.4.0.beta1
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: canonical-rails
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.
|
47
|
+
version: 0.1.1
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.
|
54
|
+
version: 0.1.1
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: jquery-rails
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -165,6 +165,7 @@ files:
|
|
165
165
|
- app/assets/javascripts/spree/frontend/cart.js.coffee
|
166
166
|
- app/assets/javascripts/spree/frontend/checkout.js.coffee
|
167
167
|
- app/assets/javascripts/spree/frontend/checkout/address.js.coffee
|
168
|
+
- app/assets/javascripts/spree/frontend/checkout/coupon-code.js.coffee
|
168
169
|
- app/assets/javascripts/spree/frontend/checkout/payment.js.coffee
|
169
170
|
- app/assets/javascripts/spree/frontend/product.js.coffee
|
170
171
|
- app/assets/stylesheets/spree/frontend.css
|
@@ -339,13 +340,13 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
339
340
|
version: 2.1.0
|
340
341
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
341
342
|
requirements:
|
342
|
-
- - "
|
343
|
+
- - ">"
|
343
344
|
- !ruby/object:Gem::Version
|
344
|
-
version:
|
345
|
+
version: 1.3.1
|
345
346
|
requirements:
|
346
347
|
- none
|
347
348
|
rubyforge_project: solidus_frontend
|
348
|
-
rubygems_version: 2.
|
349
|
+
rubygems_version: 2.5.1
|
349
350
|
signing_key:
|
350
351
|
specification_version: 4
|
351
352
|
summary: Cart and storefront for the Solidus e-commerce project.
|