global-registry-bindings 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +4 -0
- data/lib/global_registry_bindings/entity/push_entity_methods.rb +28 -0
- data/lib/global_registry_bindings/options/entity_class_options.rb +1 -0
- data/lib/global_registry_bindings/options/entity_instance_options.rb +1 -0
- data/lib/global_registry_bindings/options/entity_options_parser.rb +3 -1
- data/lib/global_registry_bindings/version.rb +1 -1
- data/spec/acceptance/global_registry_bindings_spec.rb +1 -1
- data/spec/factories/factories.rb +1 -0
- data/spec/internal/app/models/namespaced/person.rb +1 -0
- data/spec/internal/config/database.yml +2 -2
- data/spec/internal/db/schema.rb +1 -2
- data/spec/internal/db/test.sqlite +0 -0
- data/spec/internal/log/test.log +25887 -0
- data/spec/spec_helper.rb +5 -1
- data/spec/workers/push_entity_worker_spec.rb +48 -44
- metadata +26 -18
data/spec/spec_helper.rb
CHANGED
@@ -8,7 +8,11 @@ require 'active_record'
|
|
8
8
|
ActiveRecord::Migration.verbose = false
|
9
9
|
|
10
10
|
require 'combustion'
|
11
|
-
Combustion.initialize! :active_record
|
11
|
+
Combustion.initialize! :active_record do
|
12
|
+
if config.active_record.sqlite3.respond_to?(:represent_boolean_as_integer)
|
13
|
+
config.active_record.sqlite3.represent_boolean_as_integer = true
|
14
|
+
end
|
15
|
+
end
|
12
16
|
|
13
17
|
require 'rspec/rails'
|
14
18
|
require 'webmock/rspec'
|
@@ -18,6 +18,17 @@ RSpec.describe GlobalRegistry::Bindings::Workers::PushEntityWorker do
|
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
+
context 'with valid id and fingerprint' do
|
22
|
+
it 'should call #push_entity_to_global_registry' do
|
23
|
+
expect(Namespaced::Person).to receive(:find).with(person.id).and_return(person)
|
24
|
+
|
25
|
+
worker = GlobalRegistry::Bindings::Workers::PushEntityWorker.new
|
26
|
+
expect(worker).to receive(:push_entity_to_global_registry)
|
27
|
+
worker.perform('Namespaced::Person', person.id)
|
28
|
+
expect(worker.model).to be person
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
21
32
|
context 'with invalid id' do
|
22
33
|
it 'should fail silently' do
|
23
34
|
expect(Namespaced::Person).to receive(:find).with(person.id).and_raise(ActiveRecord::RecordNotFound)
|
@@ -116,8 +127,16 @@ RSpec.describe GlobalRegistry::Bindings::Workers::PushEntityWorker do
|
|
116
127
|
|
117
128
|
describe Namespaced::Person do
|
118
129
|
let(:worker) { GlobalRegistry::Bindings::Workers::PushEntityWorker.new person }
|
130
|
+
let(:entity_body) do
|
131
|
+
{ entity: { person: { first_name: 'Tony', last_name: 'Stark',
|
132
|
+
client_integration_id: person.id,
|
133
|
+
client_updated_at: '2001-02-03 00:00:00',
|
134
|
+
authentication: {
|
135
|
+
key_guid: '98711710-acb5-4a41-ba51-e0fc56644b53'
|
136
|
+
} } } }
|
137
|
+
end
|
119
138
|
context 'as create' do
|
120
|
-
let(:person) { create(:person) }
|
139
|
+
let(:person) { create(:person, global_registry_fingerprint: 'abc123') }
|
121
140
|
|
122
141
|
context '\'person\' entity_type does not exist' do
|
123
142
|
let!(:requests) do
|
@@ -136,12 +155,7 @@ RSpec.describe GlobalRegistry::Bindings::Workers::PushEntityWorker do
|
|
136
155
|
field_type: 'string' } })
|
137
156
|
.to_return(status: 200),
|
138
157
|
stub_request(:post, 'https://backend.global-registry.org/entities')
|
139
|
-
.with(body:
|
140
|
-
client_integration_id: person.id,
|
141
|
-
client_updated_at: '2001-02-03 00:00:00',
|
142
|
-
authentication: {
|
143
|
-
key_guid: '98711710-acb5-4a41-ba51-e0fc56644b53'
|
144
|
-
} } } })
|
158
|
+
.with(body: entity_body)
|
145
159
|
.to_return(body: file_fixture('post_entities_person.json'), status: 200)]
|
146
160
|
end
|
147
161
|
|
@@ -149,6 +163,7 @@ RSpec.describe GlobalRegistry::Bindings::Workers::PushEntityWorker do
|
|
149
163
|
worker.push_entity_to_global_registry
|
150
164
|
requests.each { |r| expect(r).to have_been_requested.once }
|
151
165
|
expect(person.global_registry_id).to eq '22527d88-3cba-11e7-b876-129bd0521531'
|
166
|
+
expect(person.global_registry_fingerprint).to eq '4c671c203b5dd19cdc1920ba5434cf64'
|
152
167
|
end
|
153
168
|
end
|
154
169
|
|
@@ -158,12 +173,7 @@ RSpec.describe GlobalRegistry::Bindings::Workers::PushEntityWorker do
|
|
158
173
|
.with(query: { 'filters[name]' => 'person', 'filters[parent_id]' => nil })
|
159
174
|
.to_return(body: file_fixture('get_entity_types_person.json'), status: 200),
|
160
175
|
stub_request(:post, 'https://backend.global-registry.org/entities')
|
161
|
-
.with(body:
|
162
|
-
client_integration_id: person.id,
|
163
|
-
client_updated_at: '2001-02-03 00:00:00',
|
164
|
-
authentication: {
|
165
|
-
key_guid: '98711710-acb5-4a41-ba51-e0fc56644b53'
|
166
|
-
} } } })
|
176
|
+
.with(body: entity_body)
|
167
177
|
.to_return(body: file_fixture('post_entities_person.json'), status: 200)]
|
168
178
|
end
|
169
179
|
|
@@ -171,6 +181,7 @@ RSpec.describe GlobalRegistry::Bindings::Workers::PushEntityWorker do
|
|
171
181
|
worker.push_entity_to_global_registry
|
172
182
|
requests.each { |r| expect(r).to have_been_requested.once }
|
173
183
|
expect(person.global_registry_id).to eq '22527d88-3cba-11e7-b876-129bd0521531'
|
184
|
+
expect(person.global_registry_fingerprint).to eq '4c671c203b5dd19cdc1920ba5434cf64'
|
174
185
|
end
|
175
186
|
end
|
176
187
|
|
@@ -184,12 +195,7 @@ RSpec.describe GlobalRegistry::Bindings::Workers::PushEntityWorker do
|
|
184
195
|
field_type: 'string' } })
|
185
196
|
.to_return(status: 200),
|
186
197
|
stub_request(:post, 'https://backend.global-registry.org/entities')
|
187
|
-
.with(body:
|
188
|
-
client_integration_id: person.id,
|
189
|
-
client_updated_at: '2001-02-03 00:00:00',
|
190
|
-
authentication: {
|
191
|
-
key_guid: '98711710-acb5-4a41-ba51-e0fc56644b53'
|
192
|
-
} } } })
|
198
|
+
.with(body: entity_body)
|
193
199
|
.to_return(body: file_fixture('post_entities_person.json'), status: 200)]
|
194
200
|
end
|
195
201
|
|
@@ -197,6 +203,7 @@ RSpec.describe GlobalRegistry::Bindings::Workers::PushEntityWorker do
|
|
197
203
|
worker.push_entity_to_global_registry
|
198
204
|
requests.each { |r| expect(r).to have_been_requested.once }
|
199
205
|
expect(person.global_registry_id).to eq '22527d88-3cba-11e7-b876-129bd0521531'
|
206
|
+
expect(person.global_registry_fingerprint).to eq '4c671c203b5dd19cdc1920ba5434cf64'
|
200
207
|
end
|
201
208
|
end
|
202
209
|
|
@@ -208,22 +215,21 @@ RSpec.describe GlobalRegistry::Bindings::Workers::PushEntityWorker do
|
|
208
215
|
|
209
216
|
it 'should skip creating entity_type and push the entity' do
|
210
217
|
request = stub_request(:post, 'https://backend.global-registry.org/entities')
|
211
|
-
.with(body:
|
212
|
-
client_integration_id: person.id,
|
213
|
-
client_updated_at: '2001-02-03 00:00:00',
|
214
|
-
authentication: {
|
215
|
-
key_guid: '98711710-acb5-4a41-ba51-e0fc56644b53'
|
216
|
-
} } } })
|
218
|
+
.with(body: entity_body)
|
217
219
|
.to_return(body: file_fixture('post_entities_person.json'), status: 200)
|
218
220
|
worker.push_entity_to_global_registry
|
219
221
|
expect(request).to have_been_requested.once
|
220
222
|
expect(person.global_registry_id).to eq '22527d88-3cba-11e7-b876-129bd0521531'
|
223
|
+
expect(person.global_registry_fingerprint).to eq '4c671c203b5dd19cdc1920ba5434cf64'
|
221
224
|
end
|
222
225
|
end
|
223
226
|
end
|
224
227
|
|
225
228
|
context 'as an update' do
|
226
|
-
let(:person)
|
229
|
+
let(:person) do
|
230
|
+
create(:person, global_registry_id: 'f8d20318-2ff2-4a98-a5eb-e9d840508bf1',
|
231
|
+
global_registry_fingerprint: 'abc123')
|
232
|
+
end
|
227
233
|
context '\'person\' entity_type is cached' do
|
228
234
|
before :each do
|
229
235
|
person_entity_types = JSON.parse(file_fixture('get_entity_types_person.json').read)
|
@@ -233,12 +239,7 @@ RSpec.describe GlobalRegistry::Bindings::Workers::PushEntityWorker do
|
|
233
239
|
it 'should skip creating entity_type and update the entity' do
|
234
240
|
request = stub_request(:put,
|
235
241
|
'https://backend.global-registry.org/entities/f8d20318-2ff2-4a98-a5eb-e9d840508bf1')
|
236
|
-
.with(body:
|
237
|
-
client_integration_id: person.id,
|
238
|
-
client_updated_at: '2001-02-03 00:00:00',
|
239
|
-
authentication: {
|
240
|
-
key_guid: '98711710-acb5-4a41-ba51-e0fc56644b53'
|
241
|
-
} } } })
|
242
|
+
.with(body: entity_body)
|
242
243
|
.to_return(body: file_fixture('post_entities_person.json'), status: 200)
|
243
244
|
worker.push_entity_to_global_registry
|
244
245
|
expect(request).to have_been_requested.once
|
@@ -248,20 +249,10 @@ RSpec.describe GlobalRegistry::Bindings::Workers::PushEntityWorker do
|
|
248
249
|
let!(:requests) do
|
249
250
|
[stub_request(:put,
|
250
251
|
'https://backend.global-registry.org/entities/f8d20318-2ff2-4a98-a5eb-e9d840508bf1')
|
251
|
-
.with(body:
|
252
|
-
client_integration_id: person.id,
|
253
|
-
client_updated_at: '2001-02-03 00:00:00',
|
254
|
-
authentication: {
|
255
|
-
key_guid: '98711710-acb5-4a41-ba51-e0fc56644b53'
|
256
|
-
} } } })
|
252
|
+
.with(body: entity_body)
|
257
253
|
.to_return(status: 404),
|
258
254
|
stub_request(:post, 'https://backend.global-registry.org/entities')
|
259
|
-
.with(body:
|
260
|
-
client_integration_id: person.id,
|
261
|
-
client_updated_at: '2001-02-03 00:00:00',
|
262
|
-
authentication: {
|
263
|
-
key_guid: '98711710-acb5-4a41-ba51-e0fc56644b53'
|
264
|
-
} } } })
|
255
|
+
.with(body: entity_body)
|
265
256
|
.to_return(body: file_fixture('post_entities_person.json'), status: 200)]
|
266
257
|
end
|
267
258
|
|
@@ -269,6 +260,19 @@ RSpec.describe GlobalRegistry::Bindings::Workers::PushEntityWorker do
|
|
269
260
|
worker.push_entity_to_global_registry
|
270
261
|
requests.each { |r| expect(r).to have_been_requested.once }
|
271
262
|
expect(person.global_registry_id).to eq '22527d88-3cba-11e7-b876-129bd0521531'
|
263
|
+
expect(person.global_registry_fingerprint).to eq '4c671c203b5dd19cdc1920ba5434cf64'
|
264
|
+
end
|
265
|
+
end
|
266
|
+
|
267
|
+
context 'fingerprints match' do
|
268
|
+
it 'should do nothing' do
|
269
|
+
request = stub_request(:put,
|
270
|
+
'https://backend.global-registry.org/entities/f8d20318-2ff2-4a98-a5eb-e9d840508bf1')
|
271
|
+
.with(body: entity_body)
|
272
|
+
.to_return(body: file_fixture('post_entities_person.json'), status: 200)
|
273
|
+
person.global_registry_fingerprint = '4c671c203b5dd19cdc1920ba5434cf64'
|
274
|
+
worker.push_entity_to_global_registry
|
275
|
+
expect(request).not_to have_been_requested
|
272
276
|
end
|
273
277
|
end
|
274
278
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: global-registry-bindings
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brian Zoetewey
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-01-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -90,6 +90,26 @@ dependencies:
|
|
90
90
|
- - "<"
|
91
91
|
- !ruby/object:Gem::Version
|
92
92
|
version: '6'
|
93
|
+
- !ruby/object:Gem::Dependency
|
94
|
+
name: deepsort
|
95
|
+
requirement: !ruby/object:Gem::Requirement
|
96
|
+
requirements:
|
97
|
+
- - ">="
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: 0.4.1
|
100
|
+
- - "<"
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: 1.0.0
|
103
|
+
type: :runtime
|
104
|
+
prerelease: false
|
105
|
+
version_requirements: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - ">="
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: 0.4.1
|
110
|
+
- - "<"
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: 1.0.0
|
93
113
|
- !ruby/object:Gem::Dependency
|
94
114
|
name: appraisal
|
95
115
|
requirement: !ruby/object:Gem::Requirement
|
@@ -110,14 +130,14 @@ dependencies:
|
|
110
130
|
requirements:
|
111
131
|
- - "~>"
|
112
132
|
- !ruby/object:Gem::Version
|
113
|
-
version:
|
133
|
+
version: '1.0'
|
114
134
|
type: :development
|
115
135
|
prerelease: false
|
116
136
|
version_requirements: !ruby/object:Gem::Requirement
|
117
137
|
requirements:
|
118
138
|
- - "~>"
|
119
139
|
- !ruby/object:Gem::Version
|
120
|
-
version:
|
140
|
+
version: '1.0'
|
121
141
|
- !ruby/object:Gem::Dependency
|
122
142
|
name: rails
|
123
143
|
requirement: !ruby/object:Gem::Requirement
|
@@ -216,20 +236,6 @@ dependencies:
|
|
216
236
|
- - '='
|
217
237
|
- !ruby/object:Gem::Version
|
218
238
|
version: 0.48.1
|
219
|
-
- !ruby/object:Gem::Dependency
|
220
|
-
name: database_cleaner
|
221
|
-
requirement: !ruby/object:Gem::Requirement
|
222
|
-
requirements:
|
223
|
-
- - ">="
|
224
|
-
- !ruby/object:Gem::Version
|
225
|
-
version: '0'
|
226
|
-
type: :development
|
227
|
-
prerelease: false
|
228
|
-
version_requirements: !ruby/object:Gem::Requirement
|
229
|
-
requirements:
|
230
|
-
- - ">="
|
231
|
-
- !ruby/object:Gem::Version
|
232
|
-
version: '0'
|
233
239
|
- !ruby/object:Gem::Dependency
|
234
240
|
name: sqlite3
|
235
241
|
requirement: !ruby/object:Gem::Requirement
|
@@ -395,6 +401,7 @@ files:
|
|
395
401
|
- spec/internal/config/initializers/global_registry.rb
|
396
402
|
- spec/internal/config/routes.rb
|
397
403
|
- spec/internal/db/schema.rb
|
404
|
+
- spec/internal/db/test.sqlite
|
398
405
|
- spec/internal/log/test.log
|
399
406
|
- spec/models/address_spec.rb
|
400
407
|
- spec/models/assignment_spec.rb
|
@@ -449,6 +456,7 @@ test_files:
|
|
449
456
|
- spec/internal/config/database.yml
|
450
457
|
- spec/internal/config/initializers/global_registry.rb
|
451
458
|
- spec/internal/db/schema.rb
|
459
|
+
- spec/internal/db/test.sqlite
|
452
460
|
- spec/internal/log/test.log
|
453
461
|
- spec/models/person_spec.rb
|
454
462
|
- spec/models/testing_spec.rb
|