solidus_api 1.2.3 → 1.3.0.beta1
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/Gemfile +2 -2
- data/Rakefile +1 -1
- data/app/controllers/spree/api/addresses_controller.rb +3 -2
- data/app/controllers/spree/api/base_controller.rb +10 -15
- data/app/controllers/spree/api/checkouts_controller.rb +56 -55
- data/app/controllers/spree/api/classifications_controller.rb +4 -4
- data/app/controllers/spree/api/config_controller.rb +6 -1
- data/app/controllers/spree/api/credit_cards_controller.rb +11 -11
- data/app/controllers/spree/api/images_controller.rb +13 -13
- data/app/controllers/spree/api/inventory_units_controller.rb +4 -4
- data/app/controllers/spree/api/line_items_controller.rb +27 -23
- data/app/controllers/spree/api/option_types_controller.rb +6 -5
- data/app/controllers/spree/api/option_values_controller.rb +12 -12
- data/app/controllers/spree/api/orders_controller.rb +6 -17
- data/app/controllers/spree/api/payments_controller.rb +15 -17
- data/app/controllers/spree/api/product_properties_controller.rb +13 -14
- data/app/controllers/spree/api/products_controller.rb +31 -28
- data/app/controllers/spree/api/promotions_controller.rb +9 -8
- data/app/controllers/spree/api/properties_controller.rb +9 -10
- data/app/controllers/spree/api/resource_controller.rb +9 -1
- data/app/controllers/spree/api/shipments_controller.rb +18 -18
- data/app/controllers/spree/api/states_controller.rb +8 -7
- data/app/controllers/spree/api/stock_items_controller.rb +2 -1
- data/app/controllers/spree/api/stock_locations_controller.rb +1 -1
- data/app/controllers/spree/api/stores_controller.rb +0 -1
- data/app/controllers/spree/api/taxonomies_controller.rb +7 -5
- data/app/controllers/spree/api/taxons_controller.rb +20 -19
- data/app/controllers/spree/api/users_controller.rb +1 -4
- data/app/controllers/spree/api/variants_controller.rb +19 -18
- data/app/controllers/spree/api/zones_controller.rb +3 -4
- data/app/helpers/spree/api/api_helpers.rb +7 -6
- data/app/models/spree/api_configuration.rb +1 -1
- data/app/views/spree/api/config/show.v1.rabl +2 -1
- data/app/views/spree/api/products/show.v1.rabl +1 -1
- data/db/migrate/20100107141738_add_api_key_to_spree_users.rb +1 -1
- data/db/migrate/20120411123334_resize_api_key_field.rb +1 -1
- data/lib/spree/api/engine.rb +8 -8
- data/lib/spree/api/responders/rabl_template.rb +1 -1
- data/lib/spree/api/testing_support/caching.rb +4 -4
- data/script/rails +0 -1
- data/solidus_api.gemspec +3 -3
- data/spec/controllers/spree/api/addresses_controller_spec.rb +12 -13
- data/spec/controllers/spree/api/base_controller_spec.rb +10 -11
- data/spec/controllers/spree/api/checkouts_controller_spec.rb +38 -59
- data/spec/controllers/spree/api/config_controller_spec.rb +4 -2
- data/spec/controllers/spree/api/countries_controller_spec.rb +5 -5
- data/spec/controllers/spree/api/credit_cards_controller_spec.rb +5 -5
- data/spec/controllers/spree/api/images_controller_spec.rb +20 -18
- data/spec/controllers/spree/api/inventory_units_controller_spec.rb +11 -11
- data/spec/controllers/spree/api/line_items_controller_spec.rb +20 -19
- data/spec/controllers/spree/api/option_types_controller_spec.rb +23 -24
- data/spec/controllers/spree/api/option_values_controller_spec.rb +28 -29
- data/spec/controllers/spree/api/orders_controller_spec.rb +157 -179
- data/spec/controllers/spree/api/payments_controller_spec.rb +35 -45
- data/spec/controllers/spree/api/product_properties_controller_spec.rb +14 -15
- data/spec/controllers/spree/api/products_controller_spec.rb +64 -70
- data/spec/controllers/spree/api/promotion_application_spec.rb +4 -4
- data/spec/controllers/spree/api/promotions_controller_spec.rb +1 -1
- data/spec/controllers/spree/api/properties_controller_spec.rb +15 -15
- data/spec/controllers/spree/api/resource_controller_spec.rb +31 -2
- data/spec/controllers/spree/api/return_authorizations_controller_spec.rb +31 -31
- data/spec/controllers/spree/api/shipments_controller_spec.rb +6 -8
- data/spec/controllers/spree/api/states_controller_spec.rb +11 -12
- data/spec/controllers/spree/api/stock_items_controller_spec.rb +10 -7
- data/spec/controllers/spree/api/stock_locations_controller_spec.rb +3 -4
- data/spec/controllers/spree/api/stock_movements_controller_spec.rb +2 -3
- data/spec/controllers/spree/api/store_credit_events_controller_spec.rb +0 -2
- data/spec/controllers/spree/api/stores_controller_spec.rb +1 -2
- data/spec/controllers/spree/api/taxonomies_controller_spec.rb +17 -18
- data/spec/controllers/spree/api/taxons_controller_spec.rb +22 -24
- data/spec/controllers/spree/api/unauthenticated_products_controller_spec.rb +1 -2
- data/spec/controllers/spree/api/users_controller_spec.rb +13 -15
- data/spec/controllers/spree/api/variants_controller_spec.rb +42 -37
- data/spec/controllers/spree/api/zones_controller_spec.rb +18 -18
- data/spec/features/checkout_spec.rb +2 -2
- data/spec/models/spree/legacy_user_spec.rb +5 -5
- data/spec/requests/api/address_books_spec.rb +10 -11
- data/spec/requests/rabl_cache_spec.rb +7 -7
- data/spec/requests/ransackable_attributes_spec.rb +5 -7
- data/spec/shared_examples/protect_product_actions.rb +3 -4
- data/spec/spec_helper.rb +8 -4
- data/spec/support/controller_hacks.rb +5 -5
- data/spec/support/have_attributes_matcher.rb +0 -4
- data/spec/test_views/spree/api/widgets/show.v1.rabl +1 -1
- metadata +9 -10
- data/app/models/spree/option_value_decorator.rb +0 -9
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
require 'spec_helper'
|
|
2
2
|
|
|
3
3
|
module Spree
|
|
4
|
-
describe Api::CreditCardsController, :
|
|
4
|
+
describe Api::CreditCardsController, type: :controller do
|
|
5
5
|
describe '#index' do
|
|
6
6
|
render_views
|
|
7
7
|
|
|
@@ -13,7 +13,7 @@ module Spree
|
|
|
13
13
|
create(:user, :with_api_key)
|
|
14
14
|
end
|
|
15
15
|
|
|
16
|
-
let!(:card) { create(:credit_card, :
|
|
16
|
+
let!(:card) { create(:credit_card, user_id: admin_user.id, gateway_customer_profile_id: "random") }
|
|
17
17
|
|
|
18
18
|
before do
|
|
19
19
|
stub_authentication!
|
|
@@ -52,7 +52,7 @@ module Spree
|
|
|
52
52
|
normal_user
|
|
53
53
|
end
|
|
54
54
|
|
|
55
|
-
let!(:card) { create(:credit_card, :
|
|
55
|
+
let!(:card) { create(:credit_card, user_id: normal_user.id, gateway_customer_profile_id: "random") }
|
|
56
56
|
|
|
57
57
|
it "can not view user" do
|
|
58
58
|
api_get :index, user_id: admin_user.id
|
|
@@ -85,7 +85,7 @@ module Spree
|
|
|
85
85
|
|
|
86
86
|
it 'updates the credit card' do
|
|
87
87
|
expect {
|
|
88
|
-
api_put :update, id: credit_card.to_param, credit_card: {name: 'Jordan Brough'}
|
|
88
|
+
api_put :update, id: credit_card.to_param, credit_card: { name: 'Jordan Brough' }
|
|
89
89
|
}.to change {
|
|
90
90
|
credit_card.reload.name
|
|
91
91
|
}.from('Joe Shmoe').to('Jordan Brough')
|
|
@@ -96,7 +96,7 @@ module Spree
|
|
|
96
96
|
let(:current_api_user) { create(:user) }
|
|
97
97
|
|
|
98
98
|
it 'rejects the request' do
|
|
99
|
-
api_put :update, id: credit_card.to_param, credit_card: {name: 'Jordan Brough'}
|
|
99
|
+
api_put :update, id: credit_card.to_param, credit_card: { name: 'Jordan Brough' }
|
|
100
100
|
expect(response.status).to eq(401)
|
|
101
101
|
end
|
|
102
102
|
end
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
require 'spec_helper'
|
|
2
2
|
|
|
3
3
|
module Spree
|
|
4
|
-
describe Spree::Api::ImagesController, :
|
|
4
|
+
describe Spree::Api::ImagesController, type: :controller do
|
|
5
5
|
render_views
|
|
6
6
|
|
|
7
7
|
let!(:product) { create(:product) }
|
|
8
|
-
let!(:attributes) {
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
let!(:attributes) {
|
|
9
|
+
[:id, :position, :attachment_content_type,
|
|
10
|
+
:attachment_file_name, :type, :attachment_updated_at, :attachment_width,
|
|
11
|
+
:attachment_height, :alt]
|
|
12
|
+
}
|
|
11
13
|
|
|
12
14
|
before do
|
|
13
15
|
stub_authentication!
|
|
@@ -19,39 +21,39 @@ module Spree
|
|
|
19
21
|
it "can upload a new image for a variant" do
|
|
20
22
|
expect do
|
|
21
23
|
api_post :create,
|
|
22
|
-
:
|
|
23
|
-
:
|
|
24
|
-
:
|
|
25
|
-
:
|
|
24
|
+
image: { attachment: upload_image('thinking-cat.jpg'),
|
|
25
|
+
viewable_type: 'Spree::Variant',
|
|
26
|
+
viewable_id: product.master.to_param },
|
|
27
|
+
product_id: product.id
|
|
26
28
|
expect(response.status).to eq(201)
|
|
27
29
|
expect(json_response).to have_attributes(attributes)
|
|
28
30
|
end.to change(Image, :count).by(1)
|
|
29
31
|
end
|
|
30
32
|
|
|
31
33
|
context "working with an existing image" do
|
|
32
|
-
let!(:product_image) { product.master.images.create!(:
|
|
34
|
+
let!(:product_image) { product.master.images.create!(attachment: image('thinking-cat.jpg')) }
|
|
33
35
|
|
|
34
36
|
it "can get a single product image" do
|
|
35
|
-
api_get :show, :
|
|
37
|
+
api_get :show, id: product_image.id, product_id: product.id
|
|
36
38
|
expect(response.status).to eq(200)
|
|
37
39
|
expect(json_response).to have_attributes(attributes)
|
|
38
40
|
end
|
|
39
41
|
|
|
40
42
|
it "can get a single variant image" do
|
|
41
|
-
api_get :show, :
|
|
43
|
+
api_get :show, id: product_image.id, variant_id: product.master.id
|
|
42
44
|
expect(response.status).to eq(200)
|
|
43
45
|
expect(json_response).to have_attributes(attributes)
|
|
44
46
|
end
|
|
45
47
|
|
|
46
48
|
it "can get a list of product images" do
|
|
47
|
-
api_get :index, :
|
|
49
|
+
api_get :index, product_id: product.id
|
|
48
50
|
expect(response.status).to eq(200)
|
|
49
51
|
expect(json_response).to have_key("images")
|
|
50
52
|
expect(json_response["images"].first).to have_attributes(attributes)
|
|
51
53
|
end
|
|
52
54
|
|
|
53
55
|
it "can get a list of variant images" do
|
|
54
|
-
api_get :index, :
|
|
56
|
+
api_get :index, variant_id: product.master.id
|
|
55
57
|
expect(response.status).to eq(200)
|
|
56
58
|
expect(json_response).to have_key("images")
|
|
57
59
|
expect(json_response["images"].first).to have_attributes(attributes)
|
|
@@ -59,14 +61,14 @@ module Spree
|
|
|
59
61
|
|
|
60
62
|
it "can update image data" do
|
|
61
63
|
expect(product_image.position).to eq(1)
|
|
62
|
-
api_post :update, :
|
|
64
|
+
api_post :update, image: { position: 2 }, id: product_image.id, product_id: product.id
|
|
63
65
|
expect(response.status).to eq(200)
|
|
64
66
|
expect(json_response).to have_attributes(attributes)
|
|
65
67
|
expect(product_image.reload.position).to eq(2)
|
|
66
68
|
end
|
|
67
69
|
|
|
68
70
|
it "can delete an image" do
|
|
69
|
-
api_delete :destroy, :
|
|
71
|
+
api_delete :destroy, id: product_image.id, product_id: product.id
|
|
70
72
|
expect(response.status).to eq(204)
|
|
71
73
|
expect { product_image.reload }.to raise_error(ActiveRecord::RecordNotFound)
|
|
72
74
|
end
|
|
@@ -75,17 +77,17 @@ module Spree
|
|
|
75
77
|
|
|
76
78
|
context "as a non-admin" do
|
|
77
79
|
it "cannot create an image" do
|
|
78
|
-
api_post :create, :
|
|
80
|
+
api_post :create, product_id: product.id
|
|
79
81
|
assert_unauthorized!
|
|
80
82
|
end
|
|
81
83
|
|
|
82
84
|
it "cannot update an image" do
|
|
83
|
-
api_put :update, :
|
|
85
|
+
api_put :update, id: 1, product_id: product.id
|
|
84
86
|
assert_not_found!
|
|
85
87
|
end
|
|
86
88
|
|
|
87
89
|
it "cannot delete an image" do
|
|
88
|
-
api_delete :destroy, :
|
|
90
|
+
api_delete :destroy, id: 1, product_id: product.id
|
|
89
91
|
assert_not_found!
|
|
90
92
|
end
|
|
91
93
|
end
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
require 'spec_helper'
|
|
2
2
|
|
|
3
3
|
module Spree
|
|
4
|
-
describe Api::InventoryUnitsController, :
|
|
4
|
+
describe Api::InventoryUnitsController, type: :controller do
|
|
5
5
|
render_views
|
|
6
6
|
|
|
7
7
|
before do
|
|
@@ -14,34 +14,34 @@ module Spree
|
|
|
14
14
|
let(:variant) { create(:variant) }
|
|
15
15
|
|
|
16
16
|
it "gets an inventory unit" do
|
|
17
|
-
api_get :show, :
|
|
17
|
+
api_get :show, id: @inventory_unit.id
|
|
18
18
|
expect(json_response['state']).to eq @inventory_unit.state
|
|
19
19
|
end
|
|
20
20
|
|
|
21
21
|
it "updates an inventory unit" do
|
|
22
|
-
api_put :update, :
|
|
23
|
-
:
|
|
22
|
+
api_put :update, id: @inventory_unit.id,
|
|
23
|
+
inventory_unit: { variant_id: variant.id }
|
|
24
24
|
expect(json_response['variant_id']).to eq variant.id
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
context 'fires state event' do
|
|
28
28
|
it 'if supplied with :fire param' do
|
|
29
|
-
api_put :update, :
|
|
30
|
-
:
|
|
31
|
-
:
|
|
29
|
+
api_put :update, id: @inventory_unit.id,
|
|
30
|
+
fire: 'ship',
|
|
31
|
+
inventory_unit: { variant_id: variant.id }
|
|
32
32
|
|
|
33
33
|
expect(json_response['state']).to eq 'shipped'
|
|
34
34
|
end
|
|
35
35
|
|
|
36
36
|
it 'and returns exception if cannot fire' do
|
|
37
|
-
api_put :update, :
|
|
38
|
-
:
|
|
37
|
+
api_put :update, id: @inventory_unit.id,
|
|
38
|
+
fire: 'return'
|
|
39
39
|
expect(json_response['exception']).to match /cannot transition to return/
|
|
40
40
|
end
|
|
41
41
|
|
|
42
42
|
it 'and returns exception bad state' do
|
|
43
|
-
api_put :update, :
|
|
44
|
-
:
|
|
43
|
+
api_put :update, id: @inventory_unit.id,
|
|
44
|
+
fire: 'bad'
|
|
45
45
|
expect(json_response['exception']).to match /cannot transition to bad/
|
|
46
46
|
end
|
|
47
47
|
end
|
|
@@ -12,14 +12,14 @@ module Spree
|
|
|
12
12
|
# This should go in an initializer
|
|
13
13
|
Spree::Api::LineItemsController.line_item_options += [:some_option]
|
|
14
14
|
|
|
15
|
-
describe Api::LineItemsController, :
|
|
15
|
+
describe Api::LineItemsController, type: :controller do
|
|
16
16
|
render_views
|
|
17
17
|
|
|
18
18
|
let!(:order) { create(:order_with_line_items, line_items_count: 1) }
|
|
19
19
|
|
|
20
20
|
let(:product) { create(:product) }
|
|
21
21
|
let(:attributes) { [:id, :quantity, :price, :variant, :total, :display_amount, :single_display_amount] }
|
|
22
|
-
let(:resource_scoping) { { :
|
|
22
|
+
let(:resource_scoping) { { order_id: order.to_param } }
|
|
23
23
|
|
|
24
24
|
before do
|
|
25
25
|
stub_authentication!
|
|
@@ -34,7 +34,7 @@ module Spree
|
|
|
34
34
|
|
|
35
35
|
context "authenticating with a token" do
|
|
36
36
|
it "can add a new line item to an existing order" do
|
|
37
|
-
api_post :create, :
|
|
37
|
+
api_post :create, line_item: { variant_id: product.master.to_param, quantity: 1 }, order_token: order.guest_token
|
|
38
38
|
expect(response.status).to eq(201)
|
|
39
39
|
expect(json_response).to have_attributes(attributes)
|
|
40
40
|
expect(json_response["variant"]["name"]).not_to be_blank
|
|
@@ -42,7 +42,7 @@ module Spree
|
|
|
42
42
|
|
|
43
43
|
it "can add a new line item to an existing order with token in header" do
|
|
44
44
|
request.headers["X-Spree-Order-Token"] = order.guest_token
|
|
45
|
-
api_post :create, :
|
|
45
|
+
api_post :create, line_item: { variant_id: product.master.to_param, quantity: 1 }
|
|
46
46
|
expect(response.status).to eq(201)
|
|
47
47
|
expect(json_response).to have_attributes(attributes)
|
|
48
48
|
expect(json_response["variant"]["name"]).not_to be_blank
|
|
@@ -51,11 +51,11 @@ module Spree
|
|
|
51
51
|
|
|
52
52
|
context "as the order owner" do
|
|
53
53
|
before do
|
|
54
|
-
allow_any_instance_of(Order).to receive_messages :
|
|
54
|
+
allow_any_instance_of(Order).to receive_messages user: current_api_user
|
|
55
55
|
end
|
|
56
56
|
|
|
57
57
|
it "can add a new line item to an existing order" do
|
|
58
|
-
api_post :create, :
|
|
58
|
+
api_post :create, line_item: { variant_id: product.master.to_param, quantity: 1 }
|
|
59
59
|
expect(response.status).to eq(201)
|
|
60
60
|
expect(json_response).to have_attributes(attributes)
|
|
61
61
|
expect(json_response["variant"]["name"]).not_to be_blank
|
|
@@ -73,15 +73,15 @@ module Spree
|
|
|
73
73
|
end
|
|
74
74
|
|
|
75
75
|
it "default quantity to 1 if none is given" do
|
|
76
|
-
api_post :create, :
|
|
76
|
+
api_post :create, line_item: { variant_id: product.master.to_param }
|
|
77
77
|
expect(response.status).to eq(201)
|
|
78
78
|
expect(json_response).to have_attributes(attributes)
|
|
79
79
|
expect(json_response[:quantity]).to eq 1
|
|
80
80
|
end
|
|
81
81
|
|
|
82
82
|
it "increases a line item's quantity if it exists already" do
|
|
83
|
-
order.line_items.create(:
|
|
84
|
-
api_post :create, :
|
|
83
|
+
order.line_items.create(variant_id: product.master.id, quantity: 10)
|
|
84
|
+
api_post :create, line_item: { variant_id: product.master.to_param, quantity: 1 }
|
|
85
85
|
expect(response.status).to eq(201)
|
|
86
86
|
order.reload
|
|
87
87
|
expect(order.line_items.count).to eq(2) # 1 original due to factory, + 1 in this test
|
|
@@ -91,7 +91,7 @@ module Spree
|
|
|
91
91
|
|
|
92
92
|
it "can update a line item on the order" do
|
|
93
93
|
line_item = order.line_items.first
|
|
94
|
-
api_put :update, :
|
|
94
|
+
api_put :update, id: line_item.id, line_item: { quantity: 101 }
|
|
95
95
|
expect(response.status).to eq(200)
|
|
96
96
|
order.reload
|
|
97
97
|
expect(order.total).to eq(1010) # 10 original due to factory, + 1000 in this test
|
|
@@ -110,7 +110,7 @@ module Spree
|
|
|
110
110
|
|
|
111
111
|
it "can delete a line item on the order" do
|
|
112
112
|
line_item = order.line_items.first
|
|
113
|
-
api_delete :destroy, :
|
|
113
|
+
api_delete :destroy, id: line_item.id
|
|
114
114
|
expect(response.status).to eq(204)
|
|
115
115
|
order.reload
|
|
116
116
|
expect(order.line_items.count).to eq(0) # 1 original due to factory, - 1 in this test
|
|
@@ -118,26 +118,27 @@ module Spree
|
|
|
118
118
|
end
|
|
119
119
|
|
|
120
120
|
context "order contents changed after shipments were created" do
|
|
121
|
-
let!(:
|
|
121
|
+
let!(:store) { create(:store) }
|
|
122
|
+
let!(:order) { Order.create(store: store) }
|
|
122
123
|
let!(:line_item) { order.contents.add(product.master) }
|
|
123
124
|
|
|
124
125
|
before { order.create_proposed_shipments }
|
|
125
126
|
|
|
126
127
|
it "clear out shipments on create" do
|
|
127
128
|
expect(order.reload.shipments).not_to be_empty
|
|
128
|
-
api_post :create, :
|
|
129
|
+
api_post :create, line_item: { variant_id: product.master.to_param, quantity: 1 }
|
|
129
130
|
expect(order.reload.shipments).to be_empty
|
|
130
131
|
end
|
|
131
132
|
|
|
132
133
|
it "clear out shipments on update" do
|
|
133
134
|
expect(order.reload.shipments).not_to be_empty
|
|
134
|
-
api_put :update, :
|
|
135
|
+
api_put :update, id: line_item.id, line_item: { quantity: 1000 }
|
|
135
136
|
expect(order.reload.shipments).to be_empty
|
|
136
137
|
end
|
|
137
138
|
|
|
138
139
|
it "clear out shipments on delete" do
|
|
139
140
|
expect(order.reload.shipments).not_to be_empty
|
|
140
|
-
api_delete :destroy, :
|
|
141
|
+
api_delete :destroy, id: line_item.id
|
|
141
142
|
expect(order.reload.shipments).to be_empty
|
|
142
143
|
end
|
|
143
144
|
|
|
@@ -149,7 +150,7 @@ module Spree
|
|
|
149
150
|
|
|
150
151
|
it "doesn't destroy shipments or restart checkout flow" do
|
|
151
152
|
expect(order.reload.shipments).not_to be_empty
|
|
152
|
-
api_post :create, :
|
|
153
|
+
api_post :create, line_item: { variant_id: product.master.to_param, quantity: 1 }
|
|
153
154
|
expect(order.reload.shipments).not_to be_empty
|
|
154
155
|
end
|
|
155
156
|
end
|
|
@@ -164,20 +165,20 @@ module Spree
|
|
|
164
165
|
end
|
|
165
166
|
|
|
166
167
|
it "cannot add a new line item to the order" do
|
|
167
|
-
api_post :create, :
|
|
168
|
+
api_post :create, line_item: { variant_id: product.master.to_param, quantity: 1 }
|
|
168
169
|
assert_unauthorized!
|
|
169
170
|
end
|
|
170
171
|
|
|
171
172
|
it "cannot update a line item on the order" do
|
|
172
173
|
line_item = order.line_items.first
|
|
173
|
-
api_put :update, :
|
|
174
|
+
api_put :update, id: line_item.id, line_item: { quantity: 1000 }
|
|
174
175
|
assert_unauthorized!
|
|
175
176
|
expect(line_item.reload.quantity).not_to eq(1000)
|
|
176
177
|
end
|
|
177
178
|
|
|
178
179
|
it "cannot delete a line item on the order" do
|
|
179
180
|
line_item = order.line_items.first
|
|
180
|
-
api_delete :destroy, :
|
|
181
|
+
api_delete :destroy, id: line_item.id
|
|
181
182
|
assert_unauthorized!
|
|
182
183
|
expect { line_item.reload }.not_to raise_error
|
|
183
184
|
end
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
require 'spec_helper'
|
|
2
2
|
|
|
3
3
|
module Spree
|
|
4
|
-
describe Api::OptionTypesController, :
|
|
4
|
+
describe Api::OptionTypesController, type: :controller do
|
|
5
5
|
render_views
|
|
6
6
|
|
|
7
7
|
let(:attributes) { [:id, :name, :position, :presentation] }
|
|
@@ -15,7 +15,7 @@ module Spree
|
|
|
15
15
|
def check_option_values(option_values)
|
|
16
16
|
expect(option_values.count).to eq(1)
|
|
17
17
|
expect(option_values.first).to have_attributes([:id, :name, :presentation,
|
|
18
|
-
|
|
18
|
+
:option_type_name, :option_type_id])
|
|
19
19
|
end
|
|
20
20
|
|
|
21
21
|
it "can list all option types" do
|
|
@@ -27,47 +27,47 @@ module Spree
|
|
|
27
27
|
end
|
|
28
28
|
|
|
29
29
|
it "can search for an option type" do
|
|
30
|
-
create(:option_type, :
|
|
31
|
-
api_get :index, :
|
|
30
|
+
create(:option_type, name: "buzz")
|
|
31
|
+
api_get :index, q: { name_cont: option_type.name }
|
|
32
32
|
expect(json_response.count).to eq(1)
|
|
33
33
|
expect(json_response.first).to have_attributes(attributes)
|
|
34
34
|
end
|
|
35
35
|
|
|
36
36
|
it "can retrieve a list of specific option types" do
|
|
37
37
|
option_type_1 = create(:option_type)
|
|
38
|
-
|
|
39
|
-
api_get :index, :
|
|
38
|
+
create(:option_type)
|
|
39
|
+
api_get :index, ids: "#{option_type.id},#{option_type_1.id}"
|
|
40
40
|
expect(json_response.count).to eq(2)
|
|
41
41
|
|
|
42
42
|
check_option_values(json_response.first["option_values"])
|
|
43
43
|
end
|
|
44
44
|
|
|
45
45
|
it "can list a single option type" do
|
|
46
|
-
api_get :show, :
|
|
46
|
+
api_get :show, id: option_type.id
|
|
47
47
|
expect(json_response).to have_attributes(attributes)
|
|
48
48
|
check_option_values(json_response["option_values"])
|
|
49
49
|
end
|
|
50
50
|
|
|
51
51
|
it "cannot create a new option type" do
|
|
52
|
-
api_post :create, :
|
|
53
|
-
:
|
|
54
|
-
:
|
|
52
|
+
api_post :create, option_type: {
|
|
53
|
+
name: "Option Type",
|
|
54
|
+
presentation: "Option Type"
|
|
55
55
|
}
|
|
56
56
|
assert_unauthorized!
|
|
57
57
|
end
|
|
58
58
|
|
|
59
59
|
it "cannot alter an option type" do
|
|
60
60
|
original_name = option_type.name
|
|
61
|
-
api_put :update, :
|
|
62
|
-
:
|
|
63
|
-
:
|
|
61
|
+
api_put :update, id: option_type.id,
|
|
62
|
+
option_type: {
|
|
63
|
+
name: "Option Type"
|
|
64
64
|
}
|
|
65
65
|
assert_not_found!
|
|
66
66
|
expect(option_type.reload.name).to eq(original_name)
|
|
67
67
|
end
|
|
68
68
|
|
|
69
69
|
it "cannot delete an option type" do
|
|
70
|
-
api_delete :destroy, :
|
|
70
|
+
api_delete :destroy, id: option_type.id
|
|
71
71
|
assert_not_found!
|
|
72
72
|
expect { option_type.reload }.not_to raise_error
|
|
73
73
|
end
|
|
@@ -76,23 +76,22 @@ module Spree
|
|
|
76
76
|
sign_in_as_admin!
|
|
77
77
|
|
|
78
78
|
it "can create an option type" do
|
|
79
|
-
api_post :create, :
|
|
80
|
-
:
|
|
81
|
-
:
|
|
79
|
+
api_post :create, option_type: {
|
|
80
|
+
name: "Option Type",
|
|
81
|
+
presentation: "Option Type"
|
|
82
82
|
}
|
|
83
83
|
expect(json_response).to have_attributes(attributes)
|
|
84
84
|
expect(response.status).to eq(201)
|
|
85
85
|
end
|
|
86
86
|
|
|
87
87
|
it "cannot create an option type with invalid attributes" do
|
|
88
|
-
api_post :create, :
|
|
88
|
+
api_post :create, option_type: {}
|
|
89
89
|
expect(response.status).to eq(422)
|
|
90
90
|
end
|
|
91
91
|
|
|
92
92
|
it "can update an option type" do
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
:name => "Option Type",
|
|
93
|
+
api_put :update, id: option_type.id, option_type: {
|
|
94
|
+
name: "Option Type"
|
|
96
95
|
}
|
|
97
96
|
expect(response.status).to eq(200)
|
|
98
97
|
|
|
@@ -101,14 +100,14 @@ module Spree
|
|
|
101
100
|
end
|
|
102
101
|
|
|
103
102
|
it "cannot update an option type with invalid attributes" do
|
|
104
|
-
api_put :update, :
|
|
105
|
-
:
|
|
103
|
+
api_put :update, id: option_type.id, option_type: {
|
|
104
|
+
name: ""
|
|
106
105
|
}
|
|
107
106
|
expect(response.status).to eq(422)
|
|
108
107
|
end
|
|
109
108
|
|
|
110
109
|
it "can delete an option type" do
|
|
111
|
-
api_delete :destroy, :
|
|
110
|
+
api_delete :destroy, id: option_type.id
|
|
112
111
|
expect(response.status).to eq(204)
|
|
113
112
|
end
|
|
114
113
|
end
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
require 'spec_helper'
|
|
2
2
|
|
|
3
3
|
module Spree
|
|
4
|
-
describe Api::OptionValuesController, :
|
|
4
|
+
describe Api::OptionValuesController, type: :controller do
|
|
5
5
|
render_views
|
|
6
6
|
|
|
7
7
|
let(:attributes) { [:id, :name, :presentation, :option_type_name, :option_type_name] }
|
|
@@ -15,13 +15,13 @@ module Spree
|
|
|
15
15
|
def check_option_values(option_values)
|
|
16
16
|
expect(option_values.count).to eq(1)
|
|
17
17
|
expect(option_values.first).to have_attributes([:id, :name, :presentation,
|
|
18
|
-
|
|
18
|
+
:option_type_name, :option_type_id])
|
|
19
19
|
end
|
|
20
20
|
|
|
21
21
|
context "without any option type scoping" do
|
|
22
22
|
before do
|
|
23
23
|
# Create another option value with a brand new option type
|
|
24
|
-
create(:option_value, :
|
|
24
|
+
create(:option_value, option_type: create(:option_type))
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
it "can retrieve a list of all option values" do
|
|
@@ -32,7 +32,7 @@ module Spree
|
|
|
32
32
|
end
|
|
33
33
|
|
|
34
34
|
context "for a particular option type" do
|
|
35
|
-
let(:resource_scoping) { { :
|
|
35
|
+
let(:resource_scoping) { { option_type_id: option_type.id } }
|
|
36
36
|
|
|
37
37
|
it "can list all option values" do
|
|
38
38
|
api_get :index
|
|
@@ -41,44 +41,44 @@ module Spree
|
|
|
41
41
|
end
|
|
42
42
|
|
|
43
43
|
it "can search for an option type" do
|
|
44
|
-
create(:option_value, :
|
|
45
|
-
api_get :index, :
|
|
44
|
+
create(:option_value, name: "buzz")
|
|
45
|
+
api_get :index, q: { name_cont: option_value.name }
|
|
46
46
|
expect(json_response.count).to eq(1)
|
|
47
47
|
expect(json_response.first).to have_attributes(attributes)
|
|
48
48
|
end
|
|
49
49
|
|
|
50
50
|
it "can retrieve a list of option types" do
|
|
51
|
-
option_value_1 = create(:option_value, :
|
|
52
|
-
|
|
53
|
-
api_get :index, :
|
|
51
|
+
option_value_1 = create(:option_value, option_type: option_type)
|
|
52
|
+
create(:option_value, option_type: option_type)
|
|
53
|
+
api_get :index, ids: [option_value.id, option_value_1.id]
|
|
54
54
|
expect(json_response.count).to eq(2)
|
|
55
55
|
end
|
|
56
56
|
|
|
57
57
|
it "can list a single option value" do
|
|
58
|
-
api_get :show, :
|
|
58
|
+
api_get :show, id: option_value.id
|
|
59
59
|
expect(json_response).to have_attributes(attributes)
|
|
60
60
|
end
|
|
61
61
|
|
|
62
62
|
it "cannot create a new option value" do
|
|
63
|
-
api_post :create, :
|
|
64
|
-
:
|
|
65
|
-
:
|
|
63
|
+
api_post :create, option_value: {
|
|
64
|
+
name: "Option Value",
|
|
65
|
+
presentation: "Option Value"
|
|
66
66
|
}
|
|
67
67
|
assert_unauthorized!
|
|
68
68
|
end
|
|
69
69
|
|
|
70
70
|
it "cannot alter an option value" do
|
|
71
71
|
original_name = option_type.name
|
|
72
|
-
api_put :update, :
|
|
73
|
-
:
|
|
74
|
-
:
|
|
72
|
+
api_put :update, id: option_type.id,
|
|
73
|
+
option_value: {
|
|
74
|
+
name: "Option Value"
|
|
75
75
|
}
|
|
76
76
|
assert_not_found!
|
|
77
77
|
expect(option_type.reload.name).to eq(original_name)
|
|
78
78
|
end
|
|
79
79
|
|
|
80
80
|
it "cannot delete an option value" do
|
|
81
|
-
api_delete :destroy, :
|
|
81
|
+
api_delete :destroy, id: option_type.id
|
|
82
82
|
assert_not_found!
|
|
83
83
|
expect { option_type.reload }.not_to raise_error
|
|
84
84
|
end
|
|
@@ -87,23 +87,22 @@ module Spree
|
|
|
87
87
|
sign_in_as_admin!
|
|
88
88
|
|
|
89
89
|
it "can create an option value" do
|
|
90
|
-
api_post :create, :
|
|
91
|
-
:
|
|
92
|
-
:
|
|
90
|
+
api_post :create, option_value: {
|
|
91
|
+
name: "Option Value",
|
|
92
|
+
presentation: "Option Value"
|
|
93
93
|
}
|
|
94
94
|
expect(json_response).to have_attributes(attributes)
|
|
95
95
|
expect(response.status).to eq(201)
|
|
96
96
|
end
|
|
97
97
|
|
|
98
98
|
it "cannot create an option type with invalid attributes" do
|
|
99
|
-
api_post :create, :
|
|
99
|
+
api_post :create, option_value: {}
|
|
100
100
|
expect(response.status).to eq(422)
|
|
101
101
|
end
|
|
102
102
|
|
|
103
103
|
it "can update an option value" do
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
:name => "Option Value",
|
|
104
|
+
api_put :update, id: option_value.id, option_value: {
|
|
105
|
+
name: "Option Value"
|
|
107
106
|
}
|
|
108
107
|
expect(response.status).to eq(200)
|
|
109
108
|
|
|
@@ -113,20 +112,20 @@ module Spree
|
|
|
113
112
|
|
|
114
113
|
it "permits the correct attributes" do
|
|
115
114
|
expect(controller).to receive(:permitted_option_value_attributes)
|
|
116
|
-
api_put :update, :
|
|
117
|
-
:
|
|
115
|
+
api_put :update, id: option_value.id, option_value: {
|
|
116
|
+
name: ""
|
|
118
117
|
}
|
|
119
118
|
end
|
|
120
119
|
|
|
121
120
|
it "cannot update an option value with invalid attributes" do
|
|
122
|
-
api_put :update, :
|
|
123
|
-
:
|
|
121
|
+
api_put :update, id: option_value.id, option_value: {
|
|
122
|
+
name: ""
|
|
124
123
|
}
|
|
125
124
|
expect(response.status).to eq(422)
|
|
126
125
|
end
|
|
127
126
|
|
|
128
127
|
it "can delete an option value" do
|
|
129
|
-
api_delete :destroy, :
|
|
128
|
+
api_delete :destroy, id: option_value.id
|
|
130
129
|
expect(response.status).to eq(204)
|
|
131
130
|
end
|
|
132
131
|
end
|