activity_notification 1.0.2 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (105) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +33 -0
  3. data/.rubocop.yml +1157 -0
  4. data/.yardopts +3 -0
  5. data/CHANGELOG.md +25 -0
  6. data/Gemfile.lock +15 -17
  7. data/README.md +154 -27
  8. data/activity_notification.gemspec +1 -1
  9. data/app/controllers/activity_notification/notifications_controller.rb +30 -104
  10. data/app/controllers/activity_notification/notifications_with_devise_controller.rb +1 -33
  11. data/app/controllers/activity_notification/subscriptions_controller.rb +184 -0
  12. data/app/controllers/activity_notification/subscriptions_with_devise_controller.rb +6 -0
  13. data/app/mailers/activity_notification/mailer.rb +3 -3
  14. data/app/views/activity_notification/notifications/default/_index.html.erb +3 -0
  15. data/app/views/activity_notification/notifications/default/index.html.erb +8 -10
  16. data/app/views/activity_notification/notifications/default/show.html.erb +24 -2
  17. data/app/views/activity_notification/subscriptions/default/_form.html.erb +52 -0
  18. data/app/views/activity_notification/subscriptions/default/_notification_keys.html.erb +89 -0
  19. data/app/views/activity_notification/subscriptions/default/_subscription.html.erb +73 -0
  20. data/app/views/activity_notification/subscriptions/default/_subscriptions.html.erb +13 -0
  21. data/app/views/activity_notification/subscriptions/default/create.js.erb +5 -0
  22. data/app/views/activity_notification/subscriptions/default/destroy.js.erb +5 -0
  23. data/app/views/activity_notification/subscriptions/default/index.html.erb +197 -0
  24. data/app/views/activity_notification/subscriptions/default/show.html.erb +177 -0
  25. data/app/views/activity_notification/subscriptions/default/subscribe.js.erb +8 -0
  26. data/app/views/activity_notification/subscriptions/default/subscribe_to_email.js.erb +6 -0
  27. data/app/views/activity_notification/subscriptions/default/unsubscribe.js.erb +8 -0
  28. data/app/views/activity_notification/subscriptions/default/unsubscribe_to_email.js.erb +6 -0
  29. data/gemfiles/Gemfile.rails-4.2.lock +18 -20
  30. data/gemfiles/Gemfile.rails-5.0.lock +18 -20
  31. data/lib/activity_notification.rb +7 -3
  32. data/lib/activity_notification/apis/notification_api.rb +95 -61
  33. data/lib/activity_notification/apis/subscription_api.rb +51 -0
  34. data/lib/activity_notification/common.rb +1 -1
  35. data/lib/activity_notification/config.rb +65 -17
  36. data/lib/activity_notification/controllers/common_controller.rb +118 -0
  37. data/lib/activity_notification/controllers/devise_authentication_controller.rb +41 -0
  38. data/lib/activity_notification/helpers/view_helpers.rb +131 -3
  39. data/lib/activity_notification/mailers/helpers.rb +6 -8
  40. data/lib/activity_notification/models/concerns/notifiable.rb +45 -27
  41. data/lib/activity_notification/models/concerns/subscriber.rb +149 -0
  42. data/lib/activity_notification/models/concerns/target.rb +100 -66
  43. data/lib/activity_notification/models/notification.rb +7 -5
  44. data/lib/activity_notification/models/subscription.rb +93 -0
  45. data/lib/activity_notification/rails/routes.rb +148 -33
  46. data/lib/activity_notification/renderable.rb +3 -4
  47. data/lib/activity_notification/roles/acts_as_notifiable.rb +14 -1
  48. data/lib/activity_notification/roles/acts_as_target.rb +11 -8
  49. data/lib/activity_notification/version.rb +1 -1
  50. data/lib/generators/activity_notification/controllers_generator.rb +2 -2
  51. data/lib/generators/activity_notification/install_generator.rb +0 -1
  52. data/lib/generators/activity_notification/migration/migration_generator.rb +8 -2
  53. data/lib/generators/activity_notification/models_generator.rb +53 -0
  54. data/lib/generators/activity_notification/views_generator.rb +7 -7
  55. data/lib/generators/templates/activity_notification.rb +17 -3
  56. data/lib/generators/templates/controllers/notifications_controller.rb +18 -17
  57. data/lib/generators/templates/controllers/notifications_with_devise_controller.rb +18 -17
  58. data/lib/generators/templates/controllers/subscriptions_controller.rb +79 -0
  59. data/lib/generators/templates/controllers/subscriptions_with_devise_controller.rb +87 -0
  60. data/lib/generators/templates/migrations/migration.rb +57 -0
  61. data/lib/generators/templates/models/README +10 -0
  62. data/lib/generators/templates/{notification → models}/notification.rb +1 -3
  63. data/lib/generators/templates/models/subscription.rb +4 -0
  64. data/spec/concerns/apis/notification_api_spec.rb +48 -11
  65. data/spec/concerns/apis/subscription_api_spec.rb +167 -0
  66. data/spec/concerns/models/notifiable_spec.rb +60 -0
  67. data/spec/concerns/models/subscriber_spec.rb +525 -0
  68. data/spec/concerns/models/target_spec.rb +271 -42
  69. data/spec/controllers/common_controller_spec.rb +25 -0
  70. data/spec/controllers/dummy_common_controller.rb +5 -0
  71. data/spec/controllers/notifications_controller_shared_examples.rb +2 -6
  72. data/spec/controllers/subscriptions_controller_shared_examples.rb +735 -0
  73. data/spec/controllers/subscriptions_controller_spec.rb +12 -0
  74. data/spec/controllers/subscriptions_with_devise_controller_spec.rb +91 -0
  75. data/spec/factories/dummy/dummy_subscriber.rb +4 -0
  76. data/spec/factories/subscriptions.rb +8 -0
  77. data/spec/generators/controllers_generator_spec.rb +25 -2
  78. data/spec/generators/migration/migration_generator_spec.rb +3 -3
  79. data/spec/generators/models_generator_spec.rb +96 -0
  80. data/spec/generators/views_generator_spec.rb +84 -0
  81. data/spec/helpers/view_helpers_spec.rb +143 -0
  82. data/spec/mailers/mailer_spec.rb +5 -4
  83. data/spec/models/dummy/dummy_subscriber_spec.rb +5 -0
  84. data/spec/models/notification_spec.rb +7 -7
  85. data/spec/models/subscription_spec.rb +158 -0
  86. data/spec/rails_app/app/controllers/users/notifications_controller.rb +67 -0
  87. data/spec/rails_app/app/controllers/users/notifications_with_devise_controller.rb +75 -0
  88. data/spec/rails_app/app/controllers/users/subscriptions_controller.rb +79 -0
  89. data/spec/rails_app/app/controllers/users/subscriptions_with_devise_controller.rb +87 -0
  90. data/spec/rails_app/app/models/admin.rb +1 -0
  91. data/spec/rails_app/app/models/dummy/dummy_subscriber.rb +4 -0
  92. data/spec/rails_app/app/models/user.rb +2 -1
  93. data/spec/rails_app/app/views/activity_notification/mailer/dummy_subscribers/test_key.text.erb +1 -0
  94. data/spec/rails_app/app/views/articles/index.html.erb +6 -0
  95. data/spec/rails_app/config/initializers/activity_notification.rb +17 -3
  96. data/spec/rails_app/config/routes.rb +2 -2
  97. data/spec/rails_app/db/migrate/20160715050420_create_activity_notification_tables.rb +33 -0
  98. data/spec/rails_app/db/schema.rb +18 -0
  99. data/spec/roles/acts_as_notifiable_spec.rb +1 -1
  100. data/spec/roles/acts_as_target_spec.rb +1 -1
  101. metadata +70 -11
  102. data/lib/generators/activity_notification/notification/notification_generator.rb +0 -20
  103. data/lib/generators/templates/active_record/migration.rb +0 -18
  104. data/spec/generators/notification/notification_generator_spec.rb +0 -41
  105. data/spec/rails_app/db/migrate/20160715050420_create_notifications.rb +0 -18
