activity_notification 2.1.2 → 2.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (88) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +10 -16
  3. data/CHANGELOG.md +52 -0
  4. data/Gemfile +2 -3
  5. data/README.md +2 -2
  6. data/activity_notification.gemspec +1 -1
  7. data/app/channels/activity_notification/notification_api_with_devise_channel.rb +1 -1
  8. data/app/channels/activity_notification/notification_channel.rb +1 -1
  9. data/app/channels/activity_notification/notification_with_devise_channel.rb +1 -1
  10. data/app/controllers/activity_notification/notifications_controller.rb +0 -20
  11. data/app/controllers/activity_notification/subscriptions_api_controller.rb +1 -1
  12. data/app/controllers/activity_notification/subscriptions_controller.rb +2 -2
  13. data/app/views/activity_notification/subscriptions/default/_form.html.erb +1 -1
  14. data/app/views/activity_notification/subscriptions/default/_notification_keys.html.erb +2 -2
  15. data/app/views/activity_notification/subscriptions/default/_subscription.html.erb +2 -2
  16. data/app/views/activity_notification/subscriptions/default/index.html.erb +2 -2
  17. data/app/views/activity_notification/subscriptions/default/show.html.erb +2 -2
  18. data/bin/bundle_update.sh +0 -1
  19. data/docs/Functions.md +19 -3
  20. data/docs/Setup.md +190 -63
  21. data/gemfiles/Gemfile.rails-5.0 +3 -1
  22. data/gemfiles/Gemfile.rails-5.1 +3 -1
  23. data/gemfiles/Gemfile.rails-5.2 +3 -1
  24. data/gemfiles/Gemfile.rails-6.0 +2 -3
  25. data/gemfiles/{Gemfile.rails-4.2 → Gemfile.rails-6.1} +4 -5
  26. data/lib/activity_notification/apis/notification_api.rb +7 -0
  27. data/lib/activity_notification/apis/subscription_api.rb +5 -5
  28. data/lib/activity_notification/common.rb +15 -4
  29. data/lib/activity_notification/config.rb +53 -23
  30. data/lib/activity_notification/controllers/common_controller.rb +2 -18
  31. data/lib/activity_notification/models/concerns/notifiable.rb +12 -12
  32. data/lib/activity_notification/models/concerns/subscriber.rb +6 -4
  33. data/lib/activity_notification/models/concerns/swagger/notification_schema.rb +34 -34
  34. data/lib/activity_notification/models/concerns/swagger/subscription_schema.rb +17 -17
  35. data/lib/activity_notification/models/concerns/target.rb +8 -12
  36. data/lib/activity_notification/optional_targets/action_cable_api_channel.rb +1 -1
  37. data/lib/activity_notification/optional_targets/action_cable_channel.rb +1 -1
  38. data/lib/activity_notification/orm/active_record.rb +1 -1
  39. data/lib/activity_notification/orm/active_record/notification.rb +3 -3
  40. data/lib/activity_notification/orm/dynamoid.rb +10 -3
  41. data/lib/activity_notification/orm/dynamoid/notification.rb +49 -14
  42. data/lib/activity_notification/orm/dynamoid/subscription.rb +2 -2
  43. data/lib/activity_notification/orm/mongoid.rb +10 -3
  44. data/lib/activity_notification/orm/mongoid/notification.rb +8 -6
  45. data/lib/activity_notification/orm/mongoid/subscription.rb +1 -1
  46. data/lib/activity_notification/renderable.rb +2 -2
  47. data/lib/activity_notification/roles/acts_as_notifiable.rb +13 -16
  48. data/lib/activity_notification/version.rb +1 -1
  49. data/lib/generators/templates/activity_notification.rb +11 -1
  50. data/lib/generators/templates/migrations/migration.rb +1 -1
  51. data/spec/channels/notification_api_channel_spec.rb +42 -44
  52. data/spec/channels/notification_api_with_devise_channel_spec.rb +57 -59
  53. data/spec/channels/notification_channel_spec.rb +41 -43
  54. data/spec/channels/notification_with_devise_channel_spec.rb +75 -77
  55. data/spec/concerns/apis/subscription_api_spec.rb +144 -2
  56. data/spec/concerns/common_spec.rb +25 -3
  57. data/spec/concerns/models/notifiable_spec.rb +35 -35
  58. data/spec/concerns/models/subscriber_spec.rb +179 -6
  59. data/spec/concerns/models/target_spec.rb +10 -12
  60. data/spec/concerns/renderable_spec.rb +5 -5
  61. data/spec/config_spec.rb +26 -15
  62. data/spec/controllers/controller_spec_utility.rb +15 -51
  63. data/spec/generators/migration/migration_generator_spec.rb +2 -10
  64. data/spec/helpers/view_helpers_spec.rb +1 -1
  65. data/spec/optional_targets/action_cable_api_channel_spec.rb +21 -24
  66. data/spec/optional_targets/action_cable_channel_spec.rb +26 -29
  67. data/spec/rails_app/app/controllers/users_controller.rb +5 -0
  68. data/spec/rails_app/app/javascript/App.vue +8 -72
  69. data/spec/rails_app/app/javascript/components/DeviseTokenAuth.vue +3 -4
  70. data/spec/rails_app/app/javascript/components/Top.vue +2 -3
  71. data/spec/rails_app/app/javascript/packs/spa.js +6 -3
  72. data/spec/rails_app/app/javascript/router/index.js +73 -0
  73. data/spec/rails_app/app/javascript/store/{auth.js → index.js} +0 -0
  74. data/spec/rails_app/app/models/dummy/dummy_group.rb +8 -0
  75. data/spec/rails_app/app/models/dummy/dummy_notifiable_target.rb +8 -0
  76. data/spec/rails_app/app/models/user.rb +2 -1
  77. data/spec/rails_app/config/application.rb +6 -7
  78. data/spec/rails_app/config/dynamoid.rb +11 -3
  79. data/spec/rails_app/config/environments/production.rb +3 -0
  80. data/spec/rails_app/config/environments/test.rb +2 -11
  81. data/spec/rails_app/config/initializers/activity_notification.rb +13 -3
  82. data/spec/rails_app/config/routes.rb +5 -1
  83. data/spec/rails_app/db/seeds.rb +9 -2
  84. data/spec/rails_app/package.json +14 -14
  85. data/spec/roles/acts_as_notifiable_spec.rb +5 -5
  86. data/spec/spec_helper.rb +1 -5
  87. metadata +12 -12
  88. data/spec/support/patch_rails_42_action_controller_test_response.rb +0 -11
