spree_api 2.3.13 → 2.4.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +1 -43
- data/Gemfile +1 -1
- data/app/controllers/spree/api/addresses_controller.rb +1 -1
- data/app/controllers/spree/api/base_controller.rb +22 -9
- data/app/controllers/spree/api/checkouts_controller.rb +2 -2
- data/app/controllers/spree/api/countries_controller.rb +2 -2
- data/app/controllers/spree/api/credit_cards_controller.rb +1 -1
- data/app/controllers/spree/api/images_controller.rb +5 -0
- data/app/controllers/spree/api/inventory_units_controller.rb +1 -1
- data/app/controllers/spree/api/line_items_controller.rb +7 -7
- data/app/controllers/spree/api/option_types_controller.rb +2 -2
- data/app/controllers/spree/api/orders_controller.rb +17 -6
- data/app/controllers/spree/api/payments_controller.rb +3 -11
- data/app/controllers/spree/api/product_properties_controller.rb +2 -2
- data/app/controllers/spree/api/promotions_controller.rb +26 -0
- data/app/controllers/spree/api/properties_controller.rb +1 -1
- data/app/controllers/spree/api/return_authorizations_controller.rb +0 -10
- data/app/controllers/spree/api/shipments_controller.rb +71 -4
- data/app/controllers/spree/api/states_controller.rb +3 -3
- data/app/controllers/spree/api/stock_items_controller.rb +1 -1
- data/app/controllers/spree/api/stock_movements_controller.rb +1 -1
- data/app/controllers/spree/api/taxons_controller.rb +1 -1
- data/app/controllers/spree/api/variants_controller.rb +1 -2
- data/app/helpers/spree/api/api_helpers.rb +19 -5
- data/app/views/spree/api/images/index.v1.rabl +4 -0
- data/app/views/spree/api/products/show.v1.rabl +4 -1
- data/app/views/spree/api/promotions/handler.v1.rabl +2 -1
- data/app/views/spree/api/promotions/show.v1.rabl +2 -0
- data/app/views/spree/api/shipments/big.v1.rabl +48 -0
- data/app/views/spree/api/shipments/mine.v1.rabl +9 -0
- data/app/views/spree/api/shipments/small.v1.rabl +1 -5
- data/app/views/spree/api/shipping_rates/show.v1.rabl +2 -2
- data/app/views/spree/api/taxonomies/show.v1.rabl +2 -2
- data/app/views/spree/api/variants/big.v1.rabl +6 -1
- data/app/views/spree/api/variants/show.v1.rabl +1 -1
- data/app/views/spree/api/variants/small.v1.rabl +2 -3
- data/config/routes.rb +9 -0
- data/lib/spree/api/responders/rabl_template.rb +1 -1
- data/lib/spree/api/testing_support/helpers.rb +6 -6
- data/lib/spree/api/testing_support/setup.rb +2 -2
- data/spec/controllers/spree/api/addresses_controller_spec.rb +7 -7
- data/spec/controllers/spree/api/base_controller_spec.rb +66 -19
- data/spec/controllers/spree/api/checkouts_controller_spec.rb +54 -54
- data/spec/controllers/spree/api/classifications_controller_spec.rb +5 -5
- data/spec/controllers/spree/api/config_controller_spec.rb +9 -9
- data/spec/controllers/spree/api/countries_controller_spec.rb +11 -11
- data/spec/controllers/spree/api/credit_cards_controller_spec.rb +16 -16
- data/spec/controllers/spree/api/images_controller_spec.rb +37 -11
- data/spec/controllers/spree/api/inventory_units_controller_spec.rb +6 -6
- data/spec/controllers/spree/api/line_items_controller_spec.rb +34 -35
- data/spec/controllers/spree/api/option_types_controller_spec.rb +18 -18
- data/spec/controllers/spree/api/option_values_controller_spec.rb +21 -21
- data/spec/controllers/spree/api/orders_controller_spec.rb +177 -161
- data/spec/controllers/spree/api/payments_controller_spec.rb +52 -89
- data/spec/controllers/spree/api/product_properties_controller_spec.rb +21 -21
- data/spec/controllers/spree/api/products_controller_spec.rb +103 -60
- data/spec/controllers/spree/api/promotion_application_spec.rb +14 -12
- data/spec/controllers/spree/api/promotions_controller_spec.rb +64 -0
- data/spec/controllers/spree/api/properties_controller_spec.rb +25 -25
- data/spec/controllers/spree/api/return_authorizations_controller_spec.rb +42 -66
- data/spec/controllers/spree/api/shipments_controller_spec.rb +69 -21
- data/spec/controllers/spree/api/states_controller_spec.rb +18 -18
- data/spec/controllers/spree/api/stock_items_controller_spec.rb +26 -26
- data/spec/controllers/spree/api/stock_locations_controller_spec.rb +22 -22
- data/spec/controllers/spree/api/stock_movements_controller_spec.rb +16 -16
- data/spec/controllers/spree/api/taxonomies_controller_spec.rb +24 -24
- data/spec/controllers/spree/api/taxons_controller_spec.rb +39 -39
- data/spec/controllers/spree/api/unauthenticated_products_controller_spec.rb +5 -5
- data/spec/controllers/spree/api/users_controller_spec.rb +41 -41
- data/spec/controllers/spree/api/variants_controller_spec.rb +47 -37
- data/spec/controllers/spree/api/zones_controller_spec.rb +40 -18
- data/spec/models/spree/legacy_user_spec.rb +5 -5
- data/spec/requests/rabl_cache_spec.rb +9 -9
- data/spec/spec_helper.rb +1 -0
- metadata +14 -9
- data/spec/requests/ransackable_attributes_spec.rb +0 -79
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
module Spree
|
4
|
-
describe Api::CheckoutsController
|
4
|
+
describe Api::CheckoutsController do
|
5
5
|
render_views
|
6
6
|
|
7
7
|
before(:each) do
|
@@ -31,39 +31,39 @@ module Spree
|
|
31
31
|
end
|
32
32
|
|
33
33
|
before(:each) do
|
34
|
-
|
35
|
-
|
34
|
+
Order.any_instance.stub(:confirmation_required? => true)
|
35
|
+
Order.any_instance.stub(:payment_required? => true)
|
36
36
|
end
|
37
37
|
|
38
38
|
it "should transition a recently created order from cart to address" do
|
39
|
-
|
40
|
-
|
39
|
+
order.state.should eq "cart"
|
40
|
+
order.email.should_not be_nil
|
41
41
|
api_put :update, :id => order.to_param, :order_token => order.guest_token
|
42
|
-
|
42
|
+
order.reload.state.should eq "address"
|
43
43
|
end
|
44
44
|
|
45
45
|
it "should transition a recently created order from cart to address with order token in header" do
|
46
|
-
|
47
|
-
|
46
|
+
order.state.should eq "cart"
|
47
|
+
order.email.should_not be_nil
|
48
48
|
request.headers["X-Spree-Order-Token"] = order.guest_token
|
49
49
|
api_put :update, :id => order.to_param
|
50
|
-
|
50
|
+
order.reload.state.should eq "address"
|
51
51
|
end
|
52
52
|
|
53
53
|
it "can take line_items_attributes as a parameter" do
|
54
54
|
line_item = order.line_items.first
|
55
55
|
api_put :update, :id => order.to_param, :order_token => order.guest_token,
|
56
56
|
:order => { :line_items_attributes => { 0 => { :id => line_item.id, :quantity => 1 } } }
|
57
|
-
|
58
|
-
|
57
|
+
response.status.should == 200
|
58
|
+
order.reload.state.should eq "address"
|
59
59
|
end
|
60
60
|
|
61
61
|
it "can take line_items as a parameter" do
|
62
62
|
line_item = order.line_items.first
|
63
63
|
api_put :update, :id => order.to_param, :order_token => order.guest_token,
|
64
64
|
:order => { :line_items => { 0 => { :id => line_item.id, :quantity => 1 } } }
|
65
|
-
|
66
|
-
|
65
|
+
response.status.should == 200
|
66
|
+
order.reload.state.should eq "address"
|
67
67
|
end
|
68
68
|
|
69
69
|
it "will return an error if the order cannot transition" do
|
@@ -73,7 +73,7 @@ module Spree
|
|
73
73
|
order.update_column(:state, "address")
|
74
74
|
api_put :update, :id => order.to_param, :order_token => order.guest_token
|
75
75
|
# Order has not transitioned
|
76
|
-
|
76
|
+
response.status.should == 422
|
77
77
|
end
|
78
78
|
|
79
79
|
context "transitioning to delivery" do
|
@@ -101,10 +101,10 @@ module Spree
|
|
101
101
|
:bill_address_attributes => address,
|
102
102
|
:ship_address_attributes => address
|
103
103
|
}
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
104
|
+
json_response['state'].should == 'delivery'
|
105
|
+
json_response['bill_address']['firstname'].should == 'John'
|
106
|
+
json_response['ship_address']['firstname'].should == 'John'
|
107
|
+
response.status.should == 200
|
108
108
|
end
|
109
109
|
|
110
110
|
# Regression test for #4498
|
@@ -129,25 +129,25 @@ module Spree
|
|
129
129
|
shipping_rate = shipment.shipping_rates.where(:selected => false).first
|
130
130
|
api_put :update, :id => order.to_param, :order_token => order.guest_token,
|
131
131
|
:order => { :shipments_attributes => { "0" => { :selected_shipping_rate_id => shipping_rate.id, :id => shipment.id } } }
|
132
|
-
|
132
|
+
response.status.should == 200
|
133
133
|
# Find the correct shipment...
|
134
134
|
json_shipment = json_response['shipments'].detect { |s| s["id"] == shipment.id }
|
135
135
|
# Find the correct shipping rate for that shipment...
|
136
136
|
json_shipping_rate = json_shipment['shipping_rates'].detect { |sr| sr["id"] == shipping_rate.id }
|
137
137
|
# ... And finally ensure that it's selected
|
138
|
-
|
138
|
+
json_shipping_rate['selected'].should be true
|
139
139
|
# Order should automatically transfer to payment because all criteria are met
|
140
|
-
|
140
|
+
json_response['state'].should == 'payment'
|
141
141
|
end
|
142
142
|
|
143
143
|
it "can update payment method and transition from payment to confirm" do
|
144
144
|
order.update_column(:state, "payment")
|
145
145
|
api_put :update, :id => order.to_param, :order_token => order.guest_token,
|
146
146
|
:order => { :payments_attributes => [{ :payment_method_id => @payment_method.id }] }
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
147
|
+
json_response['state'].should == 'confirm'
|
148
|
+
json_response['payments'][0]['payment_method']['name'].should == @payment_method.name
|
149
|
+
json_response['payments'][0]['amount'].should == order.total.to_s
|
150
|
+
response.status.should == 200
|
151
151
|
end
|
152
152
|
|
153
153
|
it "can update payment method with source and transition from payment to confirm" do
|
@@ -163,27 +163,27 @@ module Spree
|
|
163
163
|
api_put :update, :id => order.to_param, :order_token => order.guest_token,
|
164
164
|
:order => { :payments_attributes => [{ :payment_method_id => @payment_method.id.to_s }],
|
165
165
|
:payment_source => { @payment_method.id.to_s => source_attributes } }
|
166
|
-
|
167
|
-
|
168
|
-
|
166
|
+
json_response['payments'][0]['payment_method']['name'].should == @payment_method.name
|
167
|
+
json_response['payments'][0]['amount'].should == order.total.to_s
|
168
|
+
response.status.should == 200
|
169
169
|
end
|
170
170
|
|
171
171
|
it "returns errors when source is missing attributes" do
|
172
172
|
order.update_column(:state, "payment")
|
173
173
|
api_put :update, :id => order.to_param, :order_token => order.guest_token,
|
174
174
|
:order => {
|
175
|
-
:payments_attributes => [{ :payment_method_id => @payment_method.id
|
175
|
+
:payments_attributes => [{ :payment_method_id => @payment_method.id }]
|
176
176
|
},
|
177
177
|
:payment_source => {
|
178
178
|
@payment_method.id.to_s => { name: "Spree" }
|
179
179
|
}
|
180
180
|
|
181
|
-
|
181
|
+
response.status.should == 422
|
182
182
|
cc_errors = json_response['errors']['payments.Credit Card']
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
183
|
+
cc_errors.should include("Number can't be blank")
|
184
|
+
cc_errors.should include("Month is not a number")
|
185
|
+
cc_errors.should include("Year is not a number")
|
186
|
+
cc_errors.should include("Verification Value can't be blank")
|
187
187
|
end
|
188
188
|
|
189
189
|
it "allow users to reuse a credit card" do
|
@@ -199,17 +199,17 @@ module Spree
|
|
199
199
|
|
200
200
|
it "can transition from confirm to complete" do
|
201
201
|
order.update_column(:state, "confirm")
|
202
|
-
|
202
|
+
Spree::Order.any_instance.stub(:payment_required? => false)
|
203
203
|
api_put :update, :id => order.to_param, :order_token => order.guest_token
|
204
|
-
|
205
|
-
|
204
|
+
json_response['state'].should == 'complete'
|
205
|
+
response.status.should == 200
|
206
206
|
end
|
207
207
|
|
208
208
|
it "returns the order if the order is already complete" do
|
209
209
|
order.update_column(:state, "complete")
|
210
210
|
api_put :update, :id => order.to_param, :order_token => order.guest_token
|
211
|
-
|
212
|
-
|
211
|
+
json_response['number'].should == order.number
|
212
|
+
response.status.should == 200
|
213
213
|
end
|
214
214
|
|
215
215
|
# Regression test for #3784
|
@@ -227,24 +227,24 @@ module Spree
|
|
227
227
|
# Need to pass email as well so that validations succeed
|
228
228
|
api_put :update, :id => order.to_param, :order_token => order.guest_token,
|
229
229
|
:order => { :user_id => user.id, :email => "guest@spreecommerce.com" }
|
230
|
-
|
231
|
-
|
230
|
+
response.status.should == 200
|
231
|
+
json_response['user_id'].should == user.id
|
232
232
|
end
|
233
233
|
end
|
234
234
|
|
235
235
|
it "can assign an email to the order" do
|
236
236
|
api_put :update, :id => order.to_param, :order_token => order.guest_token,
|
237
237
|
:order => { :email => "guest@spreecommerce.com" }
|
238
|
-
|
239
|
-
|
238
|
+
json_response['email'].should == "guest@spreecommerce.com"
|
239
|
+
response.status.should == 200
|
240
240
|
end
|
241
241
|
|
242
242
|
it "can apply a coupon code to an order" do
|
243
243
|
skip "ensure that the order totals are properly updated, see frontend orders_controller or checkout_controller as example"
|
244
244
|
|
245
245
|
order.update_column(:state, "payment")
|
246
|
-
|
247
|
-
|
246
|
+
PromotionHandler::Coupon.should_receive(:new).with(order).and_call_original
|
247
|
+
PromotionHandler::Coupon.any_instance.should_receive(:apply).and_return({:coupon_applied? => true})
|
248
248
|
api_put :update, :id => order.to_param, :order_token => order.guest_token, :order => { :coupon_code => "foobar" }
|
249
249
|
end
|
250
250
|
end
|
@@ -255,16 +255,16 @@ module Spree
|
|
255
255
|
order.line_items.delete_all
|
256
256
|
order.update_column(:email, "spree@example.com")
|
257
257
|
api_put :next, :id => order.to_param, :order_token => order.guest_token
|
258
|
-
|
259
|
-
|
258
|
+
response.status.should == 422
|
259
|
+
json_response["errors"]["base"].should include(Spree.t(:there_are_no_items_for_this_order))
|
260
260
|
end
|
261
261
|
|
262
262
|
it "can transition an order to the next state" do
|
263
263
|
order.update_column(:email, "spree@example.com")
|
264
264
|
|
265
265
|
api_put :next, :id => order.to_param, :order_token => order.guest_token
|
266
|
-
|
267
|
-
|
266
|
+
response.status.should == 200
|
267
|
+
json_response['state'].should == 'address'
|
268
268
|
end
|
269
269
|
|
270
270
|
it "cannot transition if order email is blank" do
|
@@ -274,14 +274,14 @@ module Spree
|
|
274
274
|
)
|
275
275
|
|
276
276
|
api_put :next, :id => order.to_param, :order_token => order.guest_token
|
277
|
-
|
278
|
-
|
277
|
+
response.status.should == 422
|
278
|
+
json_response['error'].should =~ /could not be transitioned/
|
279
279
|
end
|
280
280
|
|
281
281
|
it "doesnt advance payment state if order has no payment" do
|
282
282
|
order.update_column(:state, "payment")
|
283
283
|
api_put :next, :id => order.to_param, :order_token => order.guest_token, :order => {}
|
284
|
-
|
284
|
+
json_response["errors"]["base"].should include(Spree.t(:no_payment_found))
|
285
285
|
end
|
286
286
|
end
|
287
287
|
|
@@ -289,13 +289,13 @@ module Spree
|
|
289
289
|
let!(:order) { create(:order_with_line_items) }
|
290
290
|
|
291
291
|
it 'continues to advance advances an order while it can move forward' do
|
292
|
-
|
292
|
+
Spree::Order.any_instance.should_receive(:next).exactly(3).times.and_return(true, true, false)
|
293
293
|
api_put :advance, :id => order.to_param, :order_token => order.guest_token
|
294
294
|
end
|
295
295
|
|
296
296
|
it 'returns the order' do
|
297
297
|
api_put :advance, :id => order.to_param, :order_token => order.guest_token
|
298
|
-
|
298
|
+
json_response['id'].should == order.id
|
299
299
|
end
|
300
300
|
end
|
301
301
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
module Spree
|
4
|
-
describe Api::ClassificationsController
|
4
|
+
describe Api::ClassificationsController do
|
5
5
|
let(:taxon) do
|
6
6
|
taxon = create(:taxon)
|
7
7
|
3.times do
|
@@ -18,7 +18,7 @@ module Spree
|
|
18
18
|
context "as a user" do
|
19
19
|
it "cannot change the order of a product" do
|
20
20
|
api_put :update, :taxon_id => taxon, :product_id => taxon.products.first, :position => 1
|
21
|
-
|
21
|
+
response.status.should == 401
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
@@ -28,10 +28,10 @@ module Spree
|
|
28
28
|
it "can change the order a product" do
|
29
29
|
last_product = taxon.products.last
|
30
30
|
classification = taxon.classifications.find_by(:product_id => last_product.id)
|
31
|
-
|
31
|
+
classification.position.should == 3
|
32
32
|
api_put :update, :taxon_id => taxon, :product_id => last_product, :position => 0
|
33
|
-
|
34
|
-
|
33
|
+
response.status.should == 200
|
34
|
+
classification.reload.position.should == 1
|
35
35
|
end
|
36
36
|
end
|
37
37
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
module Spree
|
4
|
-
describe Api::ConfigController
|
4
|
+
describe Api::ConfigController do
|
5
5
|
render_views
|
6
6
|
|
7
7
|
before do
|
@@ -10,18 +10,18 @@ module Spree
|
|
10
10
|
|
11
11
|
it "returns Spree::Money settings" do
|
12
12
|
api_get :money
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
13
|
+
response.should be_success
|
14
|
+
json_response["symbol"].should == "$"
|
15
|
+
json_response["symbol_position"].should == "before"
|
16
|
+
json_response["no_cents"].should == false
|
17
|
+
json_response["decimal_mark"].should == "."
|
18
|
+
json_response["thousands_separator"].should == ","
|
19
19
|
end
|
20
20
|
|
21
21
|
it "returns some configuration settings" do
|
22
22
|
api_get :show
|
23
|
-
|
24
|
-
|
23
|
+
response.should be_success
|
24
|
+
json_response["default_country_id"].should == Spree::Config[:default_country_id]
|
25
25
|
end
|
26
26
|
end
|
27
27
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
module Spree
|
4
|
-
describe Api::CountriesController
|
4
|
+
describe Api::CountriesController do
|
5
5
|
render_views
|
6
6
|
|
7
7
|
before do
|
@@ -12,7 +12,7 @@ module Spree
|
|
12
12
|
|
13
13
|
it "gets all countries" do
|
14
14
|
api_get :index
|
15
|
-
|
15
|
+
json_response['countries'].first['iso3'].should eq @country.iso3
|
16
16
|
end
|
17
17
|
|
18
18
|
context "with two countries" do
|
@@ -20,29 +20,29 @@ module Spree
|
|
20
20
|
|
21
21
|
it "can view all countries" do
|
22
22
|
api_get :index
|
23
|
-
|
24
|
-
|
25
|
-
|
23
|
+
json_response['count'].should == 2
|
24
|
+
json_response['current_page'].should == 1
|
25
|
+
json_response['pages'].should == 1
|
26
26
|
end
|
27
27
|
|
28
28
|
it 'can query the results through a paramter' do
|
29
29
|
api_get :index, :q => { :name_cont => 'zam' }
|
30
|
-
|
31
|
-
|
30
|
+
json_response['count'].should == 1
|
31
|
+
json_response['countries'].first['name'].should eq @zambia.name
|
32
32
|
end
|
33
33
|
|
34
34
|
it 'can control the page size through a parameter' do
|
35
35
|
api_get :index, :per_page => 1
|
36
|
-
|
37
|
-
|
38
|
-
|
36
|
+
json_response['count'].should == 1
|
37
|
+
json_response['current_page'].should == 1
|
38
|
+
json_response['pages'].should == 2
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
42
42
|
it "includes states" do
|
43
43
|
api_get :show, :id => @country.id
|
44
44
|
states = json_response['states']
|
45
|
-
|
45
|
+
states.first['name'].should eq @state.name
|
46
46
|
end
|
47
47
|
end
|
48
48
|
end
|
@@ -1,13 +1,13 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
module Spree
|
4
|
-
describe Api::CreditCardsController
|
4
|
+
describe Api::CreditCardsController do
|
5
5
|
render_views
|
6
6
|
|
7
7
|
let!(:admin_user) do
|
8
8
|
user = Spree.user_class.new(:email => "spree@example.com", :id => 1)
|
9
9
|
user.generate_spree_api_key!
|
10
|
-
|
10
|
+
user.stub(:has_spree_role?).with('admin').and_return(true)
|
11
11
|
user
|
12
12
|
end
|
13
13
|
|
@@ -25,7 +25,7 @@ module Spree
|
|
25
25
|
|
26
26
|
it "the user id doesn't exist" do
|
27
27
|
api_get :index, user_id: 1000
|
28
|
-
|
28
|
+
response.status.should == 404
|
29
29
|
end
|
30
30
|
|
31
31
|
context "calling user is in admin role" do
|
@@ -37,18 +37,18 @@ module Spree
|
|
37
37
|
it "no credit cards exist for user" do
|
38
38
|
api_get :index, user_id: normal_user.id
|
39
39
|
|
40
|
-
|
41
|
-
|
40
|
+
response.status.should == 200
|
41
|
+
json_response["pages"].should == 0
|
42
42
|
end
|
43
43
|
|
44
44
|
it "can view all credit cards for user" do
|
45
45
|
api_get :index, user_id: current_api_user.id
|
46
46
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
47
|
+
response.status.should == 200
|
48
|
+
json_response["pages"].should == 1
|
49
|
+
json_response["current_page"].should == 1
|
50
|
+
json_response["credit_cards"].length.should == 1
|
51
|
+
json_response["credit_cards"].first["id"].should == card.id
|
52
52
|
end
|
53
53
|
end
|
54
54
|
|
@@ -63,17 +63,17 @@ module Spree
|
|
63
63
|
it "can not view user" do
|
64
64
|
api_get :index, user_id: admin_user.id
|
65
65
|
|
66
|
-
|
66
|
+
response.status.should == 404
|
67
67
|
end
|
68
68
|
|
69
69
|
it "can view own credit cards" do
|
70
70
|
api_get :index, user_id: normal_user.id
|
71
71
|
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
72
|
+
response.status.should == 200
|
73
|
+
json_response["pages"].should == 1
|
74
|
+
json_response["current_page"].should == 1
|
75
|
+
json_response["credit_cards"].length.should == 1
|
76
|
+
json_response["credit_cards"].first["id"].should == card.id
|
77
77
|
end
|
78
78
|
end
|
79
79
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
module Spree
|
4
|
-
describe Spree::Api::ImagesController
|
4
|
+
describe Spree::Api::ImagesController do
|
5
5
|
render_views
|
6
6
|
|
7
7
|
let!(:product) { create(:product) }
|
@@ -17,32 +17,58 @@ module Spree
|
|
17
17
|
sign_in_as_admin!
|
18
18
|
|
19
19
|
it "can upload a new image for a variant" do
|
20
|
-
|
20
|
+
lambda do
|
21
21
|
api_post :create,
|
22
22
|
:image => { :attachment => upload_image('thinking-cat.jpg'),
|
23
23
|
:viewable_type => 'Spree::Variant',
|
24
24
|
:viewable_id => product.master.to_param },
|
25
25
|
:product_id => product.id
|
26
|
-
|
27
|
-
|
28
|
-
end.
|
26
|
+
response.status.should == 201
|
27
|
+
json_response.should have_attributes(attributes)
|
28
|
+
end.should change(Image, :count).by(1)
|
29
29
|
end
|
30
30
|
|
31
31
|
context "working with an existing image" do
|
32
32
|
let!(:product_image) { product.master.images.create!(:attachment => image('thinking-cat.jpg')) }
|
33
33
|
|
34
|
+
it "can get a single product image" do
|
35
|
+
api_get :show, :id => product_image.id, :product_id => product.id
|
36
|
+
response.status.should == 200
|
37
|
+
json_response.should have_attributes(attributes)
|
38
|
+
end
|
39
|
+
|
40
|
+
it "can get a single variant image" do
|
41
|
+
api_get :show, :id => product_image.id, :variant_id => product.master.id
|
42
|
+
response.status.should == 200
|
43
|
+
json_response.should have_attributes(attributes)
|
44
|
+
end
|
45
|
+
|
46
|
+
it "can get a list of product images" do
|
47
|
+
api_get :index, :product_id => product.id
|
48
|
+
response.status.should == 200
|
49
|
+
json_response.should have_key("images")
|
50
|
+
json_response["images"].first.should have_attributes(attributes)
|
51
|
+
end
|
52
|
+
|
53
|
+
it "can get a list of variant images" do
|
54
|
+
api_get :index, :variant_id => product.master.id
|
55
|
+
response.status.should == 200
|
56
|
+
json_response.should have_key("images")
|
57
|
+
json_response["images"].first.should have_attributes(attributes)
|
58
|
+
end
|
59
|
+
|
34
60
|
it "can update image data" do
|
35
|
-
|
61
|
+
product_image.position.should == 1
|
36
62
|
api_post :update, :image => { :position => 2 }, :id => product_image.id, :product_id => product.id
|
37
|
-
|
38
|
-
|
39
|
-
|
63
|
+
response.status.should == 200
|
64
|
+
json_response.should have_attributes(attributes)
|
65
|
+
product_image.reload.position.should == 2
|
40
66
|
end
|
41
67
|
|
42
68
|
it "can delete an image" do
|
43
69
|
api_delete :destroy, :id => product_image.id, :product_id => product.id
|
44
|
-
|
45
|
-
|
70
|
+
response.status.should == 204
|
71
|
+
lambda { product_image.reload }.should raise_error(ActiveRecord::RecordNotFound)
|
46
72
|
end
|
47
73
|
end
|
48
74
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
module Spree
|
4
|
-
describe Api::InventoryUnitsController
|
4
|
+
describe Api::InventoryUnitsController do
|
5
5
|
render_views
|
6
6
|
|
7
7
|
before do
|
@@ -14,13 +14,13 @@ module Spree
|
|
14
14
|
|
15
15
|
it "gets an inventory unit" do
|
16
16
|
api_get :show, :id => @inventory_unit.id
|
17
|
-
|
17
|
+
json_response['state'].should eq @inventory_unit.state
|
18
18
|
end
|
19
19
|
|
20
20
|
it "updates an inventory unit (only shipment is accessable by default)" do
|
21
21
|
api_put :update, :id => @inventory_unit.id,
|
22
22
|
:inventory_unit => { :shipment => nil }
|
23
|
-
|
23
|
+
json_response['shipment_id'].should be_nil
|
24
24
|
end
|
25
25
|
|
26
26
|
context 'fires state event' do
|
@@ -29,19 +29,19 @@ module Spree
|
|
29
29
|
:fire => 'ship',
|
30
30
|
:inventory_unit => { :shipment => nil }
|
31
31
|
|
32
|
-
|
32
|
+
json_response['state'].should eq 'shipped'
|
33
33
|
end
|
34
34
|
|
35
35
|
it 'and returns exception if cannot fire' do
|
36
36
|
api_put :update, :id => @inventory_unit.id,
|
37
37
|
:fire => 'return'
|
38
|
-
|
38
|
+
json_response['exception'].should match /cannot transition to return/
|
39
39
|
end
|
40
40
|
|
41
41
|
it 'and returns exception bad state' do
|
42
42
|
api_put :update, :id => @inventory_unit.id,
|
43
43
|
:fire => 'bad'
|
44
|
-
|
44
|
+
json_response['exception'].should match /cannot transition to bad/
|
45
45
|
end
|
46
46
|
end
|
47
47
|
end
|