@@ -0,0 +1,12 @@
1
+ require 'controllers/subscriptions_controller_shared_examples'
2
+
3
+ describe ActivityNotification::SubscriptionsController, 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 :subscription_controller
11
+
12
+ end
@@ -0,0 +1,91 @@
1
+ require 'controllers/subscriptions_controller_shared_examples'
2
+
3
+ describe ActivityNotification::SubscriptionsWithDeviseController, type: :controller do
4
+ let(:test_user) { create(:confirmed_user) }
5
+ let(:unauthenticated_user) { create(:confirmed_user) }
6
+ let(:test_target) { create(:admin, user: test_user) }
7
+ let(:target_type) { :admins }
8
+ let(:typed_target_param) { :admin_id }
9
+ let(:extra_params) { { devise_type: :users } }
10
+ let(:valid_session) {}
11
+
12
+ context "signed in with devise as authenticated user" do
13
+ before do
14
+ sign_in test_user
15
+ end
16
+
17
+ it_behaves_like :subscription_controller
18
+ end
19
+
20
+ context "signed in with devise as unauthenticated user" do
21
+ let(:target_params) { { target_type: target_type, devise_type: :users } }
22
+
23
+ describe "GET #index" do
24
+ before do
25
+ sign_in unauthenticated_user
26
+ get_with_compatibility :index, target_params.merge({ typed_target_param => test_target }), valid_session
27
+ end
28
+
29
+ it "returns 403 as http status code" do
30
+ expect(response.status).to eq(403)
31
+ end
32
+ end
33
+ end
34
+
35
+ context "unsigned in with devise" do
36
+ let(:target_params) { { target_type: target_type, devise_type: :users } }
37
+
38
+ describe "GET #index" do
39
+ before do
40
+ get_with_compatibility :index, target_params.merge({ typed_target_param => test_target }), valid_session
41
+ end
42
+
43
+ it "returns 302 as http status code" do
44
+ expect(response.status).to eq(302)
45
+ end
46
+
47
+ it "redirects to sign_in path" do
48
+ expect(response).to redirect_to new_user_session_path
49
+ end
50
+ end
51
+ end
52
+
53
+ context "without devise_type parameter" do
54
+ let(:target_params) { { target_type: target_type } }
55
+
56
+ describe "GET #index" do
57
+ before do
58
+ get_with_compatibility :index, target_params.merge({ typed_target_param => test_target }), valid_session
59
+ end
60
+
61
+ it "returns 400 as http status code" do
62
+ expect(response.status).to eq(400)
63
+ end
64
+ end
65
+ end
66
+
67
+ context "with wrong devise_type parameter" do
68
+ let(:target_params) { { target_type: target_type, devise_type: :dummy_targets } }
69
+
70
+ describe "GET #index" do
71
+ before do
72
+ get_with_compatibility :index, target_params.merge({ typed_target_param => test_target }), valid_session
73
+ end
74
+
75
+ it "returns 403 as http status code" do
76
+ expect(response.status).to eq(403)
77
+ end
78
+ end
79
+ end
80
+
81
+ private
82
+
83
+ def get_with_compatibility action, params, session
84
+ if Rails::VERSION::MAJOR <= 4
85
+ get action, params, session
86
+ else
87
+ get action, params: params, session: session
88
+ end
89
+ end
90
+
91
+ end
@@ -0,0 +1,4 @@
1
+ FactoryGirl.define do
2
+ factory :dummy_subscriber, class: Dummy::DummySubscriber do
3
+ end
4
+ end
@@ -0,0 +1,8 @@
1
+ FactoryGirl.define do
2
+ factory :subscription, class: ActivityNotification::Subscription do
3
+ association :target, factory: :confirmed_user
4
+ key "default.default"
5
+ subscribed_at Time.current
6
+ subscribed_to_email_at Time.current
7
+ end
8
+ end
@@ -38,11 +38,23 @@ describe ActivityNotification::Generators::ControllersGenerator, type: :generato
38
38
  it { is_expected.to exist }