@@ -45,6 +45,41 @@ shared_examples_for :subscription_api do
45
45
  expect(test_instance.subscribed_to_email_at).to eq(Time.current)
46
46
  Timecop.return
47
47
  end
48
+
49
+ context "with true as ActivityNotification.config.subscribe_to_email_as_default" do
50
+ it "subscribe with current time" do
51
+ ActivityNotification.config.subscribe_to_email_as_default = true
52
+
53
+ expect(test_instance.subscribing?).to eq(false)
54
+ expect(test_instance.subscribing_to_email?).to eq(false)
55
+ Timecop.freeze(Time.at(Time.now.to_i))
56
+ test_instance.subscribe
57
+ expect(test_instance.subscribing?).to eq(true)
58
+ expect(test_instance.subscribing_to_email?).to eq(true)
59
+ expect(test_instance.subscribed_at).to eq(Time.current)
60
+ expect(test_instance.subscribed_to_email_at).to eq(Time.current)
61
+ Timecop.return
62
+
63
+ ActivityNotification.config.subscribe_to_email_as_default = nil
64
+ end
65
+ end
66
+
67
+ context "with false as ActivityNotification.config.subscribe_to_email_as_default" do
68
+ it "subscribe with current time" do
69
+ ActivityNotification.config.subscribe_to_email_as_default = false
70
+
71
+ expect(test_instance.subscribing?).to eq(false)
72
+ expect(test_instance.subscribing_to_email?).to eq(false)
73
+ Timecop.freeze(Time.at(Time.now.to_i))
74
+ test_instance.subscribe
75
+ expect(test_instance.subscribing?).to eq(true)
76
+ expect(test_instance.subscribing_to_email?).to eq(false)
77
+ expect(test_instance.subscribed_at).to eq(Time.current)
78
+ Timecop.return
79
+
80
+ ActivityNotification.config.subscribe_to_email_as_default = nil
81
+ end
82
+ end
48
83
  end
49
84
 
50
85
  context "with subscribed_at option" do
@@ -58,6 +93,39 @@ shared_examples_for :subscription_api do
58
93
  expect(test_instance.subscribed_at.to_i).to eq(subscribed_at.to_i)
59
94
  expect(test_instance.subscribed_to_email_at.to_i).to eq(subscribed_at.to_i)
60
95
  end
96
+
97
+ context "with true as ActivityNotification.config.subscribe_to_email_as_default" do
98
+ it "subscribe with current time" do
99
+ ActivityNotification.config.subscribe_to_email_as_default = true
100
+
101
+ expect(test_instance.subscribing?).to eq(false)
102
+ expect(test_instance.subscribing_to_email?).to eq(false)
103
+ subscribed_at = Time.current - 1.months
104
+ test_instance.subscribe(subscribed_at: subscribed_at)
105
+ expect(test_instance.subscribing?).to eq(true)
106
+ expect(test_instance.subscribing_to_email?).to eq(true)
107
+ expect(test_instance.subscribed_at.to_i).to eq(subscribed_at.to_i)
108
+ expect(test_instance.subscribed_to_email_at.to_i).to eq(subscribed_at.to_i)
109
+
110
+ ActivityNotification.config.subscribe_to_email_as_default = nil
111
+ end
112
+ end
113
+
114
+ context "with false as ActivityNotification.config.subscribe_to_email_as_default" do
115
+ it "subscribe with current time" do
116
+ ActivityNotification.config.subscribe_to_email_as_default = false
117
+
118
+ expect(test_instance.subscribing?).to eq(false)
119
+ expect(test_instance.subscribing_to_email?).to eq(false)
120
+ subscribed_at = Time.current - 1.months
121
+ test_instance.subscribe(subscribed_at: subscribed_at)
122
+ expect(test_instance.subscribing?).to eq(true)
123
+ expect(test_instance.subscribing_to_email?).to eq(false)
124
+ expect(test_instance.subscribed_at.to_i).to eq(subscribed_at.to_i)
125
+
126
+ ActivityNotification.config.subscribe_to_email_as_default = nil
127
+ end
128
+ end
61
129
  end
62
130
 
63
131
  context "with false as with_email_subscription" do
@@ -79,6 +147,36 @@ shared_examples_for :subscription_api do
79
147
  expect(test_instance.subscribing?).to eq(true)
