activity_notification 2.2.1 → 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/CHANGELOG.md +8 -0
- data/README.md +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/docs/Functions.md +17 -1
- data/gemfiles/Gemfile.rails-6.1 +0 -2
- data/lib/activity_notification/apis/subscription_api.rb +5 -5
- data/lib/activity_notification/config.rb +53 -23
- data/lib/activity_notification/models/concerns/subscriber.rb +6 -4
- data/lib/activity_notification/models/concerns/target.rb +3 -3
- data/lib/activity_notification/orm/active_record/notification.rb +3 -3
- data/lib/activity_notification/orm/dynamoid/subscription.rb +1 -1
- data/lib/activity_notification/orm/mongoid/subscription.rb +1 -1
- data/lib/activity_notification/version.rb +1 -1
- data/lib/generators/templates/activity_notification.rb +11 -1
- data/spec/concerns/apis/subscription_api_spec.rb +144 -2
- data/spec/concerns/models/subscriber_spec.rb +179 -6
- data/spec/rails_app/config/initializers/activity_notification.rb +10 -0
- data/spec/rails_app/package.json +14 -14
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d29e3ff0106686c4b32231c8ffcd70fe1046f8eb02c0740c81c814d21eb969ef
|
4
|
+
data.tar.gz: '0886dc334077573da144b5929dbf623a289796f9a576fe3a0abd04b1bb7ce759'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: db72a6b3d2babc00e7ae2e6062952719f267ff5c1254e3a187bda52fab18e216f4792fe5de8a4d4ff576bbc2ca6221ef566b559b2916e33f290afa0b5b291961
|
7
|
+
data.tar.gz: 3e17d6dcae61a97efdfd7ca586503d29c84abd1e137c6ff6ecbf682a78e3ee99132037949f3d44c17c6e8a1ad1f6ddf0a283bf35b325b619aa7e12f37d0c63e7
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
## 2.2.2 / 2021-04-18
|
2
|
+
[Full Changelog](http://github.com/simukappu/activity_notification/compare/v2.2.1...v2.2.2)
|
3
|
+
|
4
|
+
Enhancements:
|
5
|
+
|
6
|
+
* Configure default subscriptions for emails and optional targets - [#159](https://github.com/simukappu/activity_notification/issues/159) [#160](https://github.com/simukappu/activity_notification/pull/160)
|
7
|
+
* Upgrade gem dependency in tests with Rails 6.1 - [#152](https://github.com/simukappu/activity_notification/issues/152)
|
8
|
+
|
1
9
|
## 2.2.1 / 2021-01-24
|
2
10
|
[Full Changelog](http://github.com/simukappu/activity_notification/compare/v2.2.0...v2.2.1)
|
3
11
|
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# ActivityNotification
|
2
2
|
|
3
|
-
[![Build Status](https://travis-ci.
|
3
|
+
[![Build Status](https://travis-ci.com/simukappu/activity_notification.svg?branch=master)](https://travis-ci.com/simukappu/activity_notification)
|
4
4
|
[![Coverage Status](https://coveralls.io/repos/github/simukappu/activity_notification/badge.svg?branch=master)](https://coveralls.io/github/simukappu/activity_notification?branch=master)
|
5
5
|
[![Dependency](https://img.shields.io/depfu/simukappu/activity_notification.svg)](https://depfu.com/repos/simukappu/activity_notification)
|
6
6
|
[![Inline docs](http://inch-ci.org/github/simukappu/activity_notification.svg?branch=master)](http://inch-ci.org/github/simukappu/activity_notification)
|
@@ -91,8 +91,8 @@ module ActivityNotification
|
|
91
91
|
# @option params [String] :filtered_by_key (nil) Key of the subscription for filter
|
92
92
|
# @return [Response] JavaScript view for ajax request or redirects to back as default
|
93
93
|
def subscribe
|
94
|
-
@subscription.subscribe(with_email_subscription: params[:with_email_subscription].to_s.to_boolean(
|
95
|
-
with_optional_targets: params[:with_optional_targets].to_s.to_boolean(
|
94
|
+
@subscription.subscribe(with_email_subscription: params[:with_email_subscription].to_s.to_boolean(ActivityNotification.config.subscribe_to_email_as_default),
|
95
|
+
with_optional_targets: params[:with_optional_targets].to_s.to_boolean(ActivityNotification.config.subscribe_to_optional_targets_as_default))
|
96
96
|
return_back_or_ajax
|
97
97
|
end
|
98
98
|
|
@@ -37,7 +37,7 @@
|
|
37
37
|
<div class="field">
|
38
38
|
<div class="ui checkbox">
|
39
39
|
<label>
|
40
|
-
<%= f.check_box :subscribing_to_email, { checked: ActivityNotification.config.
|
40
|
+
<%= f.check_box :subscribing_to_email, { checked: ActivityNotification.config.subscribe_to_email_as_default }, 'true', 'false' %>
|
41
41
|
<div class="slider"></div>
|
42
42
|
</label>
|
43
43
|
</div>
|
@@ -38,7 +38,7 @@
|
|
38
38
|
<div class="field">
|
39
39
|
<div class="ui checkbox">
|
40
40
|
<label>
|
41
|
-
<%= f.check_box :subscribing_to_email, { checked: ActivityNotification.config.
|
41
|
+
<%= f.check_box :subscribing_to_email, { checked: ActivityNotification.config.subscribe_to_email_as_default }, 'true', 'false' %>
|
42
42
|
<div class="slider"></div>
|
43
43
|
</label>
|
44
44
|
</div>
|
@@ -56,7 +56,7 @@
|
|
56
56
|
<div class="ui checkbox">
|
57
57
|
<label>
|
58
58
|
<%= hidden_field_tag "subscription[optional_targets][#{ActivityNotification::Subscription.to_optional_target_key(optional_target_name)}]", 'false', id: "#{key}_subscription_optional_targets_subscribing_to_#{ActivityNotification::Subscription.to_optional_target_key(optional_target_name)}_hidden" %>
|
59
|
-
<%= check_box_tag "subscription[optional_targets][#{ActivityNotification::Subscription.to_optional_target_key(optional_target_name)}]", 'true', ActivityNotification.config.
|
59
|
+
<%= check_box_tag "subscription[optional_targets][#{ActivityNotification::Subscription.to_optional_target_key(optional_target_name)}]", 'true', ActivityNotification.config.subscribe_to_optional_targets_as_default, id: "#{key}_subscription_optional_targets_subscribing_to_#{ActivityNotification::Subscription.to_optional_target_key(optional_target_name)}_check_box" %>
|
60
60
|
<div class="slider"></div>
|
61
61
|
</label>
|
62
62
|
</div>
|
@@ -24,12 +24,12 @@
|
|
24
24
|
<% end %>
|
25
25
|
<% else %>
|
26
26
|
<% if ActivityNotification.config.subscribe_as_default %>
|
27
|
-
<%= link_to subscribe_path_for(subscription, option_params), onclick:
|
27
|
+
<%= link_to subscribe_path_for(subscription, option_params), onclick: "$(this).find(\"input\").prop(\"checked\", true);$(this).parent().parent().parent().next().slideDown();$(this).parent().parent().parent().next().find(\"input\").prop(\"checked\", #{ActivityNotification.config.subscribe_to_email_as_default.to_s});$(this).parent().parent().parent().next().next().slideDown();$(this).parent().parent().parent().next().next().find(\"input\").prop(\"checked\", #{ActivityNotification.config.subscribe_to_optional_targets_as_default});", method: :put, remote: true do %>
|
28
28
|
<%= check_box :subscribing, "", { checked: false }, 'true', 'false' %>
|
29
29
|
<div class="slider"></div>
|
30
30
|
<% end %>
|
31
31
|
<% else %>
|
32
|
-
<%= link_to subscribe_path_for(subscription, option_params
|
32
|
+
<%= link_to subscribe_path_for(subscription, option_params), onclick: '$(this).find("input").prop("checked", true);$(this).parent().parent().parent().next().slideDown();$(this).parent().parent().parent().next().next().slideDown();', method: :put, remote: true do %>
|
33
33
|
<%= check_box :subscribing, "", { checked: false }, 'true', 'false' %>
|
34
34
|
<div class="slider"></div>
|
35
35
|
<% end %>
|
@@ -189,9 +189,9 @@
|
|
189
189
|
$thisFieldWrapper = $(this).parent().parent().parent().parent();
|
190
190
|
if ($(this).prop('checked')) {
|
191
191
|
$thisFieldWrapper.next().slideDown();
|
192
|
-
$thisFieldWrapper.next().find("input[type='checkbox']").prop("checked", <%= ActivityNotification.config.
|
192
|
+
$thisFieldWrapper.next().find("input[type='checkbox']").prop("checked", <%= ActivityNotification.config.subscribe_to_email_as_default %>);
|
193
193
|
$thisFieldWrapper.next().next().slideDown();
|
194
|
-
$thisFieldWrapper.next().next().find("input[type='checkbox']").prop("checked", <%= ActivityNotification.config.
|
194
|
+
$thisFieldWrapper.next().next().find("input[type='checkbox']").prop("checked", <%= ActivityNotification.config.subscribe_to_optional_targets_as_default %>);
|
195
195
|
} else {
|
196
196
|
$thisFieldWrapper.next().slideUp();
|
197
197
|
$thisFieldWrapper.next().next().slideUp();
|
@@ -165,9 +165,9 @@
|
|
165
165
|
$thisFieldWrapper = $(this).parent().parent().parent().parent();
|
166
166
|
if ($(this).prop('checked')) {
|
167
167
|
$thisFieldWrapper.next().slideDown();
|
168
|
-
$thisFieldWrapper.next().find("input[type='checkbox']").prop("checked", <%= ActivityNotification.config.
|
168
|
+
$thisFieldWrapper.next().find("input[type='checkbox']").prop("checked", <%= ActivityNotification.config.subscribe_to_email_as_default %>);
|
169
169
|
$thisFieldWrapper.next().next().slideDown();
|
170
|
-
$thisFieldWrapper.next().next().find("input[type='checkbox']").prop("checked", <%= ActivityNotification.config.
|
170
|
+
$thisFieldWrapper.next().next().find("input[type='checkbox']").prop("checked", <%= ActivityNotification.config.subscribe_to_optional_targets_as_default %>);
|
171
171
|
} else {
|
172
172
|
$thisFieldWrapper.next().slideUp();
|
173
173
|
$thisFieldWrapper.next().next().slideUp();
|
data/docs/Functions.md
CHANGED
@@ -308,6 +308,8 @@ Subscriptions are managed by instances of **ActivityNotification::Subscription**
|
|
308
308
|
*true* means the target will receive the notification email with this key including batch notification email with this *batch_key*.
|
309
309
|
*false* means the target will not receive these notification email.
|
310
310
|
|
311
|
+
##### Subscription defaults
|
312
|
+
|
311
313
|
As default, all target subscribes to notification and notification email when subscription record does not exist in your database.
|
312
314
|
You can change this **subscribe_as_default** parameter in initializer *activity_notification.rb*.
|
313
315
|
|
@@ -317,6 +319,20 @@ config.subscribe_as_default = false
|
|
317
319
|
|
318
320
|
Then, all target does not subscribe to notification and notification email and will not receive any notifications as default.
|
319
321
|
|
322
|
+
As default, email and optional target subscriptions will use the same default subscription value as defined in **subscribe_as_default**.
|
323
|
+
You can disable them by providing **subscribe_to_email_as_default** or **subscribe_to_optional_targets_as_default** parameter(s) in initializer *activity_notification.rb*.
|
324
|
+
|
325
|
+
```ruby
|
326
|
+
# Enable subscribe as default, but disable it for emails
|
327
|
+
config.subscribe_as_default = true
|
328
|
+
config.subscribe_to_email_as_default = false
|
329
|
+
config.subscribe_to_optional_targets_as_default = true
|
330
|
+
```
|
331
|
+
|
332
|
+
However if **subscribe_as_default** is not enabled, **subscribe_to_email_as_default** and **subscribe_to_optional_targets_as_default** won't change anything.
|
333
|
+
|
334
|
+
##### Creating and updating subscriptions
|
335
|
+
|
320
336
|
You can create subscription record from subscription API in your target model like this:
|
321
337
|
|
322
338
|
```ruby
|
@@ -574,7 +590,7 @@ To sign in and get *access-token* from Devise Token Auth, call *sign_in* API whi
|
|
574
590
|
```console
|
575
591
|
$ curl -X POST -H "Content-Type: application/json" -D - -d '{"email": "ichiro@example.com","password": "changeit"}' https://activity-notification-example.herokuapp.com/api/v2/auth/sign_in
|
576
592
|
|
577
|
-
|
593
|
+
|
578
594
|
HTTP/1.1 200 OK
|
579
595
|
...
|
580
596
|
Content-Type: application/json; charset=utf-8
|
data/gemfiles/Gemfile.rails-6.1
CHANGED
@@ -3,8 +3,6 @@ source 'https://rubygems.org'
|
|
3
3
|
gemspec path: '../'
|
4
4
|
|
5
5
|
gem 'rails', '~> 6.1.0'
|
6
|
-
gem 'mongoid', git: 'https://github.com/mongodb/mongoid.git'
|
7
|
-
gem 'devise_token_auth', git: 'https://github.com/lynndylanhurley/devise_token_auth'
|
8
6
|
|
9
7
|
group :development do
|
10
8
|
gem 'bullet'
|
@@ -21,7 +21,7 @@ module ActivityNotification
|
|
21
21
|
# @subscriptions = @user.subscriptions.filtered_by_options({ custom_filter: ["created_at >= ?", time.hour.ago] })
|
22
22
|
# @scope class
|
23
23
|
# @param [Hash] options Options for filter
|
24
|
-
# @option options [String] :filtered_by_key (nil) Key of the subscription for filter
|
24
|
+
# @option options [String] :filtered_by_key (nil) Key of the subscription for filter
|
25
25
|
# @option options [Array|Hash] :custom_filter (nil) Custom subscription filter (e.g. ["created_at >= ?", time.hour.ago] or ['created_at.gt': time.hour.ago])
|
26
26
|
# @return [ActiveRecord_AssociationRelation<Subscription>, Mongoid::Criteria<Notificaion>] Database query of filtered subscriptions
|
27
27
|
scope :filtered_by_options, ->(options = {}) {
|
@@ -127,8 +127,8 @@ module ActivityNotification
|
|
127
127
|
# @return [Boolean] If successfully updated subscription instance
|
128
128
|
def subscribe(options = {})
|
129
129
|
subscribed_at = options[:subscribed_at] || Time.current
|
130
|
-
with_email_subscription = options.has_key?(:with_email_subscription) ? options[:with_email_subscription] :
|
131
|
-
with_optional_targets = options.has_key?(:with_optional_targets) ? options[:with_optional_targets] :
|
130
|
+
with_email_subscription = options.has_key?(:with_email_subscription) ? options[:with_email_subscription] : ActivityNotification.config.subscribe_to_email_as_default
|
131
|
+
with_optional_targets = options.has_key?(:with_optional_targets) ? options[:with_optional_targets] : ActivityNotification.config.subscribe_to_optional_targets_as_default
|
132
132
|
new_attributes = { subscribing: true, subscribed_at: subscribed_at, optional_targets: optional_targets }
|
133
133
|
new_attributes = new_attributes.merge(subscribing_to_email: true, subscribed_to_email_at: subscribed_at) if with_email_subscription
|
134
134
|
if with_optional_targets
|
@@ -184,7 +184,7 @@ module ActivityNotification
|
|
184
184
|
# @param [Symbol] optional_target_name Symbol class name of the optional target implementation (e.g. :amazon_sns, :slack)
|
185
185
|
# @param [Boolean] subscribe_as_default Default subscription value to use when the subscription record does not configured
|
186
186
|
# @return [Boolean] If the target subscribes to the specified optional target
|
187
|
-
def subscribing_to_optional_target?(optional_target_name, subscribe_as_default = ActivityNotification.config.
|
187
|
+
def subscribing_to_optional_target?(optional_target_name, subscribe_as_default = ActivityNotification.config.subscribe_to_optional_targets_as_default)
|
188
188
|
optional_target_key = Subscription.to_optional_target_key(optional_target_name)
|
189
189
|
subscribe_as_default ?
|
190
190
|
!optional_targets.has_key?(optional_target_key) || optional_targets[optional_target_key] :
|
@@ -244,4 +244,4 @@ module ActivityNotification
|
|
244
244
|
end
|
245
245
|
|
246
246
|
end
|
247
|
-
end
|
247
|
+
end
|
@@ -61,6 +61,18 @@ module ActivityNotification
|
|
61
61
|
# @return [Boolean] Default subscription value to use when the subscription record does not configured.
|
62
62
|
attr_accessor :subscribe_as_default
|
63
63
|
|
64
|
+
# @overload subscribe_to_email_as_default=(value)
|
65
|
+
# Sets default email subscription value to use when the subscription record does not configured
|
66
|
+
# @param [Boolean] subscribe_to_email_as_default The new subscribe_to_email_as_default
|
67
|
+
# @return [Boolean] Default email subscription value to use when the subscription record does not configured.
|
68
|
+
attr_writer :subscribe_to_email_as_default
|
69
|
+
|
70
|
+
# @overload subscribe_to_optional_targets_as_default=(value)
|
71
|
+
# Sets default optional target subscription value to use when the subscription record does not configured
|
72
|
+
# @param [Boolean] subscribe_to_optional_targets_as_default The new subscribe_to_optional_targets_as_default
|
73
|
+
# @return [Boolean] Default optional target subscription value to use when the subscription record does not configured.
|
74
|
+
attr_writer :subscribe_to_optional_targets_as_default
|
75
|
+
|
64
76
|
# @overload mailer_sender
|
65
77
|
# Returns email address as sender of notification email
|
66
78
|
# @return [String] Email address as sender of notification email.
|
@@ -205,29 +217,31 @@ module ActivityNotification
|
|
205
217
|
# These configuration can be overridden in initializer.
|
206
218
|
# @return [Config] A new instance of Config
|
207
219
|
def initialize
|
208
|
-
@enabled
|
209
|
-
@orm
|
210
|
-
@notification_table_name
|
211
|
-
@subscription_table_name
|
212
|
-
@email_enabled
|
213
|
-
@subscription_enabled
|
214
|
-
@subscribe_as_default
|
215
|
-
@
|
216
|
-
@
|
217
|
-
@
|
218
|
-
@
|
219
|
-
@
|
220
|
-
@
|
221
|
-
@
|
222
|
-
@
|
223
|
-
@
|
224
|
-
@
|
225
|
-
@
|
226
|
-
@
|
227
|
-
@
|
228
|
-
@
|
229
|
-
@
|
230
|
-
@
|
220
|
+
@enabled = true
|
221
|
+
@orm = :active_record
|
222
|
+
@notification_table_name = 'notifications'
|
223
|
+
@subscription_table_name = 'subscriptions'
|
224
|
+
@email_enabled = false
|
225
|
+
@subscription_enabled = false
|
226
|
+
@subscribe_as_default = true
|
227
|
+
@subscribe_to_email_as_default = nil
|
228
|
+
@subscribe_to_optional_targets_as_default = nil
|
229
|
+
@mailer_sender = nil
|
230
|
+
@mailer = 'ActivityNotification::Mailer'
|
231
|
+
@parent_mailer = 'ActionMailer::Base'
|
232
|
+
@parent_job = 'ActiveJob::Base'
|
233
|
+
@parent_controller = 'ApplicationController'
|
234
|
+
@parent_channel = 'ActionCable::Channel::Base'
|
235
|
+
@mailer_templates_dir = 'activity_notification/mailer'
|
236
|
+
@opened_index_limit = 10
|
237
|
+
@active_job_queue = :activity_notification
|
238
|
+
@composite_key_delimiter = '#'
|
239
|
+
@store_with_associated_records = false
|
240
|
+
@action_cable_enabled = false
|
241
|
+
@action_cable_api_enabled = false
|
242
|
+
@action_cable_with_devise = false
|
243
|
+
@notification_channel_prefix = 'activity_notification_channel'
|
244
|
+
@notification_api_channel_prefix = 'activity_notification_api_channel'
|
231
245
|
end
|
232
246
|
|
233
247
|
# Sets ORM name for ActivityNotification (:active_record, :mongoid or :dynamodb)
|
@@ -245,5 +259,21 @@ module ActivityNotification
|
|
245
259
|
if store_with_associated_records && [:mongoid, :dynamoid].exclude?(@orm) then raise ActivityNotification::ConfigError, "config.store_with_associated_records can be set true only when you use mongoid or dynamoid ORM." end
|
246
260
|
@store_with_associated_records = store_with_associated_records
|
247
261
|
end
|
262
|
+
|
263
|
+
# Returns default email subscription value to use when the subscription record does not configured
|
264
|
+
# @return [Boolean] Default email subscription value to use when the subscription record does not configured.
|
265
|
+
def subscribe_to_email_as_default
|
266
|
+
return false unless @subscribe_as_default
|
267
|
+
|
268
|
+
@subscribe_to_email_as_default.nil? ? @subscribe_as_default : @subscribe_to_email_as_default
|
269
|
+
end
|
270
|
+
|
271
|
+
# Returns default optional target subscription value to use when the subscription record does not configured
|
272
|
+
# @return [Boolean] Default optinal target subscription value to use when the subscription record does not configured.
|
273
|
+
def subscribe_to_optional_targets_as_default
|
274
|
+
return false unless @subscribe_as_default
|
275
|
+
|
276
|
+
@subscribe_to_optional_targets_as_default.nil? ? @subscribe_as_default : @subscribe_to_optional_targets_as_default
|
277
|
+
end
|
248
278
|
end
|
249
279
|
end
|
@@ -61,7 +61,9 @@ module ActivityNotification
|
|
61
61
|
def build_subscription(subscription_params = {})
|
62
62
|
created_at = Time.current
|
63
63
|
if subscription_params[:subscribing] == false && subscription_params[:subscribing_to_email].nil?
|
64
|
-
subscription_params[:subscribing_to_email] = subscription_params[:subscribing]
|
64
|
+
subscription_params[:subscribing_to_email] = subscription_params[:subscribing]
|
65
|
+
elsif subscription_params[:subscribing_to_email].nil?
|
66
|
+
subscription_params[:subscribing_to_email] = ActivityNotification.config.subscribe_to_email_as_default
|
65
67
|
end
|
66
68
|
subscription = Subscription.new(subscription_params)
|
67
69
|
subscription.assign_attributes(target: self)
|
@@ -157,7 +159,7 @@ module ActivityNotification
|
|
157
159
|
# @param [String] key Key of the notification
|
158
160
|
# @param [Boolean] subscribe_as_default Default subscription value to use when the subscription record does not configured
|
159
161
|
# @return [Boolean] If the target subscribes to the notification
|
160
|
-
def _subscribes_to_notification_email?(key, subscribe_as_default = ActivityNotification.config.
|
162
|
+
def _subscribes_to_notification_email?(key, subscribe_as_default = ActivityNotification.config.subscribe_to_email_as_default)
|
161
163
|
evaluate_subscription(subscriptions.where(key: key).first, :subscribing_to_email?, subscribe_as_default)
|
162
164
|
end
|
163
165
|
alias_method :_subscribes_to_email?, :_subscribes_to_notification_email?
|
@@ -170,7 +172,7 @@ module ActivityNotification
|
|
170
172
|
# @param [String, Symbol] optional_target_name Class name of the optional target implementation (e.g. :amazon_sns, :slack)
|
171
173
|
# @param [Boolean] subscribe_as_default Default subscription value to use when the subscription record does not configured
|
172
174
|
# @return [Boolean] If the target subscribes to the specified optional target
|
173
|
-
def _subscribes_to_optional_target?(key, optional_target_name, subscribe_as_default = ActivityNotification.config.
|
175
|
+
def _subscribes_to_optional_target?(key, optional_target_name, subscribe_as_default = ActivityNotification.config.subscribe_to_optional_targets_as_default)
|
174
176
|
_subscribes_to_notification?(key, subscribe_as_default) &&
|
175
177
|
evaluate_subscription(subscriptions.where(key: key).first, :subscribing_to_optional_target?, subscribe_as_default, optional_target_name, subscribe_as_default)
|
176
178
|
end
|
@@ -189,4 +191,4 @@ module ActivityNotification
|
|
189
191
|
end
|
190
192
|
|
191
193
|
end
|
192
|
-
end
|
194
|
+
end
|
@@ -541,7 +541,7 @@ module ActivityNotification
|
|
541
541
|
# @param [String] key Key of the notification
|
542
542
|
# @param [Boolean] subscribe_as_default Default subscription value to use when the subscription record does not configured
|
543
543
|
# @return [Boolean] If the target subscribes the notification email or the subscription management is not allowed for the target
|
544
|
-
def subscribes_to_notification_email?(key, subscribe_as_default = ActivityNotification.config.
|
544
|
+
def subscribes_to_notification_email?(key, subscribe_as_default = ActivityNotification.config.subscribe_to_email_as_default)
|
545
545
|
!subscription_allowed?(key) || _subscribes_to_notification_email?(key, subscribe_as_default)
|
546
546
|
end
|
547
547
|
alias_method :subscribes_to_email?, :subscribes_to_notification_email?
|
@@ -553,7 +553,7 @@ module ActivityNotification
|
|
553
553
|
# @param [String, Symbol] optional_target_name Class name of the optional target implementation (e.g. :amazon_sns, :slack)
|
554
554
|
# @param [Boolean] subscribe_as_default Default subscription value to use when the subscription record does not configured
|
555
555
|
# @return [Boolean] If the target subscribes the notification email or the subscription management is not allowed for the target
|
556
|
-
def subscribes_to_optional_target?(key, optional_target_name, subscribe_as_default = ActivityNotification.config.
|
556
|
+
def subscribes_to_optional_target?(key, optional_target_name, subscribe_as_default = ActivityNotification.config.subscribe_to_optional_targets_as_default)
|
557
557
|
!subscription_allowed?(key) || _subscribes_to_optional_target?(key, optional_target_name, subscribe_as_default)
|
558
558
|
end
|
559
559
|
|
@@ -689,4 +689,4 @@ module ActivityNotification
|
|
689
689
|
end
|
690
690
|
|
691
691
|
end
|
692
|
-
end
|
692
|
+
end
|
@@ -23,14 +23,14 @@ module ActivityNotification
|
|
23
23
|
# Belongs to group instance of this notification as polymorphic association.
|
24
24
|
# @scope instance
|
25
25
|
# @return [Object] Group instance of this notification
|
26
|
-
belongs_to :group,
|
26
|
+
belongs_to :group, polymorphic: true, optional: true
|
27
27
|
|
28
28
|
# Belongs to group owner notification instance of this notification.
|
29
29
|
# Only group member instance has :group_owner value.
|
30
30
|
# Group owner instance has nil as :group_owner association.
|
31
31
|
# @scope instance
|
32
32
|
# @return [Notification] Group owner notification instance of this notification
|
33
|
-
belongs_to :group_owner,
|
33
|
+
belongs_to :group_owner, class_name: "ActivityNotification::Notification", optional: true
|
34
34
|
|
35
35
|
# Has many group member notification instances of this notification.
|
36
36
|
# Only group owner instance has :group_members value.
|
@@ -42,7 +42,7 @@ module ActivityNotification
|
|
42
42
|
# Belongs to :notifier instance of this notification.
|
43
43
|
# @scope instance
|
44
44
|
# @return [Object] Notifier instance of this notification
|
45
|
-
belongs_to :notifier,
|
45
|
+
belongs_to :notifier, polymorphic: true, optional: true
|
46
46
|
|
47
47
|
# Serialize parameters Hash
|
48
48
|
serialize :parameters, Hash
|
@@ -21,7 +21,7 @@ module ActivityNotification
|
|
21
21
|
|
22
22
|
field :key, :string
|
23
23
|
field :subscribing, :boolean, default: ActivityNotification.config.subscribe_as_default
|
24
|
-
field :subscribing_to_email, :boolean, default: ActivityNotification.config.
|
24
|
+
field :subscribing_to_email, :boolean, default: ActivityNotification.config.subscribe_to_email_as_default
|
25
25
|
field :subscribed_at, :datetime
|
26
26
|
field :unsubscribed_at, :datetime
|
27
27
|
field :subscribed_to_email_at, :datetime
|
@@ -20,7 +20,7 @@ module ActivityNotification
|
|
20
20
|
|
21
21
|
field :key, type: String
|
22
22
|
field :subscribing, type: Boolean, default: ActivityNotification.config.subscribe_as_default
|
23
|
-
field :subscribing_to_email, type: Boolean, default: ActivityNotification.config.
|
23
|
+
field :subscribing_to_email, type: Boolean, default: ActivityNotification.config.subscribe_to_email_as_default
|
24
24
|
field :subscribed_at, type: DateTime
|
25
25
|
field :unsubscribed_at, type: DateTime
|
26
26
|
field :subscribed_to_email_at, type: DateTime
|
@@ -31,6 +31,16 @@ ActivityNotification.configure do |config|
|
|
31
31
|
# Set false when you want to unsubscribe to any notifications as default.
|
32
32
|
config.subscribe_as_default = true
|
33
33
|
|
34
|
+
# Configure default email subscription value to use when the subscription record does not configured.
|
35
|
+
# Note that you can configure them for each method calling as default argument.
|
36
|
+
# Set false when you want to unsubscribe to email notifications as default.
|
37
|
+
# config.subscribe_to_email_as_default = true
|
38
|
+
|
39
|
+
# Configure default optional target subscription value to use when the subscription record does not configured.
|
40
|
+
# Note that you can configure them for each method calling as default argument.
|
41
|
+
# Set false when you want to unsubscribe to optinal target notifications as default.
|
42
|
+
# config.subscribe_to_optional_targets_as_default = true
|
43
|
+
|
34
44
|
# Configure the e-mail address which will be shown in ActivityNotification::Mailer,
|
35
45
|
# note that it will be overwritten if you use your own mailer class with default "from" parameter.
|
36
46
|
config.mailer_sender = 'please-change-me-at-config-initializers-activity_notification@example.com'
|
@@ -76,7 +86,7 @@ ActivityNotification.configure do |config|
|
|
76
86
|
# Set true when you want to turn on WebSocket API subscription using ActionCable as default.
|
77
87
|
config.action_cable_api_enabled = false
|
78
88
|
|
79
|
-
# Configure if
|
89
|
+
# Configure if activity_notification publishes WebSocket notifications using ActionCable only to authenticated target with Devise.
|
80
90
|
# Note that you can configure them for each model by acts_as roles.
|
81
91
|
# Set true when you want to use Device integration with WebSocket subscription using ActionCable as default.
|
82
92
|
config.action_cable_with_devise = false
|
@@ -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)
|
@@ -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 })
|
@@ -31,6 +31,16 @@ ActivityNotification.configure do |config|
|
|
31
31
|
# Set false when you want to unsubscribe to any notifications as default.
|
32
32
|
config.subscribe_as_default = true
|
33
33
|
|
34
|
+
# Configure default email subscription value to use when the subscription record does not configured.
|
35
|
+
# Note that you can configure them for each method calling as default argument.
|
36
|
+
# Set false when you want to unsubscribe to email notifications as default.
|
37
|
+
# config.subscribe_to_email_as_default = true
|
38
|
+
|
39
|
+
# Configure default optional target subscription value to use when the subscription record does not configured.
|
40
|
+
# Note that you can configure them for each method calling as default argument.
|
41
|
+
# Set false when you want to unsubscribe to optinal target notifications as default.
|
42
|
+
# config.subscribe_to_optional_targets_as_default = true
|
43
|
+
|
34
44
|
# Configure the e-mail address which will be shown in ActivityNotification::Mailer,
|
35
45
|
# note that it will be overwritten if you use your own mailer class with default "from" parameter.
|
36
46
|
config.mailer_sender = 'please-change-me-at-config-initializers-activity_notification@example.com'
|
data/spec/rails_app/package.json
CHANGED
@@ -2,22 +2,22 @@
|
|
2
2
|
"name": "activity_notification",
|
3
3
|
"description": "Sample single page application for activity_notification using Vue.js",
|
4
4
|
"dependencies": {
|
5
|
-
"@rails/webpacker": "
|
6
|
-
"axios": "
|
7
|
-
"vue": "
|
8
|
-
"vuex": "
|
9
|
-
"vuex-persistedstate": "
|
10
|
-
"vue-loader": "
|
11
|
-
"vue-router": "
|
12
|
-
"vue-template-compiler": "
|
13
|
-
"vue-moment": "
|
14
|
-
"vue-moment-tz": "
|
15
|
-
"vue-pluralize": "
|
16
|
-
"actioncable-vue": "
|
17
|
-
"push.js": "
|
5
|
+
"@rails/webpacker": ">=4.3.0",
|
6
|
+
"axios": ">=0.21.1",
|
7
|
+
"vue": ">=2.6.10",
|
8
|
+
"vuex": ">=3.1.2",
|
9
|
+
"vuex-persistedstate": ">=2.7.0",
|
10
|
+
"vue-loader": ">=15.7.2",
|
11
|
+
"vue-router": ">=3.1.3",
|
12
|
+
"vue-template-compiler": ">=2.6.10",
|
13
|
+
"vue-moment": ">=4.1.0",
|
14
|
+
"vue-moment-tz": ">=2.1.1",
|
15
|
+
"vue-pluralize": ">=0.0.2",
|
16
|
+
"actioncable-vue": ">=1.5.1",
|
17
|
+
"push.js": ">=1.0.12"
|
18
18
|
},
|
19
19
|
"devDependencies": {
|
20
|
-
"webpack-dev-server": "
|
20
|
+
"webpack-dev-server": ">=3.11.0"
|
21
21
|
},
|
22
22
|
"license": "MIT"
|
23
23
|
}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activity_notification
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.2.
|
4
|
+
version: 2.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shota Yamazaki
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-04-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: railties
|