activity_notification 2.1.2 → 2.2.2

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.
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 })