39
39
  it { is_expected.to contain(/class Users::NotificationsWithDeviseController < ActivityNotification::NotificationsWithDeviseController/) }
40
40
  end
41
+
42
+ describe 'the subscriptions_controller' do
43
+ subject { file('app/controllers/users/subscriptions_controller.rb') }
44
+ it { is_expected.to exist }
45
+ it { is_expected.to contain(/class Users::SubscriptionsController < ActivityNotification::SubscriptionsController/) }
46
+ end
47
+
48
+ describe 'the subscriptions_with_devise_controller' do
49
+ subject { file('app/controllers/users/subscriptions_with_devise_controller.rb') }
50
+ it { is_expected.to exist }
51
+ it { is_expected.to contain(/class Users::SubscriptionsWithDeviseController < ActivityNotification::SubscriptionsWithDeviseController/) }
52
+ end
41
53
  end
42
54
 
43
- context 'with a controllers option as notifications' do
55
+ context 'with a controllers option as notifications and subscriptions' do
44
56
  before do
45
- run_generator %w(users --controllers notifications)
57
+ run_generator %w(users --controllers notifications subscriptions)
46
58
  end
47
59
 
48
60
  describe 'the notifications_controller' do
@@ -55,6 +67,17 @@ describe ActivityNotification::Generators::ControllersGenerator, type: :generato
55
67
  subject { file('app/controllers/users/notifications_with_devise_controller.rb') }