80
148
  expect(test_instance.subscribing_to_optional_target?(:console_output)).to eq(true)
81
149
  end
150
+
151
+ context "with true as ActivityNotification.config.subscribe_to_optional_targets_as_default" do
152
+ it "also subscribes to optional targets" do
153
+ ActivityNotification.config.subscribe_to_optional_targets_as_default = true
154
+
155
+ test_instance.unsubscribe_to_optional_target(:console_output)
156
+ expect(test_instance.subscribing?).to eq(false)
157
+ expect(test_instance.subscribing_to_optional_target?(:console_output)).to eq(false)
158
+ test_instance.subscribe
159
+ expect(test_instance.subscribing?).to eq(true)
160
+ expect(test_instance.subscribing_to_optional_target?(:console_output)).to eq(true)
161
+
162
+ ActivityNotification.config.subscribe_to_optional_targets_as_default = nil
163
+ end
164
+ end
165
+
166
+ context "with false as ActivityNotification.config.subscribe_to_optional_targets_as_default" do
167
+ it "does not subscribe to optional targets" do
168
+ ActivityNotification.config.subscribe_to_optional_targets_as_default = false
169
+
170
+ test_instance.unsubscribe_to_optional_target(:console_output)
171
+ expect(test_instance.subscribing?).to eq(false)
172
+ expect(test_instance.subscribing_to_optional_target?(:console_output)).to eq(false)
173
+ test_instance.subscribe
174
+ expect(test_instance.subscribing?).to eq(true)
175
+ expect(test_instance.subscribing_to_optional_target?(:console_output)).to eq(false)
176
+
177
+ ActivityNotification.config.subscribe_to_optional_targets_as_default = nil
178
+ end
179
+ end
82
180
  end
83
181
 
84
182
  context "with false as with_optional_targets" do
@@ -210,7 +308,7 @@ shared_examples_for :subscription_api do
210
308
  test_instance.update(optional_targets: {})
211
309
  end
212
310
 
213
- context "without configured optional target subscpriotion" do
311
+ context "without configured optional target subscription" do
214
312
  context "without subscribe_as_default argument" do
215
313
  context "with true as ActivityNotification.config.subscribe_as_default" do
216
314
  it "returns true" do
@@ -219,6 +317,28 @@ shared_examples_for :subscription_api do
219
317
  expect(test_instance.subscribing_to_optional_target?(:console_output)).to be_truthy
220
318
  ActivityNotification.config.subscribe_as_default = subscribe_as_default
221
319
  end
320
+
321
+ context "with true as ActivityNotification.config.subscribe_to_optional_targets_as_default" do
322
+ it "returns true" do
323
+ subscribe_as_default = ActivityNotification.config.subscribe_as_default
324
+ ActivityNotification.config.subscribe_as_default = true
325
+ ActivityNotification.config.subscribe_to_optional_targets_as_default = true
326
+ expect(test_instance.subscribing_to_optional_target?(:console_output)).to be_truthy
327
+ ActivityNotification.config.subscribe_as_default = subscribe_as_default
328
+ ActivityNotification.config.subscribe_to_optional_targets_as_default = nil
329
+ end
330
+ end
331
+
332
+ context "with false as ActivityNotification.config.subscribe_to_optional_targets_as_default" do
333
+ it "returns false" do
334
+ subscribe_as_default = ActivityNotification.config.subscribe_as_default
335
+ ActivityNotification.config.subscribe_as_default = true
336
+ ActivityNotification.config.subscribe_to_optional_targets_as_default = false
337
+ expect(test_instance.subscribing_to_optional_target?(:console_output)).to be_falsey
338
+ ActivityNotification.config.subscribe_as_default = subscribe_as_default
339
+ ActivityNotification.config.subscribe_to_optional_targets_as_default = nil
340
+ end
341
+ end
222
342
  end
223
343
 
224
344
  context "with false as ActivityNotification.config.subscribe_as_default" do
@@ -228,11 +348,33 @@ shared_examples_for :subscription_api do
228
348
  expect(test_instance.subscribing_to_optional_target?(:console_output)).to be_falsey
229
349
  ActivityNotification.config.subscribe_as_default = subscribe_as_default
230
350
  end
351
+
352
+ context "with true as ActivityNotification.config.subscribe_to_optional_targets_as_default" do
353
+ it "returns false" do
354
+ subscribe_as_default = ActivityNotification.config.subscribe_as_default
355
+ ActivityNotification.config.subscribe_as_default = false
356
+ ActivityNotification.config.subscribe_to_optional_targets_as_default = true
357
+ expect(test_instance.subscribing_to_optional_target?(:console_output)).to be_falsey
358
+ ActivityNotification.config.subscribe_as_default = subscribe_as_default
359
+ ActivityNotification.config.subscribe_to_optional_targets_as_default = nil
360
+ end
361
+ end
362
+
363
+ context "with false as ActivityNotification.config.subscribe_to_optional_targets_as_default" do
364
+ it "returns false" do
365
+ subscribe_as_default = ActivityNotification.config.subscribe_as_default
366
+ ActivityNotification.config.subscribe_as_default = false
367
+ ActivityNotification.config.subscribe_to_optional_targets_as_default = false
368
+ expect(test_instance.subscribing_to_optional_target?(:console_output)).to be_falsey
369
+ ActivityNotification.config.subscribe_as_default = subscribe_as_default
370
+ ActivityNotification.config.subscribe_to_optional_targets_as_default = nil
371
+ end
372
+ end
231
373
  end
