patch_ruby 1.24.1 → 2.0.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.
Files changed (73) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +6 -0
  3. data/Gemfile.lock +1 -1
  4. data/README.md +11 -11
  5. data/lib/patch_ruby/api/estimates_api.rb +142 -2
  6. data/lib/patch_ruby/api/order_line_items_api.rb +269 -0
  7. data/lib/patch_ruby/api/orders_api.rb +99 -4
  8. data/lib/patch_ruby/api/projects_api.rb +12 -2
  9. data/lib/patch_ruby/api/technology_types_api.rb +7 -2
  10. data/lib/patch_ruby/api_client.rb +3 -3
  11. data/lib/patch_ruby/api_error.rb +2 -2
  12. data/lib/patch_ruby/configuration.rb +2 -2
  13. data/lib/patch_ruby/models/create_air_shipping_estimate_request.rb +3 -3
  14. data/lib/patch_ruby/models/create_bitcoin_estimate_request.rb +2 -2
  15. data/lib/patch_ruby/models/create_ecommerce_estimate_request.rb +373 -0
  16. data/lib/patch_ruby/models/create_ethereum_estimate_request.rb +2 -2
  17. data/lib/patch_ruby/models/create_flight_estimate_request.rb +2 -2
  18. data/lib/patch_ruby/models/create_hotel_estimate_request.rb +2 -2
  19. data/lib/patch_ruby/models/create_mass_estimate_request.rb +2 -2
  20. data/lib/patch_ruby/models/create_order_line_item_request.rb +375 -0
  21. data/lib/patch_ruby/models/create_order_request.rb +8 -67
  22. data/lib/patch_ruby/models/create_rail_shipping_estimate_request.rb +3 -3
  23. data/lib/patch_ruby/models/create_road_shipping_estimate_request.rb +3 -3
  24. data/lib/patch_ruby/models/create_sea_shipping_estimate_request.rb +3 -3
  25. data/lib/patch_ruby/models/create_shipping_estimate_request.rb +2 -2
  26. data/lib/patch_ruby/models/create_success_response.rb +2 -2
  27. data/lib/patch_ruby/models/create_vehicle_estimate_request.rb +2 -2
  28. data/lib/patch_ruby/models/delete_order_line_item_response.rb +257 -0
  29. data/lib/patch_ruby/models/delete_order_response.rb +257 -0
  30. data/lib/patch_ruby/models/error_response.rb +2 -2
  31. data/lib/patch_ruby/models/estimate.rb +2 -2
  32. data/lib/patch_ruby/models/estimate_list_response.rb +2 -2
  33. data/lib/patch_ruby/models/estimate_response.rb +2 -2
  34. data/lib/patch_ruby/models/highlight.rb +2 -2
  35. data/lib/patch_ruby/models/inventory.rb +2 -2
  36. data/lib/patch_ruby/models/meta_index_object.rb +2 -2
  37. data/lib/patch_ruby/models/order.rb +11 -115
  38. data/lib/patch_ruby/models/order_issued_to.rb +2 -2
  39. data/lib/patch_ruby/models/{order_inventory.rb → order_line_item.rb} +19 -9
  40. data/lib/patch_ruby/models/{order_inventory_project.rb → order_line_item_project.rb} +7 -7
  41. data/lib/patch_ruby/models/{allocation.rb → order_line_item_response.rb} +33 -40
  42. data/lib/patch_ruby/models/order_list_response.rb +2 -2
  43. data/lib/patch_ruby/models/order_response.rb +2 -2
  44. data/lib/patch_ruby/models/parent_technology_type.rb +2 -2
  45. data/lib/patch_ruby/models/photo.rb +2 -2
  46. data/lib/patch_ruby/models/place_order_request.rb +2 -2
  47. data/lib/patch_ruby/models/project.rb +13 -53
  48. data/lib/patch_ruby/models/project_list_response.rb +2 -2
  49. data/lib/patch_ruby/models/project_response.rb +2 -2
  50. data/lib/patch_ruby/models/sdg.rb +2 -2
  51. data/lib/patch_ruby/models/standard.rb +2 -2
  52. data/lib/patch_ruby/models/technology_type.rb +2 -2
  53. data/lib/patch_ruby/models/technology_type_list_response.rb +2 -2
  54. data/lib/patch_ruby/models/update_order_line_item_request.rb +366 -0
  55. data/lib/patch_ruby/version.rb +3 -3
  56. data/lib/patch_ruby.rb +11 -5
  57. data/patch_ruby.gemspec +2 -2
  58. data/spec/api/order_line_items_api_spec.rb +78 -0
  59. data/spec/api_client_spec.rb +2 -2
  60. data/spec/configuration_spec.rb +2 -2
  61. data/spec/factories/create_order_requests.rb +4 -2
  62. data/spec/factories/orders.rb +5 -4
  63. data/spec/factories/projects.rb +1 -4
  64. data/spec/integration/estimates_spec.rb +29 -16
  65. data/spec/integration/orders_spec.rb +85 -44
  66. data/spec/integration/projects_spec.rb +2 -4
  67. data/spec/models/create_order_request_spec.rb +10 -3
  68. data/spec/models/order_spec.rb +8 -23
  69. data/spec/models/project_spec.rb +1 -4
  70. data/spec/spec_helper.rb +2 -2
  71. metadata +35 -31
  72. data/spec/factories/allocations.rb +0 -7
  73. data/spec/models/allocation_spec.rb +0 -59