56
68
  it { is_expected.not_to exist }
57
69
  end
70
+
71
+ describe 'the subscriptions_controller' do
72
+ subject { file('app/controllers/users/subscriptions_controller.rb') }
73
+ it { is_expected.to exist }
74
+ it { is_expected.to contain(/class Users::SubscriptionsController < ActivityNotification::SubscriptionsController/) }
75
+ end
76
+
77
+ describe 'the subscriptions_with_devise_controller' do
78
+ subject { file('app/controllers/users/subscriptions_with_devise_controller.rb') }
79
+ it { is_expected.not_to exist }
80
+ end
58
81
  end
59
82
  end
60
83
 
@@ -19,15 +19,15 @@ describe ActivityNotification::Generators::MigrationGenerator, type: :generator
19
19
  end
20
20
 
21
21
  describe 'CreateNotifications migration file' do
22
- subject { file(Dir["tmp/db/migrate/*_create_notifications.rb"].first.gsub!('tmp/', '')) }
22
+ subject { file(Dir["tmp/db/migrate/*_create_activity_notification_tables.rb"].first.gsub!('tmp/', '')) }
23
23
  it { is_expected.to exist }
24
- it { is_expected.to contain(/class CreateNotifications < ActiveRecord::Migration/) }
24
+ it { is_expected.to contain(/class CreateActivityNotificationTables < ActiveRecord::Migration/) }
25
25
  end
26
26
  end
27
27
 
28
28
  context 'with CreateCustomNotifications as name argument' do
29
29
  before do
30
- run_generator %w(CreateCustomNotifications)
30
+ run_generator %w(CreateCustomNotifications --tables notifications)
31
31
  end
32
32
 
33
33
  describe 'CreateCustomNotifications migration file' do