232
374
  end
233
375
  end
234
376
 
235
- context "with configured subscpriotion" do
377
+ context "with configured subscription" do
236
378
  context "subscribing to optional target" do
237
379
  it "returns true" do
238
380
  test_instance.subscribe_to_optional_target(:console_output)
@@ -34,7 +34,7 @@ shared_examples_for :common do
34
34
  test_instance.extend(AdditionalMethods)
35
35
  expect(ActivityNotification.resolve_value(test_instance, :custom_method)).to eq(1)
36
36
  end
37
-
37
+
38
38
  it "returns specified symbol with controller and additional arguments" do
39
39
  module AdditionalMethods
40
40
  def custom_method(controller, key)
@@ -45,6 +45,17 @@ shared_examples_for :common do
45
45
  expect(ActivityNotification.resolve_value(test_instance, :custom_method, 'test1.key')).to eq(1)
46
46
  expect(ActivityNotification.resolve_value(test_instance, :custom_method, 'test2.key')).to eq(0)
47
47
  end
48
+
49
+ it "returns specified symbol with controller and additional arguments including hash as last argument" do
50
+ module AdditionalMethods
51
+ def custom_method(controller, key, options:)
52
+ controller == 'StubController' and key == 'test1.key' ? 1 : 0
53
+ end
54
+ end
55
+ test_instance.extend(AdditionalMethods)
56
+ expect(ActivityNotification.resolve_value(test_instance, :custom_method, 'test1.key', options: 1)).to eq(1)
57
+ expect(ActivityNotification.resolve_value(test_instance, :custom_method, 'test2.key', options: 1)).to eq(0)
58
+ end
48
59
  end
49
60
 
50
61
  context "with Proc" do
@@ -62,7 +73,7 @@ shared_examples_for :common do
62
73
  test_proc = ->(controller, model){ controller == 'StubController' and model == test_instance ? 1 : 0 }
63
74
  expect(ActivityNotification.resolve_value(test_instance, test_proc)).to eq(1)
64
75
  end
65
-
76
+
66
77
  it "returns specified lambda with controller, context(model) and additional arguments" do
67
78
  test_proc = ->(controller, model, key){ controller == 'StubController' and model == test_instance and key == 'test1.key' ? 1 : 0 }
68
79
  expect(ActivityNotification.resolve_value(test_instance, test_proc, 'test1.key')).to eq(1)
@@ -118,6 +129,17 @@ shared_examples_for :common do
118
129
  expect(test_instance.resolve_value(:custom_method, 'test1.key')).to eq(1)
119
130
  expect(test_instance.resolve_value(:custom_method, 'test2.key')).to eq(0)
120
131
  end
132
+
133
+ it "returns specified symbol with additional arguments including hash as last argument" do
134
+ module AdditionalMethods
135
+ def custom_method(key, options:)
136
+ key == 'test1.key' ? 1 : 0
137
+ end
138
+ end
139
+ test_instance.extend(AdditionalMethods)
140
+ expect(test_instance.resolve_value(:custom_method, 'test1.key', options: 1)).to eq(1)
141
+ expect(test_instance.resolve_value(:custom_method, 'test2.key', options: 1)).to eq(0)
142
+ end
121
143
  end
122
144
 
123
145
  context "with Proc" do
@@ -188,4 +210,4 @@ shared_examples_for :common do
188
210
  end
189
211
  end
190
212
 
191
- end
213
+ end
@@ -21,7 +21,7 @@ shared_examples_for :notifiable do
21
21
  expect(described_class._notifier).to eq({})
22
22
  expect(described_class._notification_parameters).to eq({})
23
23
  expect(described_class._notification_email_allowed).to eq({})
24
- expect(described_class._notification_action_cable_allowed).to eq({})
24
+ expect(described_class._notifiable_action_cable_allowed).to eq({})
25
25
  expect(described_class._notifiable_path).to eq({})
26
26
  expect(described_class._printable_notifiable_name).to eq({})
27
27
  end
@@ -410,130 +410,130 @@ shared_examples_for :notifiable do
410
410
  end
411
411
  end
412
412
 
413
- describe "#notification_action_cable_allowed?" do
413
+ describe "#notifiable_action_cable_allowed?" do
414
414
  context "without any configuration" do
415
415
  it "returns ActivityNotification.config.action_cable_enabled" do
416
- expect(test_instance.notification_action_cable_allowed?(test_target, 'dummy_key'))
416
+ expect(test_instance.notifiable_action_cable_allowed?(test_target, 'dummy_key'))
417
417
  .to eq(ActivityNotification.config.action_cable_enabled)
418
418
  end
419
419
 
420
420
  it "returns false as default" do
421
- expect(test_instance.notification_action_cable_allowed?(test_target, 'dummy_key')).to be_falsey
421
+ expect(test_instance.notifiable_action_cable_allowed?(test_target, 'dummy_key')).to be_falsey
422
422
  end
423
423
  end
424
424
 
425
425
  context "configured with overridden method" do
426
426
  it "returns specified value" do
427
427
  module AdditionalMethods
428
- def notification_action_cable_allowed_for_users?(target, key)
428
+ def notifiable_action_cable_allowed_for_users?(target, key)
429
429
  true
430
430
  end
431
431
  end
432
432
  test_instance.extend(AdditionalMethods)
433
- expect(test_instance.notification_action_cable_allowed?(test_target, 'dummy_key')).to eq(true)
433
+ expect(test_instance.notifiable_action_cable_allowed?(test_target, 'dummy_key')).to eq(true)
434
434
  end
