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,946 +0,0 @@
1
- require_relative 'controller_spec_utility'
2
-
3
- shared_examples_for :subscriptions_controller do
4
- include ActivityNotification::ControllerSpec::RequestUtility
5
-
6
- let(:target_params) { { target_type: target_type }.merge(extra_params || {}) }
7
-
8
- describe "GET #index" do
9
- context "with target_type and target_id parameters" do
10
- before do
11
- @subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
12
- @notification = create(:notification, target: test_target, key: 'test_notification_key')
13
- get_with_compatibility :index, target_params.merge({ target_id: test_target, typed_target_param => 'dummy' }), valid_session
14
- end
15
-
16
- it "returns 200 as http status code" do
17
- expect(response.status).to eq(200)
18
- end
19
-
20
- it "assigns configured subscription index as @subscriptions" do
21
- expect(assigns(:subscriptions)).to eq([@subscription])
22
- end
23
-
24
- it "assigns unconfigured notification keys as @notification_keys" do
25
- expect(assigns(:notification_keys)).to eq([@notification.key])
26
- end
27
-
28
- it "renders the :index template" do
29
- expect(response).to render_template :index
30
- end
31
- end
32
-
33
- context "with target_type and (typed_target)_id parameters" do
34
- before do
35
- @subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
36
- @notification = create(:notification, target: test_target, key: 'test_notification_key')
37
- get_with_compatibility :index, target_params.merge({ typed_target_param => test_target }), valid_session
38
- end
39
-
40
- it "returns 200 as http status code" do
41
- expect(response.status).to eq(200)
42
- end
43
-
44
- it "assigns subscription index as @subscriptions" do
45
- expect(assigns(:subscriptions)).to eq([@subscription])
46
- end
47
-
48
- it "assigns unconfigured notification keys as @notification_keys" do
49
- expect(assigns(:notification_keys)).to eq([@notification.key])
50
- end
51
-
52
- it "renders the :index template" do
53
- expect(response).to render_template :index
54
- end
55
- end
56
-
57
- context "without target_type parameters" do
58
- before do
59
- @subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
60
- @notification = create(:notification, target: test_target, key: 'test_notification_key')
61
- get_with_compatibility :index, { typed_target_param => test_target }, valid_session
62
- end
63
-
64
- it "returns 400 as http status code" do
65
- expect(response.status).to eq(400)
66
- end
67
- end
68
-
69
- context "with not found (typed_target)_id parameter" do
70
- before do
71
- @subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
72
- @notification = create(:notification, target: test_target, key: 'test_notification_key')
73
- end
74
-
75
- it "raises ActiveRecord::RecordNotFound" do
76
- if ENV['AN_TEST_DB'] == 'mongodb'
77
- expect {
78
- get_with_compatibility :index, target_params.merge({ typed_target_param => 0 }), valid_session
79
- }.to raise_error(Mongoid::Errors::DocumentNotFound)
80
- else
81
- expect {
82
- get_with_compatibility :index, target_params.merge({ typed_target_param => 0 }), valid_session
83
- }.to raise_error(ActiveRecord::RecordNotFound)
84
- end
85
- end
86
- end
87
-
88
- context "with filter parameter" do
89
- context "with configured as filter" do
90
- before do
91
- @subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
92
- @notification = create(:notification, target: test_target, key: 'test_notification_key')
93
- get_with_compatibility :index, target_params.merge({ typed_target_param => test_target, filter: 'configured' }), valid_session
94
- end
95
-
96
- it "assigns configured subscription index as @subscriptions" do
97
- expect(assigns(:subscriptions)).to eq([@subscription])
98
- end
99
-
100
- it "does not assign unconfigured notification keys as @notification_keys" do
101
- expect(assigns(:notification_keys)).to be_nil
102
- end
103
- end
104
-
105
- context "with unconfigured as filter" do
106
- before do
107
- @subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
108
- @notification = create(:notification, target: test_target, key: 'test_notification_key')
109
- get_with_compatibility :index, target_params.merge({ typed_target_param => test_target, filter: 'unconfigured' }), valid_session
110
- end
111
-
112
- it "does not assign configured subscription index as @subscriptions" do
113
- expect(assigns(:subscriptions)).to be_nil
114
- end
115
-
116
- it "assigns unconfigured notification keys as @notification_keys" do
117
- expect(assigns(:notification_keys)).to eq([@notification.key])
118
- end
119
- end
120
- end
121
-
122
- context "with limit parameter" do
123
- before do
124
- create(:subscription, target: test_target, key: 'test_subscription_key_1')
125
- create(:subscription, target: test_target, key: 'test_subscription_key_2')
126
- create(:notification, target: test_target, key: 'test_notification_key_1')
127
- create(:notification, target: test_target, key: 'test_notification_key_2')
128
- end
129
- context "with 2 as limit" do
130
- before do
131
- get_with_compatibility :index, target_params.merge({ typed_target_param => test_target, limit: 2 }), valid_session
132
- end
133
-
134
- it "assigns subscription index of size 2 as @subscriptions" do
135
- expect(assigns(:subscriptions).size).to eq(2)
136
- end
137
-
138
- it "assigns notification key index of size 2 as @notification_keys" do
139
- expect(assigns(:notification_keys).size).to eq(2)
140
- end
141
- end
142
-
143
- context "with 1 as limit" do
144
- before do
145
- get_with_compatibility :index, target_params.merge({ typed_target_param => test_target, limit: 1 }), valid_session
146
- end
147
-
148
- it "assigns subscription index of size 1 as @subscriptions" do
149
- expect(assigns(:subscriptions).size).to eq(1)
150
- end
151
-
152
- it "assigns notification key index of size 1 as @notification_keys" do
153
- expect(assigns(:notification_keys).size).to eq(1)
154
- end
155
- end
156
- end
157
-
158
- context "with reload parameter" do
159
- context "with false as reload" do
160
- before do
161
- @subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
162
- @notification = create(:notification, target: test_target, key: 'test_notification_key')
163
- get_with_compatibility :index, target_params.merge({ typed_target_param => test_target, reload: false }), valid_session
164
- end
165
-
166
- it "returns 200 as http status code" do
167
- expect(response.status).to eq(200)
168
- end
169
-
170
- it "does not assign subscription index as @subscriptions" do
171
- expect(assigns(:subscriptions)).to be_nil
172
- end
173
-
174
- it "does not assign unconfigured notification keys as @notification_keys" do
175
- expect(assigns(:notification_keys)).to be_nil
176
- end
177
-
178
- it "renders the :index template" do
179
- expect(response).to render_template :index
180
- end
181
- end
182
- end
183
-
184
- context "with options filter parameters" do
185
- before do
186
- @subscription1 = create(:subscription, target: test_target, key: 'test_subscription_key_1')
187
- @subscription2 = create(:subscription, target: test_target, key: 'test_subscription_key_2')
188
- @notification1 = create(:notification, target: test_target, key: 'test_notification_key_1')
189
- @notification2 = create(:notification, target: test_target, key: 'test_notification_key_2')
190
- end
191
-
192
- context 'with filtered_by_key parameter' do
193
- it "returns filtered subscriptions only" do
194
- get_with_compatibility :index, target_params.merge({ typed_target_param => test_target, filtered_by_key: 'test_subscription_key_2' }), valid_session
195
- expect(assigns(:subscriptions)[0]).to eq(@subscription2)
196
- expect(assigns(:subscriptions).size).to eq(1)
197
- end
198
-
199
- it "returns filtered notification keys only" do
200
- get_with_compatibility :index, target_params.merge({ typed_target_param => test_target, filtered_by_key: 'test_notification_key_2' }), valid_session
201
- expect(assigns(:notification_keys)[0]).to eq(@notification2.key)
202
- expect(assigns(:notification_keys).size).to eq(1)
203
- end
204
- end
205
- end
206
- end
207
-
208
- describe "PUT #create" do
209
- before do
210
- expect(test_target.subscriptions.size).to eq(0)
211
- end
212
-
213
- context "http direct PUT request without optional targets" do
214
- before do
215
- put_with_compatibility :create, target_params.merge({
216
- typed_target_param => test_target,
217
- "subscription" => { "key" => "new_subscription_key",
218
- "subscribing"=> "true",
219
- "subscribing_to_email"=>"true"
220
- }
221
- }), valid_session
222
- end
223
-
224
- it "returns 302 as http status code" do
225
- expect(response.status).to eq(302)
226
- end
227
-
228
- it "creates new subscription of the target" do
229
- expect(test_target.subscriptions.reload.size).to eq(1)
230
- expect(test_target.subscriptions.reload.first.key).to eq("new_subscription_key")
231
- end
232
-
233
- it "redirects to :index" do
234
- expect(response).to redirect_to action: :index
235
- end
236
- end
237
-
238
- context "http direct PUT request with optional targets" do
239
- before do
240
- put_with_compatibility :create, target_params.merge({
241
- typed_target_param => test_target,
242
- "subscription" => { "key" => "new_subscription_key",
243
- "subscribing"=> "true",
244
- "subscribing_to_email"=>"true",
245
- "optional_targets" => { "subscribing_to_base1" => "true", "subscribing_to_base2" => "false" }
246
- }
247
- }), valid_session
248
- end
249
-
250
- it "returns 302 as http status code" do
251
- expect(response.status).to eq(302)
252
- end
253
-
254
- it "creates new subscription of the target" do
255
- expect(test_target.subscriptions.reload.size).to eq(1)
256
- created_subscription = test_target.subscriptions.reload.first
257
- expect(created_subscription.key).to eq("new_subscription_key")
258
- expect(created_subscription.subscribing_to_optional_target?("base1")).to be_truthy
259
- expect(created_subscription.subscribing_to_optional_target?("base2")).to be_falsey
260
- end
261
-
262
- it "redirects to :index" do
263
- expect(response).to redirect_to action: :index
264
- end
265
- end
266
-
267
- context "http PUT request from root_path" do
268
- before do
269
- request.env["HTTP_REFERER"] = root_path
270
- put_with_compatibility :create, target_params.merge({
271
- typed_target_param => test_target,
272
- "subscription" => { "key" => "new_subscription_key",
273
- "subscribing"=> "true",
274
- "subscribing_to_email"=>"true"
275
- }
276
- }), valid_session
277
- end
278
-
279
- it "returns 302 as http status code" do
280
- expect(response.status).to eq(302)
281
- end
282
-
283
- it "creates new subscription of the target" do
284
- expect(test_target.subscriptions.reload.size).to eq(1)
285
- expect(test_target.subscriptions.reload.first.key).to eq("new_subscription_key")
286
- end
287
-
288
- it "redirects to root_path as request.referer" do
289
- expect(response).to redirect_to root_path
290
- end
291
- end
292
-
293
- context "Ajax PUT request" do
294
- before do
295
- request.env["HTTP_REFERER"] = root_path
296
- xhr_with_compatibility :put, :create, target_params.merge({
297
- typed_target_param => test_target,
298
- "subscription" => { "key" => "new_subscription_key",
299
- "subscribing"=> "true",
300
- "subscribing_to_email"=>"true"
301
- }
302
- }), valid_session
303
- end
304
-
305
- it "returns 200 as http status code" do
306
- expect(response.status).to eq(200)
307
- end
308
-
309
- it "assigns subscription index as @subscriptions" do
310
- expect(assigns(:subscriptions)).to eq([test_target.subscriptions.reload.first])
311
- end
312
-
313
- it "creates new subscription of the target" do
314
- expect(test_target.subscriptions.reload.size).to eq(1)
315
- expect(test_target.subscriptions.reload.first.key).to eq("new_subscription_key")
316
- end
317
-
318
- it "renders the :create template as format js" do
319
- expect(response).to render_template :create, format: :js
320
- end
321
- end
322
- end
323
-
324
- describe "GET #find" do
325
- context "with key, target_type and (typed_target)_id parameters" do
326
- before do
327
- @subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
328
- get_with_compatibility :find, target_params.merge({ key: 'test_subscription_key', typed_target_param => test_target }), valid_session
329
- end
330
-
331
- it "returns 302 as http status code" do
332
- expect(response.status).to eq(302)
333
- end
334
-
335
- it "assigns the requested subscription as @subscription" do
336
- expect(assigns(:subscription)).to eq(@subscription)
337
- end
338
-
339
- it "redirects to :show" do
340
- expect(response).to redirect_to action: :show, id: @subscription
341
- end
342
- end
343
-
344
- context "with wrong id and (typed_target)_id parameters" do
345
- before do
346
- @subscription = create(:subscription, target: create(:user))
347
- get_with_compatibility :find, target_params.merge({ key: 'test_subscription_key', typed_target_param => test_target }), valid_session
348
- end
349
-
350
- it "returns 404 as http status code" do
351
- expect(response.status).to eq(404)
352
- end
353
- end
354
- end
355
-
356
- describe "GET #show" do
357
- context "with id, target_type and (typed_target)_id parameters" do
358
- before do
359
- @subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
360
- get_with_compatibility :show, target_params.merge({ id: @subscription, typed_target_param => test_target }), valid_session
361
- end
362
-
363
- it "returns 200 as http status code" do
364
- expect(response.status).to eq(200)
365
- end
366
-
367
- it "assigns the requested subscription as @subscription" do
368
- expect(assigns(:subscription)).to eq(@subscription)
369
- end
370
-
371
- it "renders the :show template" do
372
- expect(response).to render_template :show
373
- end
374
- end
375
-
376
- context "with wrong id and (typed_target)_id parameters" do
377
- before do
378
- @subscription = create(:subscription, target: create(:user))
379
- get_with_compatibility :show, target_params.merge({ id: @subscription, typed_target_param => test_target }), valid_session
380
- end
381
-
382
- it "returns 403 as http status code" do
383
- expect(response.status).to eq(403)
384
- end
385
- end
386
- end
387
-
388
- describe "DELETE #destroy" do
389
- context "http direct DELETE request" do
390
- before do
391
- @subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
392
- delete_with_compatibility :destroy, target_params.merge({ id: @subscription, typed_target_param => test_target }), valid_session
393
- end
394
-
395
- it "returns 302 as http status code" do
396
- expect(response.status).to eq(302)
397
- end
398
-
399
- it "deletes the subscription" do
400
- expect(test_target.subscriptions.where(id: @subscription.id).exists?).to be_falsey
401
- end
402
-
403
- it "redirects to :index" do
404
- expect(response).to redirect_to action: :index
405
- end
406
- end
407
-
408
- context "http DELETE request from root_path" do
409
- before do
410
- @subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
411
- request.env["HTTP_REFERER"] = root_path
412
- delete_with_compatibility :destroy, target_params.merge({ id: @subscription, typed_target_param => test_target }), valid_session
413
- end
414
-
415
- it "returns 302 as http status code" do
416
- expect(response.status).to eq(302)
417
- end
418
-
419
- it "deletes the subscription" do
420
- expect(assigns(test_target.subscriptions.where(id: @subscription.id).exists?)).to be_falsey
421
- end
422
-
423
- it "redirects to root_path as request.referer" do
424
- expect(response).to redirect_to root_path
425
- end
426
- end
427
-
428
- context "Ajax DELETE request" do
429
- before do
430
- @subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
431
- xhr_with_compatibility :delete, :destroy, target_params.merge({ id: @subscription, typed_target_param => test_target }), valid_session
432
- end
433
-
434
- it "returns 200 as http status code" do
435
- expect(response.status).to eq(200)
436
- end
437
-
438
- it "assigns subscription index as @subscriptions" do
439
- expect(assigns(:subscriptions)).to eq([])
440
- end
441
-
442
- it "deletes the subscription" do
443
- expect(assigns(test_target.subscriptions.where(id: @subscription.id).exists?)).to be_falsey
444
- end
445
-
446
- it "renders the :destroy template as format js" do
447
- expect(response).to render_template :destroy, format: :js
448
- end
449
- end
450
- end
451
-
452
- describe "PUT #subscribe" do
453
- context "http direct PUT request" do
454
- before do
455
- @subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
456
- @subscription.unsubscribe
457
- expect(@subscription.subscribing?).to be_falsey
458
- put_with_compatibility :subscribe, target_params.merge({ id: @subscription, typed_target_param => test_target }), valid_session
459
- end
460
-
461
- it "returns 302 as http status code" do
462
- expect(response.status).to eq(302)
463
- end
464
-
465
- it "updates subscribing to true" do
466
- expect(@subscription.reload.subscribing?).to be_truthy
467
- end
468
-
469
- it "redirects to :index" do
470
- expect(response).to redirect_to action: :index
471
- end
472
- end
473
-
474
- context "http PUT request from root_path" do
475
- before do
476
- @subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
477
- @subscription.unsubscribe
478
- expect(@subscription.subscribing?).to be_falsey
479
- request.env["HTTP_REFERER"] = root_path
480
- put_with_compatibility :subscribe, target_params.merge({ id: @subscription, typed_target_param => test_target }), valid_session
481
- end
482
-
483
- it "returns 302 as http status code" do
484
- expect(response.status).to eq(302)
485
- end
486
-
487
- it "updates subscribing to true" do
488
- expect(@subscription.reload.subscribing?).to be_truthy
489
- end
490
-
491
- it "redirects to root_path as request.referer" do
492
- expect(response).to redirect_to root_path
493
- end
494
- end
495
-
496
- context "Ajax PUT request" do
497
- before do
498
- @subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
499
- @subscription.unsubscribe
500
- expect(@subscription.subscribing?).to be_falsey
501
- request.env["HTTP_REFERER"] = root_path
502
- xhr_with_compatibility :put, :subscribe, target_params.merge({ id: @subscription, typed_target_param => test_target }), valid_session
503
- end
504
-
505
- it "returns 200 as http status code" do
506
- expect(response.status).to eq(200)
507
- end
508
-
509
- it "assigns subscription index as @subscriptions" do
510
- expect(assigns(:subscriptions)).to eq([@subscription])
511
- end
512
-
513
- it "updates subscribing to true" do
514
- expect(@subscription.reload.subscribing?).to be_truthy
515
- end
516
-
517
- it "renders the :open template as format js" do
518
- expect(response).to render_template :subscribe, format: :js
519
- end
520
- end
521
- end
522
-
523
- describe "PUT #unsubscribe" do
524
- context "http direct PUT request" do
525
- before do
526
- @subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
527
- expect(@subscription.subscribing?).to be_truthy
528
- put_with_compatibility :unsubscribe, target_params.merge({ id: @subscription, typed_target_param => test_target }), valid_session
529
- end
530
-
531
- it "returns 302 as http status code" do
532
- expect(response.status).to eq(302)
533
- end
534
-
535
- it "updates subscribing to false" do
536
- expect(@subscription.reload.subscribing?).to be_falsey
537
- end
538
-
539
- it "redirects to :index" do
540
- expect(response).to redirect_to action: :index
541
- end
542
- end
543
-
544
- context "http PUT request from root_path" do
545
- before do
546
- @subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
547
- expect(@subscription.subscribing?).to be_truthy
548
- request.env["HTTP_REFERER"] = root_path
549
- put_with_compatibility :unsubscribe, target_params.merge({ id: @subscription, typed_target_param => test_target }), valid_session
550
- end
551
-
552
- it "returns 302 as http status code" do
553
- expect(response.status).to eq(302)
554
- end
555
-
556
- it "updates subscribing to false" do
557
- expect(@subscription.reload.subscribing?).to be_falsey
558
- end
559
-
560
- it "redirects to root_path as request.referer" do
561
- expect(response).to redirect_to root_path
562
- end
563
- end
564
-
565
- context "Ajax PUT request" do
566
- before do
567
- @subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
568
- expect(@subscription.subscribing?).to be_truthy
569
- request.env["HTTP_REFERER"] = root_path
570
- xhr_with_compatibility :put, :unsubscribe, target_params.merge({ id: @subscription, typed_target_param => test_target }), valid_session
571
- end
572
-
573
- it "returns 200 as http status code" do
574
- expect(response.status).to eq(200)
575
- end
576
-
577
- it "assigns subscription index as @subscriptions" do
578
- expect(assigns(:subscriptions)).to eq([@subscription])
579
- end
580
-
581
- it "updates subscribing to false" do
582
- expect(@subscription.reload.subscribing?).to be_falsey
583
- end
584
-
585
- it "renders the :open template as format js" do
586
- expect(response).to render_template :unsubscribe, format: :js
587
- end
588
- end
589
- end
590
-
591
- describe "PUT #subscribe_to_email" do
592
- context "http direct PUT request" do
593
- before do
594
- @subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
595
- @subscription.unsubscribe_to_email
596
- expect(@subscription.subscribing_to_email?).to be_falsey
597
- put_with_compatibility :subscribe_to_email, target_params.merge({ id: @subscription, typed_target_param => test_target }), valid_session
598
- end
599
-
600
- it "returns 302 as http status code" do
601
- expect(response.status).to eq(302)
602
- end
603
-
604
- it "updates subscribing_to_email to true" do
605
- expect(@subscription.reload.subscribing_to_email?).to be_truthy
606
- end
607
-
608
- it "redirects to :index" do
609
- expect(response).to redirect_to action: :index
610
- end
611
- end
612
-
613
- context "http PUT request from root_path" do
614
- before do
615
- @subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
616
- @subscription.unsubscribe_to_email
617
- expect(@subscription.subscribing_to_email?).to be_falsey
618
- request.env["HTTP_REFERER"] = root_path
619
- put_with_compatibility :subscribe_to_email, target_params.merge({ id: @subscription, typed_target_param => test_target }), valid_session
620
- end
621
-
622
- it "returns 302 as http status code" do
623
- expect(response.status).to eq(302)
624
- end
625
-
626
- it "updates subscribing_to_email to true" do
627
- expect(@subscription.reload.subscribing_to_email?).to be_truthy
628
- end
629
-
630
- it "redirects to root_path as request.referer" do
631
- expect(response).to redirect_to root_path
632
- end
633
- end
634
-
635
- context "Ajax PUT request" do
636
- before do
637
- @subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
638
- @subscription.unsubscribe_to_email
639
- expect(@subscription.subscribing_to_email?).to be_falsey
640
- request.env["HTTP_REFERER"] = root_path
641
- xhr_with_compatibility :put, :subscribe_to_email, target_params.merge({ id: @subscription, typed_target_param => test_target }), valid_session
642
- end
643
-
644
- it "returns 200 as http status code" do
645
- expect(response.status).to eq(200)
646
- end
647
-
648
- it "assigns subscription index as @subscriptions" do
649
- expect(assigns(:subscriptions)).to eq([@subscription])
650
- end
651
-
652
- it "updates subscribing_to_email to true" do
653
- expect(@subscription.reload.subscribing_to_email?).to be_truthy
654
- end
655
-
656
- it "renders the :open template as format js" do
657
- expect(response).to render_template :subscribe_to_email, format: :js
658
- end
659
- end
660
-
661
- context "with unsubscribed target" do
662
- before do
663
- @subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
664
- @subscription.unsubscribe
665
- expect(@subscription.subscribing?).to be_falsey
666
- expect(@subscription.subscribing_to_email?).to be_falsey
667
- put_with_compatibility :subscribe_to_email, target_params.merge({ id: @subscription, typed_target_param => test_target }), valid_session
668
- end
669
-
670
- it "returns 302 as http status code" do
671
- expect(response.status).to eq(302)
672
- end
673
-
674
- it "cannot update subscribing_to_email to true" do
675
- expect(@subscription.reload.subscribing_to_email?).to be_falsey
676
- end
677
-
678
- it "redirects to :index" do
679
- expect(response).to redirect_to action: :index
680
- end
681
- end
682
- end
683
-
684
- describe "PUT #unsubscribe_to_email" do
685
- context "http direct PUT request" do
686
- before do
687
- @subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
688
- expect(@subscription.subscribing_to_email?).to be_truthy
689
- put_with_compatibility :unsubscribe_to_email, target_params.merge({ id: @subscription, typed_target_param => test_target }), valid_session
690
- end
691
-
692
- it "returns 302 as http status code" do
693
- expect(response.status).to eq(302)
694
- end
695
-
696
- it "updates subscribing_to_email to false" do
697
- expect(@subscription.reload.subscribing_to_email?).to be_falsey
698
- end
699
-
700
- it "redirects to :index" do
701
- expect(response).to redirect_to action: :index
702
- end
703
- end
704
-
705
- context "http PUT request from root_path" do
706
- before do
707
- @subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
708
- expect(@subscription.subscribing_to_email?).to be_truthy
709
- request.env["HTTP_REFERER"] = root_path
710
- put_with_compatibility :unsubscribe_to_email, target_params.merge({ id: @subscription, typed_target_param => test_target }), valid_session
711
- end
712
-
713
- it "returns 302 as http status code" do
714
- expect(response.status).to eq(302)
715
- end
716
-
717
- it "updates subscribing_to_email to false" do
718
- expect(@subscription.reload.subscribing_to_email?).to be_falsey
719
- end
720
-
721
- it "redirects to root_path as request.referer" do
722
- expect(response).to redirect_to root_path
723
- end
724
- end
725
-
726
- context "Ajax PUT request" do
727
- before do
728
- @subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
729
- expect(@subscription.subscribing_to_email?).to be_truthy
730
- request.env["HTTP_REFERER"] = root_path
731
- xhr_with_compatibility :put, :unsubscribe_to_email, target_params.merge({ id: @subscription, typed_target_param => test_target }), valid_session
732
- end
733
-
734
- it "returns 200 as http status code" do
735
- expect(response.status).to eq(200)
736
- end
737
-
738
- it "assigns subscription index as @subscriptions" do
739
- expect(assigns(:subscriptions)).to eq([@subscription])
740
- end
741
-
742
- it "updates subscribing_to_email to false" do
743
- expect(@subscription.reload.subscribing_to_email?).to be_falsey
744
- end
745
-
746
- it "renders the :open template as format js" do
747
- expect(response).to render_template :unsubscribe_to_email, format: :js
748
- end
749
- end
750
- end
751
-
752
- describe "PUT #subscribe_to_optional_target" do
753
- context "without optional_target_name param" do
754
- before do
755
- @subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
756
- @subscription.unsubscribe_to_optional_target(:base)
757
- expect(@subscription.subscribing_to_optional_target?(:base)).to be_falsey
758
- put_with_compatibility :subscribe_to_optional_target, target_params.merge({ id: @subscription, typed_target_param => test_target }), valid_session
759
- end
760
-
761
- it "returns 400 as http status code" do
762
- expect(response.status).to eq(400)
763
- end
764
-
765
- it "does not update subscribing_to_optional_target?" do
766
- expect(@subscription.subscribing_to_optional_target?(:base)).to be_falsey
767
- end
768
- end
769
-
770
- context "http direct PUT request" do
771
- before do
772
- @subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
773
- @subscription.unsubscribe_to_optional_target(:base)
774
- expect(@subscription.subscribing_to_optional_target?(:base)).to be_falsey
775
- put_with_compatibility :subscribe_to_optional_target, target_params.merge({ id: @subscription, optional_target_name: 'base', typed_target_param => test_target }), valid_session
776
- end
777
-
778
- it "returns 302 as http status code" do
779
- expect(response.status).to eq(302)
780
- end
781
-
782
- it "updates subscribing_to_optional_target to true" do
783
- expect(@subscription.reload.subscribing_to_optional_target?(:base)).to be_truthy
784
- end
785
-
786
- it "redirects to :index" do
787
- expect(response).to redirect_to action: :index
788
- end
789
- end
790
-
791
- context "http PUT request from root_path" do
792
- before do
793
- @subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
794
- @subscription.unsubscribe_to_optional_target(:base)
795
- expect(@subscription.subscribing_to_optional_target?(:base)).to be_falsey
796
- request.env["HTTP_REFERER"] = root_path
797
- put_with_compatibility :subscribe_to_optional_target, target_params.merge({ id: @subscription, optional_target_name: 'base', typed_target_param => test_target }), valid_session
798
- end
799
-
800
- it "returns 302 as http status code" do
801
- expect(response.status).to eq(302)
802
- end
803
-
804
- it "updates subscribing_to_optional_target to true" do
805
- expect(@subscription.reload.subscribing_to_optional_target?(:base)).to be_truthy
806
- end
807
-
808
- it "redirects to root_path as request.referer" do
809
- expect(response).to redirect_to root_path
810
- end
811
- end
812
-
813
- context "Ajax PUT request" do
814
- before do
815
- @subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
816
- @subscription.unsubscribe_to_optional_target(:base)
817
- expect(@subscription.subscribing_to_optional_target?(:base)).to be_falsey
818
- request.env["HTTP_REFERER"] = root_path
819
- xhr_with_compatibility :put, :subscribe_to_optional_target, target_params.merge({ id: @subscription, optional_target_name: 'base', typed_target_param => test_target }), valid_session
820
- end
821
-
822
- it "returns 200 as http status code" do
823
- expect(response.status).to eq(200)
824
- end
825
-
826
- it "assigns subscription index as @subscriptions" do
827
- expect(assigns(:subscriptions)).to eq([@subscription])
828
- end
829
-
830
- it "updates subscribing_to_optional_target to true" do
831
- expect(@subscription.reload.subscribing_to_optional_target?(:base)).to be_truthy
832
- end
833
-
834
- it "renders the :open template as format js" do
835
- expect(response).to render_template :subscribe_to_optional_target, format: :js
836
- end
837
- end
838
-
839
- context "with unsubscribed target" do
840
- before do
841
- @subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
842
- @subscription.unsubscribe_to_optional_target(:base)
843
- @subscription.unsubscribe
844
- expect(@subscription.subscribing?).to be_falsey
845
- expect(@subscription.subscribing_to_optional_target?(:base)).to be_falsey
846
- put_with_compatibility :subscribe_to_optional_target, target_params.merge({ id: @subscription, optional_target_name: 'base', typed_target_param => test_target }), valid_session
847
- end
848
-
849
- it "returns 302 as http status code" do
850
- expect(response.status).to eq(302)
851
- end
852
-
853
- it "cannot update subscribing_to_optional_target to true" do
854
- expect(@subscription.reload.subscribing_to_optional_target?(:base)).to be_falsey
855
- end
856
-
857
- it "redirects to :index" do
858
- expect(response).to redirect_to action: :index
859
- end
860
- end
861
- end
862
-
863
- describe "PUT #unsubscribe_to_email" do
864
- context "without optional_target_name param" do
865
- before do
866
- @subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
867
- expect(@subscription.subscribing_to_optional_target?(:base)).to be_truthy
868
- put_with_compatibility :unsubscribe_to_optional_target, target_params.merge({ id: @subscription, typed_target_param => test_target }), valid_session
869
- end
870
-
871
- it "returns 400 as http status code" do
872
- expect(response.status).to eq(400)
873
- end
874
-
875
- it "does not update subscribing_to_optional_target?" do
876
- expect(@subscription.subscribing_to_optional_target?(:base)).to be_truthy
877
- end
878
- end
879
-
880
- context "http direct PUT request" do
881
- before do
882
- @subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
883
- expect(@subscription.subscribing_to_optional_target?(:base)).to be_truthy
884
- put_with_compatibility :unsubscribe_to_optional_target, target_params.merge({ id: @subscription, optional_target_name: 'base', typed_target_param => test_target }), valid_session
885
- end
886
-
887
- it "returns 302 as http status code" do
888
- expect(response.status).to eq(302)
889
- end
890
-
891
- it "updates subscribing_to_optional_target to false" do
892
- expect(@subscription.reload.subscribing_to_optional_target?(:base)).to be_falsey
893
- end
894
-
895
- it "redirects to :index" do
896
- expect(response).to redirect_to action: :index
897
- end
898
- end
899
-
900
- context "http PUT request from root_path" do
901
- before do
902
- @subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
903
- expect(@subscription.subscribing_to_optional_target?(:base)).to be_truthy
904
- request.env["HTTP_REFERER"] = root_path
905
- put_with_compatibility :unsubscribe_to_optional_target, target_params.merge({ id: @subscription, optional_target_name: 'base', typed_target_param => test_target }), valid_session
906
- end
907
-
908
- it "returns 302 as http status code" do
909
- expect(response.status).to eq(302)
910
- end
911
-
912
- it "updates subscribing_to_optional_target to false" do
913
- expect(@subscription.reload.subscribing_to_optional_target?(:base)).to be_falsey
914
- end
915
-
916
- it "redirects to root_path as request.referer" do
917
- expect(response).to redirect_to root_path
918
- end
919
- end
920
-
921
- context "Ajax PUT request" do
922
- before do
923
- @subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
924
- expect(@subscription.subscribing_to_optional_target?(:base)).to be_truthy
925
- request.env["HTTP_REFERER"] = root_path
926
- xhr_with_compatibility :put, :unsubscribe_to_optional_target, target_params.merge({ id: @subscription, optional_target_name: 'base', typed_target_param => test_target }), valid_session
927
- end
928
-
929
- it "returns 200 as http status code" do
930
- expect(response.status).to eq(200)
931
- end
932
-
933
- it "assigns subscription index as @subscriptions" do
934
- expect(assigns(:subscriptions)).to eq([@subscription])
935
- end
936
-
937
- it "updates subscribing_to_optional_target to false" do
938
- expect(@subscription.reload.subscribing_to_optional_target?(:base)).to be_falsey
939
- end
940
-
941
- it "renders the :open template as format js" do
942
- expect(response).to render_template :unsubscribe_to_optional_target, format: :js
943
- end
944
- end
945
- end
946
- end