data/patch_ruby.gemspec CHANGED
@@ -1,11 +1,11 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
 
3
3
  =begin
4
- #Patch API V1
4
+ #Patch API V2
5
5
 
6
6
  #The core API used to integrate with Patch's service
7
7
 
8
- The version of the OpenAPI document: v1
8
+ The version of the OpenAPI document: 2
9
9
  Contact: engineering@usepatch.com
10
10
  Generated by: https://openapi-generator.tech
11
11
  OpenAPI Generator version: 5.3.1
@@ -0,0 +1,78 @@
1
+ =begin
2
+ #Patch API V2
3
+
4
+ #The core API used to integrate with Patch's service
5
+
6
+ The version of the OpenAPI document: 2
7
+ Contact: engineering@usepatch.com
8
+ Generated by: https://openapi-generator.tech
9
+ OpenAPI Generator version: 5.3.1
10
+
11
+ =end
12
+
13
+ require 'spec_helper'
14
+ require 'json'
15
+
16
+ # Unit tests for Patch::OrderLineItemsApi
17
+ # Automatically generated by openapi-generator (https://openapi-generator.tech)
18
+ # Please update as you see appropriate
19
+ describe 'OrderLineItemsApi' do
20
+ before do
21
+ # run before each test
22
+ @api_instance = Patch::OrderLineItemsApi.new
23
+ end
24
+
25
+ after do
26
+ # run after each test
27
+ end
28
+
29
+ describe 'test an instance of OrderLineItemsApi' do
30
+ it 'should create an instance of OrderLineItemsApi' do
31
+ expect(@api_instance).to be_instance_of(Patch::OrderLineItemsApi)
32
+ end
33
+ end
34
+
35
+ # unit tests for create_order_line_item
36
+ # Creates an order line item
37
+ # Creates a line item on an order that is in the `draft` state.
38
+ # @param order_id
39
+ # @param create_order_line_item_request
40
+ # @param [Hash] opts the optional parameters
41
+ # @option opts [Integer] :patch_version
42
+ # @return [OrderLineItemResponse]
43
+ describe 'create_order_line_item test' do
44
+ it 'should work' do
45
+ # assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
46
+ end
47
+ end
48
+
49
+ # unit tests for delete_order_line_item
50
+ # Deletes an order line item
51
+ # Deletes a line item on an order that is in the `draft` state.
52
+ # @param order_id
53
+ # @param serial_number
54
+ # @param [Hash] opts the optional parameters
55
+ # @option opts [Integer] :patch_version
56
+ # @return [DeleteOrderLineItemResponse]
57
+ describe 'delete_order_line_item test' do
58
+ it 'should work' do
59
+ # assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
60
+ end
61
+ end
62
+
63
+ # unit tests for update_order_line_item
64
+ # Updates an order line item
65
+ # Updates a line item on an order that is in the `draft` state.
66
+ # @param order_id
67
+ # @param serial_number
68
+ # @param update_order_line_item_request
69
+ # @param [Hash] opts the optional parameters
70
+ # @option opts [Integer] :patch_version
71
+ # @return [OrderLineItemResponse]
72
+ describe 'update_order_line_item test' do
73
+ it 'should work' do
74
+ # assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
75
+ end
76
+ end
77
+
78
+ end
@@ -1,9 +1,9 @@
1
1
  =begin