435
435
  end
436
436
 
437
437
  context "configured with a field" do
438
438
  it "returns specified value" do
439
- described_class._notification_action_cable_allowed[:users] = true
440
- expect(test_instance.notification_action_cable_allowed?(test_target, 'dummy_key')).to eq(true)
439
+ described_class._notifiable_action_cable_allowed[:users] = true
440
+ expect(test_instance.notifiable_action_cable_allowed?(test_target, 'dummy_key')).to eq(true)
441
441
  end
442
442
 
443
443
  it "returns specified symbol without arguments" do
444
444
  module AdditionalMethods
445
- def custom_notification_action_cable_allowed?
445
+ def custom_notifiable_action_cable_allowed?
446
446
  true
447
447
  end
448
448
  end
449
449
  test_instance.extend(AdditionalMethods)
450
- described_class._notification_action_cable_allowed[:users] = :custom_notification_action_cable_allowed?
451
- expect(test_instance.notification_action_cable_allowed?(test_target, 'dummy_key')).to eq(true)
450
+ described_class._notifiable_action_cable_allowed[:users] = :custom_notifiable_action_cable_allowed?
451
+ expect(test_instance.notifiable_action_cable_allowed?(test_target, 'dummy_key')).to eq(true)
452
452
  end
453
453
 
454
454
  it "returns specified symbol with target and key arguments" do
455
455
  module AdditionalMethods
456
- def custom_notification_action_cable_allowed?(target, key)
456
+ def custom_notifiable_action_cable_allowed?(target, key)
457
457
  true
458
458
  end
459
459
  end
460
460
  test_instance.extend(AdditionalMethods)
461
- described_class._notification_action_cable_allowed[:users] = :custom_notification_action_cable_allowed?
462
- expect(test_instance.notification_action_cable_allowed?(test_target, 'dummy_key')).to eq(true)
461
+ described_class._notifiable_action_cable_allowed[:users] = :custom_notifiable_action_cable_allowed?
462
+ expect(test_instance.notifiable_action_cable_allowed?(test_target, 'dummy_key')).to eq(true)
463
463
  end
464
464
 
465
465
  it "returns specified lambda with single notifiable argument" do
466
- described_class._notification_action_cable_allowed[:users] = ->(notifiable){ true }
467
- expect(test_instance.notification_action_cable_allowed?(test_target, 'dummy_key')).to eq(true)
466
+ described_class._notifiable_action_cable_allowed[:users] = ->(notifiable){ true }
467
+ expect(test_instance.notifiable_action_cable_allowed?(test_target, 'dummy_key')).to eq(true)
468
468
  end
469
469
 
470
470
  it "returns specified lambda with notifiable, target and key arguments" do
471
- described_class._notification_action_cable_allowed[:users] = ->(notifiable, target, key){ true }
472
- expect(test_instance.notification_action_cable_allowed?(test_target, 'dummy_key')).to eq(true)
471
+ described_class._notifiable_action_cable_allowed[:users] = ->(notifiable, target, key){ true }
472
+ expect(test_instance.notifiable_action_cable_allowed?(test_target, 'dummy_key')).to eq(true)
473
473
  end
474
474
  end
475
475
  end
476
476
 
477
- describe "#notification_action_cable_api_allowed?" do
477
+ describe "#notifiable_action_cable_api_allowed?" do
478
478
  context "without any configuration" do
479
479
  it "returns ActivityNotification.config.action_cable_api_enabled" do
480
- expect(test_instance.notification_action_cable_api_allowed?(test_target, 'dummy_key'))
480
+ expect(test_instance.notifiable_action_cable_api_allowed?(test_target, 'dummy_key'))
481
481
  .to eq(ActivityNotification.config.action_cable_api_enabled)
482
482
  end
483
483
 
484
484
  it "returns false as default" do
485
- expect(test_instance.notification_action_cable_api_allowed?(test_target, 'dummy_key')).to be_falsey
485
+ expect(test_instance.notifiable_action_cable_api_allowed?(test_target, 'dummy_key')).to be_falsey
486
486
  end
487
487
  end
488
488
 
489
489
  context "configured with overridden method" do
490
490
  it "returns specified value" do
491
491
  module AdditionalMethods
492
- def notification_action_cable_api_allowed_for_users?(target, key)
492
+ def notifiable_action_cable_api_allowed_for_users?(target, key)
493
493
  true
494
494
  end
495
495
  end
496
496
  test_instance.extend(AdditionalMethods)
497
- expect(test_instance.notification_action_cable_api_allowed?(test_target, 'dummy_key')).to eq(true)
497
+ expect(test_instance.notifiable_action_cable_api_allowed?(test_target, 'dummy_key')).to eq(true)
498
498
  end
499
499
  end
500
500
 
501
501
  context "configured with a field" do
502
502
  it "returns specified value" do
503
- described_class._notification_action_cable_api_allowed[:users] = true
504
- expect(test_instance.notification_action_cable_api_allowed?(test_target, 'dummy_key')).to eq(true)
503
+ described_class._notifiable_action_cable_api_allowed[:users] = true
504
+ expect(test_instance.notifiable_action_cable_api_allowed?(test_target, 'dummy_key')).to eq(true)
505
505
  end
506
506
 
507
507
  it "returns specified symbol without arguments" do
508
508
  module AdditionalMethods