@@ -0,0 +1,96 @@
1
+ require 'generators/activity_notification/models_generator'
2
+
3
+ describe ActivityNotification::Generators::ModelsGenerator, type: :generator do
4
+
5
+ # setup_default_destination
6
+ destination File.expand_path("../../../tmp", __FILE__)
7
+ before { prepare_destination }
8
+
9
+ it 'runs generating model tasks' do
10
+ gen = generator %w(users)
11
+ expect(gen).to receive :create_models
12
+ expect(gen).to receive(:readme).and_return(true)
13
+ gen.invoke_all
14
+ end
15
+
16
+ describe 'the generated files' do
17
+ context 'without target argument' do
18
+ it 'raises Thor::RequiredArgumentMissingError' do
19
+ expect { run_generator }
20
+ .to raise_error(Thor::RequiredArgumentMissingError)
21
+ end
22
+ end
23
+
24
+ context 'with users as target' do
25
+ context 'with target models as default' do
26
+ before do
27
+ run_generator %w(users)
28
+ end
29
+
30
+ describe 'the notification' do
31
+ subject { file('app/models/users/notification.rb') }
32
+ it { is_expected.to exist }
33
+ it { is_expected.to contain(/class Users::Notification < ActivityNotification::Notification/) }
34
+ end
35
+
36
+ describe 'the subscription' do
37
+ subject { file('app/models/users/subscription.rb') }
38
+ it { is_expected.to exist }
39
+ it { is_expected.to contain(/class Users::Subscription < ActivityNotification::Subscription/) }
40
+ end
41
+ end
42
+
43
+ context 'with a models option as notification' do
44
+ before do
45
+ run_generator %w(users --models notification)
46
+ end
47
+
48
+ describe 'the notification' do
49
+ subject { file('app/models/users/notification.rb') }
50
+ it { is_expected.to exist }
51
+ it { is_expected.to contain(/class Users::Notification < ActivityNotification::Notification/) }
52
+ end
53
+
54
+ describe 'the subscription' do
55
+ subject { file('app/models/users/subscription.rb') }
56
+ it { is_expected.not_to exist }
57
+ end
58
+ end
59
+
60
+ context 'with a names option as custom_notification and custom_subscription' do
61
+ before do
62
+ run_generator %w(users --names custom_notification custom_subscription)
63
+ end
64
+
65
+ describe 'the notification' do
66
+ subject { file('app/models/users/custom_notification.rb') }
67
+ it { is_expected.to exist }
68
+ it { is_expected.to contain(/class Users::CustomNotification < ActivityNotification::Notification/) }
69
+ end
70
+
71
+ describe 'the subscription' do
72
+ subject { file('app/models/users/custom_subscription.rb') }
73
+ it { is_expected.to exist }
74
+ it { is_expected.to contain(/class Users::CustomSubscription < ActivityNotification::Subscription/) }
75
+ end
76
+ end
77
+
78
+ context 'with a models option as notification and a names option as custom_notification' do
79
+ before do
80
+ run_generator %w(users --models notification --names custom_notification)
81
+ end
82
+
83
+ describe 'the notification' do
84
+ subject { file('app/models/users/custom_notification.rb') }
85
+ it { is_expected.to exist }
86
+ it { is_expected.to contain(/class Users::CustomNotification < ActivityNotification::Notification/) }
87
+ end
88
+
89
+ describe 'the subscription' do
90
+ subject { file('app/models/users/subscription.rb') }
91
+ it { is_expected.not_to exist }
92
+ end
93
+ end
94
+ end
95
+ end
96
+ end
@@ -57,10 +57,87 @@ describe ActivityNotification::Generators::ViewsGenerator, type: :generator do
57
57
  end
58
58
 
59
59
  describe 'the mailer views' do
60
+ describe 'default/batch_default.html.erb' do
61
+ subject { file('app/views/activity_notification/mailer/default/batch_default.html.erb') }
62
+ it { is_expected.to exist }
63
+ end
64
+
65
+ describe 'default/batch_default.text.erb' do
66
+ subject { file('app/views/activity_notification/mailer/default/batch_default.text.erb') }
67
+ it { is_expected.to exist }
68
+ end
69
+
60
70
  describe 'default/default.html.erb' do
61
71
  subject { file('app/views/activity_notification/mailer/default/default.html.erb') }
62
72
  it { is_expected.to exist }
63
73
  end
