patch_ruby 1.24.1 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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