509
- def custom_notification_action_cable_api_allowed?
509
+ def custom_notifiable_action_cable_api_allowed?
510
510
  true
511
511
  end
512
512
  end
513
513
  test_instance.extend(AdditionalMethods)
514
- described_class._notification_action_cable_api_allowed[:users] = :custom_notification_action_cable_api_allowed?
515
- expect(test_instance.notification_action_cable_api_allowed?(test_target, 'dummy_key')).to eq(true)
514
+ described_class._notifiable_action_cable_api_allowed[:users] = :custom_notifiable_action_cable_api_allowed?
515
+ expect(test_instance.notifiable_action_cable_api_allowed?(test_target, 'dummy_key')).to eq(true)
516
516
  end
517
517
 
518
518
  it "returns specified symbol with target and key arguments" do
519
519
  module AdditionalMethods
520
- def custom_notification_action_cable_api_allowed?(target, key)
520
+ def custom_notifiable_action_cable_api_allowed?(target, key)
521
521
  true
522
522
  end
523
523
  end
524
524
  test_instance.extend(AdditionalMethods)
525
- described_class._notification_action_cable_api_allowed[:users] = :custom_notification_action_cable_api_allowed?
526
- expect(test_instance.notification_action_cable_api_allowed?(test_target, 'dummy_key')).to eq(true)
525
+ described_class._notifiable_action_cable_api_allowed[:users] = :custom_notifiable_action_cable_api_allowed?
526
+ expect(test_instance.notifiable_action_cable_api_allowed?(test_target, 'dummy_key')).to eq(true)
527
527
  end
528
528
 
529
529
  it "returns specified lambda with single notifiable argument" do
530
- described_class._notification_action_cable_api_allowed[:users] = ->(notifiable){ true }
531
- expect(test_instance.notification_action_cable_api_allowed?(test_target, 'dummy_key')).to eq(true)
530
+ described_class._notifiable_action_cable_api_allowed[:users] = ->(notifiable){ true }
531
+ expect(test_instance.notifiable_action_cable_api_allowed?(test_target, 'dummy_key')).to eq(true)
532
532
  end
533
533
 
534
534
  it "returns specified lambda with notifiable, target and key arguments" do
535
- described_class._notification_action_cable_api_allowed[:users] = ->(notifiable, target, key){ true }
536
- expect(test_instance.notification_action_cable_api_allowed?(test_target, 'dummy_key')).to eq(true)
535
+ described_class._notifiable_action_cable_api_allowed[:users] = ->(notifiable, target, key){ true }
536
+ expect(test_instance.notifiable_action_cable_api_allowed?(test_target, 'dummy_key')).to eq(true)
537
537
  end
538
538
  end
539
539
  end
@@ -86,8 +86,65 @@ shared_examples_for :subscriber do
86
86
  new_subscription = test_instance.create_subscription(params)
87
87
  expect(new_subscription.subscribing?).to be_truthy
88
88
  expect(new_subscription.subscribing_to_email?).to be_truthy
89
+ expect(new_subscription.subscribing_to_optional_target?(:console_output)).to be_truthy
89
90
  expect(test_instance.subscriptions.reload.size).to eq(1)
90
91
  end
92
+
93
+ context "with true as ActivityNotification.config.subscribe_to_email_as_default" do
94
+ it "creates a new subscription" do
95
+ ActivityNotification.config.subscribe_to_email_as_default = true
96
+
97
+ params = { key: 'key_1' }
98
+ new_subscription = test_instance.create_subscription(params)
99
+ expect(new_subscription.subscribing?).to be_truthy
100
+ expect(new_subscription.subscribing_to_email?).to be_truthy
101
+ expect(test_instance.subscriptions.reload.size).to eq(1)
102
+
103
+ ActivityNotification.config.subscribe_to_email_as_default = nil
104
+ end
105
+ end
106
+
107
+ context "with false as ActivityNotification.config.subscribe_to_email_as_default" do
108
+ it "creates a new subscription" do
109
+ ActivityNotification.config.subscribe_to_email_as_default = false
110
+
111
+ params = { key: 'key_1' }
112
+ new_subscription = test_instance.create_subscription(params)
113
+ expect(new_subscription.subscribing?).to be_truthy
114
+ expect(new_subscription.subscribing_to_email?).to be_falsey
115
+ expect(test_instance.subscriptions.reload.size).to eq(1)
116
+
117
+ ActivityNotification.config.subscribe_to_email_as_default = nil
118
+ end
119
+ end
120
+
121
+ context "with true as ActivityNotification.config.subscribe_to_optional_targets_as_default" do
122
+ it "creates a new subscription" do
123
+ ActivityNotification.config.subscribe_to_optional_targets_as_default = true
124
+
125
+ params = { key: 'key_1' }
126
+ new_subscription = test_instance.create_subscription(params)
127
+ expect(new_subscription.subscribing?).to be_truthy
128
+ expect(new_subscription.subscribing_to_optional_target?(:console_output)).to be_truthy
129
+ expect(test_instance.subscriptions.reload.size).to eq(1)
130
+
131
+ ActivityNotification.config.subscribe_to_optional_targets_as_default = nil
132
+ end
133
+ end
134
+
135
+ context "with false as ActivityNotification.config.subscribe_to_optional_targets_as_default" do
136
+ it "creates a new subscription" do
137
+ ActivityNotification.config.subscribe_to_optional_targets_as_default = false
138
+
139
+ params = { key: 'key_1' }
140
+ new_subscription = test_instance.create_subscription(params)
141
+ expect(new_subscription.subscribing?).to be_truthy
142
+ expect(new_subscription.subscribing_to_optional_target?(:console_output)).to be_falsey
143
+ expect(test_instance.subscriptions.reload.size).to eq(1)
144
+
145
+ ActivityNotification.config.subscribe_to_optional_targets_as_default = nil
146
+ end
147
+ end
91
148
  end