2
- #Patch API V1
2
+ #Patch API V2
3
3
 
4
4
  #The core API used to integrate with Patch's service
5
5
 
6
- The version of the OpenAPI document: v1
6
+ The version of the OpenAPI document: 2
7
7
  Contact: engineering@usepatch.com
8
8
  Generated by: https://openapi-generator.tech
9
9
  OpenAPI Generator version: 5.3.1
@@ -1,9 +1,9 @@
1
1
  =begin
2
- #Patch API V1
2
+ #Patch API V2
3
3
 
4
4
  #The core API used to integrate with Patch's service
5
5
 
6
- The version of the OpenAPI document: v1
6
+ The version of the OpenAPI document: 2
7
7
  Contact: engineering@usepatch.com
8
8
  Generated by: https://openapi-generator.tech
9
9
  OpenAPI Generator version: 5.3.1
@@ -1,8 +1,10 @@
1
1
  FactoryBot.define do
2
2
  factory :create_order_request, class: Patch::CreateOrderRequest do
3
3
  sequence(:project_id) { |n| n }
4
- mass_g { 100 }
5
- total_price_cents_usd { 100 }
4
+ amount { 100 }
5
+ unit { "g" }
6
+ total_price { 100 }
7
+ currency { "USD" }
6
8
  metadata { {} }
7
9
  end
8
10
  end
@@ -1,12 +1,13 @@
1
1
  FactoryBot.define do
2
2
  factory :order, class: Patch::Order do
3
3
  sequence(:id) { |n| n }
4
- mass_g { 1_000 }
4
+ amount { 1_000 }
5
+ unit { "g" }
5
6
  production { false }
6
7
  state { "draft" }
7
- allocation_state { "pending" }
8
- price_cents_usd { 500 }
9
- patch_fee_cents_usd { 5 }
8
+ price { 500 }
9
+ patch_fee { 5 }
10
+ currency { "USD" }
10
11
  metadata { {} }
11
12
  end
12
13
  end
@@ -7,12 +7,9 @@ FactoryBot.define do
7
7
  production { false }
8
8
  name { "New Project" }
9
9
  description { "New Descirption" }
10
- type { "biomass" }
11
10
  country { "DK" }
12
- developer { "Danish Developer" }
11
+ project_partner { "Danish Developer" }
13
12
  photos { [] }
14
- average_price_per_tonne_cents_usd { 120 }
15
- remaining_mass_g { 1_000 }
16
13
  standard { 'european_biochar_certificate' }
17
14
  state { 'CO' }
18
15
  latitude { 45.0 }
@@ -90,7 +90,6 @@ RSpec.describe 'Estimates Integration' do
90
90
  expect(create_estimate_response.data.mass_g).to be >= 10_000
91
91
  end
92
92
 
93
-
94
93
  it 'supports creating bitcoin estimates with partial information' do
95
94
  bitcoin_estimate = Patch::Estimate.create_bitcoin_estimate()
96
95
 
@@ -172,6 +171,20 @@ RSpec.describe 'Estimates Integration' do
172
171
  expect(create_estimate_response.data.id).not_to be_nil
173
172
  end
174
173
 
174
+ it 'supports creating ecommerce estimates' do
175
+ distance_m = 100_000_000
176
+ package_mass_g = 10_000
177
+ create_estimate_response = Patch::Estimate.create_ecommerce_estimate(
178
+ distance_m: distance_m,
179
+ package_mass_g: package_mass_g,
180
+ transportation_method: 'rail',
181
+ create_order: false
182
+ )
183
+
184
+ expect(create_estimate_response.data.type).to eq 'ecommerce'
185
+ expect(create_estimate_response.data.mass_g).to be >= 10_000
186
+ end
187
+
175
188
  context "when creating an air shipping estimate" do
176
189
  it "supports creating an estimate using airports" do
177
190
  air_shipping_estimate = Patch::Estimate.create_air_shipping_estimate(
@@ -182,7 +195,7 @@ RSpec.describe 'Estimates Integration' do
182
195
  origin_airport: "SFO"
183
196
  )
184
197
  expect(air_shipping_estimate.data.type).to eq('shipping_air')
185
- expect(air_shipping_estimate.data.mass_g).to be >= 20_000
198
+ expect(air_shipping_estimate.data.mass_g).to be > 0
186
199
  end
