spree_api 2.3.2 → 2.3.3
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/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
|