92
149
 
93
150
  context "with false as subscribing params" do
@@ -98,6 +155,34 @@ shared_examples_for :subscriber do
98
155
  expect(new_subscription.subscribing_to_email?).to be_falsey
99
156
  expect(test_instance.subscriptions.reload.size).to eq(1)
100
157
  end
158
+
159
+ context "with true as ActivityNotification.config.subscribe_to_email_as_default" do
160
+ it "creates a new subscription" do
161
+ ActivityNotification.config.subscribe_to_email_as_default = true
162
+
163
+ params = { key: 'key_1', subscribing: false }
164
+ new_subscription = test_instance.create_subscription(params)
165
+ expect(new_subscription.subscribing?).to be_falsey
166
+ expect(new_subscription.subscribing_to_email?).to be_falsey
167
+ expect(test_instance.subscriptions.reload.size).to eq(1)
168
+
169
+ ActivityNotification.config.subscribe_to_email_as_default = nil
170
+ end
171
+ end
172
+
173
+ context "with false as ActivityNotification.config.subscribe_to_email_as_default" do
174
+ it "creates a new subscription" do
175
+ ActivityNotification.config.subscribe_to_email_as_default = false
176
+
177
+ params = { key: 'key_1', subscribing: false }
178
+ new_subscription = test_instance.create_subscription(params)
179
+ expect(new_subscription.subscribing?).to be_falsey
180
+ expect(new_subscription.subscribing_to_email?).to be_falsey
181
+ expect(test_instance.subscriptions.reload.size).to eq(1)
182
+
183
+ ActivityNotification.config.subscribe_to_email_as_default = nil
184
+ end
185
+ end
101
186
  end
102
187
 
103
188
  context "with false as subscribing_to_email params" do
@@ -462,7 +547,7 @@ shared_examples_for :subscriber do
462
547
  described_class._notification_subscription_allowed = true
463
548
  end
464
549
 
465
- context "without configured subscpriotion" do
550
+ context "without configured subscription" do
466
551
  context "without subscribe_as_default argument" do
467
552
  context "with true as ActivityNotification.config.subscribe_as_default" do
468
553
  it "returns true" do
@@ -484,7 +569,7 @@ shared_examples_for :subscriber do
484
569
  end
485
570
  end
486
571
 
487
- context "with configured subscpriotion" do
572
+ context "with configured subscription" do
488
573
  context "subscribing to notification" do
489
574
  it "returns true" do
490
575
  subscription = test_instance.create_subscription(key: @test_key)
@@ -521,7 +606,7 @@ shared_examples_for :subscriber do
521
606
  described_class._notification_subscription_allowed = true
522
607
  end
523
608
 
524
- context "without configured subscpriotion" do
609
+ context "without configured subscription" do
525
610
  context "without subscribe_as_default argument" do
526
611
  context "with true as ActivityNotification.config.subscribe_as_default" do
527
612
  it "returns true" do
@@ -530,6 +615,28 @@ shared_examples_for :subscriber do
530
615
  expect(test_instance.subscribes_to_notification_email?(@test_key)).to be_truthy
531
616
  ActivityNotification.config.subscribe_as_default = subscribe_as_default
532
617
  end
618
+
619
+ context "with true as ActivityNotification.config.subscribe_to_email_as_default" do
620
+ it "returns true" do
621
+ subscribe_as_default = ActivityNotification.config.subscribe_as_default
622
+ ActivityNotification.config.subscribe_as_default = true
623
+ ActivityNotification.config.subscribe_to_email_as_default = true
624
+ expect(test_instance.subscribes_to_notification_email?(@test_key)).to be_truthy
625
+ ActivityNotification.config.subscribe_as_default = subscribe_as_default
626
+ ActivityNotification.config.subscribe_to_email_as_default = nil
627
+ end
628
+ end
629
+
630
+ context "with false as ActivityNotification.config.subscribe_to_email_as_default" do
631
+ it "returns false" do
632
+ subscribe_as_default = ActivityNotification.config.subscribe_as_default
633
+ ActivityNotification.config.subscribe_as_default = true
634
+ ActivityNotification.config.subscribe_to_email_as_default = false
635
+ expect(test_instance.subscribes_to_notification_email?(@test_key)).to be_falsey
636
+ ActivityNotification.config.subscribe_as_default = subscribe_as_default
637
+ ActivityNotification.config.subscribe_to_email_as_default = nil
638
+ end
639
+ end
533
640
  end
534
641
 
535
642
  context "with false as ActivityNotification.config.subscribe_as_default" do
@@ -539,11 +646,33 @@ shared_examples_for :subscriber do
539
646
  expect(test_instance.subscribes_to_notification_email?(@test_key)).to be_falsey
540
647
  ActivityNotification.config.subscribe_as_default = subscribe_as_default
541
648
  end
