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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '0925836406b562667162fcddb33f8c4e872f2da0cb6e4bfef2fa00d727c48b76'
4
- data.tar.gz: 1e9a79db20559fb3c19efb494c7b0d137d653fb79fc8db168df70e84b299224a
3
+ metadata.gz: d29e3ff0106686c4b32231c8ffcd70fe1046f8eb02c0740c81c814d21eb969ef
4
+ data.tar.gz: '0886dc334077573da144b5929dbf623a289796f9a576fe3a0abd04b1bb7ce759'
5
5
  SHA512:
6
- metadata.gz: 6c8a1b7f11b9c88350c8565be038c3ac968b850aa8a3f50e683c6c7a4f162e6680c275147db9ad7bbed864b0082984e3e3dfc55bd7cace40592b3017e1ca8b58
7
- data.tar.gz: 73f623e03fd9700b24dcbdeabaef9c732e2d22cea15f9b2a1b129812314f6d5dac672d22ed14a93f611903c05f543c344cc3a5e18e3b44d6af3fd677796321e9
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.org/simukappu/activity_notification.svg?branch=master)](https://travis-ci.org/simukappu/activity_notification)
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(true),
95
- with_optional_targets: params[:with_optional_targets].to_s.to_boolean(true))
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.subscribe_as_default }, 'true', 'false' %>
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.subscribe_as_default }, 'true', 'false' %>
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.subscribe_as_default, id: "#{key}_subscription_optional_targets_subscribing_to_#{ActivityNotification::Subscription.to_optional_target_key(optional_target_name)}_check_box" %>
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: '$(this).find("input").prop("checked", true);$(this).parent().parent().parent().next().slideDown();$(this).parent().parent().parent().next().find("input").prop("checked", true);$(this).parent().parent().parent().next().next().slideDown();$(this).parent().parent().parent().next().next().find("input").prop("checked", true);', method: :put, remote: true do %>
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.merge(with_email_subscription: false)), 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 %>
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.subscribe_as_default %>);
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.subscribe_as_default %>);
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.subscribe_as_default %>);
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.subscribe_as_default %>);
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
@@ -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] : true
131
- with_optional_targets = options.has_key?(:with_optional_targets) ? options[:with_optional_targets] : true
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.subscribe_as_default)
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 = true
209
- @orm = :active_record
210
- @notification_table_name = 'notifications'
211
- @subscription_table_name = 'subscriptions'
212
- @email_enabled = false
213
- @subscription_enabled = false
214
- @subscribe_as_default = true
215
- @mailer_sender = nil
216
- @mailer = 'ActivityNotification::Mailer'
217
- @parent_mailer = 'ActionMailer::Base'
218
- @parent_job = 'ActiveJob::Base'
219
- @parent_controller = 'ApplicationController'
220
- @parent_channel = 'ActionCable::Channel::Base'
221
- @mailer_templates_dir = 'activity_notification/mailer'
222
- @opened_index_limit = 10
223
- @active_job_queue = :activity_notification
224
- @composite_key_delimiter = '#'
225
- @store_with_associated_records = false
226
- @action_cable_enabled = false
227
- @action_cable_api_enabled = false
228
- @action_cable_with_devise = false
229
- @notification_channel_prefix = 'activity_notification_channel'
230
- @notification_api_channel_prefix = 'activity_notification_api_channel'
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.subscribe_as_default)
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.subscribe_as_default)
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.subscribe_as_default)
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.subscribe_as_default)
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, **{ polymorphic: true, optional: true }
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, **{ class_name: "ActivityNotification::Notification", optional: true }
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, **{ polymorphic: true, optional: true }
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.subscribe_as_default
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.subscribe_as_default
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
@@ -1,3 +1,3 @@
1
1
  module ActivityNotification
2
- VERSION = "2.2.1"
2
+ VERSION = "2.2.2"
3
3
  end
@@ -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 ctivity_notification publishes WebSocket notifications using ActionCable only to authenticated target with Devise.
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 subscpriotion" do
311
+ context "without configured optional target subscription" do
214
312
  context "without subscribe_as_default argument" do
215
313
  context "with true as ActivityNotification.config.subscribe_as_default" do
216
314
  it "returns true" do
@@ -219,6 +317,28 @@ shared_examples_for :subscription_api do
219
317
  expect(test_instance.subscribing_to_optional_target?(:console_output)).to be_truthy
