mas-rad_core 0.0.65 → 0.0.66

Sign up to get free protection for your applications and to get access to all the features.
@@ -13,6 +13,18 @@ RSpec.describe Firm do
13
13
  end
14
14
  end
15
15
 
16
+ describe '#registered?' do
17
+ it 'is false if the firm has no email address' do
18
+ firm.email_address = nil
19
+ expect(firm).not_to be_registered
20
+ end
21
+
22
+ it 'is true if the firm has an email address' do
23
+ firm.email_address = 'acme@example.com'
24
+ expect(firm).to be_registered
25
+ end
26
+ end
27
+
16
28
  describe '#telephone_number' do
17
29
  context 'when `nil`' do
18
30
  it 'returns `nil`' do
@@ -202,4 +202,200 @@ RSpec.describe Principal do
202
202
  expect(Firm.where(id: firm.id)).to be_empty
203
203
  end
204
204
  end
205
+
206
+ describe '#next_onboarding_action' do
207
+ context 'when principal has no firms or trading names' do
208
+ before :each do
209
+ principal.firm.destroy
210
+ principal.reload
211
+ expect(principal.main_firm_with_trading_names).to be_empty
212
+ end
213
+
214
+ it 'returns :complete_a_firm' do
215
+ expect(principal.next_onboarding_action).to eql(:complete_a_firm)
216
+ end
217
+ end
218
+
219
+ context 'when principal only has a parent firm' do
220
+ before :each do
221
+ expect(principal.firm).not_to be_nil
222
+ expect(Firm.where(fca_number: principal.fca_number).count).to eql(1)
223
+ end
224
+
225
+ context 'and the parent firm is not registered' do
226
+ before :each do
227
+ expect(principal.firm).not_to be_registered
228
+ end
229
+
230
+ it 'returns :complete_a_firm' do
231
+ expect(principal.next_onboarding_action).to eql(:complete_a_firm)
232
+ end
233
+ end
234
+
235
+ context 'and the parent firm is registered' do
236
+ before :each do
237
+ principal.firm.update_column(:email_address, 'acme@example.com')
238
+ principal.reload
239
+ expect(principal.firm).to be_registered
240
+ end
241
+
242
+ context 'and the firm primarily gives remote advice' do
243
+ before :each do
244
+ principal.firm.in_person_advice_methods.destroy_all
245
+ principal.firm.other_advice_methods << create(:other_advice_method)
246
+ principal.reload
247
+ end
248
+
249
+ context 'and the firm has no advisers' do
250
+ before :each do
251
+ expect(principal.firm.advisers.any?).to eql(false)
252
+ end
253
+
254
+ it 'returns :onboarded' do
255
+ expect(principal.next_onboarding_action).to eql(:onboarded)
256
+ end
257
+ end
258
+
259
+ context 'and the firm has advisers' do
260
+ before :each do
261
+ create(:adviser, firm: principal.firm)
262
+ principal.reload
263
+ expect(principal.firm.advisers.any?).to eql(true)
264
+ end
265
+
266
+ it 'returns :onboarded' do
267
+ expect(principal.next_onboarding_action).to eql(:onboarded)
268
+ end
269
+ end
270
+ end
271
+
272
+ context 'and the firm primarily gives in-person advice' do
273
+ before :each do
274
+ principal.firm.in_person_advice_methods << create(:in_person_advice_method)
275
+ principal.reload
276
+ end
277
+
278
+ context 'and has at least one adviser' do
279
+ before :each do
280
+ create(:adviser, firm: principal.firm)
281
+ principal.reload
282
+ end
283
+
284
+ it 'returns :onboarded' do
285
+ expect(principal.next_onboarding_action).to eql(:onboarded)
286
+ end
287
+ end
288
+
289
+ context 'and does not have at least one adviser' do
290
+ before :each do
291
+ expect(principal.firm.advisers.any?).to eql(false)
292
+ end
293
+
294
+ it 'returns :complete_an_adviser' do
295
+ expect(principal.next_onboarding_action).to eql(:complete_an_adviser)
296
+ end
297
+ end
298
+ end
299
+ end
300
+ end
301
+
302
+ context 'when principal has a parent firm and a trading name' do
303
+ let(:parent_firm) { principal.firm }
304
+ let!(:trading_name) { create(:firm, registered_name: 'cabbage', parent_id: parent_firm.id, fca_number: principal.fca_number) }
305
+
306
+ before :each do
307
+ parent_firm.update_column(:email_address, 'acme@example.com')
308
+ principal.reload
309
+ expect(Firm.where(fca_number: principal.fca_number).count).to eql(2)
310
+ end
311
+
312
+ context 'and neither firm give in-person advice' do
313
+ before :each do
314
+ parent_firm.in_person_advice_methods.destroy_all
315
+ parent_firm.other_advice_methods << create(:other_advice_method)
316
+ trading_name.in_person_advice_methods.destroy_all
317
+ trading_name.other_advice_methods << create(:other_advice_method)
318
+ principal.reload
319
+ end
320
+
321
+ it_behaves_like 'at least one remote firm'
322
+ end
323
+
324
+ context 'if at least one firm gives remote advice' do
325
+ context 'parent firm gives remote advice' do
326
+ before :each do
327
+ parent_firm.in_person_advice_methods.destroy_all
328
+ parent_firm.other_advice_methods << create(:other_advice_method)
329
+ trading_name.in_person_advice_methods << create(:in_person_advice_method)
330
+ principal.reload
331
+ end
332
+
333
+ it_behaves_like 'at least one remote firm'
334
+ end
335
+
336
+ context 'trading name gives remote advice' do
337
+ before :each do
338
+ parent_firm.in_person_advice_methods << create(:in_person_advice_method)
339
+ trading_name.in_person_advice_methods.destroy_all
340
+ trading_name.other_advice_methods << create(:other_advice_method)
341
+ principal.reload
342
+ end
343
+
344
+ it_behaves_like 'at least one remote firm'
345
+ end
346
+ end
347
+
348
+ context 'and both firms give in-person advice' do
349
+ before :each do
350
+ parent_firm.in_person_advice_methods << create(:in_person_advice_method)
351
+ trading_name.in_person_advice_methods << create(:in_person_advice_method)
352
+ principal.reload
353
+ end
354
+
355
+ context 'and neither firm has advisers' do
356
+ before :each do
357
+ expect(parent_firm.advisers.any?).to eql(false)
358
+ expect(trading_name.advisers.any?).to eql(false)
359
+ end
360
+
361
+ it 'returns :complete_an_adviser' do
362
+ expect(principal.next_onboarding_action).to eql(:complete_an_adviser)
363
+ end
364
+ end
365
+
366
+ context 'and parent firm has advisers' do
367
+ before :each do
368
+ create(:adviser, firm: parent_firm)
369
+ expect(trading_name.advisers.any?).to eql(false)
370
+ end
371
+
372
+ it 'returns :onboarded' do
373
+ expect(principal.next_onboarding_action).to eql(:onboarded)
374
+ end
375
+ end
376
+
377
+ context 'and trading name has advisers' do
378
+ before :each do
379
+ expect(parent_firm.advisers.any?).to eql(false)
380
+ create(:adviser, firm: trading_name)
381
+ end
382
+
383
+ it 'returns :onboarded' do
384
+ expect(principal.next_onboarding_action).to eql(:onboarded)
385
+ end
386
+ end
387
+
388
+ context 'and both firms have advisers' do
389
+ before :each do
390
+ create(:adviser, firm: parent_firm)
391
+ create(:adviser, firm: trading_name)
392
+ end
393
+
394
+ it 'returns :onboarded' do
395
+ expect(principal.next_onboarding_action).to eql(:onboarded)
396
+ end
397
+ end
398
+ end
399
+ end
400
+ end
205
401
  end
@@ -0,0 +1,53 @@
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
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.65
4
+ version: 0.0.66
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-08-07 00:00:00.000000000 Z
11
+ date: 2015-08-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -385,6 +385,7 @@ files:
385
385
  - spec/serializers/adviser_serializer_spec.rb
386
386
  - spec/serializers/firm_serializer_spec.rb
387
387
  - spec/spec_helper.rb
388
+ - spec/support/shared_examples/at_least_one_remote_firm.rb
388
389
  - spec/support/shared_examples/friendly_named.rb
389
390
  - spec/support/shared_examples/geocodable_examples.rb
390
391
  - spec/support/shared_examples/reference_data.rb
@@ -504,6 +505,7 @@ test_files:
504
505
  - spec/serializers/adviser_serializer_spec.rb
505
506
  - spec/serializers/firm_serializer_spec.rb
506
507
  - spec/spec_helper.rb
508
+ - spec/support/shared_examples/at_least_one_remote_firm.rb
507
509
  - spec/support/shared_examples/friendly_named.rb
508
510
  - spec/support/shared_examples/geocodable_examples.rb
509
511
  - spec/support/shared_examples/reference_data.rb