649
+
650
+ context "with true as ActivityNotification.config.subscribe_to_email_as_default" do
651
+ it "returns false" do
652
+ subscribe_as_default = ActivityNotification.config.subscribe_as_default
653
+ ActivityNotification.config.subscribe_as_default = false
654
+ ActivityNotification.config.subscribe_to_email_as_default = true
655
+ expect(test_instance.subscribes_to_notification_email?(@test_key)).to be_falsey
656
+ ActivityNotification.config.subscribe_as_default = subscribe_as_default
657
+ ActivityNotification.config.subscribe_to_email_as_default = nil
658
+ end
659
+ end
660
+
661
+ context "with false as ActivityNotification.config.subscribe_to_email_as_default" do
662
+ it "returns false" do
663
+ subscribe_as_default = ActivityNotification.config.subscribe_as_default
664
+ ActivityNotification.config.subscribe_as_default = false
665
+ ActivityNotification.config.subscribe_to_email_as_default = false
666
+ expect(test_instance.subscribes_to_notification_email?(@test_key)).to be_falsey
667
+ ActivityNotification.config.subscribe_as_default = subscribe_as_default
668
+ ActivityNotification.config.subscribe_to_email_as_default = nil
669
+ end
670
+ end
542
671
  end
543
672
  end
544
673
  end
545
674
 
546
- context "with configured subscpriotion" do
675
+ context "with configured subscription" do
547
676
  context "subscribing to notification email" do
548
677
  it "returns true" do
549
678
  subscription = test_instance.create_subscription(key: @test_key)
@@ -581,7 +710,7 @@ shared_examples_for :subscriber do
581
710
  described_class._notification_subscription_allowed = true
582
711
  end
583
712
 
584
- context "without configured subscpriotion" do
713
+ context "without configured subscription" do
585
714
  context "without subscribe_as_default argument" do
586
715
  context "with true as ActivityNotification.config.subscribe_as_default" do
587
716
  it "returns true" do
@@ -590,6 +719,28 @@ shared_examples_for :subscriber do
590
719
  expect(test_instance.subscribes_to_optional_target?(@test_key, @optional_target_name)).to be_truthy
591
720
  ActivityNotification.config.subscribe_as_default = subscribe_as_default
592
721
  end
722
+
723
+ context "with true as ActivityNotification.config.subscribe_to_optional_targets_as_default" do
724
+ it "returns true" do
725
+ subscribe_as_default = ActivityNotification.config.subscribe_as_default
726
+ ActivityNotification.config.subscribe_as_default = true
727
+ ActivityNotification.config.subscribe_to_optional_targets_as_default = true
728
+ expect(test_instance.subscribes_to_optional_target?(@test_key, @optional_target_name)).to be_truthy
729
+ ActivityNotification.config.subscribe_as_default = subscribe_as_default
730
+ ActivityNotification.config.subscribe_to_optional_targets_as_default = nil
731
+ end
732
+ end
733
+
734
+ context "with false as ActivityNotification.config.subscribe_to_optional_targets_as_default" do
735
+ it "returns false" do
736
+ subscribe_as_default = ActivityNotification.config.subscribe_as_default
737
+ ActivityNotification.config.subscribe_as_default = true
738
+ ActivityNotification.config.subscribe_to_optional_targets_as_default = false
739
+ expect(test_instance.subscribes_to_optional_target?(@test_key, @optional_target_name)).to be_falsey
740
+ ActivityNotification.config.subscribe_as_default = subscribe_as_default
741
+ ActivityNotification.config.subscribe_to_optional_targets_as_default = nil
742
+ end
743
+ end
593
744
  end
594
745
 
595
746
  context "with false as ActivityNotification.config.subscribe_as_default" do
@@ -599,11 +750,33 @@ shared_examples_for :subscriber do
599
750
  expect(test_instance.subscribes_to_optional_target?(@test_key, @optional_target_name)).to be_falsey
600
751
  ActivityNotification.config.subscribe_as_default = subscribe_as_default
601
752
  end
753
+
754
+ context "with true as ActivityNotification.config.subscribe_to_optional_targets_as_default" do
755
+ it "returns false" do
756
+ subscribe_as_default = ActivityNotification.config.subscribe_as_default
757
+ ActivityNotification.config.subscribe_as_default = false
758
+ ActivityNotification.config.subscribe_to_optional_targets_as_default = true
759
+ expect(test_instance.subscribes_to_optional_target?(@test_key, @optional_target_name)).to be_falsey
760
+ ActivityNotification.config.subscribe_as_default = subscribe_as_default
761
+ ActivityNotification.config.subscribe_to_optional_targets_as_default = nil
762
+ end
763
+ end
764
+
765
+ context "with false as ActivityNotification.config.subscribe_to_optional_targets_as_default" do
766
+ it "returns false" do
767
+ subscribe_as_default = ActivityNotification.config.subscribe_as_default
768
+ ActivityNotification.config.subscribe_as_default = false
769
+ ActivityNotification.config.subscribe_to_optional_targets_as_default = false
770
+ expect(test_instance.subscribes_to_optional_target?(@test_key, @optional_target_name)).to be_falsey
771
+ ActivityNotification.config.subscribe_as_default = subscribe_as_default
772
+ ActivityNotification.config.subscribe_to_optional_targets_as_default = nil
773
+ end
774
+ end
602
775
  end
603
776
  end
604
777
  end
605
778
 
606
- context "with configured subscpriotion" do
779
+ context "with configured subscription" do
607
780
  context "subscribing to the specified optional target" do
608
781
  it "returns true" do
609
782
  subscription = test_instance.create_subscription(key: @test_key, optional_targets: { ActivityNotification::Subscription.to_optional_target_key(@optional_target_name) => true })