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