patch_ruby 1.11.0 → 1.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +24 -0
- data/Gemfile.lock +1 -1
- data/lib/patch_ruby/api/estimates_api.rb +22 -14
- data/lib/patch_ruby/api/orders_api.rb +7 -2
- data/lib/patch_ruby/api/preferences_api.rb +6 -2
- data/lib/patch_ruby/api/projects_api.rb +2 -0
- data/lib/patch_ruby/api_client.rb +1 -1
- data/lib/patch_ruby/models/create_bitcoin_estimate_request.rb +14 -2
- data/lib/patch_ruby/models/create_ethereum_estimate_request.rb +13 -1
- data/lib/patch_ruby/models/create_flight_estimate_request.rb +2 -0
- data/lib/patch_ruby/models/create_mass_estimate_request.rb +2 -0
- data/lib/patch_ruby/models/create_shipping_estimate_request.rb +2 -0
- data/lib/patch_ruby/models/create_vehicle_estimate_request.rb +2 -0
- data/lib/patch_ruby/models/order.rb +11 -1
- data/lib/patch_ruby/models/parent_technology_type.rb +239 -0
- data/lib/patch_ruby/models/project.rb +80 -5
- data/lib/patch_ruby/models/technology_type.rb +248 -0
- data/lib/patch_ruby/version.rb +1 -1
- data/lib/patch_ruby.rb +2 -0
- data/spec/factories/parent_technology_type.rb +8 -0
- data/spec/factories/projects.rb +7 -0
- data/spec/factories/sdgs.rb +10 -0
- data/spec/factories/technology_type.rb +9 -0
- data/spec/integration/estimates_spec.rb +16 -2
- data/spec/integration/orders_spec.rb +3 -2
- data/spec/integration/projects_spec.rb +18 -1
- data/spec/models/create_mass_estimate_request_spec.rb +1 -1
- data/spec/models/project_spec.rb +10 -2
- metadata +36 -28
data/spec/factories/projects.rb
CHANGED
@@ -1,6 +1,9 @@
|
|
1
1
|
FactoryBot.define do
|
2
2
|
factory :project, class: Patch::Project do
|
3
3
|
sequence(:id) { |n| n }
|
4
|
+
association(:technology_type)
|
5
|
+
sdgs { build_list(:sdg, 1) }
|
6
|
+
|
4
7
|
production { false }
|
5
8
|
name { "New Project" }
|
6
9
|
description { "New Descirption" }
|
@@ -11,5 +14,9 @@ FactoryBot.define do
|
|
11
14
|
average_price_per_tonne_cents_usd { 120 }
|
12
15
|
remaining_mass_g { 1_000 }
|
13
16
|
standard { 'european_biochar_certificate' }
|
17
|
+
state { 'CO' }
|
18
|
+
latitude { 45.0 }
|
19
|
+
longitude { 45.0 }
|
20
|
+
mechanism { 'removal' }
|
14
21
|
end
|
15
22
|
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
FactoryBot.define do
|
4
|
+
factory :sdg, class: Patch::Sdg do
|
5
|
+
description { "Take urgent action to combat climate change and its impacts." }
|
6
|
+
number { 13 }
|
7
|
+
title { "Climate Action" }
|
8
|
+
url { "https://sdgs.un.org/goals/goal13" }
|
9
|
+
end
|
10
|
+
end
|
@@ -56,11 +56,12 @@ RSpec.describe 'Estimates Integration' do
|
|
56
56
|
make: make,
|
57
57
|
model: model,
|
58
58
|
year: year,
|
59
|
-
create_order:
|
59
|
+
create_order: true
|
60
60
|
)
|
61
61
|
|
62
62
|
expect(vehicle_estimate.data.type).to eq 'vehicle'
|
63
63
|
expect(vehicle_estimate.data.mass_g).to eq 5_500
|
64
|
+
expect(vehicle_estimate.data.order.mass_g).to eq 5_500
|
64
65
|
end
|
65
66
|
|
66
67
|
it 'supports creating vehicle estimates with partial information' do
|
@@ -91,7 +92,7 @@ RSpec.describe 'Estimates Integration' do
|
|
91
92
|
|
92
93
|
|
93
94
|
it 'supports creating bitcoin estimates with partial information' do
|
94
|
-
bitcoin_estimate = Patch::Estimate.create_bitcoin_estimate(
|
95
|
+
bitcoin_estimate = Patch::Estimate.create_bitcoin_estimate()
|
95
96
|
|
96
97
|
expect(bitcoin_estimate.data.type).to eq 'bitcoin'
|
97
98
|
expect(bitcoin_estimate.data.mass_g).to be >= 2_000
|
@@ -123,6 +124,19 @@ RSpec.describe 'Estimates Integration' do
|
|
123
124
|
expect(bitcoin_estimate_1.data.mass_g).to be > bitcoin_estimate_2.data.mass_g # Bitcoin was emitting less in July 2021 than in June
|
124
125
|
end
|
125
126
|
|
127
|
+
it 'supports creating bitcoin estimates with a average_daily_balance_btc_sats' do
|
128
|
+
bitcoin_estimate_1 = Patch::Estimate.create_bitcoin_estimate(
|
129
|
+
average_daily_balance_btc_sats: 1000000
|
130
|
+
)
|
131
|
+
|
132
|
+
bitcoin_estimate_2 = Patch::Estimate.create_bitcoin_estimate(
|
133
|
+
average_daily_balance_btc_sats: 10000000
|
134
|
+
)
|
135
|
+
|
136
|
+
expect(bitcoin_estimate_1.data.type).to eq 'bitcoin'
|
137
|
+
expect(bitcoin_estimate_1.data.mass_g).to be < bitcoin_estimate_2.data.mass_g
|
138
|
+
end
|
139
|
+
|
126
140
|
it 'supports creating ethereum estimates with a gas amount' do
|
127
141
|
ethereum_estimate = Patch::Estimate.create_ethereum_estimate(
|
128
142
|
gas_used: 100
|
@@ -37,6 +37,7 @@ RSpec.describe 'Orders Integration' do
|
|
37
37
|
order = create_order_response.data
|
38
38
|
expect(create_order_response.success).to eq true
|
39
39
|
expect(order.id).not_to be_nil
|
40
|
+
expect(order.created_at).to be_a_kind_of(Time)
|
40
41
|
expect(order.mass_g).to eq(order_mass_g)
|
41
42
|
expect(order.price_cents_usd).to be_between(expected_price - 2, expected_price + 2)
|
42
43
|
expect(order.patch_fee_cents_usd).to be_kind_of(Integer)
|
@@ -86,13 +87,13 @@ RSpec.describe 'Orders Integration' do
|
|
86
87
|
end
|
87
88
|
|
88
89
|
it 'supports place and cancel for orders created via an estimate' do
|
89
|
-
create_estimate_to_place_response = Patch::Estimate.create_mass_estimate(mass_g: 100)
|
90
|
+
create_estimate_to_place_response = Patch::Estimate.create_mass_estimate(mass_g: 100, create_order: true)
|
90
91
|
order_to_place_id = create_estimate_to_place_response.data.order.id
|
91
92
|
|
92
93
|
place_order_response = Patch::Order.place_order(order_to_place_id)
|
93
94
|
expect(place_order_response.data.state).to eq 'placed'
|
94
95
|
|
95
|
-
create_estimate_to_cancel_response = Patch::Estimate.create_mass_estimate(mass_g: 100)
|
96
|
+
create_estimate_to_cancel_response = Patch::Estimate.create_mass_estimate(mass_g: 100, create_order: true)
|
96
97
|
order_to_cancel_id = create_estimate_to_cancel_response.data.order.id
|
97
98
|
|
98
99
|
cancel_order_response = Patch::Order.cancel_order(order_to_cancel_id)
|
@@ -42,9 +42,26 @@ RSpec.describe 'Projects Integration' do
|
|
42
42
|
it 'returns the expected fields' do
|
43
43
|
project = Patch::Project.retrieve_projects(page: 1).data.first
|
44
44
|
|
45
|
+
keys = attributes_for(:project).keys
|
46
|
+
expect(project.to_hash.keys).to include(*keys)
|
47
|
+
|
45
48
|
expect(project.photos).to be_an_instance_of(Array)
|
46
|
-
expect(project.average_price_per_tonne_cents_usd)
|
49
|
+
expect(project.average_price_per_tonne_cents_usd)
|
50
|
+
.to be_an_instance_of(Integer)
|
47
51
|
expect(project.remaining_mass_g).to be_an_instance_of(Integer)
|
52
|
+
expect(project.state).to be_an_instance_of(String)
|
53
|
+
expect(project.longitude).to be_an_instance_of(Float)
|
54
|
+
expect(project.latitude).to be_an_instance_of(Float)
|
55
|
+
|
56
|
+
expect(project.technology_type)
|
57
|
+
.to be_an_instance_of(Patch::TechnologyType)
|
58
|
+
expect(project.technology_type.name).to be_an_instance_of(String)
|
59
|
+
expect(project.technology_type.slug).to be_an_instance_of(String)
|
60
|
+
|
61
|
+
parent_type = project.technology_type.parent_technology_type
|
62
|
+
expect(parent_type).to be_an_instance_of(Patch::ParentTechnologyType)
|
63
|
+
expect(parent_type.name).to be_an_instance_of(String)
|
64
|
+
expect(parent_type.slug).to be_an_instance_of(String)
|
48
65
|
end
|
49
66
|
end
|
50
67
|
end
|
@@ -29,7 +29,7 @@ describe 'CreateMassEstimateRequest' 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 } }
|
32
|
+
let(:instance_hash) { { project_id: @instance.project_id, mass_g: @instance.mass_g, create_order: @instance.create_order } }
|
33
33
|
let(:nullable_properties) { Set.new([:create_order]) }
|
34
34
|
end
|
35
35
|
|
data/spec/models/project_spec.rb
CHANGED
@@ -41,10 +41,18 @@ describe 'Project' do
|
|
41
41
|
photos: @instance.photos,
|
42
42
|
average_price_per_tonne_cents_usd: @instance.average_price_per_tonne_cents_usd,
|
43
43
|
remaining_mass_g: @instance.remaining_mass_g,
|
44
|
-
|
44
|
+
state: @instance.state,
|
45
|
+
longitude: @instance.longitude,
|
46
|
+
latitude: @instance.latitude,
|
47
|
+
standard: @instance.standard,
|
48
|
+
mechanism: @instance.mechanism,
|
49
|
+
technology_type: @instance.technology_type.to_hash,
|
50
|
+
sdgs: @instance.sdgs.map(&:to_hash)
|
45
51
|
}
|
46
52
|
}
|
47
|
-
let(:nullable_properties)
|
53
|
+
let(:nullable_properties) do
|
54
|
+
Set.new(%i[photos standard sdgs state latitude longitude tagline])
|
55
|
+
end
|
48
56
|
end
|
49
57
|
|
50
58
|
describe 'test an instance of Project' do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: patch_ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.14.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Patch Technology
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-09-
|
11
|
+
date: 2021-09-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: typhoeus
|
@@ -118,6 +118,7 @@ files:
|
|
118
118
|
- lib/patch_ruby/models/order.rb
|
119
119
|
- lib/patch_ruby/models/order_list_response.rb
|
120
120
|
- lib/patch_ruby/models/order_response.rb
|
121
|
+
- lib/patch_ruby/models/parent_technology_type.rb
|
121
122
|
- lib/patch_ruby/models/photo.rb
|
122
123
|
- lib/patch_ruby/models/preference.rb
|
123
124
|
- lib/patch_ruby/models/preference_list_response.rb
|
@@ -127,6 +128,7 @@ files:
|
|
127
128
|
- lib/patch_ruby/models/project_response.rb
|
128
129
|
- lib/patch_ruby/models/sdg.rb
|
129
130
|
- lib/patch_ruby/models/standard.rb
|
131
|
+
- lib/patch_ruby/models/technology_type.rb
|
130
132
|
- lib/patch_ruby/version.rb
|
131
133
|
- patch_ruby.gemspec
|
132
134
|
- spec/api/estimates_api_spec.rb
|
@@ -148,12 +150,15 @@ files:
|
|
148
150
|
- spec/factories/order_list_responses.rb
|
149
151
|
- spec/factories/order_responses.rb
|
150
152
|
- spec/factories/orders.rb
|
153
|
+
- spec/factories/parent_technology_type.rb
|
151
154
|
- spec/factories/preference_list_responses.rb
|
152
155
|
- spec/factories/preference_responses.rb
|
153
156
|
- spec/factories/preferences.rb
|
154
157
|
- spec/factories/project_list_responses.rb
|
155
158
|
- spec/factories/project_responses.rb
|
156
159
|
- spec/factories/projects.rb
|
160
|
+
- spec/factories/sdgs.rb
|
161
|
+
- spec/factories/technology_type.rb
|
157
162
|
- spec/integration/estimates_spec.rb
|
158
163
|
- spec/integration/orders_spec.rb
|
159
164
|
- spec/integration/preferences_spec.rb
|
@@ -203,53 +208,56 @@ signing_key:
|
|
203
208
|
specification_version: 4
|
204
209
|
summary: Ruby wrapper for the Patch API
|
205
210
|
test_files:
|
206
|
-
- spec/api/orders_api_spec.rb
|
207
211
|
- spec/api/projects_api_spec.rb
|
208
|
-
- spec/api/preferences_api_spec.rb
|
209
212
|
- spec/api/estimates_api_spec.rb
|
213
|
+
- spec/api/preferences_api_spec.rb
|
214
|
+
- spec/api/orders_api_spec.rb
|
210
215
|
- spec/api_client_spec.rb
|
211
216
|
- spec/configuration_spec.rb
|
212
217
|
- spec/constants.rb
|
213
|
-
- spec/factories/preferences.rb
|
214
|
-
- spec/factories/create_order_requests.rb
|
215
|
-
- spec/factories/order_list_responses.rb
|
216
|
-
- spec/factories/projects.rb
|
217
|
-
- spec/factories/estimate_list_responses.rb
|
218
218
|
- spec/factories/create_preference_requests.rb
|
219
|
-
- spec/factories/
|
220
|
-
- spec/factories/
|
219
|
+
- spec/factories/preference_list_responses.rb
|
220
|
+
- spec/factories/allocations.rb
|
221
221
|
- spec/factories/estimates.rb
|
222
|
-
- spec/factories/order_responses.rb
|
223
222
|
- spec/factories/create_mass_estimate_requests.rb
|
224
|
-
- spec/factories/preference_list_responses.rb
|
225
|
-
- spec/factories/estimate_responses.rb
|
226
|
-
- spec/factories/meta_index_objects.rb
|
227
223
|
- spec/factories/project_responses.rb
|
228
|
-
- spec/factories/
|
224
|
+
- spec/factories/estimate_list_responses.rb
|
225
|
+
- spec/factories/meta_index_objects.rb
|
229
226
|
- spec/factories/project_list_responses.rb
|
230
|
-
- spec/factories/
|
227
|
+
- spec/factories/orders.rb
|
228
|
+
- spec/factories/preference_responses.rb
|
229
|
+
- spec/factories/error_responses.rb
|
230
|
+
- spec/factories/estimate_responses.rb
|
231
|
+
- spec/factories/order_responses.rb
|
232
|
+
- spec/factories/technology_type.rb
|
233
|
+
- spec/factories/preferences.rb
|
234
|
+
- spec/factories/order_list_responses.rb
|
235
|
+
- spec/factories/projects.rb
|
236
|
+
- spec/factories/create_order_requests.rb
|
237
|
+
- spec/factories/parent_technology_type.rb
|
238
|
+
- spec/factories/sdgs.rb
|
239
|
+
- spec/integration/estimates_spec.rb
|
231
240
|
- spec/integration/projects_spec.rb
|
232
241
|
- spec/integration/preferences_spec.rb
|
233
|
-
- spec/integration/estimates_spec.rb
|
234
242
|
- spec/integration/orders_spec.rb
|
235
|
-
- spec/models/error_response_spec.rb
|
236
243
|
- spec/models/create_order_request_spec.rb
|
237
|
-
- spec/models/
|
244
|
+
- spec/models/project_list_response_spec.rb
|
238
245
|
- spec/models/preference_list_response_spec.rb
|
246
|
+
- spec/models/order_list_response_spec.rb
|
239
247
|
- spec/models/project_response_spec.rb
|
240
|
-
- spec/models/
|
241
|
-
- spec/models/
|
248
|
+
- spec/models/create_mass_estimate_request_spec.rb
|
249
|
+
- spec/models/order_spec.rb
|
242
250
|
- spec/models/preference_spec.rb
|
251
|
+
- spec/models/error_response_spec.rb
|
252
|
+
- spec/models/allocation_spec.rb
|
243
253
|
- spec/models/order_response_spec.rb
|
244
|
-
- spec/models/
|
245
|
-
- spec/models/order_list_response_spec.rb
|
254
|
+
- spec/models/estimate_response_spec.rb
|
246
255
|
- spec/models/create_preference_request_spec.rb
|
256
|
+
- spec/models/project_spec.rb
|
257
|
+
- spec/models/estimate_list_response_spec.rb
|
258
|
+
- spec/models/estimate_spec.rb
|
247
259
|
- spec/models/meta_index_object_spec.rb
|
248
|
-
- spec/models/order_spec.rb
|
249
260
|
- spec/models/preference_response_spec.rb
|
250
|
-
- spec/models/estimate_response_spec.rb
|
251
|
-
- spec/models/project_spec.rb
|
252
|
-
- spec/models/allocation_spec.rb
|
253
261
|
- spec/patch_ruby_spec.rb
|
254
262
|
- spec/spec_helper.rb
|
255
263
|
- spec/support/shared/generated_classes.rb
|