mas-rad_core 0.0.80 → 0.0.81
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/app/jobs/index_firm_job.rb +5 -1
- data/app/models/firm.rb +5 -1
- data/app/models/principal.rb +1 -24
- data/lib/mas/rad_core/version.rb +1 -1
- data/spec/dummy/log/test.log +0 -0
- data/spec/jobs/index_firm_job_spec.rb +7 -1
- data/spec/models/firm_spec.rb +1 -4
- data/spec/models/principal_spec.rb +19 -205
- metadata +2 -4
- data/spec/support/shared_examples/at_least_one_remote_firm.rb +0 -53
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e2f8947dfc7c45c34e1998ca8af771722f43f493
|
4
|
+
data.tar.gz: 6885e9c568e5100b60f6794e2416a6b59f88db2a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c715b56726070f6f800e7155434b4d418207bc22f776d19b0131997bd8f73c847928e26181a613007fad7939f7cd6d42253df5bbe41600c1a16c2e71bdc62860
|
7
|
+
data.tar.gz: 4ac0dec58ce440793367fbe0b3e56655cae7daf6981d4797cfd57adf322b14ac5a02709bfe2642be7db191e4392b3a71c6635d5d6e5cad83f58978dbc4e2bd81
|
data/app/jobs/index_firm_job.rb
CHANGED
data/app/models/firm.rb
CHANGED
@@ -126,6 +126,10 @@ class Firm < ActiveRecord::Base
|
|
126
126
|
to: :main_office,
|
127
127
|
allow_nil: true
|
128
128
|
|
129
|
+
# A heuristic that allows us to infer validity
|
130
|
+
#
|
131
|
+
# This method is basically a cheap way to answer the question: has this
|
132
|
+
# record ever been saved with validation enabled?
|
129
133
|
def registered?
|
130
134
|
email_address.present?
|
131
135
|
end
|
@@ -195,7 +199,7 @@ class Firm < ActiveRecord::Base
|
|
195
199
|
end
|
196
200
|
|
197
201
|
def publishable?
|
198
|
-
|
202
|
+
registered? && offices.any? && !missing_advisers?
|
199
203
|
end
|
200
204
|
|
201
205
|
def missing_advisers?
|
data/app/models/principal.rb
CHANGED
@@ -71,35 +71,12 @@ class Principal < ActiveRecord::Base
|
|
71
71
|
"#{first_name} #{last_name}"
|
72
72
|
end
|
73
73
|
|
74
|
-
def next_onboarding_action
|
75
|
-
registered_firms = main_firm_with_trading_names.registered
|
76
|
-
|
77
|
-
case
|
78
|
-
when registered_firms.empty?
|
79
|
-
:complete_a_firm
|
80
|
-
when any_remote_firms?(registered_firms)
|
81
|
-
:onboarded
|
82
|
-
when needs_advisers?(registered_firms)
|
83
|
-
:complete_an_adviser
|
84
|
-
else
|
85
|
-
:onboarded
|
86
|
-
end
|
87
|
-
end
|
88
|
-
|
89
74
|
def onboarded?
|
90
|
-
|
75
|
+
main_firm_with_trading_names.any?(&:publishable?)
|
91
76
|
end
|
92
77
|
|
93
78
|
private
|
94
79
|
|
95
|
-
def any_remote_firms?(firm_list)
|
96
|
-
firm_list.any? { |f| f.primary_advice_method == :remote }
|
97
|
-
end
|
98
|
-
|
99
|
-
def needs_advisers?(firm_list)
|
100
|
-
firm_list.none? { |f| f.advisers.present? }
|
101
|
-
end
|
102
|
-
|
103
80
|
def find_subsidiary(subsidiary)
|
104
81
|
firm.subsidiaries.find_or_initialize_by(
|
105
82
|
registered_name: subsidiary.name,
|
data/lib/mas/rad_core/version.rb
CHANGED
data/spec/dummy/log/test.log
CHANGED
Binary file
|
@@ -1,6 +1,7 @@
|
|
1
1
|
RSpec.describe IndexFirmJob, '#perform' do
|
2
2
|
let(:repository) { instance_double(FirmRepository) }
|
3
|
-
let(:
|
3
|
+
let(:firm_id) { 3 }
|
4
|
+
let(:firm) { Firm.new(id: firm_id) }
|
4
5
|
|
5
6
|
before do
|
6
7
|
allow(FirmRepository).to receive(:new).and_return(repository)
|
@@ -26,5 +27,10 @@ RSpec.describe IndexFirmJob, '#perform' do
|
|
26
27
|
expect(repository).not_to receive(:store).with(firm)
|
27
28
|
described_class.new.perform(firm)
|
28
29
|
end
|
30
|
+
|
31
|
+
it 'invokes the DeleteFirmJob to remove the firm from the directory' do
|
32
|
+
expect(DeleteFirmJob).to receive(:perform_later).with(firm_id)
|
33
|
+
described_class.new.perform(firm)
|
34
|
+
end
|
29
35
|
end
|
30
36
|
end
|
data/spec/models/firm_spec.rb
CHANGED
@@ -126,10 +126,7 @@ RSpec.describe Firm do
|
|
126
126
|
|
127
127
|
context 'when the firm is not valid' do
|
128
128
|
let(:firm) do
|
129
|
-
FactoryGirl.
|
130
|
-
f.email_address = nil
|
131
|
-
f.save(validate: false)
|
132
|
-
end
|
129
|
+
FactoryGirl.build(:invalid_firm).tap { |f| f.save(validate: false) }
|
133
130
|
end
|
134
131
|
|
135
132
|
it { is_expected.to be_falsey }
|
@@ -204,221 +204,35 @@ RSpec.describe Principal do
|
|
204
204
|
end
|
205
205
|
|
206
206
|
describe '#onboarded?' do
|
207
|
-
context 'when
|
208
|
-
before
|
209
|
-
|
210
|
-
|
211
|
-
|
207
|
+
context 'when no firms are publishable' do
|
208
|
+
before do
|
209
|
+
FactoryGirl.build(:invalid_firm,
|
210
|
+
fca_number: principal.fca_number,
|
211
|
+
parent: principal.firm).save(validate: false)
|
212
212
|
|
213
|
-
|
214
|
-
expect(principal)
|
215
|
-
|
216
|
-
end
|
217
|
-
|
218
|
-
context 'when a principal has not been onboarded' do
|
219
|
-
before :each do
|
220
|
-
attrs = FactoryGirl.attributes_for :not_onboarded_firm, fca_number: principal.fca_number
|
221
|
-
principal.firm.update_attributes(attrs)
|
213
|
+
expect(principal.main_firm_with_trading_names).to have(2).items
|
214
|
+
expect(principal.main_firm_with_trading_names)
|
215
|
+
.to all(have_attributes(publishable?: false))
|
222
216
|
end
|
223
217
|
|
224
218
|
it 'returns false' do
|
225
|
-
expect(principal).
|
226
|
-
end
|
227
|
-
end
|
228
|
-
end
|
229
|
-
|
230
|
-
describe '#next_onboarding_action' do
|
231
|
-
context 'when principal has no firms or trading names' do
|
232
|
-
before :each do
|
233
|
-
principal.firm.destroy
|
234
|
-
principal.reload
|
235
|
-
expect(principal.main_firm_with_trading_names).to be_empty
|
236
|
-
end
|
237
|
-
|
238
|
-
it 'returns :complete_a_firm' do
|
239
|
-
expect(principal.next_onboarding_action).to eql(:complete_a_firm)
|
240
|
-
end
|
241
|
-
end
|
242
|
-
|
243
|
-
context 'when principal only has a parent firm' do
|
244
|
-
before :each do
|
245
|
-
expect(principal.firm).not_to be_nil
|
246
|
-
expect(Firm.where(fca_number: principal.fca_number).count).to eql(1)
|
247
|
-
end
|
248
|
-
|
249
|
-
context 'and the parent firm is not registered' do
|
250
|
-
before :each do
|
251
|
-
expect(principal.firm).not_to be_registered
|
252
|
-
end
|
253
|
-
|
254
|
-
it 'returns :complete_a_firm' do
|
255
|
-
expect(principal.next_onboarding_action).to eql(:complete_a_firm)
|
256
|
-
end
|
257
|
-
end
|
258
|
-
|
259
|
-
context 'and the parent firm is registered' do
|
260
|
-
before :each do
|
261
|
-
principal.firm.update_column(:email_address, 'acme@example.com')
|
262
|
-
principal.reload
|
263
|
-
expect(principal.firm).to be_registered
|
264
|
-
end
|
265
|
-
|
266
|
-
context 'and the firm primarily gives remote advice' do
|
267
|
-
before :each do
|
268
|
-
principal.firm.in_person_advice_methods.destroy_all
|
269
|
-
principal.firm.other_advice_methods << create(:other_advice_method)
|
270
|
-
principal.reload
|
271
|
-
end
|
272
|
-
|
273
|
-
context 'and the firm has no advisers' do
|
274
|
-
before :each do
|
275
|
-
expect(principal.firm.advisers.any?).to eql(false)
|
276
|
-
end
|
277
|
-
|
278
|
-
it 'returns :onboarded' do
|
279
|
-
expect(principal.next_onboarding_action).to eql(:onboarded)
|
280
|
-
end
|
281
|
-
end
|
282
|
-
|
283
|
-
context 'and the firm has advisers' do
|
284
|
-
before :each do
|
285
|
-
create(:adviser, firm: principal.firm)
|
286
|
-
principal.reload
|
287
|
-
expect(principal.firm.advisers.any?).to eql(true)
|
288
|
-
end
|
289
|
-
|
290
|
-
it 'returns :onboarded' do
|
291
|
-
expect(principal.next_onboarding_action).to eql(:onboarded)
|
292
|
-
end
|
293
|
-
end
|
294
|
-
end
|
295
|
-
|
296
|
-
context 'and the firm primarily gives in-person advice' do
|
297
|
-
before :each do
|
298
|
-
principal.firm.in_person_advice_methods << create(:in_person_advice_method)
|
299
|
-
principal.reload
|
300
|
-
end
|
301
|
-
|
302
|
-
context 'and has at least one adviser' do
|
303
|
-
before :each do
|
304
|
-
create(:adviser, firm: principal.firm)
|
305
|
-
principal.reload
|
306
|
-
end
|
307
|
-
|
308
|
-
it 'returns :onboarded' do
|
309
|
-
expect(principal.next_onboarding_action).to eql(:onboarded)
|
310
|
-
end
|
311
|
-
end
|
312
|
-
|
313
|
-
context 'and does not have at least one adviser' do
|
314
|
-
before :each do
|
315
|
-
expect(principal.firm.advisers.any?).to eql(false)
|
316
|
-
end
|
317
|
-
|
318
|
-
it 'returns :complete_an_adviser' do
|
319
|
-
expect(principal.next_onboarding_action).to eql(:complete_an_adviser)
|
320
|
-
end
|
321
|
-
end
|
322
|
-
end
|
219
|
+
expect(principal.onboarded?).to be(false)
|
323
220
|
end
|
324
221
|
end
|
325
222
|
|
326
|
-
context 'when
|
327
|
-
|
328
|
-
|
223
|
+
context 'when one firm is publishable' do
|
224
|
+
before do
|
225
|
+
FactoryGirl.create(:publishable_firm,
|
226
|
+
fca_number: principal.fca_number,
|
227
|
+
parent: principal.firm)
|
329
228
|
|
330
|
-
|
331
|
-
|
332
|
-
principal.
|
333
|
-
expect(Firm.where(fca_number: principal.fca_number).count).to eql(2)
|
229
|
+
expect(principal.main_firm_with_trading_names).to have(2).items
|
230
|
+
expect(principal.firm).not_to be_publishable
|
231
|
+
expect(principal.firm.trading_names.first).to be_publishable
|
334
232
|
end
|
335
233
|
|
336
|
-
|
337
|
-
|
338
|
-
parent_firm.in_person_advice_methods.destroy_all
|
339
|
-
parent_firm.other_advice_methods << create(:other_advice_method)
|
340
|
-
trading_name.in_person_advice_methods.destroy_all
|
341
|
-
trading_name.other_advice_methods << create(:other_advice_method)
|
342
|
-
principal.reload
|
343
|
-
end
|
344
|
-
|
345
|
-
it_behaves_like 'at least one remote firm'
|
346
|
-
end
|
347
|
-
|
348
|
-
context 'if at least one firm gives remote advice' do
|
349
|
-
context 'parent firm gives remote advice' do
|
350
|
-
before :each do
|
351
|
-
parent_firm.in_person_advice_methods.destroy_all
|
352
|
-
parent_firm.other_advice_methods << create(:other_advice_method)
|
353
|
-
trading_name.in_person_advice_methods << create(:in_person_advice_method)
|
354
|
-
principal.reload
|
355
|
-
end
|
356
|
-
|
357
|
-
it_behaves_like 'at least one remote firm'
|
358
|
-
end
|
359
|
-
|
360
|
-
context 'trading name gives remote advice' do
|
361
|
-
before :each do
|
362
|
-
parent_firm.in_person_advice_methods << create(:in_person_advice_method)
|
363
|
-
trading_name.in_person_advice_methods.destroy_all
|
364
|
-
trading_name.other_advice_methods << create(:other_advice_method)
|
365
|
-
principal.reload
|
366
|
-
end
|
367
|
-
|
368
|
-
it_behaves_like 'at least one remote firm'
|
369
|
-
end
|
370
|
-
end
|
371
|
-
|
372
|
-
context 'and both firms give in-person advice' do
|
373
|
-
before :each do
|
374
|
-
parent_firm.in_person_advice_methods << create(:in_person_advice_method)
|
375
|
-
trading_name.in_person_advice_methods << create(:in_person_advice_method)
|
376
|
-
principal.reload
|
377
|
-
end
|
378
|
-
|
379
|
-
context 'and neither firm has advisers' do
|
380
|
-
before :each do
|
381
|
-
expect(parent_firm.advisers.any?).to eql(false)
|
382
|
-
expect(trading_name.advisers.any?).to eql(false)
|
383
|
-
end
|
384
|
-
|
385
|
-
it 'returns :complete_an_adviser' do
|
386
|
-
expect(principal.next_onboarding_action).to eql(:complete_an_adviser)
|
387
|
-
end
|
388
|
-
end
|
389
|
-
|
390
|
-
context 'and parent firm has advisers' do
|
391
|
-
before :each do
|
392
|
-
create(:adviser, firm: parent_firm)
|
393
|
-
expect(trading_name.advisers.any?).to eql(false)
|
394
|
-
end
|
395
|
-
|
396
|
-
it 'returns :onboarded' do
|
397
|
-
expect(principal.next_onboarding_action).to eql(:onboarded)
|
398
|
-
end
|
399
|
-
end
|
400
|
-
|
401
|
-
context 'and trading name has advisers' do
|
402
|
-
before :each do
|
403
|
-
expect(parent_firm.advisers.any?).to eql(false)
|
404
|
-
create(:adviser, firm: trading_name)
|
405
|
-
end
|
406
|
-
|
407
|
-
it 'returns :onboarded' do
|
408
|
-
expect(principal.next_onboarding_action).to eql(:onboarded)
|
409
|
-
end
|
410
|
-
end
|
411
|
-
|
412
|
-
context 'and both firms have advisers' do
|
413
|
-
before :each do
|
414
|
-
create(:adviser, firm: parent_firm)
|
415
|
-
create(:adviser, firm: trading_name)
|
416
|
-
end
|
417
|
-
|
418
|
-
it 'returns :onboarded' do
|
419
|
-
expect(principal.next_onboarding_action).to eql(:onboarded)
|
420
|
-
end
|
421
|
-
end
|
234
|
+
it 'returns true' do
|
235
|
+
expect(principal.onboarded?).to be(true)
|
422
236
|
end
|
423
237
|
end
|
424
238
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mas-rad_core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.81
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben Lovell
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-09-
|
11
|
+
date: 2015-09-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -414,7 +414,6 @@ files:
|
|
414
414
|
- spec/spec_helper.rb
|
415
415
|
- spec/support/field_length_validation_helpers.rb
|
416
416
|
- spec/support/queue_spec_helper.rb
|
417
|
-
- spec/support/shared_examples/at_least_one_remote_firm.rb
|
418
417
|
- spec/support/shared_examples/friendly_named.rb
|
419
418
|
- spec/support/shared_examples/geocodable_examples.rb
|
420
419
|
- spec/support/shared_examples/reference_data.rb
|
@@ -541,7 +540,6 @@ test_files:
|
|
541
540
|
- spec/spec_helper.rb
|
542
541
|
- spec/support/field_length_validation_helpers.rb
|
543
542
|
- spec/support/queue_spec_helper.rb
|
544
|
-
- spec/support/shared_examples/at_least_one_remote_firm.rb
|
545
543
|
- spec/support/shared_examples/friendly_named.rb
|
546
544
|
- spec/support/shared_examples/geocodable_examples.rb
|
547
545
|
- spec/support/shared_examples/reference_data.rb
|
@@ -1,53 +0,0 @@
|
|
1
|
-
##
|
2
|
-
# Needs:
|
3
|
-
# principal = instance of Principal with two firms attached (parent_firm and trading_name)
|
4
|
-
# parent_firm = an instance of Firm with the same FCA Number as the Principal but no parent firm
|
5
|
-
# trading_name = an instance of Firm with the same FCA Number as the Principal and the parent_firm as the parent firm
|
6
|
-
RSpec.shared_examples 'at least one remote firm' do
|
7
|
-
context 'and neither firm has advisers' do
|
8
|
-
before :each do
|
9
|
-
expect(parent_firm.advisers.any?).to eql(false)
|
10
|
-
expect(trading_name.advisers.any?).to eql(false)
|
11
|
-
end
|
12
|
-
|
13
|
-
it 'returns :onboarded' do
|
14
|
-
expect(principal.next_onboarding_action).to eql(:onboarded)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
context 'and the parent firm has advisers' do
|
19
|
-
before :each do
|
20
|
-
create(:adviser, firm: parent_firm)
|
21
|
-
expect(trading_name.advisers.any?).to eql(false)
|
22
|
-
principal.reload
|
23
|
-
end
|
24
|
-
|
25
|
-
it 'returns :onboarded' do
|
26
|
-
expect(principal.next_onboarding_action).to eql(:onboarded)
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
context 'and the trading name has advisers' do
|
31
|
-
before :each do
|
32
|
-
expect(parent_firm.advisers.any?).to eql(false)
|
33
|
-
create(:adviser, firm: trading_name)
|
34
|
-
principal.reload
|
35
|
-
end
|
36
|
-
|
37
|
-
it 'returns :onboarded' do
|
38
|
-
expect(principal.next_onboarding_action).to eql(:onboarded)
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
context 'and both firms have advisers' do
|
43
|
-
before :each do
|
44
|
-
create(:adviser, firm: parent_firm)
|
45
|
-
create(:adviser, firm: trading_name)
|
46
|
-
principal.reload
|
47
|
-
end
|
48
|
-
|
49
|
-
it 'returns :onboarded' do
|
50
|
-
expect(principal.next_onboarding_action).to eql(:onboarded)
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|