activity_notification 2.0.0 → 2.1.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.
- checksums.yaml +4 -4
- data/.github/ISSUE_TEMPLATE/bug_report.md +22 -0
- data/.github/ISSUE_TEMPLATE/feature_request.md +17 -0
- data/.github/pull_request_template.md +13 -0
- data/.gitignore +10 -3
- data/.travis.yml +6 -5
- data/CHANGELOG.md +22 -0
- data/Gemfile +8 -2
- data/Procfile +1 -1
- data/README.md +153 -1510
- data/activity_notification.gemspec +4 -1
- data/app/channels/activity_notification/notification_api_channel.rb +12 -0
- data/app/channels/activity_notification/notification_api_with_devise_channel.rb +46 -0
- data/app/channels/activity_notification/notification_channel.rb +1 -1
- data/app/channels/activity_notification/notification_with_devise_channel.rb +1 -1
- data/app/controllers/activity_notification/apidocs_controller.rb +75 -0
- data/app/controllers/activity_notification/notifications_api_controller.rb +143 -0
- data/app/controllers/activity_notification/notifications_api_with_devise_controller.rb +7 -0
- data/app/controllers/activity_notification/notifications_controller.rb +79 -53
- data/app/controllers/activity_notification/subscriptions_api_controller.rb +197 -0
- data/app/controllers/activity_notification/subscriptions_api_with_devise_controller.rb +7 -0
- data/app/controllers/activity_notification/subscriptions_controller.rb +78 -69
- data/app/views/activity_notification/notifications/default/_default.html.erb +18 -18
- data/app/views/activity_notification/notifications/default/_default_without_grouping.html.erb +14 -14
- data/app/views/activity_notification/notifications/default/index.html.erb +6 -6
- data/app/views/activity_notification/optional_targets/default/action_cable_channel/_default.html.erb +176 -0
- data/app/views/activity_notification/subscriptions/default/_form.html.erb +1 -1
- data/app/views/activity_notification/subscriptions/default/_notification_keys.html.erb +3 -31
- data/app/views/activity_notification/subscriptions/default/_subscription.html.erb +7 -7
- data/app/views/activity_notification/subscriptions/default/index.html.erb +11 -7
- data/bin/deploy_on_heroku.sh +3 -1
- data/docs/CODE_OF_CONDUCT.md +76 -0
- data/docs/CONTRIBUTING.md +36 -0
- data/docs/Functions.md +1130 -0
- data/docs/Setup.md +674 -0
- data/docs/Testing.md +148 -0
- data/gemfiles/Gemfile.rails-4.2 +3 -0
- data/gemfiles/Gemfile.rails-5.0 +3 -0
- data/gemfiles/Gemfile.rails-5.1 +3 -0
- data/gemfiles/Gemfile.rails-5.2 +3 -0
- data/gemfiles/{Gemfile.rails-6.0.rc → Gemfile.rails-6.0} +5 -3
- data/lib/activity_notification.rb +13 -1
- data/lib/activity_notification/apis/notification_api.rb +29 -92
- data/lib/activity_notification/apis/subscription_api.rb +20 -8
- data/lib/activity_notification/apis/swagger.rb +6 -0
- data/lib/activity_notification/config.rb +41 -21
- data/lib/activity_notification/controllers/common_api_controller.rb +30 -0
- data/lib/activity_notification/controllers/common_controller.rb +44 -20
- data/lib/activity_notification/controllers/concerns/swagger/error_responses.rb +55 -0
- data/lib/activity_notification/controllers/concerns/swagger/notifications_api.rb +273 -0
- data/lib/activity_notification/controllers/concerns/swagger/notifications_parameters.rb +92 -0
- data/lib/activity_notification/controllers/concerns/swagger/subscriptions_api.rb +405 -0
- data/lib/activity_notification/controllers/concerns/swagger/subscriptions_parameters.rb +50 -0
- data/lib/activity_notification/controllers/devise_authentication_controller.rb +7 -6
- data/lib/activity_notification/gem_version.rb +14 -0
- data/lib/activity_notification/helpers/errors.rb +2 -0
- data/lib/activity_notification/helpers/view_helpers.rb +4 -0
- data/lib/activity_notification/mailers/helpers.rb +17 -10
- data/lib/activity_notification/models/concerns/notifiable.rb +26 -10
- data/lib/activity_notification/models/concerns/subscriber.rb +12 -1
- data/lib/activity_notification/models/concerns/swagger/error_schema.rb +36 -0
- data/lib/activity_notification/models/concerns/swagger/notification_schema.rb +209 -0
- data/lib/activity_notification/models/concerns/swagger/subscription_schema.rb +162 -0
- data/lib/activity_notification/models/concerns/target.rb +36 -10
- data/lib/activity_notification/models/notification.rb +1 -0
- data/lib/activity_notification/models/subscription.rb +1 -0
- data/lib/activity_notification/optional_targets/action_cable_api_channel.rb +69 -0
- data/lib/activity_notification/optional_targets/action_cable_channel.rb +68 -0
- data/lib/activity_notification/optional_targets/base.rb +7 -13
- data/lib/activity_notification/orm/active_record/notification.rb +17 -1
- data/lib/activity_notification/orm/active_record/subscription.rb +1 -1
- data/lib/activity_notification/orm/dynamoid.rb +28 -0
- data/lib/activity_notification/orm/dynamoid/extension.rb +79 -1
- data/lib/activity_notification/orm/dynamoid/notification.rb +1 -1
- data/lib/activity_notification/orm/dynamoid/subscription.rb +1 -1
- data/lib/activity_notification/orm/mongoid.rb +22 -0
- data/lib/activity_notification/orm/mongoid/notification.rb +17 -1
- data/lib/activity_notification/orm/mongoid/subscription.rb +1 -1
- data/lib/activity_notification/rails/routes.rb +132 -48
- data/lib/activity_notification/renderable.rb +13 -2
- data/lib/activity_notification/roles/acts_as_notifiable.rb +38 -20
- data/lib/activity_notification/version.rb +1 -1
- data/lib/generators/activity_notification/controllers_generator.rb +2 -1
- data/lib/generators/templates/activity_notification.rb +8 -0
- data/lib/generators/templates/controllers/notifications_api_controller.rb +31 -0
- data/lib/generators/templates/controllers/notifications_api_with_devise_controller.rb +31 -0
- data/lib/generators/templates/controllers/notifications_controller.rb +1 -37
- data/lib/generators/templates/controllers/notifications_with_devise_controller.rb +1 -45
- data/lib/generators/templates/controllers/subscriptions_api_controller.rb +61 -0
- data/lib/generators/templates/controllers/subscriptions_api_with_devise_controller.rb +61 -0
- data/lib/generators/templates/controllers/subscriptions_controller.rb +14 -37
- data/lib/generators/templates/controllers/subscriptions_with_devise_controller.rb +14 -45
- data/lib/generators/templates/models/README +8 -4
- data/lib/generators/templates/models/notification.rb +1 -1
- data/lib/generators/templates/models/subscription.rb +1 -1
- data/package.json +8 -0
- data/spec/channels/notification_api_channel_shared_examples.rb +59 -0
- data/spec/channels/notification_api_channel_spec.rb +51 -0
- data/spec/channels/notification_api_with_devise_channel_spec.rb +78 -0
- data/spec/concerns/apis/notification_api_spec.rb +37 -2
- data/spec/concerns/models/notifiable_spec.rb +64 -0
- data/spec/concerns/models/subscriber_spec.rb +13 -16
- data/spec/concerns/models/target_spec.rb +32 -0
- data/spec/concerns/renderable_spec.rb +2 -2
- data/spec/controllers/controller_spec_utility.rb +136 -0
- data/spec/controllers/notifications_api_controller_shared_examples.rb +506 -0
- data/spec/controllers/notifications_api_controller_spec.rb +19 -0
- data/spec/controllers/notifications_api_with_devise_controller_spec.rb +60 -0
- data/spec/controllers/notifications_controller_shared_examples.rb +54 -79
- data/spec/controllers/notifications_controller_spec.rb +1 -2
- data/spec/controllers/notifications_with_devise_controller_spec.rb +3 -12
- data/spec/controllers/subscriptions_api_controller_shared_examples.rb +750 -0
- data/spec/controllers/subscriptions_api_controller_spec.rb +19 -0
- data/spec/controllers/subscriptions_api_with_devise_controller_spec.rb +60 -0
- data/spec/controllers/subscriptions_controller_shared_examples.rb +94 -121
- data/spec/controllers/subscriptions_controller_spec.rb +1 -2
- data/spec/controllers/subscriptions_with_devise_controller_spec.rb +3 -12
- data/spec/helpers/view_helpers_spec.rb +4 -11
- data/spec/mailers/mailer_spec.rb +41 -0
- data/spec/models/notification_spec.rb +17 -0
- data/spec/models/subscription_spec.rb +0 -13
- data/spec/optional_targets/action_cable_api_channel_spec.rb +37 -0
- data/spec/optional_targets/action_cable_channel_spec.rb +44 -0
- data/spec/optional_targets/amazon_sns_spec.rb +0 -2
- data/spec/optional_targets/slack_spec.rb +0 -2
- data/spec/rails_app/Rakefile +9 -0
- data/spec/rails_app/app/assets/config/manifest.js +3 -0
- data/spec/rails_app/app/assets/images/.keep +0 -0
- data/spec/rails_app/app/controllers/admins_controller.rb +21 -0
- data/spec/rails_app/app/controllers/application_controller.rb +1 -1
- data/spec/rails_app/app/controllers/articles_controller.rb +6 -3
- data/spec/rails_app/app/controllers/spa_controller.rb +7 -0
- data/spec/rails_app/app/controllers/users/notifications_controller.rb +0 -65
- data/spec/rails_app/app/controllers/users/notifications_with_devise_controller.rb +0 -73
- data/spec/rails_app/app/controllers/users/subscriptions_controller.rb +0 -77
- data/spec/rails_app/app/controllers/users/subscriptions_with_devise_controller.rb +0 -85
- data/spec/rails_app/app/controllers/users_controller.rb +21 -0
- data/spec/rails_app/app/javascript/App.vue +104 -0
- data/spec/rails_app/app/javascript/components/DeviseTokenAuth.vue +83 -0
- data/spec/rails_app/app/javascript/components/Top.vue +99 -0
- data/spec/rails_app/app/javascript/components/notifications/Index.vue +200 -0
- data/spec/rails_app/app/javascript/components/notifications/Notification.vue +133 -0
- data/spec/rails_app/app/javascript/components/notifications/NotificationContent.vue +122 -0
- data/spec/rails_app/app/javascript/components/subscriptions/Index.vue +279 -0
- data/spec/rails_app/app/javascript/components/subscriptions/NewSubscription.vue +112 -0
- data/spec/rails_app/app/javascript/components/subscriptions/NotificationKey.vue +141 -0
- data/spec/rails_app/app/javascript/components/subscriptions/Subscription.vue +226 -0
- data/spec/rails_app/app/javascript/config/development.js +5 -0
- data/spec/rails_app/app/javascript/config/environment.js +7 -0
- data/spec/rails_app/app/javascript/config/production.js +5 -0
- data/spec/rails_app/app/javascript/config/test.js +5 -0
- data/spec/rails_app/app/javascript/packs/application.js +18 -0
- data/spec/rails_app/app/javascript/packs/spa.js +11 -0
- data/spec/rails_app/app/javascript/store/auth.js +37 -0
- data/spec/rails_app/app/models/admin.rb +16 -15
- data/spec/rails_app/app/models/article.rb +26 -21
- data/spec/rails_app/app/models/comment.rb +24 -71
- data/spec/rails_app/app/models/user.rb +43 -20
- data/spec/rails_app/app/views/activity_notification/notifications/default/article/_update.html.erb +146 -0
- data/spec/rails_app/app/views/articles/index.html.erb +51 -7
- data/spec/rails_app/app/views/articles/show.html.erb +1 -1
- data/spec/rails_app/app/views/layouts/_header.html.erb +8 -10
- data/spec/rails_app/app/views/spa/index.html.erb +2 -0
- data/spec/rails_app/babel.config.js +72 -0
- data/spec/rails_app/bin/webpack +18 -0
- data/spec/rails_app/bin/webpack-dev-server +18 -0
- data/spec/rails_app/config/application.rb +15 -2
- data/spec/rails_app/config/environment.rb +2 -1
- data/spec/rails_app/config/environments/development.rb +5 -0
- data/spec/rails_app/config/environments/production.rb +3 -0
- data/spec/rails_app/config/environments/test.rb +5 -0
- data/spec/rails_app/config/initializers/activity_notification.rb +8 -0
- data/spec/rails_app/config/initializers/devise_token_auth.rb +55 -0
- data/spec/rails_app/config/initializers/mysql.rb +9 -0
- data/spec/rails_app/config/locales/activity_notification.en.yml +2 -2
- data/spec/rails_app/config/routes.rb +33 -1
- data/spec/rails_app/config/webpack/development.js +5 -0
- data/spec/rails_app/config/webpack/environment.js +7 -0
- data/spec/rails_app/config/webpack/loaders/vue.js +6 -0
- data/spec/rails_app/config/webpack/production.js +5 -0
- data/spec/rails_app/config/webpack/test.js +5 -0
- data/spec/rails_app/config/webpacker.yml +97 -0
- data/spec/rails_app/db/migrate/20191201000000_add_tokens_to_users.rb +10 -0
- data/spec/rails_app/db/schema.rb +4 -1
- data/spec/rails_app/db/seeds.rb +1 -0
- data/spec/rails_app/lib/custom_optional_targets/raise_error.rb +14 -0
- data/spec/rails_app/package.json +23 -0
- data/spec/rails_app/postcss.config.js +12 -0
- data/spec/roles/acts_as_group_spec.rb +0 -2
- data/spec/roles/acts_as_notifiable_spec.rb +1 -3
- data/spec/roles/acts_as_notifier_spec.rb +0 -2
- data/spec/roles/acts_as_target_spec.rb +0 -4
- data/spec/spec_helper.rb +7 -15
- data/spec/version_spec.rb +31 -0
- metadata +187 -13
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'controllers/subscriptions_api_controller_shared_examples'
|
2
|
+
|
3
|
+
describe ActivityNotification::SubscriptionsApiController, type: :controller do
|
4
|
+
let(:test_target) { create(:user) }
|
5
|
+
let(:target_type) { :users }
|
6
|
+
let(:typed_target_param) { :user_id }
|
7
|
+
let(:extra_params) { {} }
|
8
|
+
let(:valid_session) {}
|
9
|
+
|
10
|
+
it_behaves_like :subscriptions_api_controller
|
11
|
+
|
12
|
+
describe "/api/v#{ActivityNotification::GEM_VERSION::MAJOR}", type: :request do
|
13
|
+
let(:root_path) { "/api/v#{ActivityNotification::GEM_VERSION::MAJOR}" }
|
14
|
+
let(:test_target) { create(:user) }
|
15
|
+
let(:target_type) { :users }
|
16
|
+
|
17
|
+
it_behaves_like :subscriptions_api_request
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require 'controllers/subscriptions_api_controller_shared_examples'
|
2
|
+
|
3
|
+
context "ActivityNotification::NotificationsApiWithDeviseController" do
|
4
|
+
context "test admins API with associated users authentication" do
|
5
|
+
|
6
|
+
describe "/api/v#{ActivityNotification::GEM_VERSION::MAJOR}", type: :request do
|
7
|
+
include ActivityNotification::ControllerSpec::CommitteeUtility
|
8
|
+
|
9
|
+
let(:root_path) { "/api/v#{ActivityNotification::GEM_VERSION::MAJOR}" }
|
10
|
+
let(:test_user) { create(:confirmed_user) }
|
11
|
+
let(:unauthenticated_user) { create(:confirmed_user) }
|
12
|
+
let(:test_target) { create(:admin, user: test_user) }
|
13
|
+
let(:target_type) { :admins }
|
14
|
+
|
15
|
+
def sign_in_with_devise_token_auth(auth_user, status)
|
16
|
+
post_with_compatibility "#{root_path}/auth/sign_in", params: { email: auth_user.email, password: "password" }
|
17
|
+
expect(response).to have_http_status(status)
|
18
|
+
@headers = response.header.slice("access-token", "client", "uid")
|
19
|
+
end
|
20
|
+
|
21
|
+
context "signed in with devise as authenticated user" do
|
22
|
+
before do
|
23
|
+
sign_in_with_devise_token_auth(test_user, 200)
|
24
|
+
end
|
25
|
+
|
26
|
+
it_behaves_like :subscriptions_api_request
|
27
|
+
end
|
28
|
+
|
29
|
+
context "signed in with devise as unauthenticated user" do
|
30
|
+
let(:target_params) { { target_type: target_type, devise_type: :users } }
|
31
|
+
|
32
|
+
describe "GET #index" do
|
33
|
+
before do
|
34
|
+
sign_in_with_devise_token_auth(unauthenticated_user, 200)
|
35
|
+
get_with_compatibility "#{api_path}/subscriptions", headers: @headers
|
36
|
+
end
|
37
|
+
|
38
|
+
it "returns 403 as http status code" do
|
39
|
+
expect(response.status).to eq(403)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
context "unsigned in with devise" do
|
45
|
+
let(:target_params) { { target_type: target_type, devise_type: :users } }
|
46
|
+
|
47
|
+
describe "GET #index" do
|
48
|
+
before do
|
49
|
+
get_with_compatibility "#{api_path}/subscriptions", headers: @headers
|
50
|
+
end
|
51
|
+
|
52
|
+
it "returns 401 as http status code" do
|
53
|
+
expect(response.status).to eq(401)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
end
|
@@ -1,4 +1,8 @@
|
|
1
|
-
|
1
|
+
require_relative 'controller_spec_utility'
|
2
|
+
|
3
|
+
shared_examples_for :subscriptions_controller do
|
4
|
+
include ActivityNotification::ControllerSpec::RequestUtility
|
5
|
+
|
2
6
|
let(:target_params) { { target_type: target_type }.merge(extra_params || {}) }
|
3
7
|
|
4
8
|
describe "GET #index" do
|
@@ -81,34 +85,6 @@ shared_examples_for :subscription_controller do
|
|
81
85
|
end
|
82
86
|
end
|
83
87
|
|
84
|
-
context "with json as format parameter" do
|
85
|
-
before do
|
86
|
-
@subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
|
87
|
-
@notification = create(:notification, target: test_target, key: 'test_notification_key')
|
88
|
-
get_with_compatibility :index, target_params.merge({ typed_target_param => test_target, format: :json }), valid_session
|
89
|
-
end
|
90
|
-
|
91
|
-
it "returns 200 as http status code" do
|
92
|
-
expect(response.status).to eq(200)
|
93
|
-
end
|
94
|
-
|
95
|
-
it "returns json format" do
|
96
|
-
case ActivityNotification.config.orm
|
97
|
-
when :active_record
|
98
|
-
expect(JSON.parse(response.body)["subscriptions"].first)
|
99
|
-
.to include("target_id" => test_target.id, "target_type" => test_target.to_class_name)
|
100
|
-
when :mongoid
|
101
|
-
expect(JSON.parse(response.body)["subscriptions"].first)
|
102
|
-
.to include("target_id" => test_target.id.to_s, "target_type" => test_target.to_class_name)
|
103
|
-
when :dynamoid
|
104
|
-
expect(JSON.parse(response.body)["subscriptions"].first)
|
105
|
-
.to include("target_key" => "#{test_target.to_class_name}#{ActivityNotification.config.composite_key_delimiter}#{test_target.id}")
|
106
|
-
end
|
107
|
-
expect(JSON.parse(response.body)["unconfigured_notification_keys"].first)
|
108
|
-
.to eq('test_notification_key')
|
109
|
-
end
|
110
|
-
end
|
111
|
-
|
112
88
|
context "with filter parameter" do
|
113
89
|
context "with configured as filter" do
|
114
90
|
before do
|
@@ -229,14 +205,14 @@ shared_examples_for :subscription_controller do
|
|
229
205
|
end
|
230
206
|
end
|
231
207
|
|
232
|
-
describe "
|
208
|
+
describe "PUT #create" do
|
233
209
|
before do
|
234
210
|
expect(test_target.subscriptions.size).to eq(0)
|
235
211
|
end
|
236
212
|
|
237
|
-
context "http direct
|
213
|
+
context "http direct PUT request without optional targets" do
|
238
214
|
before do
|
239
|
-
|
215
|
+
put_with_compatibility :create, target_params.merge({
|
240
216
|
typed_target_param => test_target,
|
241
217
|
"subscription" => { "key" => "new_subscription_key",
|
242
218
|
"subscribing"=> "true",
|
@@ -259,9 +235,9 @@ shared_examples_for :subscription_controller do
|
|
259
235
|
end
|
260
236
|
end
|
261
237
|
|
262
|
-
context "http direct
|
238
|
+
context "http direct PUT request with optional targets" do
|
263
239
|
before do
|
264
|
-
|
240
|
+
put_with_compatibility :create, target_params.merge({
|
265
241
|
typed_target_param => test_target,
|
266
242
|
"subscription" => { "key" => "new_subscription_key",
|
267
243
|
"subscribing"=> "true",
|
@@ -288,10 +264,10 @@ shared_examples_for :subscription_controller do
|
|
288
264
|
end
|
289
265
|
end
|
290
266
|
|
291
|
-
context "http
|
267
|
+
context "http PUT request from root_path" do
|
292
268
|
before do
|
293
269
|
request.env["HTTP_REFERER"] = root_path
|
294
|
-
|
270
|
+
put_with_compatibility :create, target_params.merge({
|
295
271
|
typed_target_param => test_target,
|
296
272
|
"subscription" => { "key" => "new_subscription_key",
|
297
273
|
"subscribing"=> "true",
|
@@ -314,10 +290,10 @@ shared_examples_for :subscription_controller do
|
|
314
290
|
end
|
315
291
|
end
|
316
292
|
|
317
|
-
context "Ajax
|
293
|
+
context "Ajax PUT request" do
|
318
294
|
before do
|
319
295
|
request.env["HTTP_REFERER"] = root_path
|
320
|
-
xhr_with_compatibility :
|
296
|
+
xhr_with_compatibility :put, :create, target_params.merge({
|
321
297
|
typed_target_param => test_target,
|
322
298
|
"subscription" => { "key" => "new_subscription_key",
|
323
299
|
"subscribing"=> "true",
|
@@ -345,6 +321,38 @@ shared_examples_for :subscription_controller do
|
|
345
321
|
end
|
346
322
|
end
|
347
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
|
+
|
348
356
|
describe "GET #show" do
|
349
357
|
context "with id, target_type and (typed_target)_id parameters" do
|
350
358
|
before do
|
@@ -360,7 +368,7 @@ shared_examples_for :subscription_controller do
|
|
360
368
|
expect(assigns(:subscription)).to eq(@subscription)
|
361
369
|
end
|
362
370
|
|
363
|
-
it "renders the :
|
371
|
+
it "renders the :show template" do
|
364
372
|
expect(response).to render_template :show
|
365
373
|
end
|
366
374
|
end
|
@@ -389,7 +397,7 @@ shared_examples_for :subscription_controller do
|
|
389
397
|
end
|
390
398
|
|
391
399
|
it "deletes the subscription" do
|
392
|
-
expect(
|
400
|
+
expect(test_target.subscriptions.where(id: @subscription.id).exists?).to be_falsey
|
393
401
|
end
|
394
402
|
|
395
403
|
it "redirects to :index" do
|
@@ -441,13 +449,13 @@ shared_examples_for :subscription_controller do
|
|
441
449
|
end
|
442
450
|
end
|
443
451
|
|
444
|
-
describe "
|
445
|
-
context "http direct
|
452
|
+
describe "PUT #subscribe" do
|
453
|
+
context "http direct PUT request" do
|
446
454
|
before do
|
447
455
|
@subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
|
448
456
|
@subscription.unsubscribe
|
449
457
|
expect(@subscription.subscribing?).to be_falsey
|
450
|
-
|
458
|
+
put_with_compatibility :subscribe, target_params.merge({ id: @subscription, typed_target_param => test_target }), valid_session
|
451
459
|
end
|
452
460
|
|
453
461
|
it "returns 302 as http status code" do
|
@@ -463,13 +471,13 @@ shared_examples_for :subscription_controller do
|
|
463
471
|
end
|
464
472
|
end
|
465
473
|
|
466
|
-
context "http
|
474
|
+
context "http PUT request from root_path" do
|
467
475
|
before do
|
468
476
|
@subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
|
469
477
|
@subscription.unsubscribe
|
470
478
|
expect(@subscription.subscribing?).to be_falsey
|
471
479
|
request.env["HTTP_REFERER"] = root_path
|
472
|
-
|
480
|
+
put_with_compatibility :subscribe, target_params.merge({ id: @subscription, typed_target_param => test_target }), valid_session
|
473
481
|
end
|
474
482
|
|
475
483
|
it "returns 302 as http status code" do
|
@@ -485,13 +493,13 @@ shared_examples_for :subscription_controller do
|
|
485
493
|
end
|
486
494
|
end
|
487
495
|
|
488
|
-
context "Ajax
|
496
|
+
context "Ajax PUT request" do
|
489
497
|
before do
|
490
498
|
@subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
|
491
499
|
@subscription.unsubscribe
|
492
500
|
expect(@subscription.subscribing?).to be_falsey
|
493
501
|
request.env["HTTP_REFERER"] = root_path
|
494
|
-
xhr_with_compatibility :
|
502
|
+
xhr_with_compatibility :put, :subscribe, target_params.merge({ id: @subscription, typed_target_param => test_target }), valid_session
|
495
503
|
end
|
496
504
|
|
497
505
|
it "returns 200 as http status code" do
|
@@ -512,12 +520,12 @@ shared_examples_for :subscription_controller do
|
|
512
520
|
end
|
513
521
|
end
|
514
522
|
|
515
|
-
describe "
|
516
|
-
context "http direct
|
523
|
+
describe "PUT #unsubscribe" do
|
524
|
+
context "http direct PUT request" do
|
517
525
|
before do
|
518
526
|
@subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
|
519
527
|
expect(@subscription.subscribing?).to be_truthy
|
520
|
-
|
528
|
+
put_with_compatibility :unsubscribe, target_params.merge({ id: @subscription, typed_target_param => test_target }), valid_session
|
521
529
|
end
|
522
530
|
|
523
531
|
it "returns 302 as http status code" do
|
@@ -533,12 +541,12 @@ shared_examples_for :subscription_controller do
|
|
533
541
|
end
|
534
542
|
end
|
535
543
|
|
536
|
-
context "http
|
544
|
+
context "http PUT request from root_path" do
|
537
545
|
before do
|
538
546
|
@subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
|
539
547
|
expect(@subscription.subscribing?).to be_truthy
|
540
548
|
request.env["HTTP_REFERER"] = root_path
|
541
|
-
|
549
|
+
put_with_compatibility :unsubscribe, target_params.merge({ id: @subscription, typed_target_param => test_target }), valid_session
|
542
550
|
end
|
543
551
|
|
544
552
|
it "returns 302 as http status code" do
|
@@ -554,12 +562,12 @@ shared_examples_for :subscription_controller do
|
|
554
562
|
end
|
555
563
|
end
|
556
564
|
|
557
|
-
context "Ajax
|
565
|
+
context "Ajax PUT request" do
|
558
566
|
before do
|
559
567
|
@subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
|
560
568
|
expect(@subscription.subscribing?).to be_truthy
|
561
569
|
request.env["HTTP_REFERER"] = root_path
|
562
|
-
xhr_with_compatibility :
|
570
|
+
xhr_with_compatibility :put, :unsubscribe, target_params.merge({ id: @subscription, typed_target_param => test_target }), valid_session
|
563
571
|
end
|
564
572
|
|
565
573
|
it "returns 200 as http status code" do
|
@@ -580,13 +588,13 @@ shared_examples_for :subscription_controller do
|
|
580
588
|
end
|
581
589
|
end
|
582
590
|
|
583
|
-
describe "
|
584
|
-
context "http direct
|
591
|
+
describe "PUT #subscribe_to_email" do
|
592
|
+
context "http direct PUT request" do
|
585
593
|
before do
|
586
594
|
@subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
|
587
595
|
@subscription.unsubscribe_to_email
|
588
596
|
expect(@subscription.subscribing_to_email?).to be_falsey
|
589
|
-
|
597
|
+
put_with_compatibility :subscribe_to_email, target_params.merge({ id: @subscription, typed_target_param => test_target }), valid_session
|
590
598
|
end
|
591
599
|
|
592
600
|
it "returns 302 as http status code" do
|
@@ -602,13 +610,13 @@ shared_examples_for :subscription_controller do
|
|
602
610
|
end
|
603
611
|
end
|
604
612
|
|
605
|
-
context "http
|
613
|
+
context "http PUT request from root_path" do
|
606
614
|
before do
|
607
615
|
@subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
|
608
616
|
@subscription.unsubscribe_to_email
|
609
617
|
expect(@subscription.subscribing_to_email?).to be_falsey
|
610
618
|
request.env["HTTP_REFERER"] = root_path
|
611
|
-
|
619
|
+
put_with_compatibility :subscribe_to_email, target_params.merge({ id: @subscription, typed_target_param => test_target }), valid_session
|
612
620
|
end
|
613
621
|
|
614
622
|
it "returns 302 as http status code" do
|
@@ -624,13 +632,13 @@ shared_examples_for :subscription_controller do
|
|
624
632
|
end
|
625
633
|
end
|
626
634
|
|
627
|
-
context "Ajax
|
635
|
+
context "Ajax PUT request" do
|
628
636
|
before do
|
629
637
|
@subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
|
630
638
|
@subscription.unsubscribe_to_email
|
631
639
|
expect(@subscription.subscribing_to_email?).to be_falsey
|
632
640
|
request.env["HTTP_REFERER"] = root_path
|
633
|
-
xhr_with_compatibility :
|
641
|
+
xhr_with_compatibility :put, :subscribe_to_email, target_params.merge({ id: @subscription, typed_target_param => test_target }), valid_session
|
634
642
|
end
|
635
643
|
|
636
644
|
it "returns 200 as http status code" do
|
@@ -656,7 +664,7 @@ shared_examples_for :subscription_controller do
|
|
656
664
|
@subscription.unsubscribe
|
657
665
|
expect(@subscription.subscribing?).to be_falsey
|
658
666
|
expect(@subscription.subscribing_to_email?).to be_falsey
|
659
|
-
|
667
|
+
put_with_compatibility :subscribe_to_email, target_params.merge({ id: @subscription, typed_target_param => test_target }), valid_session
|
660
668
|
end
|
661
669
|
|
662
670
|
it "returns 302 as http status code" do
|
@@ -673,12 +681,12 @@ shared_examples_for :subscription_controller do
|
|
673
681
|
end
|
674
682
|
end
|
675
683
|
|
676
|
-
describe "
|
677
|
-
context "http direct
|
684
|
+
describe "PUT #unsubscribe_to_email" do
|
685
|
+
context "http direct PUT request" do
|
678
686
|
before do
|
679
687
|
@subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
|
680
688
|
expect(@subscription.subscribing_to_email?).to be_truthy
|
681
|
-
|
689
|
+
put_with_compatibility :unsubscribe_to_email, target_params.merge({ id: @subscription, typed_target_param => test_target }), valid_session
|
682
690
|
end
|
683
691
|
|
684
692
|
it "returns 302 as http status code" do
|
@@ -694,12 +702,12 @@ shared_examples_for :subscription_controller do
|
|
694
702
|
end
|
695
703
|
end
|
696
704
|
|
697
|
-
context "http
|
705
|
+
context "http PUT request from root_path" do
|
698
706
|
before do
|
699
707
|
@subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
|
700
708
|
expect(@subscription.subscribing_to_email?).to be_truthy
|
701
709
|
request.env["HTTP_REFERER"] = root_path
|
702
|
-
|
710
|
+
put_with_compatibility :unsubscribe_to_email, target_params.merge({ id: @subscription, typed_target_param => test_target }), valid_session
|
703
711
|
end
|
704
712
|
|
705
713
|
it "returns 302 as http status code" do
|
@@ -715,12 +723,12 @@ shared_examples_for :subscription_controller do
|
|
715
723
|
end
|
716
724
|
end
|
717
725
|
|
718
|
-
context "Ajax
|
726
|
+
context "Ajax PUT request" do
|
719
727
|
before do
|
720
728
|
@subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
|
721
729
|
expect(@subscription.subscribing_to_email?).to be_truthy
|
722
730
|
request.env["HTTP_REFERER"] = root_path
|
723
|
-
xhr_with_compatibility :
|
731
|
+
xhr_with_compatibility :put, :unsubscribe_to_email, target_params.merge({ id: @subscription, typed_target_param => test_target }), valid_session
|
724
732
|
end
|
725
733
|
|
726
734
|
it "returns 200 as http status code" do
|
@@ -741,13 +749,13 @@ shared_examples_for :subscription_controller do
|
|
741
749
|
end
|
742
750
|
end
|
743
751
|
|
744
|
-
describe "
|
752
|
+
describe "PUT #subscribe_to_optional_target" do
|
745
753
|
context "without optional_target_name param" do
|
746
754
|
before do
|
747
755
|
@subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
|
748
756
|
@subscription.unsubscribe_to_optional_target(:base)
|
749
757
|
expect(@subscription.subscribing_to_optional_target?(:base)).to be_falsey
|
750
|
-
|
758
|
+
put_with_compatibility :subscribe_to_optional_target, target_params.merge({ id: @subscription, typed_target_param => test_target }), valid_session
|
751
759
|
end
|
752
760
|
|
753
761
|
it "returns 400 as http status code" do
|
@@ -759,12 +767,12 @@ shared_examples_for :subscription_controller do
|
|
759
767
|
end
|
760
768
|
end
|
761
769
|
|
762
|
-
context "http direct
|
770
|
+
context "http direct PUT request" do
|
763
771
|
before do
|
764
772
|
@subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
|
765
773
|
@subscription.unsubscribe_to_optional_target(:base)
|
766
774
|
expect(@subscription.subscribing_to_optional_target?(:base)).to be_falsey
|
767
|
-
|
775
|
+
put_with_compatibility :subscribe_to_optional_target, target_params.merge({ id: @subscription, optional_target_name: 'base', typed_target_param => test_target }), valid_session
|
768
776
|
end
|
769
777
|
|
770
778
|
it "returns 302 as http status code" do
|
@@ -780,13 +788,13 @@ shared_examples_for :subscription_controller do
|
|
780
788
|
end
|
781
789
|
end
|
782
790
|
|
783
|
-
context "http
|
791
|
+
context "http PUT request from root_path" do
|
784
792
|
before do
|
785
793
|
@subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
|
786
794
|
@subscription.unsubscribe_to_optional_target(:base)
|
787
795
|
expect(@subscription.subscribing_to_optional_target?(:base)).to be_falsey
|
788
796
|
request.env["HTTP_REFERER"] = root_path
|
789
|
-
|
797
|
+
put_with_compatibility :subscribe_to_optional_target, target_params.merge({ id: @subscription, optional_target_name: 'base', typed_target_param => test_target }), valid_session
|
790
798
|
end
|
791
799
|
|
792
800
|
it "returns 302 as http status code" do
|
@@ -802,13 +810,13 @@ shared_examples_for :subscription_controller do
|
|
802
810
|
end
|
803
811
|
end
|
804
812
|
|
805
|
-
context "Ajax
|
813
|
+
context "Ajax PUT request" do
|
806
814
|
before do
|
807
815
|
@subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
|
808
816
|
@subscription.unsubscribe_to_optional_target(:base)
|
809
817
|
expect(@subscription.subscribing_to_optional_target?(:base)).to be_falsey
|
810
818
|
request.env["HTTP_REFERER"] = root_path
|
811
|
-
xhr_with_compatibility :
|
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
|
812
820
|
end
|
813
821
|
|
814
822
|
it "returns 200 as http status code" do
|
@@ -835,7 +843,7 @@ shared_examples_for :subscription_controller do
|
|
835
843
|
@subscription.unsubscribe
|
836
844
|
expect(@subscription.subscribing?).to be_falsey
|
837
845
|
expect(@subscription.subscribing_to_optional_target?(:base)).to be_falsey
|
838
|
-
|
846
|
+
put_with_compatibility :subscribe_to_optional_target, target_params.merge({ id: @subscription, optional_target_name: 'base', typed_target_param => test_target }), valid_session
|
839
847
|
end
|
840
848
|
|
841
849
|
it "returns 302 as http status code" do
|
@@ -852,12 +860,12 @@ shared_examples_for :subscription_controller do
|
|
852
860
|
end
|
853
861
|
end
|
854
862
|
|
855
|
-
describe "
|
863
|
+
describe "PUT #unsubscribe_to_email" do
|
856
864
|
context "without optional_target_name param" do
|
857
865
|
before do
|
858
866
|
@subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
|
859
867
|
expect(@subscription.subscribing_to_optional_target?(:base)).to be_truthy
|
860
|
-
|
868
|
+
put_with_compatibility :unsubscribe_to_optional_target, target_params.merge({ id: @subscription, typed_target_param => test_target }), valid_session
|
861
869
|
end
|
862
870
|
|
863
871
|
it "returns 400 as http status code" do
|
@@ -869,11 +877,11 @@ shared_examples_for :subscription_controller do
|
|
869
877
|
end
|
870
878
|
end
|
871
879
|
|
872
|
-
context "http direct
|
880
|
+
context "http direct PUT request" do
|
873
881
|
before do
|
874
882
|
@subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
|
875
883
|
expect(@subscription.subscribing_to_optional_target?(:base)).to be_truthy
|
876
|
-
|
884
|
+
put_with_compatibility :unsubscribe_to_optional_target, target_params.merge({ id: @subscription, optional_target_name: 'base', typed_target_param => test_target }), valid_session
|
877
885
|
end
|
878
886
|
|
879
887
|
it "returns 302 as http status code" do
|
@@ -889,12 +897,12 @@ shared_examples_for :subscription_controller do
|
|
889
897
|
end
|
890
898
|
end
|
891
899
|
|
892
|
-
context "http
|
900
|
+
context "http PUT request from root_path" do
|
893
901
|
before do
|
894
902
|
@subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
|
895
903
|
expect(@subscription.subscribing_to_optional_target?(:base)).to be_truthy
|
896
904
|
request.env["HTTP_REFERER"] = root_path
|
897
|
-
|
905
|
+
put_with_compatibility :unsubscribe_to_optional_target, target_params.merge({ id: @subscription, optional_target_name: 'base', typed_target_param => test_target }), valid_session
|
898
906
|
end
|
899
907
|
|
900
908
|
it "returns 302 as http status code" do
|
@@ -910,12 +918,12 @@ shared_examples_for :subscription_controller do
|
|
910
918
|
end
|
911
919
|
end
|
912
920
|
|
913
|
-
context "Ajax
|
921
|
+
context "Ajax PUT request" do
|
914
922
|
before do
|
915
923
|
@subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
|
916
924
|
expect(@subscription.subscribing_to_optional_target?(:base)).to be_truthy
|
917
925
|
request.env["HTTP_REFERER"] = root_path
|
918
|
-
xhr_with_compatibility :
|
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
|
919
927
|
end
|
920
928
|
|
921
929
|
it "returns 200 as http status code" do
|
@@ -935,39 +943,4 @@ shared_examples_for :subscription_controller do
|
|
935
943
|
end
|
936
944
|
end
|
937
945
|
end
|
938
|
-
|
939
|
-
|
940
|
-
private
|
941
|
-
|
942
|
-
def get_with_compatibility action, params, session
|
943
|
-
if Rails::VERSION::MAJOR <= 4
|
944
|
-
get action, params, session
|
945
|
-
else
|
946
|
-
get action, params: params, session: session
|
947
|
-
end
|
948
|
-
end
|
949
|
-
|
950
|
-
def post_with_compatibility action, params, session
|
951
|
-
if Rails::VERSION::MAJOR <= 4
|
952
|
-
post action, params, session
|
953
|
-
else
|
954
|
-
post action, params: params, session: session
|
955
|
-
end
|
956
|
-
end
|
957
|
-
|
958
|
-
def delete_with_compatibility action, params, session
|
959
|
-
if Rails::VERSION::MAJOR <= 4
|
960
|
-
delete action, params, session
|
961
|
-
else
|
962
|
-
delete action, params: params, session: session
|
963
|
-
end
|
964
|
-
end
|
965
|
-
|
966
|
-
def xhr_with_compatibility method, action, params, session
|
967
|
-
if Rails::VERSION::MAJOR <= 4
|
968
|
-
xhr method, action, params, session
|
969
|
-
else
|
970
|
-
send method.to_s, action, xhr: true, params: params, session: session
|
971
|
-
end
|
972
|
-
end
|
973
946
|
end
|