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.
- checksums.yaml +4 -4
- data/.travis.yml +10 -16
- data/CHANGELOG.md +52 -0
- data/Gemfile +2 -3
- data/README.md +2 -2
- data/activity_notification.gemspec +1 -1
- data/app/channels/activity_notification/notification_api_with_devise_channel.rb +1 -1
- data/app/channels/activity_notification/notification_channel.rb +1 -1
- data/app/channels/activity_notification/notification_with_devise_channel.rb +1 -1
- data/app/controllers/activity_notification/notifications_controller.rb +0 -20
- data/app/controllers/activity_notification/subscriptions_api_controller.rb +1 -1
- data/app/controllers/activity_notification/subscriptions_controller.rb +2 -2
- data/app/views/activity_notification/subscriptions/default/_form.html.erb +1 -1
- data/app/views/activity_notification/subscriptions/default/_notification_keys.html.erb +2 -2
- data/app/views/activity_notification/subscriptions/default/_subscription.html.erb +2 -2
- data/app/views/activity_notification/subscriptions/default/index.html.erb +2 -2
- data/app/views/activity_notification/subscriptions/default/show.html.erb +2 -2
- data/bin/bundle_update.sh +0 -1
- data/docs/Functions.md +19 -3
- data/docs/Setup.md +190 -63
- data/gemfiles/Gemfile.rails-5.0 +3 -1
- data/gemfiles/Gemfile.rails-5.1 +3 -1
- data/gemfiles/Gemfile.rails-5.2 +3 -1
- data/gemfiles/Gemfile.rails-6.0 +2 -3
- data/gemfiles/{Gemfile.rails-4.2 → Gemfile.rails-6.1} +4 -5
- data/lib/activity_notification/apis/notification_api.rb +7 -0
- data/lib/activity_notification/apis/subscription_api.rb +5 -5
- data/lib/activity_notification/common.rb +15 -4
- data/lib/activity_notification/config.rb +53 -23
- data/lib/activity_notification/controllers/common_controller.rb +2 -18
- data/lib/activity_notification/models/concerns/notifiable.rb +12 -12
- data/lib/activity_notification/models/concerns/subscriber.rb +6 -4
- data/lib/activity_notification/models/concerns/swagger/notification_schema.rb +34 -34
- data/lib/activity_notification/models/concerns/swagger/subscription_schema.rb +17 -17
- data/lib/activity_notification/models/concerns/target.rb +8 -12
- data/lib/activity_notification/optional_targets/action_cable_api_channel.rb +1 -1
- data/lib/activity_notification/optional_targets/action_cable_channel.rb +1 -1
- data/lib/activity_notification/orm/active_record.rb +1 -1
- data/lib/activity_notification/orm/active_record/notification.rb +3 -3
- data/lib/activity_notification/orm/dynamoid.rb +10 -3
- data/lib/activity_notification/orm/dynamoid/notification.rb +49 -14
- data/lib/activity_notification/orm/dynamoid/subscription.rb +2 -2
- data/lib/activity_notification/orm/mongoid.rb +10 -3
- data/lib/activity_notification/orm/mongoid/notification.rb +8 -6
- data/lib/activity_notification/orm/mongoid/subscription.rb +1 -1
- data/lib/activity_notification/renderable.rb +2 -2
- data/lib/activity_notification/roles/acts_as_notifiable.rb +13 -16
- data/lib/activity_notification/version.rb +1 -1
- data/lib/generators/templates/activity_notification.rb +11 -1
- data/lib/generators/templates/migrations/migration.rb +1 -1
- data/spec/channels/notification_api_channel_spec.rb +42 -44
- data/spec/channels/notification_api_with_devise_channel_spec.rb +57 -59
- data/spec/channels/notification_channel_spec.rb +41 -43
- data/spec/channels/notification_with_devise_channel_spec.rb +75 -77
- data/spec/concerns/apis/subscription_api_spec.rb +144 -2
- data/spec/concerns/common_spec.rb +25 -3
- data/spec/concerns/models/notifiable_spec.rb +35 -35
- data/spec/concerns/models/subscriber_spec.rb +179 -6
- data/spec/concerns/models/target_spec.rb +10 -12
- data/spec/concerns/renderable_spec.rb +5 -5
- data/spec/config_spec.rb +26 -15
- data/spec/controllers/controller_spec_utility.rb +15 -51
- data/spec/generators/migration/migration_generator_spec.rb +2 -10
- data/spec/helpers/view_helpers_spec.rb +1 -1
- data/spec/optional_targets/action_cable_api_channel_spec.rb +21 -24
- data/spec/optional_targets/action_cable_channel_spec.rb +26 -29
- data/spec/rails_app/app/controllers/users_controller.rb +5 -0
- data/spec/rails_app/app/javascript/App.vue +8 -72
- data/spec/rails_app/app/javascript/components/DeviseTokenAuth.vue +3 -4
- data/spec/rails_app/app/javascript/components/Top.vue +2 -3
- data/spec/rails_app/app/javascript/packs/spa.js +6 -3
- data/spec/rails_app/app/javascript/router/index.js +73 -0
- data/spec/rails_app/app/javascript/store/{auth.js → index.js} +0 -0
- data/spec/rails_app/app/models/dummy/dummy_group.rb +8 -0
- data/spec/rails_app/app/models/dummy/dummy_notifiable_target.rb +8 -0
- data/spec/rails_app/app/models/user.rb +2 -1
- data/spec/rails_app/config/application.rb +6 -7
- data/spec/rails_app/config/dynamoid.rb +11 -3
- data/spec/rails_app/config/environments/production.rb +3 -0
- data/spec/rails_app/config/environments/test.rb +2 -11
- data/spec/rails_app/config/initializers/activity_notification.rb +13 -3
- data/spec/rails_app/config/routes.rb +5 -1
- data/spec/rails_app/db/seeds.rb +9 -2
- data/spec/rails_app/package.json +14 -14
- data/spec/roles/acts_as_notifiable_spec.rb +5 -5
- data/spec/spec_helper.rb +1 -5
- metadata +12 -12
- 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
|
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
|
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.
|
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 "#
|
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.
|
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.
|
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
|
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.
|
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.
|
440
|
-
expect(test_instance.
|
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
|
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.
|
451
|
-
expect(test_instance.
|
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
|
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.
|
462
|
-
expect(test_instance.
|
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.
|
467
|
-
expect(test_instance.
|
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.
|
472
|
-
expect(test_instance.
|
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 "#
|
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.
|
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.
|
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
|
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.
|
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.
|
504
|
-
expect(test_instance.
|
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
|
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.
|
515
|
-
expect(test_instance.
|
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
|
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.
|
526
|
-
expect(test_instance.
|
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.
|
531
|
-
expect(test_instance.
|
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.
|
536
|
-
expect(test_instance.
|
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
|
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
|
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
|
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
|
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
|
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
|
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 })
|