spree_api 2.0.13 → 2.1.0
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 +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
|