187
200
 
188
201
  it "supports creating an estimate with an order" do
@@ -194,8 +207,8 @@ RSpec.describe 'Estimates Integration' do
194
207
  origin_airport: "SFO"
195
208
  )
196
209
  expect(air_shipping_estimate.data.type).to eq('shipping_air')
197
- expect(air_shipping_estimate.data.mass_g).to be >= 20_000
198
- expect(air_shipping_estimate.data.order.amount).to be >= 10_000
210
+ expect(air_shipping_estimate.data.mass_g).to be > 0
211
+ expect(air_shipping_estimate.data.order.amount).to be > 0
199
212
  end
200
213
  end
201
214
 
@@ -210,7 +223,7 @@ RSpec.describe 'Estimates Integration' do
210
223
  origin_locode: "USSD2"
211
224
  )
212
225
  expect(rail_shipping_estimate.data.type).to eq('shipping_rail')
213
- expect(rail_shipping_estimate.data.mass_g).to be >= 15_000
226
+ expect(rail_shipping_estimate.data.mass_g).to be > 0
214
227
  end
215
228
 
216
229
  it "supports creating an estimate using postal codes" do
@@ -225,7 +238,7 @@ RSpec.describe 'Estimates Integration' do
225
238
  origin_postal_code: "90210"
226
239
  )
227
240
  expect(rail_shipping_estimate.data.type).to eq('shipping_rail')
228
- expect(rail_shipping_estimate.data.mass_g).to be >= 4_000
241
+ expect(rail_shipping_estimate.data.mass_g).to be > 0
229
242
  end
230
243
 
231
244
  it "supports creating an estimate with an order" do
@@ -236,8 +249,8 @@ RSpec.describe 'Estimates Integration' do
236
249
  origin_locode: "USSD2"
237
250
  )
238
251
  expect(rail_shipping_estimate.data.type).to eq('shipping_rail')
239
- expect(rail_shipping_estimate.data.mass_g).to be >= 15_000
240
- expect(rail_shipping_estimate.data.order.amount).to be >= 10_000
252
+ expect(rail_shipping_estimate.data.mass_g).to be > 0
253
+ expect(rail_shipping_estimate.data.order.amount).to be > 0
241
254
  end
242
255
  end
243
256
 
@@ -252,7 +265,7 @@ RSpec.describe 'Estimates Integration' do
252
265
  origin_locode: "USSD2"
253
266
  )
254
267
  expect(road_shipping_estimate.data.type).to eq('shipping_road')
255
- expect(road_shipping_estimate.data.mass_g).to be >= 15_000
268
+ expect(road_shipping_estimate.data.mass_g).to be > 0
256
269
  end
257
270
 
258
271
  it "supports creating an estimate using postal codes" do
@@ -266,7 +279,7 @@ RSpec.describe 'Estimates Integration' do
266
279
  origin_postal_code: "90210"
267
280
  )
268
281
  expect(road_shipping_estimate.data.type).to eq('shipping_road')
269
- expect(road_shipping_estimate.data.mass_g).to be >= 4_000
282
+ expect(road_shipping_estimate.data.mass_g).to be > 0
270
283
  end
271
284
 
272
285
  it "supports creating an estimate with an order" do
@@ -277,8 +290,8 @@ RSpec.describe 'Estimates Integration' do
277
290
  origin_locode: "USSD2"
278
291
  )
279
292
  expect(road_shipping_estimate.data.type).to eq('shipping_road')
280
- expect(road_shipping_estimate.data.mass_g).to be >= 15_000
281
- expect(road_shipping_estimate.data.order.amount).to be >= 10_000
293
+ expect(road_shipping_estimate.data.mass_g).to be > 0
294
+ expect(road_shipping_estimate.data.order.amount).to be > 0
282
295
  end
283
296
  end
284
297
 
@@ -293,7 +306,7 @@ RSpec.describe 'Estimates Integration' do
293
306
  origin_locode: "FRMRS"
294
307
  )
295
308
  expect(sea_shipping_estimate.data.type).to eq('shipping_sea')
296
- expect(sea_shipping_estimate.data.mass_g).to be >= 10_000
309
+ expect(sea_shipping_estimate.data.mass_g).to be > 0
297
310
  end
298
311
 
299
312
  it "supports creating an estimate using postal codes" do