220
318
  ActivityNotification.config.subscribe_as_default = subscribe_as_default
221
319
  end
320
+
321
+ context "with true as ActivityNotification.config.subscribe_to_optional_targets_as_default" do
322
+ it "returns true" do
323
+ subscribe_as_default = ActivityNotification.config.subscribe_as_default
324
+ ActivityNotification.config.subscribe_as_default = true
325
+ ActivityNotification.config.subscribe_to_optional_targets_as_default = true
326
+ expect(test_instance.subscribing_to_optional_target?(:console_output)).to be_truthy
327
+ ActivityNotification.config.subscribe_as_default = subscribe_as_default
328
+ ActivityNotification.config.subscribe_to_optional_targets_as_default = nil
329
+ end
330
+ end
331
+
332
+ context "with false as ActivityNotification.config.subscribe_to_optional_targets_as_default" do
333
+ it "returns false" do
334
+ subscribe_as_default = ActivityNotification.config.subscribe_as_default
335
+ ActivityNotification.config.subscribe_as_default = true
336
+ ActivityNotification.config.subscribe_to_optional_targets_as_default = false
337
+ expect(test_instance.subscribing_to_optional_target?(:console_output)).to be_falsey
338
+ ActivityNotification.config.subscribe_as_default = subscribe_as_default
339
+ ActivityNotification.config.subscribe_to_optional_targets_as_default = nil
340
+ end
341
+ end
222
342
  end
223
343
 
224
344
  context "with false as ActivityNotification.config.subscribe_as_default" do
@@ -228,11 +348,33 @@ shared_examples_for :subscription_api do
228
348
  expect(test_instance.subscribing_to_optional_target?(:console_output)).to be_falsey
229
349
  ActivityNotification.config.subscribe_as_default = subscribe_as_default
230
350
  end
351
+
352
+ context "with true as ActivityNotification.config.subscribe_to_optional_targets_as_default" do
353
+ it "returns false" do
354
+ subscribe_as_default = ActivityNotification.config.subscribe_as_default
355
+ ActivityNotification.config.subscribe_as_default = false
356
+ ActivityNotification.config.subscribe_to_optional_targets_as_default = true
357
+ expect(test_instance.subscribing_to_optional_target?(:console_output)).to be_falsey
358
+ ActivityNotification.config.subscribe_as_default = subscribe_as_default
359
+ ActivityNotification.config.subscribe_to_optional_targets_as_default = nil
360
+ end
361
+ end
362
+
363
+ context "with false as ActivityNotification.config.subscribe_to_optional_targets_as_default" do
364
+ it "returns false" do
365
+ subscribe_as_default = ActivityNotification.config.subscribe_as_default
366
+ ActivityNotification.config.subscribe_as_default = false
367
+ ActivityNotification.config.subscribe_to_optional_targets_as_default = false
368
+ expect(test_instance.subscribing_to_optional_target?(:console_output)).to be_falsey
369
+ ActivityNotification.config.subscribe_as_default = subscribe_as_default
370
+ ActivityNotification.config.subscribe_to_optional_targets_as_default = nil
371
+ end
372
+ end
231
373
  end
232
374
  end
233
375
  end
234
376
 
235
- context "with configured subscpriotion" do
377
+ context "with configured subscription" do
236
378
  context "subscribing to optional target" do
237
379
  it "returns true" do
238
380
  test_instance.subscribe_to_optional_target(:console_output)
@@ -86,8 +86,65 @@ shared_examples_for :subscriber do
86
86
  new_subscription = test_instance.create_subscription(params)
87
87
  expect(new_subscription.subscribing?).to be_truthy
88
88
  expect(new_subscription.subscribing_to_email?).to be_truthy
89
+ expect(new_subscription.subscribing_to_optional_target?(:console_output)).to be_truthy
89
90
  expect(test_instance.subscriptions.reload.size).to eq(1)
90
91
  end
