solidus_api 2.9.5 → 2.10.2
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/README.md +35 -2
- data/app/controllers/spree/api/addresses_controller.rb +1 -1
- data/app/controllers/spree/api/base_controller.rb +10 -10
- data/app/controllers/spree/api/checkouts_controller.rb +21 -8
- data/app/controllers/spree/api/credit_cards_controller.rb +1 -1
- data/app/controllers/spree/api/images_controller.rb +1 -1
- data/app/controllers/spree/api/inventory_units_controller.rb +1 -1
- data/app/controllers/spree/api/option_types_controller.rb +1 -1
- data/app/controllers/spree/api/option_values_controller.rb +1 -1
- data/app/controllers/spree/api/orders_controller.rb +17 -6
- data/app/controllers/spree/api/payments_controller.rb +1 -1
- data/app/controllers/spree/api/product_properties_controller.rb +1 -1
- data/app/controllers/spree/api/properties_controller.rb +1 -1
- data/app/controllers/spree/api/resource_controller.rb +1 -1
- data/app/controllers/spree/api/return_authorizations_controller.rb +1 -1
- data/app/controllers/spree/api/shipments_controller.rb +1 -1
- data/app/controllers/spree/api/stock_items_controller.rb +1 -1
- data/app/controllers/spree/api/stock_locations_controller.rb +1 -1
- data/app/controllers/spree/api/stores_controller.rb +1 -1
- data/app/controllers/spree/api/taxonomies_controller.rb +4 -2
- data/app/controllers/spree/api/taxons_controller.rb +1 -1
- data/app/controllers/spree/api/variants_controller.rb +1 -1
- data/app/controllers/spree/api/zones_controller.rb +1 -1
- data/app/helpers/spree/api/api_helpers.rb +2 -2
- data/app/views/spree/api/images/_image.json.jbuilder +2 -2
- data/app/views/spree/api/orders/_order.json.jbuilder +1 -1
- data/app/views/spree/api/shared/_pagination.json.jbuilder +1 -1
- data/lib/spree/api.rb +0 -7
- data/lib/spree/api/config.rb +9 -0
- data/lib/spree/api/engine.rb +4 -4
- data/lib/spree/api/responders.rb +3 -2
- data/lib/spree/api/responders/{rabl_template.rb → jbuilder_template.rb} +3 -1
- data/{app/models → lib}/spree/api_configuration.rb +0 -0
- data/openapi/.stoplight.yml +7 -0
- data/openapi/api.oas2.yml +6108 -0
- data/openapi/authentication.md +25 -0
- data/openapi/checkout-flow.md +50 -0
- data/openapi/errors.md +3 -0
- data/openapi/lint.yml +1 -0
- data/openapi/main.hub.yml +65 -0
- data/openapi/pagination.md +7 -0
- data/openapi/theme.css +0 -0
- data/solidus_api.gemspec +1 -1
- data/spec/controllers/spree/api/resource_controller_spec.rb +4 -4
- data/spec/lib/spree_api_responders_spec.rb +10 -0
- data/spec/requests/api/address_books_spec.rb +2 -2
- data/spec/requests/{rabl_cache_spec.rb → jbuilder_cache_spec.rb} +2 -2
- data/spec/requests/spree/api/checkouts_controller_spec.rb +35 -7
- data/spec/requests/spree/api/classifications_controller_spec.rb +1 -1
- data/spec/requests/spree/api/option_types_controller_spec.rb +2 -2
- data/spec/requests/spree/api/option_values_controller_spec.rb +2 -2
- data/spec/requests/spree/api/orders_controller_spec.rb +38 -15
- data/spec/requests/spree/api/payments_controller_spec.rb +3 -3
- data/spec/requests/spree/api/products_controller_spec.rb +6 -6
- data/spec/requests/spree/api/stock_items_controller_spec.rb +5 -5
- data/spec/requests/spree/api/stock_locations_controller_spec.rb +4 -4
- data/spec/requests/spree/api/taxons_controller_spec.rb +2 -2
- metadata +21 -9
@@ -137,7 +137,7 @@ module Spree
|
|
137
137
|
context "for a given payment" do
|
138
138
|
context "updating" do
|
139
139
|
it "can update" do
|
140
|
-
payment.
|
140
|
+
payment.update(state: 'pending')
|
141
141
|
put spree.api_order_payment_path(order, payment), params: { payment: { amount: 2.01 } }
|
142
142
|
expect(response.status).to eq(200)
|
143
143
|
expect(payment.reload.amount).to eq(2.01)
|
@@ -145,14 +145,14 @@ module Spree
|
|
145
145
|
|
146
146
|
context "update fails" do
|
147
147
|
it "returns a 422 status when the amount is invalid" do
|
148
|
-
payment.
|
148
|
+
payment.update(state: 'pending')
|
149
149
|
put spree.api_order_payment_path(order, payment), params: { payment: { amount: 'invalid' } }
|
150
150
|
expect(response.status).to eq(422)
|
151
151
|
expect(json_response["error"]).to eq("Invalid resource. Please fix errors and try again.")
|
152
152
|
end
|
153
153
|
|
154
154
|
it "returns a 403 status when the payment is not pending" do
|
155
|
-
payment.
|
155
|
+
payment.update(state: 'completed')
|
156
156
|
put spree.api_order_payment_path(order, payment), params: { payment: { amount: 2.01 } }
|
157
157
|
expect(response.status).to eq(403)
|
158
158
|
expect(json_response["error"]).to eq("This payment cannot be updated because it is completed.")
|
@@ -17,8 +17,8 @@ module Spree
|
|
17
17
|
shipping_category_id: create(:shipping_category).id }
|
18
18
|
end
|
19
19
|
let(:attributes_for_variant) do
|
20
|
-
|
21
|
-
|
20
|
+
attributes = attributes_for(:variant).except(:option_values, :product)
|
21
|
+
attributes.merge({
|
22
22
|
options: [
|
23
23
|
{ name: "size", value: "small" },
|
24
24
|
{ name: "color", value: "black" }
|
@@ -40,7 +40,7 @@ module Spree
|
|
40
40
|
|
41
41
|
it "returns unique products" do
|
42
42
|
get spree.api_products_path
|
43
|
-
product_ids = json_response["products"].map { |
|
43
|
+
product_ids = json_response["products"].map { |product| product["id"] }
|
44
44
|
expect(product_ids.uniq.count).to eq(product_ids.count)
|
45
45
|
end
|
46
46
|
|
@@ -361,8 +361,8 @@ module Spree
|
|
361
361
|
expect(response.status).to eq 200
|
362
362
|
expect(json_response['variants'].count).to eq(2) # 2 variants
|
363
363
|
|
364
|
-
variants = json_response['variants'].reject { |
|
365
|
-
size_option_value = variants.last['option_values'].detect{ |
|
364
|
+
variants = json_response['variants'].reject { |variant| variant['is_master'] }
|
365
|
+
size_option_value = variants.last['option_values'].detect{ |value| value['option_type_name'] == 'size' }
|
366
366
|
expect(size_option_value['name']).to eq('small')
|
367
367
|
|
368
368
|
expect(json_response['option_types'].count).to eq(2) # size, color
|
@@ -385,7 +385,7 @@ module Spree
|
|
385
385
|
} }
|
386
386
|
|
387
387
|
expect(json_response['variants'].count).to eq(1)
|
388
|
-
variants = json_response['variants'].reject { |
|
388
|
+
variants = json_response['variants'].reject { |variant| variant['is_master'] }
|
389
389
|
expect(variants.last['option_values'][0]['name']).to eq('large')
|
390
390
|
expect(variants.last['sku']).to eq('456')
|
391
391
|
expect(variants.count).to eq(1)
|
@@ -25,7 +25,7 @@ module Spree
|
|
25
25
|
end
|
26
26
|
|
27
27
|
it "cannot list stock items for an inactive stock location" do
|
28
|
-
stock_location.
|
28
|
+
stock_location.update!(active: false)
|
29
29
|
get spree.api_stock_location_stock_items_path(stock_location)
|
30
30
|
expect(response).to be_not_found
|
31
31
|
end
|
@@ -39,7 +39,7 @@ module Spree
|
|
39
39
|
end
|
40
40
|
|
41
41
|
it "cannot see a stock item for an inactive stock location" do
|
42
|
-
stock_location.
|
42
|
+
stock_location.update!(active: false)
|
43
43
|
get spree.api_stock_location_stock_item_path(stock_location, stock_item)
|
44
44
|
expect(response.status).to eq(404)
|
45
45
|
end
|
@@ -155,7 +155,7 @@ module Spree
|
|
155
155
|
|
156
156
|
context 'variant does not track inventory' do
|
157
157
|
before do
|
158
|
-
variant.
|
158
|
+
variant.update(track_inventory: false)
|
159
159
|
end
|
160
160
|
|
161
161
|
it "doesn't set the stock item's count_on_hand" do
|
@@ -221,7 +221,7 @@ module Spree
|
|
221
221
|
|
222
222
|
context 'not tracking inventory' do
|
223
223
|
before do
|
224
|
-
stock_item.variant.
|
224
|
+
stock_item.variant.update(track_inventory: false)
|
225
225
|
end
|
226
226
|
|
227
227
|
it "doesn't set the stock item's count_on_hand" do
|
@@ -279,7 +279,7 @@ module Spree
|
|
279
279
|
|
280
280
|
context 'not tracking inventory' do
|
281
281
|
before do
|
282
|
-
stock_item.variant.
|
282
|
+
stock_item.variant.update(track_inventory: false)
|
283
283
|
end
|
284
284
|
|
285
285
|
it "doesn't update the stock item's count_on_hand" do
|
@@ -21,7 +21,7 @@ module Spree
|
|
21
21
|
end
|
22
22
|
|
23
23
|
it "cannot see inactive stock locations" do
|
24
|
-
stock_location.
|
24
|
+
stock_location.update!(active: false)
|
25
25
|
get spree.api_stock_locations_path
|
26
26
|
expect(response).to be_successful
|
27
27
|
stock_locations = json_response['stock_locations'].map { |sl| sl['name'] }
|
@@ -37,7 +37,7 @@ module Spree
|
|
37
37
|
end
|
38
38
|
|
39
39
|
it "cannot see inactive stock locations" do
|
40
|
-
stock_location.
|
40
|
+
stock_location.update!(active: false)
|
41
41
|
get spree.api_stock_location_path(stock_location)
|
42
42
|
expect(response).to be_not_found
|
43
43
|
end
|
@@ -84,7 +84,7 @@ module Spree
|
|
84
84
|
end
|
85
85
|
|
86
86
|
it "can see inactive stock locations" do
|
87
|
-
stock_location.
|
87
|
+
stock_location.update!(active: false)
|
88
88
|
get spree.api_stock_locations_path
|
89
89
|
expect(response).to be_successful
|
90
90
|
stock_locations = json_response['stock_locations'].map { |sl| sl['name'] }
|
@@ -122,7 +122,7 @@ module Spree
|
|
122
122
|
end
|
123
123
|
|
124
124
|
it "can see inactive stock locations" do
|
125
|
-
stock_location.
|
125
|
+
stock_location.update!(active: false)
|
126
126
|
get spree.api_stock_location_path(stock_location)
|
127
127
|
expect(response).to be_successful
|
128
128
|
expect(json_response['name']).to eq stock_location.name
|
@@ -93,9 +93,9 @@ module Spree
|
|
93
93
|
it 'returns only requested ids' do
|
94
94
|
# We need a completly new branch to avoid having parent that can be preloaded from the rails ancestors
|
95
95
|
python = create(:taxon, name: "Python", parent: taxonomy.root, taxonomy: taxonomy)
|
96
|
-
|
96
|
+
python_three = create(:taxon, name: "3.0", parent: python, taxonomy: taxonomy)
|
97
97
|
|
98
|
-
get spree.api_taxons_path, params: { ids: [rails_v3_2_2.id,
|
98
|
+
get spree.api_taxons_path, params: { ids: [rails_v3_2_2.id, python_three.id] }
|
99
99
|
|
100
100
|
expect(json_response['taxons'].size).to eq 2
|
101
101
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: solidus_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.10.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Solidus Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-07-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jbuilder
|
@@ -58,14 +58,14 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - '='
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 2.
|
61
|
+
version: 2.10.2
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - '='
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 2.
|
68
|
+
version: 2.10.2
|
69
69
|
description: REST API for the Solidus e-commerce framework.
|
70
70
|
email: contact@solidus.io
|
71
71
|
executables: []
|
@@ -111,7 +111,6 @@ files:
|
|
111
111
|
- app/controllers/spree/api/variants_controller.rb
|
112
112
|
- app/controllers/spree/api/zones_controller.rb
|
113
113
|
- app/helpers/spree/api/api_helpers.rb
|
114
|
-
- app/models/spree/api_configuration.rb
|
115
114
|
- app/views/.rubocop.yml
|
116
115
|
- app/views/spree/api/address_books/show.json.jbuilder
|
117
116
|
- app/views/spree/api/addresses/_address.json.jbuilder
|
@@ -230,22 +229,34 @@ files:
|
|
230
229
|
- db/migrate/20131017162334_add_index_to_user_spree_api_key.rb
|
231
230
|
- lib/solidus_api.rb
|
232
231
|
- lib/spree/api.rb
|
232
|
+
- lib/spree/api/config.rb
|
233
233
|
- lib/spree/api/engine.rb
|
234
234
|
- lib/spree/api/responders.rb
|
235
|
-
- lib/spree/api/responders/
|
235
|
+
- lib/spree/api/responders/jbuilder_template.rb
|
236
236
|
- lib/spree/api/testing_support/caching.rb
|
237
237
|
- lib/spree/api/testing_support/helpers.rb
|
238
238
|
- lib/spree/api/testing_support/setup.rb
|
239
|
+
- lib/spree/api_configuration.rb
|
239
240
|
- lib/spree_api.rb
|
241
|
+
- openapi/.stoplight.yml
|
242
|
+
- openapi/api.oas2.yml
|
243
|
+
- openapi/authentication.md
|
244
|
+
- openapi/checkout-flow.md
|
245
|
+
- openapi/errors.md
|
246
|
+
- openapi/lint.yml
|
247
|
+
- openapi/main.hub.yml
|
248
|
+
- openapi/pagination.md
|
249
|
+
- openapi/theme.css
|
240
250
|
- script/rails
|
241
251
|
- solidus_api.gemspec
|
242
252
|
- spec/controllers/spree/api/base_controller_spec.rb
|
243
253
|
- spec/controllers/spree/api/resource_controller_spec.rb
|
244
254
|
- spec/features/checkout_spec.rb
|
245
255
|
- spec/fixtures/thinking-cat.jpg
|
256
|
+
- spec/lib/spree_api_responders_spec.rb
|
246
257
|
- spec/models/spree/legacy_user_spec.rb
|
247
258
|
- spec/requests/api/address_books_spec.rb
|
248
|
-
- spec/requests/
|
259
|
+
- spec/requests/jbuilder_cache_spec.rb
|
249
260
|
- spec/requests/ransackable_attributes_spec.rb
|
250
261
|
- spec/requests/spree/api/addresses_controller_spec.rb
|
251
262
|
- spec/requests/spree/api/checkouts_controller_spec.rb
|
@@ -302,7 +313,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
302
313
|
requirements:
|
303
314
|
- - ">="
|
304
315
|
- !ruby/object:Gem::Version
|
305
|
-
version: 2.
|
316
|
+
version: 2.4.0
|
306
317
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
307
318
|
requirements:
|
308
319
|
- - ">="
|
@@ -318,9 +329,10 @@ test_files:
|
|
318
329
|
- spec/controllers/spree/api/resource_controller_spec.rb
|
319
330
|
- spec/features/checkout_spec.rb
|
320
331
|
- spec/fixtures/thinking-cat.jpg
|
332
|
+
- spec/lib/spree_api_responders_spec.rb
|
321
333
|
- spec/models/spree/legacy_user_spec.rb
|
322
334
|
- spec/requests/api/address_books_spec.rb
|
323
|
-
- spec/requests/
|
335
|
+
- spec/requests/jbuilder_cache_spec.rb
|
324
336
|
- spec/requests/ransackable_attributes_spec.rb
|
325
337
|
- spec/requests/spree/api/addresses_controller_spec.rb
|
326
338
|
- spec/requests/spree/api/checkouts_controller_spec.rb
|