@@ -307,7 +320,7 @@ RSpec.describe 'Estimates Integration' do
307
320
  origin_postal_code: "90210"
308
321
  )
309
322
  expect(sea_shipping_estimate.data.type).to eq('shipping_sea')
310
- expect(sea_shipping_estimate.data.mass_g).to be >= 4_000
323
+ expect(sea_shipping_estimate.data.mass_g).to be > 0
311
324
  end
312
325
 
313
326
  it "supports creating an estimate with an order" do
@@ -318,8 +331,8 @@ RSpec.describe 'Estimates Integration' do
318
331
  origin_locode: "USSD2"
319
332
  )
320
333
  expect(sea_shipping_estimate.data.type).to eq('shipping_sea')
321
- expect(sea_shipping_estimate.data.mass_g).to be >= 15_000
322
- expect(sea_shipping_estimate.data.order.amount).to be >= 10_000
334
+ expect(sea_shipping_estimate.data.mass_g).to be > 0
335
+ expect(sea_shipping_estimate.data.order.amount).to be > 0
323
336
  end
324
337
  end
325
338
  end
@@ -1,6 +1,6 @@
1
1
  RSpec.describe 'Orders Integration' do
2
2
  it 'supports create, place, cancel, retrieve and list' do
3
- create_order_response = Patch::Order.create_order(mass_g: 100)
3
+ create_order_response = Patch::Order.create_order(amount: 100, unit: "g")
4
4
  order_id = create_order_response.data.id
5
5
 
6
6
  retrieve_order_response = Patch::Order.retrieve_order(order_id)
@@ -25,20 +25,21 @@ RSpec.describe 'Orders Integration' do
25
25
  )
26
26
 
27
27
  project_id = retrieve_project_response.data.id
28
- average_price_per_tonne_cents_usd = retrieve_project_response.data.average_price_per_tonne_cents_usd
29
28
 
30
- order_mass_g = 100_000
29
+ order_amount = 100_000
31
30
  tonne_per_gram = 1_000_000
32
31
 
33
- create_order_response = Patch::Order.create_order(mass_g: order_mass_g, project_id: project_id)
32
+ create_order_response = Patch::Order
33
+ .create_order(amount: order_amount, unit: "g", project_id: project_id)
34
34
 
35
35
  order = create_order_response.data
36
36
  expect(create_order_response.success).to eq true
37
37
  expect(order.id).not_to be_nil
38
38
  expect(order.created_at).to be_a_kind_of(Time)
39
- expect(order.mass_g).to eq(order_mass_g)
40
- expect(order.price_cents_usd).to be_kind_of(Integer)
41
- expect(order.patch_fee_cents_usd).to be_kind_of(Integer)
39
+ expect(order.amount).to eq(order_amount)
40
+ expect(order.unit).to eq("g")
41
+ expect(order.price).to be_kind_of(Integer)
42
+ expect(order.patch_fee).to be_kind_of(Integer)
42
43
  expect(order.registry_url).not_to be_empty
43
44
  end
44
45
 
@@ -48,10 +49,11 @@ RSpec.describe 'Orders Integration' do
48
49
  )
49
50
 
50
51
  issued_to = { email: 'envimpact@companyb.com', name: 'Company B' }
51
- total_price_cents_usd = 50_00
52
+ total_price = 50_00
52
53
 
53
54
  create_order_response = Patch::Order.create_order(
54
- total_price_cents_usd: total_price_cents_usd,
55
+ total_price: total_price,
56
+ currency: "USD",
55
57
  issued_to: issued_to
56
58
  )
57
59
 
@@ -60,42 +62,21 @@ RSpec.describe 'Orders Integration' do
60
62
  order = create_order_response.data
61
63
 
62
64
  expect(order.id).not_to be_nil
63
- expect(order.price_cents_usd + order.patch_fee_cents_usd).to eq total_price_cents_usd
65
+ expect(order.price + order.patch_fee).to eq total_price
64
66
  expect(order.issued_to.email).to eq(issued_to[:email])
65
67
  expect(order.issued_to.name).to eq(issued_to[:name])
66
68
  end
67
69
 