74
+
75
+ describe 'default/default.text.erb' do
76
+ subject { file('app/views/activity_notification/mailer/default/default.text.erb') }
77
+ it { is_expected.to exist }
78
+ end
79
+ end
80
+
81
+ describe 'the subscription views' do
82
+ describe 'default/_form.html.erb' do
83
+ subject { file('app/views/activity_notification/subscriptions/default/_form.html.erb') }
84
+ it { is_expected.to exist }
85
+ end
86
+
87
+ describe 'default/_notification_keys.html.erb' do
88
+ subject { file('app/views/activity_notification/subscriptions/default/_notification_keys.html.erb') }
89
+ it { is_expected.to exist }
90
+ end
91
+
92
+ describe 'default/_subscription.html.erb' do
93
+ subject { file('app/views/activity_notification/subscriptions/default/_subscription.html.erb') }
94
+ it { is_expected.to exist }
95
+ end
96
+
97
+ describe 'default/_subscriptions.html.erb' do
98
+ subject { file('app/views/activity_notification/subscriptions/default/_subscriptions.html.erb') }
99
+ it { is_expected.to exist }
100
+ end
101
+
102
+ describe 'default/create.js.erb' do
103
+ subject { file('app/views/activity_notification/subscriptions/default/create.js.erb') }
104
+ it { is_expected.to exist }
105
+ end
106
+
107
+ describe 'default/destroy.js.erb' do
108
+ subject { file('app/views/activity_notification/subscriptions/default/destroy.js.erb') }
109
+ it { is_expected.to exist }
110
+ end
111
+
112
+ describe 'default/index.html.erb' do
113
+ subject { file('app/views/activity_notification/subscriptions/default/index.html.erb') }
114
+ it { is_expected.to exist }
115
+ end
116
+
117
+ describe 'default/show.html.erb' do
118
+ subject { file('app/views/activity_notification/subscriptions/default/show.html.erb') }
119
+ it { is_expected.to exist }
120
+ end
121
+
122
+ describe 'default/subscribe_to_email.js.erb' do
123
+ subject { file('app/views/activity_notification/subscriptions/default/subscribe_to_email.js.erb') }
124
+ it { is_expected.to exist }
125
+ end
126
+
127
+ describe 'default/subscribe.js.erb' do
128
+ subject { file('app/views/activity_notification/subscriptions/default/subscribe.js.erb') }
129
+ it { is_expected.to exist }
130
+ end
131
+
132
+ describe 'default/unsubscribe_to_email.js.erb' do
133
+ subject { file('app/views/activity_notification/subscriptions/default/unsubscribe_to_email.js.erb') }
134
+ it { is_expected.to exist }
135
+ end
136
+
137
+ describe 'default/unsubscribe.js.erb' do
138
+ subject { file('app/views/activity_notification/subscriptions/default/unsubscribe.js.erb') }
139
+ it { is_expected.to exist }
140
+ end
64
141
  end
65
142
  end
66
143
 
@@ -104,6 +181,13 @@ describe ActivityNotification::Generators::ViewsGenerator, type: :generator do
104
181
  it { is_expected.to exist }
105
182
  end
106
183
  end
184
+
185
+ describe 'the subscription views' do
186
+ describe 'users/index.html.erb' do
187
+ subject { file('app/views/activity_notification/subscriptions/users/index.html.erb') }
188
+ it { is_expected.to exist }
189
+ end
190
+ end
107
191
  end
108
192
  end
109
193
 
@@ -4,6 +4,9 @@ describe ActivityNotification::ViewHelpers, type: :helper do
4
4
  create(:notification, target: create(:confirmed_user))
5
5
  }
6
6
  let(:target_user) { notification.target }
7
+ let(:subscription) {
8
+ create(:subscription, target: target_user, key: notification.key)
9
+ }
7
10
  let(:notification_2) {
8
11
  create(:notification, target: create(:confirmed_user))
9
12
  }
@@ -304,4 +307,144 @@ describe ActivityNotification::ViewHelpers, type: :helper do
304
307
  end
305
308
  end
306
309
 