92
+
93
+ context "with true as ActivityNotification.config.subscribe_to_email_as_default" do
94
+ it "creates a new subscription" do
95
+ ActivityNotification.config.subscribe_to_email_as_default = true
96
+
97
+ params = { key: 'key_1' }
98
+ new_subscription = test_instance.create_subscription(params)
99
+ expect(new_subscription.subscribing?).to be_truthy
100
+ expect(new_subscription.subscribing_to_email?).to be_truthy
101
+ expect(test_instance.subscriptions.reload.size).to eq(1)
102
+
103
+ ActivityNotification.config.subscribe_to_email_as_default = nil
104
+ end
105
+ end
106
+
107
+ context "with false as ActivityNotification.config.subscribe_to_email_as_default" do
108
+ it "creates a new subscription" do
109
+ ActivityNotification.config.subscribe_to_email_as_default = false
110
+
111
+ params = { key: 'key_1' }
112
+ new_subscription = test_instance.create_subscription(params)
113
+ expect(new_subscription.subscribing?).to be_truthy
114
+ expect(new_subscription.subscribing_to_email?).to be_falsey
115
+ expect(test_instance.subscriptions.reload.size).to eq(1)
116
+
117
+ ActivityNotification.config.subscribe_to_email_as_default = nil
118
+ end
119
+ end
120
+
121
+ context "with true as ActivityNotification.config.subscribe_to_optional_targets_as_default" do
122
+ it "creates a new subscription" do
123
+ ActivityNotification.config.subscribe_to_optional_targets_as_default = true
124
+
125
+ params = { key: 'key_1' }
126
+ new_subscription = test_instance.create_subscription(params)
127
+ expect(new_subscription.subscribing?).to be_truthy
128
+ expect(new_subscription.subscribing_to_optional_target?(:console_output)).to be_truthy
129
+ expect(test_instance.subscriptions.reload.size).to eq(1)
130
+
131
+ ActivityNotification.config.subscribe_to_optional_targets_as_default = nil
132
+ end
133
+ end
134
+
135
+ context "with false as ActivityNotification.config.subscribe_to_optional_targets_as_default" do
136
+ it "creates a new subscription" do
137
+ ActivityNotification.config.subscribe_to_optional_targets_as_default = false
138
+
139
+ params = { key: 'key_1' }
140
+ new_subscription = test_instance.create_subscription(params)
141
+ expect(new_subscription.subscribing?).to be_truthy
142
+ expect(new_subscription.subscribing_to_optional_target?(:console_output)).to be_falsey
143
+ expect(test_instance.subscriptions.reload.size).to eq(1)
144
+
145
+ ActivityNotification.config.subscribe_to_optional_targets_as_default = nil
146
+ end
147
+ end
91
148
  end
92
149
 
93
150
  context "with false as subscribing params" do
@@ -98,6 +155,34 @@ shared_examples_for :subscriber do
98
155
  expect(new_subscription.subscribing_to_email?).to be_falsey
99
156
  expect(test_instance.subscriptions.reload.size).to eq(1)
100
157
  end
158
+
159
+ context "with true as ActivityNotification.config.subscribe_to_email_as_default" do
160
+ it "creates a new subscription" do
161
+ ActivityNotification.config.subscribe_to_email_as_default = true
162
+
163
+ params = { key: 'key_1', subscribing: false }
164
+ new_subscription = test_instance.create_subscription(params)
165
+ expect(new_subscription.subscribing?).to be_falsey
166
+ expect(new_subscription.subscribing_to_email?).to be_falsey
167
+ expect(test_instance.subscriptions.reload.size).to eq(1)
168
+
169
+ ActivityNotification.config.subscribe_to_email_as_default = nil
170
+ end
171
+ end
172
+
173
+ context "with false as ActivityNotification.config.subscribe_to_email_as_default" do
174
+ it "creates a new subscription" do
175
+ ActivityNotification.config.subscribe_to_email_as_default = false
176
+
177
+ params = { key: 'key_1', subscribing: false }
178
+ new_subscription = test_instance.create_subscription(params)
179
+ expect(new_subscription.subscribing?).to be_falsey
180
+ expect(new_subscription.subscribing_to_email?).to be_falsey
181
+ expect(test_instance.subscriptions.reload.size).to eq(1)
182
+
183
+ ActivityNotification.config.subscribe_to_email_as_default = nil
184
+ end
185
+ end
101
186
  end
102
187
 
103
188
  context "with false as subscribing_to_email params" do
@@ -462,7 +547,7 @@ shared_examples_for :subscriber do
462
547
  described_class._notification_subscription_allowed = true
463
548
  end
464
549
 
465
- context "without configured subscpriotion" do
550
+ context "without configured subscription" do
466
551
  context "without subscribe_as_default argument" do
467
552
  context "with true as ActivityNotification.config.subscribe_as_default" do
