activity_notification 2.4.1 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (250) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +4 -2
  3. data/app/jobs/activity_notification/cascading_notification_job.rb +123 -0
  4. data/docs/Functions.md +197 -1
  5. data/lib/activity_notification/apis/cascading_notification_api.rb +208 -0
  6. data/lib/activity_notification/apis/notification_api.rb +3 -0
  7. data/lib/activity_notification/config.rb +10 -0
  8. data/lib/activity_notification/mailers/helpers.rb +27 -1
  9. data/lib/activity_notification/version.rb +1 -1
  10. data/lib/generators/templates/activity_notification.rb +8 -0
  11. metadata +5 -441
  12. data/.codeclimate.yml +0 -33
  13. data/.coveralls.yml +0 -1
  14. data/.github/ISSUE_TEMPLATE/bug_report.md +0 -22
  15. data/.github/ISSUE_TEMPLATE/feature_request.md +0 -17
  16. data/.github/pull_request_template.md +0 -13
  17. data/.github/workflows/build.yml +0 -100
  18. data/.gitignore +0 -74
  19. data/.rspec +0 -3
  20. data/.rubocop.yml +0 -1157
  21. data/.yardopts +0 -6
  22. data/CHANGELOG.md +0 -452
  23. data/Gemfile +0 -31
  24. data/Procfile +0 -2
  25. data/Rakefile +0 -28
  26. data/activity_notification.gemspec +0 -44
  27. data/ai-curated-specs/issues/172/design.md +0 -220
  28. data/ai-curated-specs/issues/172/tasks.md +0 -326
  29. data/ai-curated-specs/issues/188/design.md +0 -227
  30. data/ai-curated-specs/issues/188/requirements.md +0 -78
  31. data/ai-curated-specs/issues/188/tasks.md +0 -203
  32. data/ai-curated-specs/issues/188/upstream-contributions.md +0 -592
  33. data/ai-curated-specs/issues/50/design.md +0 -235
  34. data/ai-curated-specs/issues/50/requirements.md +0 -49
  35. data/ai-curated-specs/issues/50/tasks.md +0 -232
  36. data/bin/_dynamodblocal +0 -4
  37. data/bin/bundle_update.sh +0 -7
  38. data/bin/deploy_on_heroku.sh +0 -16
  39. data/bin/install_dynamodblocal.sh +0 -5
  40. data/bin/start_dynamodblocal.sh +0 -47
  41. data/bin/stop_dynamodblocal.sh +0 -34
  42. data/gemfiles/Gemfile.rails-5.0 +0 -25
  43. data/gemfiles/Gemfile.rails-5.1 +0 -25
  44. data/gemfiles/Gemfile.rails-5.2 +0 -24
  45. data/gemfiles/Gemfile.rails-6.0 +0 -23
  46. data/gemfiles/Gemfile.rails-6.1 +0 -22
  47. data/gemfiles/Gemfile.rails-7.0 +0 -25
  48. data/gemfiles/Gemfile.rails-7.1 +0 -23
  49. data/gemfiles/Gemfile.rails-7.2 +0 -23
  50. data/gemfiles/Gemfile.rails-8.0 +0 -24
  51. data/package.json +0 -8
  52. data/spec/channels/notification_api_channel_shared_examples.rb +0 -59
  53. data/spec/channels/notification_api_channel_spec.rb +0 -49
  54. data/spec/channels/notification_api_with_devise_channel_spec.rb +0 -76
  55. data/spec/channels/notification_channel_shared_examples.rb +0 -59
  56. data/spec/channels/notification_channel_spec.rb +0 -48
  57. data/spec/channels/notification_with_devise_channel_spec.rb +0 -97
  58. data/spec/concerns/apis/notification_api_spec.rb +0 -1627
  59. data/spec/concerns/apis/subscription_api_spec.rb +0 -474
  60. data/spec/concerns/common_spec.rb +0 -213
  61. data/spec/concerns/models/group_spec.rb +0 -61
  62. data/spec/concerns/models/notifiable_spec.rb +0 -782
  63. data/spec/concerns/models/notifier_spec.rb +0 -71
  64. data/spec/concerns/models/subscriber_spec.rb +0 -800
  65. data/spec/concerns/models/target_spec.rb +0 -1285
  66. data/spec/concerns/renderable_spec.rb +0 -129
  67. data/spec/config_spec.rb +0 -85
  68. data/spec/controllers/common_controller_spec.rb +0 -25
  69. data/spec/controllers/controller_spec_utility.rb +0 -100
  70. data/spec/controllers/dummy_common_controller.rb +0 -5
  71. data/spec/controllers/notifications_api_controller_shared_examples.rb +0 -619
  72. data/spec/controllers/notifications_api_controller_spec.rb +0 -19
  73. data/spec/controllers/notifications_api_with_devise_controller_spec.rb +0 -60
  74. data/spec/controllers/notifications_controller_shared_examples.rb +0 -743
  75. data/spec/controllers/notifications_controller_spec.rb +0 -11
  76. data/spec/controllers/notifications_with_devise_controller_spec.rb +0 -97
  77. data/spec/controllers/subscriptions_api_controller_shared_examples.rb +0 -750
  78. data/spec/controllers/subscriptions_api_controller_spec.rb +0 -19
  79. data/spec/controllers/subscriptions_api_with_devise_controller_spec.rb +0 -60
  80. data/spec/controllers/subscriptions_controller_shared_examples.rb +0 -946
  81. data/spec/controllers/subscriptions_controller_spec.rb +0 -11
  82. data/spec/controllers/subscriptions_with_devise_controller_spec.rb +0 -97
  83. data/spec/factories/admins.rb +0 -5
  84. data/spec/factories/articles.rb +0 -5
  85. data/spec/factories/comments.rb +0 -6
  86. data/spec/factories/dummy/dummy_group.rb +0 -4
  87. data/spec/factories/dummy/dummy_notifiable.rb +0 -4
  88. data/spec/factories/dummy/dummy_notifier.rb +0 -4
  89. data/spec/factories/dummy/dummy_subscriber.rb +0 -4
  90. data/spec/factories/dummy/dummy_target.rb +0 -4
  91. data/spec/factories/notifications.rb +0 -7
  92. data/spec/factories/subscriptions.rb +0 -8
  93. data/spec/factories/users.rb +0 -11
  94. data/spec/generators/controllers_generator_spec.rb +0 -85
  95. data/spec/generators/install_generator_spec.rb +0 -43
  96. data/spec/generators/migration/migration_generator_spec.rb +0 -80
  97. data/spec/generators/models_generator_spec.rb +0 -96
  98. data/spec/generators/views_generator_spec.rb +0 -195
  99. data/spec/helpers/polymorphic_helpers_spec.rb +0 -89
  100. data/spec/helpers/view_helpers_spec.rb +0 -547
  101. data/spec/jobs/notification_resilience_job_spec.rb +0 -167
  102. data/spec/jobs/notify_all_job_spec.rb +0 -23
  103. data/spec/jobs/notify_job_spec.rb +0 -23
  104. data/spec/jobs/notify_to_job_spec.rb +0 -23
  105. data/spec/mailers/mailer_spec.rb +0 -214
  106. data/spec/mailers/notification_resilience_spec.rb +0 -263
  107. data/spec/models/dummy/dummy_group_spec.rb +0 -10
  108. data/spec/models/dummy/dummy_notifiable_spec.rb +0 -10
  109. data/spec/models/dummy/dummy_notifier_spec.rb +0 -10
  110. data/spec/models/dummy/dummy_subscriber_spec.rb +0 -8
  111. data/spec/models/dummy/dummy_target_spec.rb +0 -10
  112. data/spec/models/notification_spec.rb +0 -472
  113. data/spec/models/subscription_spec.rb +0 -215
  114. data/spec/optional_targets/action_cable_api_channel_spec.rb +0 -34
  115. data/spec/optional_targets/action_cable_channel_spec.rb +0 -41
  116. data/spec/optional_targets/amazon_sns_spec.rb +0 -47
  117. data/spec/optional_targets/base_spec.rb +0 -45
  118. data/spec/optional_targets/slack_spec.rb +0 -44
  119. data/spec/orm/dynamoid_spec.rb +0 -115
  120. data/spec/rails_app/Rakefile +0 -15
  121. data/spec/rails_app/app/assets/config/manifest.js +0 -3
  122. data/spec/rails_app/app/assets/images/.keep +0 -0
  123. data/spec/rails_app/app/assets/javascripts/application.js +0 -3
  124. data/spec/rails_app/app/assets/javascripts/cable.js +0 -12
  125. data/spec/rails_app/app/assets/stylesheets/application.css +0 -15
  126. data/spec/rails_app/app/assets/stylesheets/reset.css +0 -85
  127. data/spec/rails_app/app/assets/stylesheets/style.css +0 -244
  128. data/spec/rails_app/app/controllers/admins_controller.rb +0 -21
  129. data/spec/rails_app/app/controllers/application_controller.rb +0 -5
  130. data/spec/rails_app/app/controllers/articles_controller.rb +0 -67
  131. data/spec/rails_app/app/controllers/comments_controller.rb +0 -36
  132. data/spec/rails_app/app/controllers/concerns/.keep +0 -0
  133. data/spec/rails_app/app/controllers/spa_controller.rb +0 -7
  134. data/spec/rails_app/app/controllers/users/notifications_controller.rb +0 -2
  135. data/spec/rails_app/app/controllers/users/notifications_with_devise_controller.rb +0 -2
  136. data/spec/rails_app/app/controllers/users/subscriptions_controller.rb +0 -2
  137. data/spec/rails_app/app/controllers/users/subscriptions_with_devise_controller.rb +0 -2
  138. data/spec/rails_app/app/controllers/users_controller.rb +0 -26
  139. data/spec/rails_app/app/helpers/application_helper.rb +0 -2
  140. data/spec/rails_app/app/helpers/devise_helper.rb +0 -2
  141. data/spec/rails_app/app/javascript/App.vue +0 -40
  142. data/spec/rails_app/app/javascript/components/DeviseTokenAuth.vue +0 -82
  143. data/spec/rails_app/app/javascript/components/Top.vue +0 -98
  144. data/spec/rails_app/app/javascript/components/notifications/Index.vue +0 -200
  145. data/spec/rails_app/app/javascript/components/notifications/Notification.vue +0 -133
  146. data/spec/rails_app/app/javascript/components/notifications/NotificationContent.vue +0 -122
  147. data/spec/rails_app/app/javascript/components/subscriptions/Index.vue +0 -279
  148. data/spec/rails_app/app/javascript/components/subscriptions/NewSubscription.vue +0 -112
  149. data/spec/rails_app/app/javascript/components/subscriptions/NotificationKey.vue +0 -141
  150. data/spec/rails_app/app/javascript/components/subscriptions/Subscription.vue +0 -226
  151. data/spec/rails_app/app/javascript/config/development.js +0 -5
  152. data/spec/rails_app/app/javascript/config/environment.js +0 -7
  153. data/spec/rails_app/app/javascript/config/production.js +0 -5
  154. data/spec/rails_app/app/javascript/config/test.js +0 -5
  155. data/spec/rails_app/app/javascript/packs/application.js +0 -18
  156. data/spec/rails_app/app/javascript/packs/spa.js +0 -14
  157. data/spec/rails_app/app/javascript/router/index.js +0 -73
  158. data/spec/rails_app/app/javascript/store/index.js +0 -37
  159. data/spec/rails_app/app/mailers/.keep +0 -0
  160. data/spec/rails_app/app/mailers/custom_notification_mailer.rb +0 -5
  161. data/spec/rails_app/app/models/admin.rb +0 -35
  162. data/spec/rails_app/app/models/article.rb +0 -54
  163. data/spec/rails_app/app/models/comment.rb +0 -81
  164. data/spec/rails_app/app/models/dummy/dummy_base.rb +0 -11
  165. data/spec/rails_app/app/models/dummy/dummy_group.rb +0 -23
  166. data/spec/rails_app/app/models/dummy/dummy_notifiable.rb +0 -15
  167. data/spec/rails_app/app/models/dummy/dummy_notifiable_target.rb +0 -27
  168. data/spec/rails_app/app/models/dummy/dummy_notifier.rb +0 -15
  169. data/spec/rails_app/app/models/dummy/dummy_subscriber.rb +0 -14
  170. data/spec/rails_app/app/models/dummy/dummy_target.rb +0 -16
  171. data/spec/rails_app/app/models/user.rb +0 -73
  172. data/spec/rails_app/app/views/activity_notification/mailer/dummy_subscribers/test_key.text.erb +0 -1
  173. data/spec/rails_app/app/views/activity_notification/notifications/default/article/_update.html.erb +0 -146
  174. data/spec/rails_app/app/views/activity_notification/notifications/default/custom/_path_test.html.erb +0 -1
  175. data/spec/rails_app/app/views/activity_notification/notifications/default/custom/_test.html.erb +0 -1
  176. data/spec/rails_app/app/views/activity_notification/notifications/users/_custom_index.html.erb +0 -1
  177. data/spec/rails_app/app/views/activity_notification/notifications/users/custom/_test.html.erb +0 -1
  178. data/spec/rails_app/app/views/activity_notification/notifications/users/overridden/custom/_test.html.erb +0 -1
  179. data/spec/rails_app/app/views/activity_notification/optional_targets/admins/amazon_sns/comment/_default.text.erb +0 -10
  180. data/spec/rails_app/app/views/articles/_form.html.erb +0 -24
  181. data/spec/rails_app/app/views/articles/edit.html.erb +0 -8
  182. data/spec/rails_app/app/views/articles/index.html.erb +0 -113
  183. data/spec/rails_app/app/views/articles/new.html.erb +0 -7
  184. data/spec/rails_app/app/views/articles/show.html.erb +0 -49
  185. data/spec/rails_app/app/views/layouts/_header.html.erb +0 -46
  186. data/spec/rails_app/app/views/layouts/application.html.erb +0 -15
  187. data/spec/rails_app/app/views/spa/index.html.erb +0 -2
  188. data/spec/rails_app/babel.config.js +0 -72
  189. data/spec/rails_app/bin/bundle +0 -3
  190. data/spec/rails_app/bin/rails +0 -4
  191. data/spec/rails_app/bin/rake +0 -4
  192. data/spec/rails_app/bin/setup +0 -29
  193. data/spec/rails_app/bin/webpack +0 -18
  194. data/spec/rails_app/bin/webpack-dev-server +0 -18
  195. data/spec/rails_app/config/application.rb +0 -54
  196. data/spec/rails_app/config/boot.rb +0 -5
  197. data/spec/rails_app/config/cable.yml +0 -8
  198. data/spec/rails_app/config/database.yml +0 -36
  199. data/spec/rails_app/config/dynamoid.rb +0 -13
  200. data/spec/rails_app/config/environment.rb +0 -26
  201. data/spec/rails_app/config/environments/development.rb +0 -60
  202. data/spec/rails_app/config/environments/production.rb +0 -85
  203. data/spec/rails_app/config/environments/test.rb +0 -53
  204. data/spec/rails_app/config/initializers/activity_notification.rb +0 -104
  205. data/spec/rails_app/config/initializers/assets.rb +0 -11
  206. data/spec/rails_app/config/initializers/backtrace_silencers.rb +0 -7
  207. data/spec/rails_app/config/initializers/cookies_serializer.rb +0 -3
  208. data/spec/rails_app/config/initializers/copy_it.aws.rb.template +0 -6
  209. data/spec/rails_app/config/initializers/devise.rb +0 -278
  210. data/spec/rails_app/config/initializers/devise_token_auth.rb +0 -55
  211. data/spec/rails_app/config/initializers/filter_parameter_logging.rb +0 -4
  212. data/spec/rails_app/config/initializers/inflections.rb +0 -16
  213. data/spec/rails_app/config/initializers/mime_types.rb +0 -4
  214. data/spec/rails_app/config/initializers/mysql.rb +0 -9
  215. data/spec/rails_app/config/initializers/session_store.rb +0 -3
  216. data/spec/rails_app/config/initializers/wrap_parameters.rb +0 -14
  217. data/spec/rails_app/config/initializers/zeitwerk.rb +0 -10
  218. data/spec/rails_app/config/locales/activity_notification.en.yml +0 -26
  219. data/spec/rails_app/config/locales/devise.en.yml +0 -62
  220. data/spec/rails_app/config/mongoid.yml +0 -13
  221. data/spec/rails_app/config/routes.rb +0 -50
  222. data/spec/rails_app/config/secrets.yml +0 -22
  223. data/spec/rails_app/config/webpack/development.js +0 -5
  224. data/spec/rails_app/config/webpack/environment.js +0 -7
  225. data/spec/rails_app/config/webpack/loaders/vue.js +0 -6
  226. data/spec/rails_app/config/webpack/production.js +0 -5
  227. data/spec/rails_app/config/webpack/test.js +0 -5
  228. data/spec/rails_app/config/webpacker.yml +0 -97
  229. data/spec/rails_app/config.ru +0 -4
  230. data/spec/rails_app/db/migrate/20160716000000_create_test_tables.rb +0 -42
  231. data/spec/rails_app/db/migrate/20181209000000_create_activity_notification_tables.rb +0 -33
  232. data/spec/rails_app/db/migrate/20191201000000_add_tokens_to_users.rb +0 -10
  233. data/spec/rails_app/db/schema.rb +0 -98
  234. data/spec/rails_app/db/seeds.rb +0 -95
  235. data/spec/rails_app/lib/custom_optional_targets/console_output.rb +0 -16
  236. data/spec/rails_app/lib/custom_optional_targets/raise_error.rb +0 -14
  237. data/spec/rails_app/lib/custom_optional_targets/wrong_target.rb +0 -13
  238. data/spec/rails_app/lib/mailer_previews/mailer_preview.rb +0 -29
  239. data/spec/rails_app/package.json +0 -23
  240. data/spec/rails_app/postcss.config.js +0 -12
  241. data/spec/rails_app/public/404.html +0 -67
  242. data/spec/rails_app/public/422.html +0 -67
  243. data/spec/rails_app/public/500.html +0 -66
  244. data/spec/rails_app/public/favicon.ico +0 -0
  245. data/spec/roles/acts_as_group_spec.rb +0 -30
  246. data/spec/roles/acts_as_notifiable_spec.rb +0 -432
  247. data/spec/roles/acts_as_notifier_spec.rb +0 -30
  248. data/spec/roles/acts_as_target_spec.rb +0 -36
  249. data/spec/spec_helper.rb +0 -56
  250. data/spec/version_spec.rb +0 -31