68
- it 'supports create with a total price' do
69
- retrieve_project_response = Patch::Project.retrieve_project(
70
- Constants::BIOMASS_TEST_PROJECT_ID
71
- )
72
-
73
- project_id = retrieve_project_response.data.id
74
- total_price_cents_usd = 50_00
75
-
76
- create_order_response = Patch::Order.create_order(
77
- total_price_cents_usd: total_price_cents_usd,
78
- project_id: project_id
79
- )
80
-
81
- expect(create_order_response.success).to eq true
82
-
83
- order = create_order_response.data
84
-
85
- expect(order.id).not_to be_nil
86
- expect(order.price_cents_usd + order.patch_fee_cents_usd).to eq total_price_cents_usd
87
- expect(order.registry_url).not_to be_empty
88
- end
89
-
90
70
  it 'supports creation with and querying by metadata' do
91
71
  metadata = { user: 'john doe' }
92
72
 
93
73
  create_order_response =
94
- Patch::Order.create_order(mass_g: 100, metadata: metadata)
74
+ Patch::Order.create_order(amount: 100, unit: "g", metadata: metadata)
95
75
 
96
76
  expect(create_order_response.success).to eq true
97
77
  expect(create_order_response.data.id).not_to be_nil
98
- expect(create_order_response.data.mass_g).to eq(100)
78
+ expect(create_order_response.data.amount).to eq(100)
79
+ expect(create_order_response.data.unit).to eq("g")
99
80
  expect(create_order_response.data.metadata).to eq(metadata)
100
81
 
