spree_api 2.3.13 → 2.4.0.rc1
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.
- 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
|