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