spree_api 2.0.13 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +99 -1
- data/app/controllers/spree/api/addresses_controller.rb +5 -2
- data/app/controllers/spree/api/base_controller.rb +14 -21
- data/app/controllers/spree/api/checkouts_controller.rb +30 -27
- data/app/controllers/spree/api/config_controller.rb +6 -0
- data/app/controllers/spree/api/countries_controller.rb +7 -7
- data/app/controllers/spree/api/images_controller.rb +10 -8
- data/app/controllers/spree/api/inventory_units_controller.rb +7 -4
- data/app/controllers/spree/api/line_items_controller.rb +14 -14
- data/app/controllers/spree/api/option_types_controller.rb +14 -11
- data/app/controllers/spree/api/option_values_controller.rb +13 -11
- data/app/controllers/spree/api/orders_controller.rb +56 -53
- data/app/controllers/spree/api/payments_controller.rb +25 -33
- data/app/controllers/spree/api/product_properties_controller.rb +20 -13
- data/app/controllers/spree/api/products_controller.rb +11 -58
- data/app/controllers/spree/api/properties_controller.rb +19 -16
- data/app/controllers/spree/api/return_authorizations_controller.rb +30 -25
- data/app/controllers/spree/api/shipments_controller.rb +24 -19
- data/app/controllers/spree/api/states_controller.rb +9 -7
- data/app/controllers/spree/api/stock_items_controller.rb +9 -11
- data/app/controllers/spree/api/stock_locations_controller.rb +9 -7
- data/app/controllers/spree/api/stock_movements_controller.rb +7 -5
- data/app/controllers/spree/api/taxonomies_controller.rb +14 -8
- data/app/controllers/spree/api/taxons_controller.rb +25 -20
- data/app/controllers/spree/api/users_controller.rb +7 -5
- data/app/controllers/spree/api/variants_controller.rb +35 -33
- data/app/controllers/spree/api/zones_controller.rb +18 -17
- data/app/helpers/spree/api/api_helpers.rb +7 -6
- data/app/models/spree/option_value_decorator.rb +0 -4
- data/app/models/spree/order_decorator.rb +33 -54
- data/app/views/spree/api/adjustments/show.v1.rabl +2 -1
- data/app/views/spree/api/config/money.v1.rabl +6 -0
- data/app/views/spree/api/config/show.v1.rabl +2 -0
- data/app/views/spree/api/images/show.v1.rabl +0 -1
- data/app/views/spree/api/line_items/show.v1.rabl +3 -0
- data/app/views/spree/api/orders/index.v1.rabl +1 -1
- data/app/views/spree/api/orders/order.v1.rabl +6 -0
- data/app/views/spree/api/orders/payment.v1.rabl +1 -1
- data/app/views/spree/api/orders/show.v1.rabl +1 -1
- data/app/views/spree/api/payments/credit_over_limit.v1.rabl +1 -1
- data/app/views/spree/api/payments/new.v1.rabl +1 -0
- data/app/views/spree/api/products/index.v1.rabl +2 -2
- data/app/views/spree/api/products/show.v1.rabl +1 -0
- data/app/views/spree/api/shipments/show.v1.rabl +22 -5
- data/app/views/spree/api/shipping_rates/show.v1.rabl +2 -0
- data/app/views/spree/api/taxons/index.v1.rabl +2 -4
- data/app/views/spree/api/variants/index.v1.rabl +1 -1
- data/config/locales/en.yml +1 -3
- data/config/routes.rb +4 -1
- data/lib/spree/api/responders/rabl_template.rb +1 -1
- data/lib/spree/api/testing_support/helpers.rb +5 -0
- data/spec/controllers/spree/api/addresses_controller_spec.rb +2 -2
- data/spec/controllers/spree/api/checkouts_controller_spec.rb +32 -22
- data/spec/controllers/spree/api/config_controller_spec.rb +27 -0
- data/spec/controllers/spree/api/images_controller_spec.rb +2 -2
- data/spec/controllers/spree/api/inventory_units_controller_spec.rb +28 -24
- data/spec/controllers/spree/api/line_items_controller_spec.rb +25 -27
- data/spec/controllers/spree/api/option_types_controller_spec.rb +2 -2
- data/spec/controllers/spree/api/option_values_controller_spec.rb +2 -2
- data/spec/controllers/spree/api/orders_controller_spec.rb +130 -119
- data/spec/controllers/spree/api/payments_controller_spec.rb +77 -118
- data/spec/controllers/spree/api/products_controller_spec.rb +13 -143
- data/spec/controllers/spree/api/return_authorizations_controller_spec.rb +4 -19
- data/spec/controllers/spree/api/shipments_controller_spec.rb +3 -3
- data/spec/controllers/spree/api/states_controller_spec.rb +1 -1
- data/spec/controllers/spree/api/stock_items_controller_spec.rb +26 -62
- data/spec/controllers/spree/api/stock_locations_controller_spec.rb +29 -56
- data/spec/controllers/spree/api/stock_movements_controller_spec.rb +27 -51
- data/spec/controllers/spree/api/taxons_controller_spec.rb +18 -48
- data/spec/controllers/spree/api/users_controller_spec.rb +4 -6
- data/spec/controllers/spree/api/variants_controller_spec.rb +21 -38
- data/spec/controllers/spree/api/zones_controller_spec.rb +2 -2
- data/spec/models/spree/order_spec.rb +19 -111
- data/spec/spec_helper.rb +2 -26
- data/spec/support/controller_hacks.rb +1 -1
- data/spree_api.gemspec +1 -1
- metadata +19 -15
- data/app/models/spree/line_item_decorator.rb +0 -3
- data/app/views/spree/api/payments/update_forbidden.v1.rabl +0 -2
- data/db/migrate/20131017162334_add_index_to_user_spree_api_key.rb +0 -7
@@ -13,76 +13,40 @@ module Spree
|
|
13
13
|
stub_authentication!
|
14
14
|
end
|
15
15
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
it "cannot see a stock item" do
|
23
|
-
api_get :show, stock_location_id: stock_location.to_param, id: stock_item.to_param
|
24
|
-
response.status.should == 401
|
25
|
-
end
|
16
|
+
it 'gets list of stock items' do
|
17
|
+
api_get :index, stock_location_id: stock_location.to_param
|
18
|
+
json_response['stock_items'].first.should have_attributes(attributes)
|
19
|
+
json_response['stock_items'].first['variant']['sku'].should eq 'ABC'
|
20
|
+
end
|
26
21
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
variant_id: variant.id,
|
33
|
-
count_on_hand: '20'
|
34
|
-
}
|
35
|
-
}
|
22
|
+
it 'requires a stock_location_id to be passed as a parameter' do
|
23
|
+
api_get :index
|
24
|
+
json_response['error'].should =~ /stock_location_id parameter must be provided/
|
25
|
+
response.status.should == 422
|
26
|
+
end
|
36
27
|
|
37
|
-
|
38
|
-
|
39
|
-
|
28
|
+
it 'can control the page size through a parameter' do
|
29
|
+
api_get :index, stock_location_id: stock_location.to_param, per_page: 1
|
30
|
+
json_response['count'].should == 1
|
31
|
+
json_response['current_page'].should == 1
|
32
|
+
end
|
40
33
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
34
|
+
it 'can query the results through a paramter' do
|
35
|
+
stock_item.update_column(:count_on_hand, 30)
|
36
|
+
api_get :index, stock_location_id: stock_location.to_param, q: { count_on_hand_eq: '30' }
|
37
|
+
json_response['count'].should == 1
|
38
|
+
json_response['stock_items'].first['count_on_hand'].should eq 30
|
39
|
+
end
|
45
40
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
41
|
+
it 'gets a stock item' do
|
42
|
+
api_get :show, stock_location_id: stock_location.to_param, id: stock_item.to_param
|
43
|
+
json_response.should have_attributes(attributes)
|
44
|
+
json_response['count_on_hand'].should eq stock_item.count_on_hand
|
50
45
|
end
|
51
46
|
|
52
|
-
context
|
47
|
+
context 'as an admin' do
|
53
48
|
sign_in_as_admin!
|
54
49
|
|
55
|
-
it 'cannot list of stock items' do
|
56
|
-
api_get :index, stock_location_id: stock_location.to_param
|
57
|
-
json_response['stock_items'].first.should have_attributes(attributes)
|
58
|
-
json_response['stock_items'].first['variant']['sku'].should eq 'ABC'
|
59
|
-
end
|
60
|
-
|
61
|
-
it 'requires a stock_location_id to be passed as a parameter' do
|
62
|
-
api_get :index
|
63
|
-
json_response['error'].should =~ /stock_location_id parameter must be provided/
|
64
|
-
response.status.should == 422
|
65
|
-
end
|
66
|
-
|
67
|
-
it 'can control the page size through a parameter' do
|
68
|
-
api_get :index, stock_location_id: stock_location.to_param, per_page: 1
|
69
|
-
json_response['count'].should == 1
|
70
|
-
json_response['current_page'].should == 1
|
71
|
-
end
|
72
|
-
|
73
|
-
it 'can query the results through a paramter' do
|
74
|
-
stock_item.update_column(:count_on_hand, 30)
|
75
|
-
api_get :index, stock_location_id: stock_location.to_param, q: { count_on_hand_eq: '30' }
|
76
|
-
json_response['count'].should == 1
|
77
|
-
json_response['stock_items'].first['count_on_hand'].should eq 30
|
78
|
-
end
|
79
|
-
|
80
|
-
it 'gets a stock item' do
|
81
|
-
api_get :show, stock_location_id: stock_location.to_param, id: stock_item.to_param
|
82
|
-
json_response.should have_attributes(attributes)
|
83
|
-
json_response['count_on_hand'].should eq stock_item.count_on_hand
|
84
|
-
end
|
85
|
-
|
86
50
|
it 'can create a new stock item' do
|
87
51
|
variant = create(:variant)
|
88
52
|
# Creating a variant also creates stock items.
|
@@ -11,72 +11,45 @@ module Spree
|
|
11
11
|
stub_authentication!
|
12
12
|
end
|
13
13
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
end
|
14
|
+
it "gets list of stock locations" do
|
15
|
+
api_get :index
|
16
|
+
json_response['stock_locations'].first.should have_attributes(attributes)
|
17
|
+
end
|
19
18
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
19
|
+
it "includes the country" do
|
20
|
+
api_get :index
|
21
|
+
json_response['stock_locations'].first['country'].should_not be_nil
|
22
|
+
end
|
24
23
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
active: true
|
30
|
-
}
|
31
|
-
}
|
24
|
+
it "includes the state" do
|
25
|
+
api_get :index
|
26
|
+
json_response['stock_locations'].first['state'].should_not be_nil
|
27
|
+
end
|
32
28
|
|
33
|
-
|
34
|
-
|
35
|
-
|
29
|
+
it 'can control the page size through a parameter' do
|
30
|
+
create(:stock_location)
|
31
|
+
api_get :index, per_page: 1
|
32
|
+
json_response['count'].should == 1
|
33
|
+
json_response['current_page'].should == 1
|
34
|
+
json_response['pages'].should == 2
|
35
|
+
end
|
36
36
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
37
|
+
it 'can query the results through a paramter' do
|
38
|
+
expected_result = create(:stock_location, name: 'South America')
|
39
|
+
api_get :index, q: { name_cont: 'south' }
|
40
|
+
json_response['count'].should == 1
|
41
|
+
json_response['stock_locations'].first['name'].should eq expected_result.name
|
42
|
+
end
|
41
43
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
44
|
+
it "gets a stock location" do
|
45
|
+
api_get :show, id: stock_location.to_param
|
46
|
+
json_response.should have_attributes(attributes)
|
47
|
+
json_response['name'].should eq stock_location.name
|
46
48
|
end
|
47
49
|
|
48
|
-
|
49
50
|
context "as an admin" do
|
50
51
|
sign_in_as_admin!
|
51
52
|
|
52
|
-
it "gets list of stock locations" do
|
53
|
-
api_get :index
|
54
|
-
json_response['stock_locations'].first.should have_attributes(attributes)
|
55
|
-
json_response['stock_locations'].first['country'].should_not be_nil
|
56
|
-
json_response['stock_locations'].first['state'].should_not be_nil
|
57
|
-
end
|
58
|
-
|
59
|
-
it 'can control the page size through a parameter' do
|
60
|
-
create(:stock_location)
|
61
|
-
api_get :index, per_page: 1
|
62
|
-
json_response['count'].should == 1
|
63
|
-
json_response['current_page'].should == 1
|
64
|
-
json_response['pages'].should == 2
|
65
|
-
end
|
66
|
-
|
67
|
-
it 'can query the results through a paramter' do
|
68
|
-
expected_result = create(:stock_location, name: 'South America')
|
69
|
-
api_get :index, q: { name_cont: 'south' }
|
70
|
-
json_response['count'].should == 1
|
71
|
-
json_response['stock_locations'].first['name'].should eq expected_result.name
|
72
|
-
end
|
73
|
-
|
74
|
-
it "gets a stock location" do
|
75
|
-
api_get :show, id: stock_location.to_param
|
76
|
-
json_response.should have_attributes(attributes)
|
77
|
-
json_response['name'].should eq stock_location.name
|
78
|
-
end
|
79
|
-
|
80
53
|
it "can create a new stock location" do
|
81
54
|
params = {
|
82
55
|
stock_location: {
|
@@ -13,65 +13,41 @@ module Spree
|
|
13
13
|
stub_authentication!
|
14
14
|
end
|
15
15
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
16
|
+
it 'gets list of stock movements' do
|
17
|
+
api_get :index, stock_location_id: stock_location.to_param
|
18
|
+
json_response['stock_movements'].first.should have_attributes(attributes)
|
19
|
+
json_response['stock_movements'].first['stock_item']['count_on_hand'].should eq 11
|
20
|
+
end
|
21
21
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
22
|
+
it 'requires a stock_location_id to be passed as a parameter' do
|
23
|
+
api_get :index
|
24
|
+
json_response['error'].should =~ /stock_location_id parameter must be provided/
|
25
|
+
response.status.should == 422
|
26
|
+
end
|
26
27
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
28
|
+
it 'can control the page size through a parameter' do
|
29
|
+
create(:stock_movement, stock_item: stock_item)
|
30
|
+
api_get :index, stock_location_id: stock_location.to_param, per_page: 1
|
31
|
+
json_response['count'].should == 1
|
32
|
+
json_response['current_page'].should == 1
|
33
|
+
json_response['pages'].should == 2
|
34
|
+
end
|
34
35
|
|
35
|
-
|
36
|
-
|
37
|
-
|
36
|
+
it 'can query the results through a paramter' do
|
37
|
+
expected_result = create(:stock_movement, :received, quantity: 10, stock_item: stock_item)
|
38
|
+
api_get :index, stock_location_id: stock_location.to_param, q: { quantity_eq: '10' }
|
39
|
+
json_response['count'].should == 1
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'gets a stock movement' do
|
43
|
+
api_get :show, stock_location_id: stock_location.to_param, id: stock_movement.to_param
|
44
|
+
json_response.should have_attributes(attributes)
|
45
|
+
json_response['stock_item_id'].should eq stock_movement.stock_item_id
|
38
46
|
end
|
39
47
|
|
40
48
|
context 'as an admin' do
|
41
49
|
sign_in_as_admin!
|
42
50
|
|
43
|
-
it 'gets list of stock movements' do
|
44
|
-
api_get :index, stock_location_id: stock_location.to_param
|
45
|
-
json_response['stock_movements'].first.should have_attributes(attributes)
|
46
|
-
json_response['stock_movements'].first['stock_item']['count_on_hand'].should eq 11
|
47
|
-
end
|
48
|
-
|
49
|
-
it 'requires a stock_location_id to be passed as a parameter' do
|
50
|
-
api_get :index
|
51
|
-
json_response['error'].should =~ /stock_location_id parameter must be provided/
|
52
|
-
response.status.should == 422
|
53
|
-
end
|
54
|
-
|
55
|
-
it 'can control the page size through a parameter' do
|
56
|
-
create(:stock_movement, stock_item: stock_item)
|
57
|
-
api_get :index, stock_location_id: stock_location.to_param, per_page: 1
|
58
|
-
json_response['count'].should == 1
|
59
|
-
json_response['current_page'].should == 1
|
60
|
-
json_response['pages'].should == 2
|
61
|
-
end
|
62
|
-
|
63
|
-
it 'can query the results through a paramter' do
|
64
|
-
expected_result = create(:stock_movement, :received, quantity: 10, stock_item: stock_item)
|
65
|
-
api_get :index, stock_location_id: stock_location.to_param, q: { quantity_eq: '10' }
|
66
|
-
json_response['count'].should == 1
|
67
|
-
end
|
68
|
-
|
69
|
-
it 'gets a stock movement' do
|
70
|
-
api_get :show, stock_location_id: stock_location.to_param, id: stock_movement.to_param
|
71
|
-
json_response.should have_attributes(attributes)
|
72
|
-
json_response['stock_item_id'].should eq stock_movement.stock_item_id
|
73
|
-
end
|
74
|
-
|
75
51
|
it 'can create a new stock movement' do
|
76
52
|
params = {
|
77
53
|
stock_location_id: stock_location.to_param,
|
@@ -7,7 +7,7 @@ module Spree
|
|
7
7
|
let(:taxonomy) { create(:taxonomy) }
|
8
8
|
let(:taxon) { create(:taxon, :name => "Ruby", :taxonomy => taxonomy) }
|
9
9
|
let(:taxon2) { create(:taxon, :name => "Rails", :taxonomy => taxonomy) }
|
10
|
-
let(:attributes) { ["id", "name", "pretty_name", "permalink", "parent_id", "taxonomy_id"] }
|
10
|
+
let(:attributes) { ["id", "name", "pretty_name", "permalink", "position", "parent_id", "taxonomy_id"] }
|
11
11
|
|
12
12
|
before do
|
13
13
|
stub_authentication!
|
@@ -27,14 +27,6 @@ module Spree
|
|
27
27
|
children.first['taxons'].count.should eq 1
|
28
28
|
end
|
29
29
|
|
30
|
-
# Regression test for #4112
|
31
|
-
it "does not include children when asked not to" do
|
32
|
-
api_get :index, :taxonomy_id => taxonomy.id, :without_children => 1
|
33
|
-
|
34
|
-
json_response['taxons'].first['name'].should eq(taxon.name)
|
35
|
-
json_response['taxons'].first['taxons'].should be_nil
|
36
|
-
end
|
37
|
-
|
38
30
|
it "paginates through taxons" do
|
39
31
|
new_taxon = create(:taxon, :name => "Go", :taxonomy => taxonomy)
|
40
32
|
taxonomy.root.children << new_taxon
|
@@ -47,42 +39,21 @@ module Spree
|
|
47
39
|
expect(json_response["pages"]).to eql(2)
|
48
40
|
end
|
49
41
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
context 'with no results' do
|
66
|
-
let(:name) { "Imaginary" }
|
67
|
-
|
68
|
-
it 'returns an empty array of taxons' do
|
69
|
-
json_response.keys.should include('taxons')
|
70
|
-
json_response['taxons'].count.should == 0
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
context 'with no filters' do
|
76
|
-
it "gets all taxons" do
|
77
|
-
api_get :index
|
78
|
-
|
79
|
-
json_response['taxons'].first['name'].should eq taxonomy.root.name
|
80
|
-
children = json_response['taxons'].first['taxons']
|
81
|
-
children.count.should eq 1
|
82
|
-
children.first['name'].should eq taxon.name
|
83
|
-
children.first['taxons'].count.should eq 1
|
84
|
-
end
|
85
|
-
end
|
42
|
+
it "gets all taxons" do
|
43
|
+
api_get :index
|
44
|
+
|
45
|
+
json_response['taxons'].first['name'].should eq taxonomy.root.name
|
46
|
+
children = json_response['taxons'].first['taxons']
|
47
|
+
children.count.should eq 1
|
48
|
+
children.first['name'].should eq taxon.name
|
49
|
+
children.first['taxons'].count.should eq 1
|
50
|
+
end
|
51
|
+
|
52
|
+
it "can search for a single taxon" do
|
53
|
+
api_get :index, :q => { :name_cont => "Ruby" }
|
54
|
+
|
55
|
+
json_response['taxons'].count.should == 1
|
56
|
+
json_response['taxons'].first['name'].should eq "Ruby"
|
86
57
|
end
|
87
58
|
|
88
59
|
it "gets a single taxon" do
|
@@ -134,10 +105,9 @@ module Spree
|
|
134
105
|
response.status.should == 201
|
135
106
|
|
136
107
|
taxonomy.reload.root.children.count.should eq 2
|
137
|
-
taxon = Spree::Taxon.where(:name => 'Colors').first
|
138
108
|
|
139
|
-
|
140
|
-
|
109
|
+
Spree::Taxon.last.parent_id.should eq taxonomy.root.id
|
110
|
+
Spree::Taxon.last.taxonomy_id.should eq taxonomy.id
|
141
111
|
end
|
142
112
|
|
143
113
|
it "cannot create a new taxon with invalid attributes" do
|
@@ -11,9 +11,7 @@ module Spree
|
|
11
11
|
before { stub_authentication! }
|
12
12
|
|
13
13
|
context "as a normal user" do
|
14
|
-
before
|
15
|
-
controller.stub :current_api_user => user
|
16
|
-
end
|
14
|
+
before { Spree::LegacyUser.stub :find_by_spree_api_key => user }
|
17
15
|
|
18
16
|
it "can get own details" do
|
19
17
|
api_get :show, :id => user.id
|
@@ -24,7 +22,7 @@ module Spree
|
|
24
22
|
it "cannot get other users details" do
|
25
23
|
api_get :show, :id => stranger.id
|
26
24
|
|
27
|
-
|
25
|
+
assert_not_found!
|
28
26
|
end
|
29
27
|
|
30
28
|
it "can learn how to create a new user" do
|
@@ -52,7 +50,7 @@ module Spree
|
|
52
50
|
|
53
51
|
it "cannot update other users details" do
|
54
52
|
api_put :update, :id => stranger.id, :user => { :email => "mine@example.com" }
|
55
|
-
|
53
|
+
assert_not_found!
|
56
54
|
end
|
57
55
|
|
58
56
|
it "can delete itself" do
|
@@ -62,7 +60,7 @@ module Spree
|
|
62
60
|
|
63
61
|
it "cannot delete other user" do
|
64
62
|
api_delete :destroy, :id => stranger.id
|
65
|
-
|
63
|
+
assert_not_found!
|
66
64
|
end
|
67
65
|
|
68
66
|
it "should only get own details on index" do
|
@@ -4,7 +4,6 @@ module Spree
|
|
4
4
|
describe Api::VariantsController do
|
5
5
|
render_views
|
6
6
|
|
7
|
-
|
8
7
|
let!(:product) { create(:product) }
|
9
8
|
let!(:variant) do
|
10
9
|
variant = product.master
|
@@ -13,7 +12,7 @@ module Spree
|
|
13
12
|
end
|
14
13
|
let!(:attributes) { [:id, :name, :sku, :price, :weight, :height,
|
15
14
|
:width, :depth, :is_master, :cost_price,
|
16
|
-
:permalink] }
|
15
|
+
:permalink, :description] }
|
17
16
|
|
18
17
|
before do
|
19
18
|
stub_authentication!
|
@@ -87,42 +86,27 @@ module Spree
|
|
87
86
|
end
|
88
87
|
end
|
89
88
|
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
:option_type_id])
|
100
|
-
end
|
101
|
-
|
102
|
-
it "can see a single variant with images" do
|
103
|
-
variant.images.create!(:attachment => image("thinking-cat.jpg"))
|
104
|
-
|
105
|
-
api_get :show, :id => variant.to_param
|
106
|
-
|
107
|
-
json_response.should have_attributes(attributes + [:images])
|
108
|
-
option_values = json_response["option_values"]
|
109
|
-
option_values.first.should have_attributes([:name,
|
110
|
-
:presentation,
|
111
|
-
:option_type_name,
|
112
|
-
:option_type_id])
|
113
|
-
end
|
114
|
-
|
115
|
-
it 'shows variant image urls' do
|
116
|
-
variant.images.create!(:attachment => image("thinking-cat.jpg"))
|
117
|
-
|
118
|
-
api_get :show, :id => variant.to_param
|
89
|
+
it "can see a single variant" do
|
90
|
+
api_get :show, :id => variant.to_param
|
91
|
+
json_response.should have_attributes(attributes)
|
92
|
+
option_values = json_response["option_values"]
|
93
|
+
option_values.first.should have_attributes([:name,
|
94
|
+
:presentation,
|
95
|
+
:option_type_name,
|
96
|
+
:option_type_id])
|
97
|
+
end
|
119
98
|
|
120
|
-
|
121
|
-
|
99
|
+
it "can see a single variant with images" do
|
100
|
+
variant.images.create!(:attachment => image("thinking-cat.jpg"))
|
122
101
|
|
123
|
-
|
124
|
-
end
|
102
|
+
api_get :show, :id => variant.to_param
|
125
103
|
|
104
|
+
json_response.should have_attributes(attributes + [:images])
|
105
|
+
option_values = json_response["option_values"]
|
106
|
+
option_values.first.should have_attributes([:name,
|
107
|
+
:presentation,
|
108
|
+
:option_type_name,
|
109
|
+
:option_type_id])
|
126
110
|
end
|
127
111
|
|
128
112
|
it "can learn how to create a new variant" do
|
@@ -138,12 +122,12 @@ module Spree
|
|
138
122
|
|
139
123
|
it "cannot update a variant" do
|
140
124
|
api_put :update, :id => variant.to_param, :variant => { :sku => "12345" }
|
141
|
-
|
125
|
+
assert_not_found!
|
142
126
|
end
|
143
127
|
|
144
128
|
it "cannot delete a variant" do
|
145
129
|
api_delete :destroy, :id => variant.to_param
|
146
|
-
|
130
|
+
assert_not_found!
|
147
131
|
lambda { variant.reload }.should_not raise_error
|
148
132
|
end
|
149
133
|
|
@@ -184,6 +168,5 @@ module Spree
|
|
184
168
|
end
|
185
169
|
end
|
186
170
|
|
187
|
-
|
188
171
|
end
|
189
172
|
end
|
@@ -48,13 +48,13 @@ module Spree
|
|
48
48
|
end
|
49
49
|
|
50
50
|
it "uses the specified template" do
|
51
|
-
request.env['X-Spree-Template'] = 'show'
|
51
|
+
request.headers.env['X-Spree-Template'] = 'show'
|
52
52
|
api_get :custom_show, :id => @zone.id
|
53
53
|
response.should render_template('spree/api/zones/show')
|
54
54
|
end
|
55
55
|
|
56
56
|
it "falls back to the default template if the specified template does not exist" do
|
57
|
-
request.env['X-Spree-Template'] = 'invoice'
|
57
|
+
request.headers.env['X-Spree-Template'] = 'invoice'
|
58
58
|
api_get :show, :id => @zone.id
|
59
59
|
response.should render_template('spree/api/zones/show')
|
60
60
|
end
|