spree_api 2.3.2 → 2.3.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/controllers/spree/api/addresses_controller.rb +10 -21
- data/spec/controllers/spree/api/addresses_controller_spec.rb +31 -57
- data/spec/controllers/spree/api/base_controller_spec.rb +2 -2
- data/spec/controllers/spree/api/checkouts_controller_spec.rb +3 -3
- data/spec/controllers/spree/api/orders_controller_spec.rb +6 -6
- data/spec/controllers/spree/api/payments_controller_spec.rb +1 -1
- data/spec/controllers/spree/api/promotion_application_spec.rb +3 -3
- data/spec/controllers/spree/api/taxonomies_controller_spec.rb +2 -2
- data/spec/requests/rabl_cache_spec.rb +2 -2
- data/spec/spec_helper.rb +1 -0
- data/spec/support/controller_hacks.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5752a91942e0ac29588a3ebb480984ae1e8a4833
|
4
|
+
data.tar.gz: f7a88ac18005ccce8cb89b0e95201174e39404e0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fe932da355fa5f4289aef12236e5054ea5489152e82d0e9bf1c22d8343c1d96891da9d132477fd6eece63df8f019f5656eeca7e49a825bb5046563a7fe85773a
|
7
|
+
data.tar.gz: 3e6d70b9faa3d422a88f7b30aadc53bffebfc9754121c39cab70ade338e6c81adb3641c00b4fb5fcea70e329db558f20c5e4f2a1f7a4d836648688ac4cdd0798
|
@@ -4,12 +4,14 @@ module Spree
|
|
4
4
|
before_filter :find_order
|
5
5
|
|
6
6
|
def show
|
7
|
-
|
7
|
+
authorize! :read, @order, order_token
|
8
|
+
find_address
|
8
9
|
respond_with(@address)
|
9
10
|
end
|
10
11
|
|
11
12
|
def update
|
12
|
-
|
13
|
+
authorize! :update, @order, order_token
|
14
|
+
find_address
|
13
15
|
|
14
16
|
if @address.update_attributes(address_params)
|
15
17
|
respond_with(@address, :default_template => :show)
|
@@ -24,29 +26,16 @@ module Spree
|
|
24
26
|
end
|
25
27
|
|
26
28
|
def find_order
|
27
|
-
@order = Spree::Order.find_by!(number: order_id)
|
29
|
+
@order = Spree::Order.find_by!(number: order_id)
|
28
30
|
end
|
29
31
|
|
30
32
|
def find_address
|
31
|
-
if @order
|
32
|
-
@
|
33
|
-
|
34
|
-
|
35
|
-
@order.ship_address
|
36
|
-
else
|
37
|
-
raise CanCan::AccessDenied
|
38
|
-
end
|
33
|
+
@address = if @order.bill_address_id == params[:id].to_i
|
34
|
+
@order.bill_address
|
35
|
+
elsif @order.ship_address_id == params[:id].to_i
|
36
|
+
@order.ship_address
|
39
37
|
else
|
40
|
-
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
def load_and_authorize_address(permission)
|
45
|
-
find_address
|
46
|
-
if @order
|
47
|
-
authorize! permission, @order, order_token
|
48
|
-
else
|
49
|
-
authorize! permission, @address
|
38
|
+
raise CanCan::AccessDenied
|
50
39
|
end
|
51
40
|
end
|
52
41
|
end
|
@@ -7,76 +7,50 @@ module Spree
|
|
7
7
|
before do
|
8
8
|
stub_authentication!
|
9
9
|
@address = create(:address)
|
10
|
+
@order = create(:order, :bill_address => @address)
|
10
11
|
end
|
11
|
-
|
12
|
-
context "with
|
12
|
+
|
13
|
+
context "with their own address" do
|
13
14
|
before do
|
14
|
-
|
15
|
+
Order.any_instance.stub :user => current_api_user
|
15
16
|
end
|
16
|
-
|
17
|
-
context "with their own address" do
|
18
|
-
before do
|
19
|
-
Order.any_instance.stub :user => current_api_user
|
20
|
-
end
|
21
|
-
|
22
|
-
it "gets an address" do
|
23
|
-
api_get :show, :id => @address.id, :order_id => @order.number
|
24
|
-
json_response['address1'].should eq @address.address1
|
25
|
-
end
|
26
|
-
|
27
|
-
it "updates an address" do
|
28
|
-
api_put :update, :id => @address.id, :order_id => @order.number,
|
29
|
-
:address => { :address1 => "123 Test Lane" }
|
30
|
-
json_response['address1'].should eq '123 Test Lane'
|
31
|
-
end
|
32
|
-
|
33
|
-
it "receives the errors object if address is invalid" do
|
34
|
-
api_put :update, :id => @address.id, :order_id => @order.number,
|
35
|
-
:address => { :address1 => "" }
|
36
17
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
end
|
18
|
+
it "gets an address" do
|
19
|
+
api_get :show, :id => @address.id, :order_id => @order.number
|
20
|
+
json_response['address1'].should eq @address.address1
|
41
21
|
end
|
42
22
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
23
|
+
it "updates an address" do
|
24
|
+
api_put :update, :id => @address.id, :order_id => @order.number,
|
25
|
+
:address => { :address1 => "123 Test Lane" }
|
26
|
+
json_response['address1'].should eq '123 Test Lane'
|
27
|
+
end
|
48
28
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
end
|
29
|
+
it "receives the errors object if address is invalid" do
|
30
|
+
api_put :update, :id => @address.id, :order_id => @order.number,
|
31
|
+
:address => { :address1 => "" }
|
53
32
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
end
|
33
|
+
json_response['error'].should_not be_nil
|
34
|
+
json_response['errors'].should_not be_nil
|
35
|
+
json_response['errors']['address1'].first.should eq "can't be blank"
|
58
36
|
end
|
59
37
|
end
|
60
|
-
|
61
|
-
context "without order" do
|
62
|
-
context "with their own address" do
|
63
|
-
before do
|
64
|
-
Address.any_instance.stub :user => current_api_user
|
65
|
-
end
|
66
38
|
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
39
|
+
context "on an address that does not belong to this order" do
|
40
|
+
before do
|
41
|
+
@order.bill_address_id = nil
|
42
|
+
@order.ship_address = nil
|
43
|
+
end
|
44
|
+
|
45
|
+
it "cannot retreive address information" do
|
46
|
+
api_get :show, :id => @address.id, :order_id => @order.number
|
47
|
+
assert_unauthorized!
|
71
48
|
end
|
72
49
|
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
json_response['address1'].should be_nil
|
77
|
-
assert_unauthorized!
|
78
|
-
end
|
50
|
+
it "cannot update address information" do
|
51
|
+
api_get :update, :id => @address.id, :order_id => @order.number
|
52
|
+
assert_unauthorized!
|
79
53
|
end
|
80
54
|
end
|
81
55
|
end
|
82
|
-
end
|
56
|
+
end
|
@@ -81,8 +81,8 @@ describe Spree::Api::BaseController do
|
|
81
81
|
'name' => 'test order' }
|
82
82
|
|
83
83
|
mapped = subject.map_nested_attributes_keys(klass, attributes)
|
84
|
-
mapped.has_key?('line_items_attributes').should
|
85
|
-
mapped.has_key?('name').should
|
84
|
+
mapped.has_key?('line_items_attributes').should be true
|
85
|
+
mapped.has_key?('name').should be true
|
86
86
|
end
|
87
87
|
|
88
88
|
it "lets a subclass override the product associations that are eager-loaded" do
|
@@ -67,7 +67,7 @@ module Spree
|
|
67
67
|
end
|
68
68
|
|
69
69
|
it "will return an error if the order cannot transition" do
|
70
|
-
|
70
|
+
skip "not sure if this test is valid"
|
71
71
|
order.bill_address = nil
|
72
72
|
order.save
|
73
73
|
order.update_column(:state, "address")
|
@@ -135,7 +135,7 @@ module Spree
|
|
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
|
-
json_shipping_rate['selected'].should
|
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
|
@@ -240,7 +240,7 @@ module Spree
|
|
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
246
|
PromotionHandler::Coupon.should_receive(:new).with(order).and_call_original
|
@@ -460,10 +460,10 @@ module Spree
|
|
460
460
|
end
|
461
461
|
|
462
462
|
it "includes the ship_total in the response" do
|
463
|
-
api_get :show, :
|
463
|
+
api_get :show, id: order.to_param
|
464
464
|
|
465
|
-
json_response['ship_total'].
|
466
|
-
json_response['display_ship_total'].
|
465
|
+
expect(json_response['ship_total']).to eq '10.0'
|
466
|
+
expect(json_response['display_ship_total']).to eq '$10.00'
|
467
467
|
end
|
468
468
|
|
469
469
|
it "returns available shipments for an order" do
|
@@ -486,7 +486,7 @@ module Spree
|
|
486
486
|
shipping_rate = shipment["shipping_rates"][0]
|
487
487
|
shipping_rate["name"].should == json_shipping_method["name"]
|
488
488
|
shipping_rate["cost"].should == "10.0"
|
489
|
-
shipping_rate["selected"].should
|
489
|
+
shipping_rate["selected"].should be true
|
490
490
|
shipping_rate["display_cost"].should == "$10.00"
|
491
491
|
|
492
492
|
shipment["stock_location_name"].should_not be_blank
|
@@ -511,9 +511,9 @@ module Spree
|
|
511
511
|
|
512
512
|
it "responds with orders updated_at with miliseconds precision" do
|
513
513
|
if ActiveRecord::Base.connection.adapter_name == "Mysql2"
|
514
|
-
|
514
|
+
skip "MySQL does not support millisecond timestamps."
|
515
515
|
else
|
516
|
-
|
516
|
+
skip "Probable need to make it call as_json. See https://github.com/rails/rails/commit/0f33d70e89991711ff8b3dde134a61f4a5a0ec06"
|
517
517
|
end
|
518
518
|
|
519
519
|
api_get :index
|
@@ -145,7 +145,7 @@ module Spree
|
|
145
145
|
end
|
146
146
|
|
147
147
|
it "does not raise a stack level error" do
|
148
|
-
|
148
|
+
skip "Investigate why a payment.reload after the request raises 'stack level too deep'"
|
149
149
|
payment.reload.state.should == "failed"
|
150
150
|
end
|
151
151
|
end
|
@@ -10,7 +10,7 @@ module Spree::Api
|
|
10
10
|
|
11
11
|
context "with an available promotion" do
|
12
12
|
let!(:order) { create(:order_with_line_items, :line_items_count => 1) }
|
13
|
-
let!(:promotion) do
|
13
|
+
let!(:promotion) do
|
14
14
|
promotion = Spree::Promotion.create(name: "10% off", code: "10off")
|
15
15
|
calculator = Spree::Calculator::FlatPercentItemTotal.create(preferred_flat_percent: "10")
|
16
16
|
action = Spree::Promotion::Actions::CreateItemAdjustments.create(calculator: calculator)
|
@@ -25,7 +25,7 @@ module Spree::Api
|
|
25
25
|
order.reload.total.should == 109.00
|
26
26
|
json_response["success"].should == "The coupon code was successfully applied to your order."
|
27
27
|
json_response["error"].should be_blank
|
28
|
-
json_response["successful"].should
|
28
|
+
json_response["successful"].should be true
|
29
29
|
end
|
30
30
|
|
31
31
|
context "with an expired promotion" do
|
@@ -40,7 +40,7 @@ module Spree::Api
|
|
40
40
|
response.status.should == 422
|
41
41
|
json_response["success"].should be_blank
|
42
42
|
json_response["error"].should == "The coupon code is expired"
|
43
|
-
json_response["successful"].should
|
43
|
+
json_response["successful"].should be false
|
44
44
|
end
|
45
45
|
end
|
46
46
|
end
|
@@ -47,7 +47,7 @@ module Spree
|
|
47
47
|
children = json_response['root']['taxons']
|
48
48
|
children.count.should eq 1
|
49
49
|
children.first['name'].should eq taxon.name
|
50
|
-
children.first.key?('taxons').should
|
50
|
+
children.first.key?('taxons').should be false
|
51
51
|
end
|
52
52
|
|
53
53
|
it "gets a single taxonomy with set=nested" do
|
@@ -56,7 +56,7 @@ module Spree
|
|
56
56
|
json_response['name'].should eq taxonomy.name
|
57
57
|
|
58
58
|
children = json_response['root']['taxons']
|
59
|
-
children.first.key?('taxons').should
|
59
|
+
children.first.key?('taxons').should be true
|
60
60
|
end
|
61
61
|
|
62
62
|
it "gets the jstree-friendly version of a taxonomy" do
|
@@ -18,13 +18,13 @@ describe "Rabl Cache", :caching => true do
|
|
18
18
|
!v['is_master']
|
19
19
|
end.first
|
20
20
|
|
21
|
-
variant_a['is_master'].should
|
21
|
+
variant_a['is_master'].should be false
|
22
22
|
variant_a['stock_items'].should_not be_nil
|
23
23
|
|
24
24
|
get "/api/products/#{Spree::Product.first.id}", :token => user.spree_api_key
|
25
25
|
response.status.should == 200
|
26
26
|
variant_b = JSON.parse(response.body)['variants'].last
|
27
|
-
variant_b['is_master'].should
|
27
|
+
variant_b['is_master'].should be false
|
28
28
|
|
29
29
|
variant_a['id'].should == variant_b['id']
|
30
30
|
variant_b['stock_items'].should be_nil
|
data/spec/spec_helper.rb
CHANGED
@@ -39,6 +39,7 @@ require 'spree/api/testing_support/setup'
|
|
39
39
|
RSpec.configure do |config|
|
40
40
|
config.backtrace_exclusion_patterns = [/gems\/activesupport/, /gems\/actionpack/, /gems\/rspec/]
|
41
41
|
config.color = true
|
42
|
+
config.infer_spec_type_from_file_location!
|
42
43
|
|
43
44
|
config.include FactoryGirl::Syntax::Methods
|
44
45
|
config.include Spree::Api::TestingSupport::Helpers, :type => :controller
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spree_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.3.
|
4
|
+
version: 2.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Bigg
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-09-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: spree_core
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 2.3.
|
19
|
+
version: 2.3.3
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 2.3.
|
26
|
+
version: 2.3.3
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rabl
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|