@@ -1,800 +0,0 @@
1
- shared_examples_for :subscriber do
2
- include ActiveJob::TestHelper
3
- let(:test_class_name) { described_class.to_s.underscore.split('/').last.to_sym }
4
- let(:test_instance) { create(test_class_name) }
5
- before do
6
- ActiveJob::Base.queue_adapter = :test
7
- ActivityNotification::Mailer.deliveries.clear
8
- expect(ActivityNotification::Mailer.deliveries.size).to eq(0)
9
- end
10
-
11
- describe "with association" do
12
- it "has many subscriptions" do
13
- subscription_1 = create(:subscription, target: test_instance, key: 'subscription_key_1')
14
- subscription_2 = create(:subscription, target: test_instance, key: 'subscription_key_2', created_at: subscription_1.created_at + 10.second)
15
- expect(test_instance.subscriptions.count).to eq(2)
16
- expect(test_instance.subscriptions.earliest_order.first).to eq(subscription_1)
17
- expect(test_instance.subscriptions.latest_order.first).to eq(subscription_2)
18
- expect(test_instance.subscriptions.latest_order.to_a).to eq(ActivityNotification::Subscription.filtered_by_target(test_instance).latest_order.to_a)
19
- end
20
- end
21
-
22
- describe "as public class methods" do
23
- describe ".available_as_subscriber?" do
24
- it "returns true" do
25
- expect(described_class.available_as_subscriber?).to be_truthy
26
- end
27
- end
28
- end
29
-
30
- describe "as public instance methods" do
31
- describe "#find_subscription" do
32
- before do
33
- expect(test_instance.subscriptions.to_a).to be_empty
34
- end
35
-
36
- context "when the cofigured subscription exists" do
37
- it "returns subscription record" do
38
- subscription = test_instance.create_subscription(key: 'test_key')
39
- expect(test_instance.subscriptions.reload.to_a).not_to be_empty
40
- expect(test_instance.find_subscription('test_key')).to eq(subscription)
41
- end
42
- end
43
-
44
- context "when the cofigured subscription does not exist" do
45
- it "returns nil" do
46
- expect(test_instance.find_subscription('test_key')).to be_nil
47
- end
48
- end
49
- end
50
-
51
- describe "#find_or_create_subscription" do
52
- before do
53
- expect(test_instance.subscriptions.to_a).to be_empty
54
- end
55
-
56
- context "when the cofigured subscription exists" do
57
- it "returns subscription record" do
58
- subscription = test_instance.create_subscription(key: 'test_key')
59
- expect(test_instance.subscriptions.reload.to_a).not_to be_empty
60
- expect(test_instance.find_or_create_subscription('test_key')).to eq(subscription)
61
- end
62
- end
63
-
64
- context "when the cofigured subscription does not exist" do
65
- it "returns created subscription record" do
66
- expect(test_instance.find_or_create_subscription('test_key').target).to eq(test_instance)
67
- end
68
- end
69
- end
70
-
71
- describe "#create_subscription" do
72
- before do
73
- expect(test_instance.subscriptions.to_a).to be_empty
74
- end
75
-
76
- context "without params" do
77
- it "raises ActivityNotification::RecordInvalidError it is invalid" do
78
- expect { test_instance.create_subscription }
79
- .to raise_error(ActivityNotification::RecordInvalidError)
80
- end
81
- end
82
-
83
- context "with only key params" do
84
- it "creates a new subscription" do
85
- params = { key: 'key_1' }
86
- new_subscription = test_instance.create_subscription(params)
87
- expect(new_subscription.subscribing?).to be_truthy
88
- expect(new_subscription.subscribing_to_email?).to be_truthy
89
- expect(new_subscription.subscribing_to_optional_target?(:console_output)).to be_truthy
90
- expect(test_instance.subscriptions.reload.size).to eq(1)
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
148
- end
149
-
150
- context "with false as subscribing params" do
151
- it "creates a new subscription" do
152
- params = { key: 'key_1', subscribing: false }
153
- new_subscription = test_instance.create_subscription(params)
154
- expect(new_subscription.subscribing?).to be_falsey
155
- expect(new_subscription.subscribing_to_email?).to be_falsey
156
- expect(test_instance.subscriptions.reload.size).to eq(1)
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
186
- end
187
-
188
- context "with false as subscribing_to_email params" do
189
- it "creates a new subscription" do
190
- params = { key: 'key_1', subscribing_to_email: false }
191
- new_subscription = test_instance.create_subscription(params)
192
- expect(new_subscription.subscribing?).to be_truthy
193
- expect(new_subscription.subscribing_to_email?).to be_falsey
194
- expect(test_instance.subscriptions.reload.size).to eq(1)
195
- end
196
- end
197
-
198
- context "with true as subscribing and false as subscribing_to_email params" do
199
- it "creates a new subscription" do
200
- params = { key: 'key_1', subscribing: true, subscribing_to_email: false }
201
- new_subscription = test_instance.create_subscription(params)
202
- expect(new_subscription.subscribing?).to be_truthy
203
- expect(new_subscription.subscribing_to_email?).to be_falsey
204
- expect(test_instance.subscriptions.reload.size).to eq(1)
205
- end
206
- end
207
-
208
- context "with false as subscribing and true as subscribing_to_email params" do
209
- it "raises ActivityNotification::RecordInvalidError it is invalid" do
210
- expect {
211
- params = { key: 'key_1', subscribing: false, subscribing_to_email: true }
212
- test_instance.create_subscription(params)
213
- }.to raise_error(ActivityNotification::RecordInvalidError)
214
- end
215
- end
216
-
217
- context "with true as optional_targets params" do
218
- it "creates a new subscription" do
219
- params = { key: 'key_1', optional_targets: { subscribing_to_console_output: true } }
220
- new_subscription = test_instance.create_subscription(params)
221
- expect(new_subscription.subscribing?).to be_truthy
222
- expect(new_subscription.subscribing_to_optional_target?(:console_output)).to be_truthy
223
- expect(test_instance.subscriptions.reload.size).to eq(1)
224
- end
225
- end
226
-
227
- context "with false as optional_targets params" do
228
- it "creates a new subscription" do
229
- params = { key: 'key_1', optional_targets: { subscribing_to_console_output: false } }
230
- new_subscription = test_instance.create_subscription(params)
231
- expect(new_subscription.subscribing?).to be_truthy
232
- expect(new_subscription.subscribing_to_optional_target?(:console_output)).to be_falsey
233
- expect(test_instance.subscriptions.reload.size).to eq(1)
234
- end
235
- end
236
-
237
- context "with true as subscribing and false as optional_targets params" do
238
- it "creates a new subscription" do
239
- params = { key: 'key_1', subscribing: true, optional_targets: { subscribing_to_console_output: false } }
240
- new_subscription = test_instance.create_subscription(params)
241
- expect(new_subscription.subscribing?).to be_truthy
242
- expect(new_subscription.subscribing_to_optional_target?(:console_output)).to be_falsey
243
- expect(test_instance.subscriptions.reload.size).to eq(1)
244
- end
245
- end
246
-
247
- context "with false as subscribing and true as optional_targets params" do
248
- it "raises ActivityNotification::RecordInvalidError it is invalid" do
249
- expect {
250
- params = { key: 'key_1', subscribing: false, optional_targets: { subscribing_to_console_output: true } }
251
- test_instance.create_subscription(params)
252
- }.to raise_error(ActivityNotification::RecordInvalidError)
253
- end
254
- end
255
- end
256
-
257
- describe "#subscription_index" do
258
- context "when the target has no subscriptions" do
259
- it "returns empty records" do
260
- expect(test_instance.subscription_index).to be_empty
261
- end
262
- end
263
-
264
- context "when the target has subscriptions" do
265
- before do
266
- @subscription2 = create(:subscription, target: test_instance, key: 'subscription_key_2')
267
- @subscription1 = create(:subscription, target: test_instance, key: 'subscription_key_1', created_at: @subscription2.created_at + 10.second)
268
- end
269
-
270
- context "without any options" do
271
- it "returns the array of subscriptions" do
272
- expect(test_instance.subscription_index[0]).to eq(@subscription1)
273
- expect(test_instance.subscription_index[1]).to eq(@subscription2)
274
- expect(test_instance.subscription_index.size).to eq(2)
275
- end
276
- end
277
-
278
- context "with limit" do
279
- it "returns the same as subscriptions with limit" do
280
- options = { limit: 1 }
281
- expect(test_instance.subscription_index(options)[0]).to eq(@subscription1)
282
- expect(test_instance.subscription_index(options).size).to eq(1)
283
- end
284
- end
285
-
286
- context "with reverse" do
287
- it "returns the earliest order" do
288
- options = { reverse: true }
289
- expect(test_instance.subscription_index(options)[0]).to eq(@subscription2)
290
- expect(test_instance.subscription_index(options)[1]).to eq(@subscription1)
291
- expect(test_instance.subscription_index(options).size).to eq(2)
292
- end
293
- end
294
-
295
- context 'with filtered_by_key options' do
296
- it "returns filtered notifications only" do
297
- options = { filtered_by_key: 'subscription_key_2' }
298
- expect(test_instance.subscription_index(options)[0]).to eq(@subscription2)
299
- expect(test_instance.subscription_index(options).size).to eq(1)
300
- end
301
- end
302
-
303
- context 'with custom_filter options' do
304
- it "returns filtered subscriptions only" do
305
- options = { custom_filter: { key: 'subscription_key_1' } }
306
- expect(test_instance.subscription_index(options)[0]).to eq(@subscription1)
307
- expect(test_instance.subscription_index(options).size).to eq(1)
308
- end
309
-
310
- it "returns filtered subscriptions only with filter depending on ORM" do
311
- options =
312
- case ActivityNotification.config.orm
313
- when :active_record then { custom_filter: ["subscriptions.key = ?", 'subscription_key_2'] }
314
- when :mongoid then { custom_filter: { key: {'$eq': 'subscription_key_2'} } }
315
- when :dynamoid then { custom_filter: {'key.begins_with': 'subscription_key_2'} }
316
- end
317
- expect(test_instance.subscription_index(options)[0]).to eq(@subscription2)
318
- expect(test_instance.subscription_index(options).size).to eq(1)
319
- end
320
- end
321
-
322
- if ActivityNotification.config.orm == :active_record
323
- context 'with with_target options' do
324
- it "calls with_target" do
325
- expect(ActivityNotification::Subscription).to receive_message_chain(:with_target)
326
- test_instance.subscription_index(with_target: true)
327
- end
328
- end
329
- end
330
- end
331
- end
332
-
333
- describe "#notification_keys" do
334
- context "when the target has no notifications" do
335
- it "returns empty records" do
336
- expect(test_instance.notification_keys).to be_empty
337
- end
338
- end
339
-
340
- context "when the target has notifications" do
341
- before do
342
- notification = create(:notification, target: test_instance, key: 'notification_key_2')
343
- create(:notification, target: test_instance, key: 'notification_key_1', created_at: notification.created_at + 10.second)
344
- create(:subscription, target: test_instance, key: 'notification_key_1')
345
- end
346
-
347
- context "without any options" do
348
- it "returns the array of notification keys" do
349
- expect(test_instance.notification_keys[0]).to eq('notification_key_1')
350
- expect(test_instance.notification_keys[1]).to eq('notification_key_2')
351
- expect(test_instance.notification_keys.size).to eq(2)
352
- end
353
- end
354
-
355
- context "with limit" do
356
- it "returns the same as subscriptions with limit" do
357
- options = { limit: 1 }
358
- expect(test_instance.notification_keys(options)[0]).to eq('notification_key_1')
359
- expect(test_instance.notification_keys(options).size).to eq(1)
360
- end
361
- end
362
-
363
- context "with reverse" do
364
- it "returns the earliest order" do
365
- options = { reverse: true }
366
- expect(test_instance.notification_keys(options)[0]).to eq('notification_key_2')
367
- expect(test_instance.notification_keys(options)[1]).to eq('notification_key_1')
368
- expect(test_instance.notification_keys(options).size).to eq(2)
369
- end
370
- end
371
-
372
- context 'with filter' do
373
- context 'as :configured' do
374
- it "returns notification keys of configured subscriptions only" do
375
- options = { filter: :configured }
376
- expect(test_instance.notification_keys(options)[0]).to eq('notification_key_1')
377
- expect(test_instance.notification_keys(options).size).to eq(1)
378
- options = { filter: 'configured' }
379
- expect(test_instance.notification_keys(options)[0]).to eq('notification_key_1')
380
- expect(test_instance.notification_keys(options).size).to eq(1)
381
- end
382
- end
383
-
384
- context 'as :unconfigured' do
385
- it "returns unconfigured notification keys only" do
386
- options = { filter: :unconfigured }
387
- expect(test_instance.notification_keys(options)[0]).to eq('notification_key_2')
388
- expect(test_instance.notification_keys(options).size).to eq(1)
389
- options = { filter: 'unconfigured' }
390
- expect(test_instance.notification_keys(options)[0]).to eq('notification_key_2')
391
- expect(test_instance.notification_keys(options).size).to eq(1)
392
- end
393
- end
394
- end
395
-
396
- context 'with filtered_by_key options' do
397
- it "returns filtered notifications only" do
398
- options = { filtered_by_key: 'notification_key_2' }
399
- expect(test_instance.notification_keys(options)[0]).to eq('notification_key_2')
400
- expect(test_instance.notification_keys(options).size).to eq(1)
401
- end
402
- end
403
-
404
- context 'with custom_filter options' do
405
- it "returns filtered notifications only" do
406
- options = { custom_filter: { key: 'notification_key_1' } }
407
- expect(test_instance.notification_keys(options)[0]).to eq('notification_key_1')
408
- expect(test_instance.notification_keys(options).size).to eq(1)
409
- end
410
-
411
- it "returns filtered notifications only with filter depending on ORM" do
412
- options =
413
- case ActivityNotification.config.orm
414
- when :active_record then { custom_filter: ["notifications.key = ?", 'notification_key_2'] }
415
- when :mongoid then { custom_filter: { key: {'$eq': 'notification_key_2'} } }
416
- when :dynamoid then { custom_filter: {'key.begins_with': 'notification_key_2'} }
417
- end
418
- expect(test_instance.notification_keys(options)[0]).to eq('notification_key_2')
419
- expect(test_instance.notification_keys(options).size).to eq(1)
420
- end
421
- end
422
- end
423
- end
424
-
425
- # Function test for subscriptions
426
-
427
- describe "#receive_notification_of" do
428
- before do
429
- @test_key = 'test_key'
430
- Comment.acts_as_notifiable described_class.to_s.underscore.pluralize.to_sym, targets: [], email_allowed: true
431
- @notifiable = create(:comment)
432
- expect(@notifiable.notification_email_allowed?(test_instance, @test_key)).to be_truthy
433
- end
434
-
435
- context "subscribing to notification" do
436
- before do
437
- test_instance.create_subscription(key: @test_key)
438
- expect(test_instance.subscribes_to_notification?(@test_key)).to be_truthy
439
- end
440
-
441
- it "returns created notification" do
442
- notification = test_instance.receive_notification_of(@notifiable, key: @test_key)
443
- expect(notification).not_to be_nil
444
- expect(notification.target).to eq(test_instance)
445
- end
446
-
447
- it "creates notification records" do
448
- test_instance.receive_notification_of(@notifiable, key: @test_key)
449
- expect(test_instance.notifications.unopened_only.count).to eq(1)
450
- end
451
- end
452
-
453
- context "subscribing to notification email" do
454
- before do
455
- test_instance.create_subscription(key: @test_key)
456
- expect(test_instance.subscribes_to_notification_email?(@test_key)).to be_truthy
457
- end
458
-
459
- context "as default" do
460
- it "sends notification email later" do
461
- expect {
462
- perform_enqueued_jobs do
463
- test_instance.receive_notification_of(@notifiable, key: @test_key)
464
- end
465
- }.to change { ActivityNotification::Mailer.deliveries.size }.by(1)
466
- expect(ActivityNotification::Mailer.deliveries.size).to eq(1)
467
- end
468
-
469
- it "sends notification email with active job queue" do
470
- expect {
471
- test_instance.receive_notification_of(@notifiable, key: @test_key)
472
- }.to change(ActiveJob::Base.queue_adapter.enqueued_jobs, :size).by(1)
473
- end
474
- end
475
-
476
- context "with send_later false" do
477
- it "sends notification email now" do
478
- test_instance.receive_notification_of(@notifiable, key: @test_key, send_later: false)
479
- expect(ActivityNotification::Mailer.deliveries.size).to eq(1)
480
- end
481
- end
482
- end
483
-
484
- context "unsubscribed to notification" do
485
- before do
486
- test_instance.create_subscription(key: @test_key, subscribing: false)
487
- expect(test_instance.subscribes_to_notification?(@test_key)).to be_falsey
488
- end
489
-
490
- it "returns nil" do
491
- notification = test_instance.receive_notification_of(@notifiable, key: @test_key)
492
- expect(notification).to be_nil
493
- end
494
-
495
- it "does not create notification records" do
496
- test_instance.receive_notification_of(@notifiable, key: @test_key)
497
- expect(test_instance.notifications.unopened_only.count).to eq(0)
498
- end
499
- end
500
-
501
- context "unsubscribed to notification email" do
502
- before do
503
- test_instance.create_subscription(key: @test_key, subscribing: true, subscribing_to_email: false)
504
- expect(test_instance.subscribes_to_notification_email?(@test_key)).to be_falsey
505
- end
506
-
507
- context "as default" do
508
- it "does not send notification email later" do
509
- expect {
510
- perform_enqueued_jobs do
511
- test_instance.receive_notification_of(@notifiable, key: @test_key)
512
- end
513
- }.to change { ActivityNotification::Mailer.deliveries.size }.by(0)
514
- expect(ActivityNotification::Mailer.deliveries.size).to eq(0)
515
- end
516
-
517
- it "does not send notification email with active job queue" do
518
- expect {
519
- test_instance.receive_notification_of(@notifiable, key: @test_key)
520
- }.to change(ActiveJob::Base.queue_adapter.enqueued_jobs, :size).by(0)
521
- end
522
- end
523
-
524
- context "with send_later false" do
525
- it "does not send notification email now" do
526
- test_instance.receive_notification_of(@notifiable, key: @test_key, send_later: false)
527
- expect(ActivityNotification::Mailer.deliveries.size).to eq(0)
528
- end
529
- end
530
- end
531
- end
532
-
533
- describe "#subscribes_to_notification?" do
534
- before do
535
- @test_key = 'test_key'
536
- end
537
-
538
- context "when the subscription is not enabled for the target" do
539
- it "returns true" do
540
- described_class._notification_subscription_allowed = false
541
- expect(test_instance.subscribes_to_notification?(@test_key)).to be_truthy
542
- end
543
- end
544
-
545
- context "when the subscription is enabled for the target" do
546
- before do
547
- described_class._notification_subscription_allowed = true
548
- end
549
-
550
- context "without configured subscription" do
551
- context "without subscribe_as_default argument" do
552
- context "with true as ActivityNotification.config.subscribe_as_default" do
553
- it "returns true" do
554
- subscribe_as_default = ActivityNotification.config.subscribe_as_default
555
- ActivityNotification.config.subscribe_as_default = true
556
- expect(test_instance.subscribes_to_notification?(@test_key)).to be_truthy
557
- ActivityNotification.config.subscribe_as_default = subscribe_as_default
558
- end
559
- end
560
-
561
- context "with false as ActivityNotification.config.subscribe_as_default" do
562
- it "returns false" do
563
- subscribe_as_default = ActivityNotification.config.subscribe_as_default
564
- ActivityNotification.config.subscribe_as_default = false
565
- expect(test_instance.subscribes_to_notification?(@test_key)).to be_falsey
566
- ActivityNotification.config.subscribe_as_default = subscribe_as_default
567
- end
568
- end
569
- end
570
- end
571
-
572
- context "with configured subscription" do
573
- context "subscribing to notification" do
574
- it "returns true" do
575
- subscription = test_instance.create_subscription(key: @test_key)
576
- expect(subscription.subscribing?).to be_truthy
577
- expect(test_instance.subscribes_to_notification?(@test_key)).to be_truthy
578
- end
579
- end
580
-
581
- context "unsubscribed to notification" do
582
- it "returns false" do
583
- subscription = test_instance.create_subscription(key: @test_key, subscribing: false)
584
- expect(subscription.subscribing?).to be_falsey
585
- expect(test_instance.subscribes_to_notification?(@test_key)).to be_falsey
586
- end
587
- end
588
- end
589
- end
590
- end
591
-
592
- describe "#subscribes_to_notification_email?" do
593
- before do
594
- @test_key = 'test_key'
595
- end
596
-
597
- context "when the subscription is not enabled for the target" do
598
- it "returns true" do
599
- described_class._notification_subscription_allowed = false
600
- expect(test_instance.subscribes_to_notification_email?(@test_key)).to be_truthy
601
- end
602
- end
603
-
604
- context "when the subscription is enabled for the target" do
605
- before do
606
- described_class._notification_subscription_allowed = true
607
- end
608
-
609
- context "without configured subscription" do
610
- context "without subscribe_as_default argument" do
611
- context "with true as ActivityNotification.config.subscribe_as_default" do
612
- it "returns true" do
613
- subscribe_as_default = ActivityNotification.config.subscribe_as_default
614
- ActivityNotification.config.subscribe_as_default = true
615
- expect(test_instance.subscribes_to_notification_email?(@test_key)).to be_truthy
616
- ActivityNotification.config.subscribe_as_default = subscribe_as_default
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
640
- end
641
-
642
- context "with false as ActivityNotification.config.subscribe_as_default" do
643
- it "returns false" do
644
- subscribe_as_default = ActivityNotification.config.subscribe_as_default
645
- ActivityNotification.config.subscribe_as_default = false
646
- expect(test_instance.subscribes_to_notification_email?(@test_key)).to be_falsey
647
- ActivityNotification.config.subscribe_as_default = subscribe_as_default
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
671
- end
672
- end
673
- end
674
-
675
- context "with configured subscription" do
676
- context "subscribing to notification email" do
677
- it "returns true" do
678
- subscription = test_instance.create_subscription(key: @test_key)
679
- expect(subscription.subscribing_to_email?).to be_truthy
680
- expect(test_instance.subscribes_to_notification_email?(@test_key)).to be_truthy
681
- end
682
- end
683
-
684
- context "unsubscribed to notification email" do
685
- it "returns false" do
686
- subscription = test_instance.create_subscription(key: @test_key, subscribing: true, subscribing_to_email: false)
687
- expect(subscription.subscribing_to_email?).to be_falsey
688
- expect(test_instance.subscribes_to_notification_email?(@test_key)).to be_falsey
689
- end
690
- end
691
- end
692
- end
693
- end
694
-
695
- describe "#subscribes_to_optional_target?" do
696
- before do
697
- @test_key = 'test_key'
698
- @optional_target_name = :console_output
699
- end
700
-
701
- context "when the subscription is not enabled for the target" do
702
- it "returns true" do
703
- described_class._notification_subscription_allowed = false
704
- expect(test_instance.subscribes_to_optional_target?(@test_key, @optional_target_name)).to be_truthy
705
- end
706
- end
707
-
708
- context "when the subscription is enabled for the target" do
709
- before do
710
- described_class._notification_subscription_allowed = true
711
- end
712
-
713
- context "without configured subscription" do
714
- context "without subscribe_as_default argument" do
715
- context "with true as ActivityNotification.config.subscribe_as_default" do
716
- it "returns true" do
717
- subscribe_as_default = ActivityNotification.config.subscribe_as_default
718
- ActivityNotification.config.subscribe_as_default = true
719
- expect(test_instance.subscribes_to_optional_target?(@test_key, @optional_target_name)).to be_truthy
720
- ActivityNotification.config.subscribe_as_default = subscribe_as_default
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
744
- end
745
-
746
- context "with false as ActivityNotification.config.subscribe_as_default" do
747
- it "returns false" do
748
- subscribe_as_default = ActivityNotification.config.subscribe_as_default
749
- ActivityNotification.config.subscribe_as_default = false
750
- expect(test_instance.subscribes_to_optional_target?(@test_key, @optional_target_name)).to be_falsey
751
- ActivityNotification.config.subscribe_as_default = subscribe_as_default
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
775
- end
776
- end
777
- end
778
-
779
- context "with configured subscription" do
780
- context "subscribing to the specified optional target" do
781
- it "returns true" do
782
- subscription = test_instance.create_subscription(key: @test_key, optional_targets: { ActivityNotification::Subscription.to_optional_target_key(@optional_target_name) => true })
783
- expect(subscription.subscribing_to_optional_target?(@optional_target_name)).to be_truthy
784
- expect(test_instance.subscribes_to_optional_target?(@test_key, @optional_target_name)).to be_truthy
785
- end
786
- end
787
-
788
- context "unsubscribed to the specified optional target" do
789
- it "returns false" do
790
- subscription = test_instance.create_subscription(key: @test_key, subscribing: true, optional_targets: { ActivityNotification::Subscription.to_optional_target_key(@optional_target_name) => false })
791
- expect(subscription.subscribing_to_optional_target?(@optional_target_name)).to be_falsey
792
- expect(test_instance.subscribes_to_optional_target?(@test_key, @optional_target_name)).to be_falsey
793
- end
794
- end
795
- end
796
- end
797
- end
798
-
799
- end
800
- end