101
82
  retrieve_orders_response = Patch::Order.retrieve_orders(
@@ -109,11 +90,12 @@ RSpec.describe 'Orders Integration' do
109
90
 
110
91
  it 'supports creation in draft state' do
111
92
  create_order_response =
112
- Patch::Order.create_order(mass_g: 100, state: "draft")
93
+ Patch::Order.create_order(amount: 100, unit: "g", state: "draft")
113
94
 
114
95
  expect(create_order_response.success).to eq true
115
96
  expect(create_order_response.data.id).not_to be_nil
116
- expect(create_order_response.data.mass_g).to eq(100)
97
+ expect(create_order_response.data.amount).to eq(100)
98
+ expect(create_order_response.data.unit).to eq("g")
117
99
  expect(create_order_response.data.state).to eq("draft")
118
100
  end
119
101
 
@@ -144,11 +126,12 @@ RSpec.describe 'Orders Integration' do
144
126
 
145
127
  it 'supports create with a vintage year' do
146
128
  create_order_response =
147
- Patch::Order.create_order(mass_g: 100, vintage_year: 2022)
129
+ Patch::Order.create_order(amount: 100, unit: "g", vintage_year: 2022)
148
130
 
149
131
  expect(create_order_response.success).to eq true
150
132
  expect(create_order_response.data.id).not_to be_nil
151
- expect(create_order_response.data.mass_g).to eq(100)
133
+ expect(create_order_response.data.amount).to eq(100)
134
+ expect(create_order_response.data.unit).to eq("g")
152
135
  end
153
136
 
154
137
  it 'supports create with an amount and unit' do
@@ -159,16 +142,16 @@ RSpec.describe 'Orders Integration' do
159
142
  expect(create_order_response.data.id).not_to be_nil
160
143
  expect(create_order_response.data.amount).to eq(100)
161
144
  expect(create_order_response.data.unit).to eq("g")
162
- expect(create_order_response.data.inventory[0]).to be_an_instance_of(
163
- Patch::OrderInventory
145
+ expect(create_order_response.data.line_items[0]).to be_an_instance_of(
146
+ Patch::OrderLineItem
164
147
  )
165
- expect(create_order_response.data.inventory[0].project).to be_an_instance_of(
166
- Patch::OrderInventoryProject
148
+ expect(create_order_response.data.line_items[0].project).to be_an_instance_of(
149
+ Patch::OrderLineItemProject
167
150
  )
168
- expect(create_order_response.data.inventory[0].unit).to eq("g")
151
+ expect(create_order_response.data.line_items[0].unit).to eq("g")
169
152
  end
170
153
 
171
- it 'supports create with a total price and currency' do
154
+ it 'supports create with a total price and foreign currency' do
172
155
  create_order_response =
173
156
  Patch::Order.create_order(total_price: 100, currency: "EUR")
174
157
 
@@ -178,4 +161,62 @@ RSpec.describe 'Orders Integration' do
178
161
  ).to be_within(1).of(100)
179
162
  expect(create_order_response.data.currency).to eq "EUR"
180
163
  end
164
+
165
+ it 'supports creating an empty draft order and adding/editing line items' do
166
+ # Create empty order
167
+ create_order_response =
168
+ Patch::Order.create_order(state: "draft")
169
+
170
+ expect(create_order_response.success).to eq true
171
+ expect(create_order_response.data.id).not_to be_nil
172
+ expect(create_order_response.data.price).to eq(0)
173
+ expect(create_order_response.data.amount).to eq(0)
174
+ expect(create_order_response.data.line_items).to eq([])
175
+
176
+ # Add project to order
177
+ order_id = create_order_response.data.id
178
+ retrieve_project_response = Patch::Project.retrieve_project(
179
+ Constants::BIOMASS_TEST_PROJECT_ID
180
+ )
181
+ project_id = retrieve_project_response.data.id
182
+
183
+ create_line_item_response = Patch::OrderLineItem
184
+ .create_order_line_item(order_id, { project_id: project_id })
185
+
186
+ expect(create_line_item_response.success).to eq(true)
187
+ expect(create_line_item_response.data.id).not_to be_nil
188
+ expect(create_line_item_response.data.amount).to eq(0)
189
+
190
+ # Update amount on line item
191
+ line_item_id = create_line_item_response.data.id
192
+ update_order_line_item_response = Patch::OrderLineItem
193
+ .update_order_line_item(order_id, line_item_id, { amount: 100000, unit: "g" })
194
+
195
+ expect(update_order_line_item_response.success).to eq(true)
196
+ expect(update_order_line_item_response.data.id).not_to be_nil
197
+ expect(update_order_line_item_response.data.amount).to eq(100000)
198
+ expect(update_order_line_item_response.data.price).to be >= 0
199
+
200
+ # Fetch order and check line item matches
201
+ retrieve_order_response = Patch::Order.retrieve_order(order_id)
202
+ expect(retrieve_order_response.data.id).to eq order_id
203
+ expect(retrieve_order_response.data.line_items.length).to eq(1)
204
+ expect(retrieve_order_response.data.line_items[0].id).to eq(line_item_id)
205
+ expect(retrieve_order_response.data.line_items[0].amount).to eq(100000)
206
+
207
+ # Delete line item
208
+ delete_line_item_response = Patch::OrderLineItem.delete_order_line_item(order_id, line_item_id)
209
+ expect(delete_line_item_response.success).to eq(true)
210
+ expect(delete_line_item_response.data).to eq(line_item_id)
211
+
212
+ # Fetch order and see it has no line items
213
+ retrieve_order_response = Patch::Order.retrieve_order(order_id)
214
+ expect(retrieve_order_response.data.id).to eq order_id
215
+ expect(retrieve_order_response.data.line_items.length).to eq(0)
216
+
217
+ # Delete order
218
+ delete_order_response = Patch::Order.delete_order(order_id)
219
+ expect(delete_order_response.success).to eq(true)
220
+ expect(delete_order_response.data).to eq(order_id)
221
+ end
181
222
  end
@@ -34,7 +34,8 @@ RSpec.describe 'Projects Integration' do
34
34
  minimum_available_mass = 100
35
35
  projects = Patch::Project.retrieve_projects(minimum_available_mass: minimum_available_mass)
36
36
  projects.data.map do |project|
37
- expect(project.remaining_mass_g >= minimum_available_mass).to be true
37
+ project_mass = project.inventory.sum(&:amount_available)
38
+ expect(project_mass >= minimum_available_mass).to be true
38
39
  end
39
40
  end
40
41
 
@@ -45,9 +46,6 @@ RSpec.describe 'Projects Integration' do
45
46
  expect(project.to_hash.keys).to include(*keys)
46
47
 
47
48
  expect(project.photos).to be_an_instance_of(Array)
48
- expect(project.average_price_per_tonne_cents_usd)
49
- .to be_an_instance_of(Integer)
50
- expect(project.remaining_mass_g).to be_an_instance_of(Integer)
51
49
  expect(project.longitude).to be_an_instance_of(Float)
52
50
  expect(project.latitude).to be_an_instance_of(Float)
53
51
 
@@ -29,9 +29,16 @@ describe 'CreateOrderRequest' do
29
29
 
30
30
  it_behaves_like "a generated class" do
31
31
  let(:instance) { @instance }
32
- let(:instance_hash) { { project_id: @instance.project_id, mass_g: @instance.mass_g, total_price_cents_usd: @instance.total_price_cents_usd, metadata: @instance.metadata } }
32
+ let(:instance_hash) { {
33
+ project_id: @instance.project_id,
34
+ amount: @instance.amount,
35
+ unit: @instance.unit,
36
+ total_price: @instance.total_price,
37
+ currency: @instance.currency,
38
+ metadata: @instance.metadata
39
+ } }
33
40
  let(:nullable_properties) do
34
- Set.new(%i[mass_g total_price_cents_usd project_id metadata state vintage_year total_price currency amount unit])
41
+ Set.new(%i[project_id metadata state vintage_year total_price currency amount unit])
35
42
  end
36
43
  end
37
44
 
@@ -40,7 +47,7 @@ describe 'CreateOrderRequest' do
40
47
  expect(@instance).to be_instance_of(Patch::CreateOrderRequest)
41
48
  end
42
49
  end
43
- describe 'test attribute "mass_g"' do
50
+ describe 'test attribute "amount"' do
44
51
  it 'should work' do
45
52
  # assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
46
53
  end
@@ -32,16 +32,17 @@ describe 'Order' do
32
32
  let(:instance_hash) {
33
33
  {
34
34
  id: @instance.id,
35
- mass_g: @instance.mass_g,
35
+ amount: @instance.amount,
36
+ unit: @instance.unit,
36
37
  production: @instance.production,
37
38
  state: @instance.state,
38
- allocation_state: @instance.allocation_state,
39
- price_cents_usd: @instance.price_cents_usd,
40
- patch_fee_cents_usd: @instance.patch_fee_cents_usd,
39
+ price: @instance.price,
40
+ patch_fee: @instance.patch_fee,
41
+ currency: @instance.currency,
41
42
  metadata: @instance.metadata
42
43
  }
43
44
  }
44
- let(:nullable_properties) { Set.new([:patch_fee_cents_usd, :price_cents_usd]) }
45
+ let(:nullable_properties) { Set.new([]) }
45
46
  end
46
47
 
47
48
  describe 'test an instance of Order' do
@@ -55,7 +56,7 @@ describe 'Order' do
55
56
  end
56
57
  end
57
58
 
58
- describe 'test attribute "mass_g"' do
59
+ describe 'test attribute "amount"' do
59
60
  it 'should work' do
60
61
  # assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
61
62
  end
@@ -77,23 +78,7 @@ describe 'Order' do
77
78
  end
78
79
  end
79
80
 
80
- describe 'test attribute "allocation_state"' do
81
- it 'should work' do
82
- # assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
83
- # validator = Petstore::EnumTest::EnumAttributeValidator.new('String', ["pending", "partially_allocated", "allocated"])
84
- # validator.allowable_values.each do |value|
85
- # expect { @instance.allocation_state = value }.not_to raise_error
86
- # end
87
- end
88
- end
89
-
90
- describe 'test attribute "price_cents_usd"' do
91
- it 'should work' do
92
- # assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
93
- end
94
- end
95
-
96
- describe 'test attribute "allocations"' do
81
+ describe 'test attribute "price"' do
97
82
  it 'should work' do
98
83
  # assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
99
84
  end
@@ -35,12 +35,9 @@ describe 'Project' do
35
35
  name: @instance.name,
36
36
  description: @instance.description,
37
37
  production: @instance.production,
38
- type: @instance.type,
39
38
  country: @instance.country,
40
- developer: @instance.developer,
39
+ project_partner: @instance.project_partner,
41
40
  photos: @instance.photos,
42
- average_price_per_tonne_cents_usd: @instance.average_price_per_tonne_cents_usd,
43
- remaining_mass_g: @instance.remaining_mass_g,
44
41
  state: @instance.state,
45
42
  longitude: @instance.longitude,
46
43
  latitude: @instance.latitude,
data/spec/spec_helper.rb CHANGED
@@ -1,9 +1,9 @@
1
1
  =begin
2
- #Patch API V1
2
+ #Patch API V2
3
3
 
4
4
  #The core API used to integrate with Patch's service
5
5
 
6
- The version of the OpenAPI document: v1
6
+ The version of the OpenAPI document: 2
7
7
  Contact: engineering@usepatch.com
8
8
  Generated by: https://openapi-generator.tech
9
9
  OpenAPI Generator version: 5.3.1