310
+ describe '#subscriptions_path_for' do
311
+ it "returns path for the subscription target" do
312
+ expect(subscriptions_path_for(target_user))
313
+ .to eq(user_subscriptions_path(target_user))
314
+ end
315
+ end
316
+
317
+ describe '#subscription_path_for' do
318
+ it "returns path for the subscription target" do
319
+ expect(subscription_path_for(subscription))
320
+ .to eq(user_subscription_path(target_user, subscription))
321
+ end
322
+ end
323
+
324
+ describe '#subscribe_subscription_path_for' do
325
+ it "returns path for the subscription target" do
326
+ expect(subscribe_subscription_path_for(subscription))
327
+ .to eq(subscribe_user_subscription_path(target_user, subscription))
328
+ end
329
+ end
330
+
331
+ describe '#subscribe_path_for' do
332
+ it "returns path for the subscription target" do
333
+ expect(subscribe_path_for(subscription))
334
+ .to eq(subscribe_user_subscription_path(target_user, subscription))
335
+ end
336
+ end
337
+
338
+ describe '#unsubscribe_subscription_path_for' do
339
+ it "returns path for the subscription target" do
340
+ expect(unsubscribe_subscription_path_for(subscription))
341
+ .to eq(unsubscribe_user_subscription_path(target_user, subscription))
342
+ end
343
+ end
344
+
345
+ describe '#unsubscribe_path_for' do
346
+ it "returns path for the subscription target" do
347
+ expect(unsubscribe_path_for(subscription))
348
+ .to eq(unsubscribe_user_subscription_path(target_user, subscription))
349
+ end
350
+ end
351
+
352
+ describe '#subscribe_to_email_subscription_path_for' do
353
+ it "returns path for the subscription target" do
354
+ expect(subscribe_to_email_subscription_path_for(subscription))
355
+ .to eq(subscribe_to_email_user_subscription_path(target_user, subscription))
356
+ end
357
+ end
358
+
359
+ describe '#subscribe_to_email_path_for' do
360
+ it "returns path for the subscription target" do
361
+ expect(subscribe_to_email_path_for(subscription))
362
+ .to eq(subscribe_to_email_user_subscription_path(target_user, subscription))
363
+ end
364
+ end
365
+
366
+ describe '#unsubscribe_to_email_subscription_path_for' do
367
+ it "returns path for the subscription target" do
368
+ expect(unsubscribe_to_email_subscription_path_for(subscription))
369
+ .to eq(unsubscribe_to_email_user_subscription_path(target_user, subscription))
370
+ end
371
+ end
372
+
373
+ describe '#unsubscribe_to_email_path_for' do
374
+ it "returns path for the subscription target" do
375
+ expect(unsubscribe_to_email_path_for(subscription))
376
+ .to eq(unsubscribe_to_email_user_subscription_path(target_user, subscription))
377
+ end
378
+ end
379
+
380
+ describe '#subscriptions_url_for' do
381
+ it "returns url for the subscription target" do
382
+ expect(subscriptions_url_for(target_user))
383
+ .to eq(user_subscriptions_url(target_user))
384
+ end
385
+ end
386
+
387
+ describe '#subscription_url_for' do
388
+ it "returns url for the subscription target" do
389
+ expect(subscription_url_for(subscription))
390
+ .to eq(user_subscription_url(target_user, subscription))
391
+ end
392
+ end
393
+
394
+ describe '#subscribe_subscription_url_for' do
395
+ it "returns url for the subscription target" do
396
+ expect(subscribe_subscription_url_for(subscription))
397
+ .to eq(subscribe_user_subscription_url(target_user, subscription))
398
+ end
399
+ end
400
+
401
+ describe '#subscribe_url_for' do
402
+ it "returns url for the subscription target" do
403
+ expect(subscribe_url_for(subscription))
404
+ .to eq(subscribe_user_subscription_url(target_user, subscription))
405
+ end
406
+ end
407
+
408
+ describe '#unsubscribe_subscription_url_for' do
409
+ it "returns url for the subscription target" do
410
+ expect(unsubscribe_subscription_url_for(subscription))
411
+ .to eq(unsubscribe_user_subscription_url(target_user, subscription))
412
+ end
413
+ end
414
+
415
+ describe '#unsubscribe_url_for' do
416
+ it "returns url for the subscription target" do
417
+ expect(unsubscribe_url_for(subscription))
418
+ .to eq(unsubscribe_user_subscription_url(target_user, subscription))
419
+ end
420
+ end
421
+
422
+ describe '#subscribe_to_email_subscription_url_for' do
423
+ it "returns url for the subscription target" do
424
+ expect(subscribe_to_email_subscription_url_for(subscription))
425
+ .to eq(subscribe_to_email_user_subscription_url(target_user, subscription))
426
+ end
427
+ end
428
+
429
+ describe '#subscribe_to_email_url_for' do
430
+ it "returns url for the subscription target" do
431
+ expect(subscribe_to_email_url_for(subscription))
432
+ .to eq(subscribe_to_email_user_subscription_url(target_user, subscription))
433
+ end
434
+ end
435
+
436
+ describe '#unsubscribe_to_email_subscription_url_for' do
437
+ it "returns url for the subscription target" do
438
+ expect(unsubscribe_to_email_subscription_url_for(subscription))
439
+ .to eq(unsubscribe_to_email_user_subscription_url(target_user, subscription))
440
+ end
441
+ end
442
+
443
+ describe '#unsubscribe_to_email_url_for' do
444
+ it "returns url for the subscription target" do
445
+ expect(unsubscribe_to_email_url_for(subscription))
446
+ .to eq(unsubscribe_to_email_user_subscription_url(target_user, subscription))
447
+ end
448
+ end
449
+
307
450
  end