468
553
  it "returns true" do
@@ -484,7 +569,7 @@ shared_examples_for :subscriber do
484
569
  end
485
570
  end
486
571
 
487
- context "with configured subscpriotion" do
572
+ context "with configured subscription" do
488
573
  context "subscribing to notification" do
489
574
  it "returns true" do
490
575
  subscription = test_instance.create_subscription(key: @test_key)
@@ -521,7 +606,7 @@ shared_examples_for :subscriber do
521
606
  described_class._notification_subscription_allowed = true
522
607
  end
523
608
 
524
- context "without configured subscpriotion" do
609
+ context "without configured subscription" do
525
610
  context "without subscribe_as_default argument" do
526
611
  context "with true as ActivityNotification.config.subscribe_as_default" do
527
612
  it "returns true" do
@@ -530,6 +615,28 @@ shared_examples_for :subscriber do
530
615
  expect(test_instance.subscribes_to_notification_email?(@test_key)).to be_truthy
531
616
  ActivityNotification.config.subscribe_as_default = subscribe_as_default
532
617
  end
618
+
619
+ context "with true as ActivityNotification.config.subscribe_to_email_as_default" do
620
+ it "returns true" do
621
+ subscribe_as_default = ActivityNotification.config.subscribe_as_default
622
+ ActivityNotification.config.subscribe_as_default = true
623
+ ActivityNotification.config.subscribe_to_email_as_default = true
624
+ expect(test_instance.subscribes_to_notification_email?(@test_key)).to be_truthy
625
+ ActivityNotification.config.subscribe_as_default = subscribe_as_default
626
+ ActivityNotification.config.subscribe_to_email_as_default = nil
627
+ end
628
+ end
629
+
630
+ context "with false as ActivityNotification.config.subscribe_to_email_as_default" do
631
+ it "returns false" do
632
+ subscribe_as_default = ActivityNotification.config.subscribe_as_default
633
+ ActivityNotification.config.subscribe_as_default = true
634
+ ActivityNotification.config.subscribe_to_email_as_default = false
635
+ expect(test_instance.subscribes_to_notification_email?(@test_key)).to be_falsey
636
+ ActivityNotification.config.subscribe_as_default = subscribe_as_default
637
+ ActivityNotification.config.subscribe_to_email_as_default = nil
638
+ end
639
+ end
533
640
  end
534
641
 
535
642
  context "with false as ActivityNotification.config.subscribe_as_default" do
@@ -539,11 +646,33 @@ shared_examples_for :subscriber do
539
646
  expect(test_instance.subscribes_to_notification_email?(@test_key)).to be_falsey
540
647
  ActivityNotification.config.subscribe_as_default = subscribe_as_default
541
648
  end
649
+
650
+ context "with true as ActivityNotification.config.subscribe_to_email_as_default" do
651
+ it "returns false" do
652
+ subscribe_as_default = ActivityNotification.config.subscribe_as_default
653
+ ActivityNotification.config.subscribe_as_default = false
654
+ ActivityNotification.config.subscribe_to_email_as_default = true
655
+ expect(test_instance.subscribes_to_notification_email?(@test_key)).to be_falsey
656
+ ActivityNotification.config.subscribe_as_default = subscribe_as_default
657
+ ActivityNotification.config.subscribe_to_email_as_default = nil
658
+ end
659
+ end
660
+
661
+ context "with false as ActivityNotification.config.subscribe_to_email_as_default" do
662
+ it "returns false" do
663
+ subscribe_as_default = ActivityNotification.config.subscribe_as_default
664
+ ActivityNotification.config.subscribe_as_default = false
665
+ ActivityNotification.config.subscribe_to_email_as_default = false
666
+ expect(test_instance.subscribes_to_notification_email?(@test_key)).to be_falsey
667
+ ActivityNotification.config.subscribe_as_default = subscribe_as_default
668
+ ActivityNotification.config.subscribe_to_email_as_default = nil
669
+ end
670
+ end
542
671
  end
543
672
  end
544
673
  end
545
674
 
546
- context "with configured subscpriotion" do
675
+ context "with configured subscription" do
547
676
  context "subscribing to notification email" do
548
677
  it "returns true" do
549
678
  subscription = test_instance.create_subscription(key: @test_key)
@@ -581,7 +710,7 @@ shared_examples_for :subscriber do
581
710
  described_class._notification_subscription_allowed = true
582
711
  end
583
712
 
584
- context "without configured subscpriotion" do
713
+ context "without configured subscription" do
585
714
  context "without subscribe_as_default argument" do
586
715
  context "with true as ActivityNotification.config.subscribe_as_default" do
587
716
  it "returns true" do
@@ -590,6 +719,28 @@ shared_examples_for :subscriber do
590
719
  expect(test_instance.subscribes_to_optional_target?(@test_key, @optional_target_name)).to be_truthy
591
720
  ActivityNotification.config.subscribe_as_default = subscribe_as_default
592
721
  end
722
+
723
+ context "with true as ActivityNotification.config.subscribe_to_optional_targets_as_default" do
724
+ it "returns true" do
725
+ subscribe_as_default = ActivityNotification.config.subscribe_as_default
726
+ ActivityNotification.config.subscribe_as_default = true
727
+ ActivityNotification.config.subscribe_to_optional_targets_as_default = true
728
+ expect(test_instance.subscribes_to_optional_target?(@test_key, @optional_target_name)).to be_truthy
729
+ ActivityNotification.config.subscribe_as_default = subscribe_as_default
730
+ ActivityNotification.config.subscribe_to_optional_targets_as_default = nil
731
+ end
732
+ end
733
+
734
+ context "with false as ActivityNotification.config.subscribe_to_optional_targets_as_default" do
735
+ it "returns false" do
736
+ subscribe_as_default = ActivityNotification.config.subscribe_as_default
737
+ ActivityNotification.config.subscribe_as_default = true
738
+ ActivityNotification.config.subscribe_to_optional_targets_as_default = false
739
+ expect(test_instance.subscribes_to_optional_target?(@test_key, @optional_target_name)).to be_falsey
740
+ ActivityNotification.config.subscribe_as_default = subscribe_as_default
741
+ ActivityNotification.config.subscribe_to_optional_targets_as_default = nil
742
+ end
743
+ end
593
744
  end
594
745
 
595
746
  context "with false as ActivityNotification.config.subscribe_as_default" do
@@ -599,11 +750,33 @@ shared_examples_for :subscriber do
599
750
  expect(test_instance.subscribes_to_optional_target?(@test_key, @optional_target_name)).to be_falsey
600
751
  ActivityNotification.config.subscribe_as_default = subscribe_as_default
601
752
  end
753
+
754
+ context "with true as ActivityNotification.config.subscribe_to_optional_targets_as_default" do
755
+ it "returns false" do
756
+ subscribe_as_default = ActivityNotification.config.subscribe_as_default
757
+ ActivityNotification.config.subscribe_as_default = false
758
+ ActivityNotification.config.subscribe_to_optional_targets_as_default = true
759
+ expect(test_instance.subscribes_to_optional_target?(@test_key, @optional_target_name)).to be_falsey
760
+ ActivityNotification.config.subscribe_as_default = subscribe_as_default
761
+ ActivityNotification.config.subscribe_to_optional_targets_as_default = nil
762
+ end
763
+ end
764
+
765
+ context "with false as ActivityNotification.config.subscribe_to_optional_targets_as_default" do
766
+ it "returns false" do
767
+ subscribe_as_default = ActivityNotification.config.subscribe_as_default
768
+ ActivityNotification.config.subscribe_as_default = false
769
+ ActivityNotification.config.subscribe_to_optional_targets_as_default = false
770
+ expect(test_instance.subscribes_to_optional_target?(@test_key, @optional_target_name)).to be_falsey
771
+ ActivityNotification.config.subscribe_as_default = subscribe_as_default
772
+ ActivityNotification.config.subscribe_to_optional_targets_as_default = nil
773
+ end
774
+ end
602
775
  end
603
776
  end
604
777
  end
605
778
 
606
- context "with configured subscpriotion" do
779
+ context "with configured subscription" do
607
780
  context "subscribing to the specified optional target" do
608
781
  it "returns true" do
609
782
  subscription = test_instance.create_subscription(key: @test_key, optional_targets: { ActivityNotification::Subscription.to_optional_target_key(@optional_target_name) => true })
@@ -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'
@@ -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": "^4.2.0",
6
- "axios": "^0.19.0",
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"
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": "^3.9.0"
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.1
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-01-24 00:00:00.000000000 Z
11
+ date: 2021-04-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties