activity_notification 1.1.0 → 1.2.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/.gitignore +3 -0
- data/.rubocop.yml +1 -1
- data/CHANGELOG.md +23 -11
- data/Gemfile.lock +52 -40
- data/README.md +177 -14
- data/activity_notification.gemspec +3 -1
- data/app/controllers/activity_notification/subscriptions_controller.rb +48 -2
- data/app/views/activity_notification/optional_targets/default/base/_default.text.erb +10 -0
- data/app/views/activity_notification/optional_targets/default/slack/_default.text.erb +6 -0
- data/app/views/activity_notification/subscriptions/default/_notification_keys.html.erb +19 -0
- data/app/views/activity_notification/subscriptions/default/_subscription.html.erb +32 -3
- data/app/views/activity_notification/subscriptions/default/index.html.erb +4 -0
- data/app/views/activity_notification/subscriptions/default/show.html.erb +5 -0
- data/app/views/activity_notification/subscriptions/default/subscribe_to_optional_target.js.erb +6 -0
- data/app/views/activity_notification/subscriptions/default/unsubscribe_to_optional_target.js.erb +6 -0
- data/gemfiles/Gemfile.rails-4.2.lock +15 -3
- data/gemfiles/Gemfile.rails-5.0.lock +47 -35
- data/lib/activity_notification.rb +1 -0
- data/lib/activity_notification/apis/notification_api.rb +83 -26
- data/lib/activity_notification/apis/subscription_api.rb +93 -8
- data/lib/activity_notification/common.rb +6 -2
- data/lib/activity_notification/helpers/view_helpers.rb +43 -0
- data/lib/activity_notification/models/concerns/notifiable.rb +73 -28
- data/lib/activity_notification/models/concerns/subscriber.rb +34 -7
- data/lib/activity_notification/models/concerns/target.rb +25 -13
- data/lib/activity_notification/models/subscription.rb +13 -2
- data/lib/activity_notification/optional_targets/amazon_sns.rb +42 -0
- data/lib/activity_notification/optional_targets/base.rb +79 -0
- data/lib/activity_notification/optional_targets/slack.rb +33 -0
- data/lib/activity_notification/rails/routes.rb +30 -20
- data/lib/activity_notification/roles/acts_as_notifiable.rb +70 -11
- data/lib/activity_notification/version.rb +1 -1
- data/lib/generators/activity_notification/views_generator.rb +2 -2
- data/lib/generators/templates/migrations/migration.rb +2 -2
- data/spec/concerns/apis/notification_api_spec.rb +97 -0
- data/spec/concerns/apis/subscription_api_spec.rb +206 -41
- data/spec/concerns/common_spec.rb +7 -2
- data/spec/concerns/models/notifiable_spec.rb +88 -2
- data/spec/concerns/models/subscriber_spec.rb +114 -13
- data/spec/concerns/models/target_spec.rb +17 -0
- data/spec/controllers/subscriptions_controller_shared_examples.rb +251 -28
- data/spec/helpers/view_helpers_spec.rb +56 -0
- data/spec/optional_targets/amazon_sns_spec.rb +46 -0
- data/spec/optional_targets/base_spec.rb +43 -0
- data/spec/optional_targets/slack_spec.rb +46 -0
- data/spec/rails_app/app/controllers/comments_controller.rb +1 -0
- data/spec/rails_app/app/models/admin.rb +1 -2
- data/spec/rails_app/app/models/article.rb +2 -3
- data/spec/rails_app/app/models/comment.rb +19 -7
- data/spec/rails_app/app/views/activity_notification/optional_targets/admins/amazon_sns/comment/_default.text.erb +8 -0
- data/spec/rails_app/db/migrate/20160715050420_create_activity_notification_tables.rb +1 -1
- data/spec/rails_app/db/migrate/20160715050433_create_test_tables.rb +2 -0
- data/spec/rails_app/db/schema.rb +3 -1
- data/spec/rails_app/db/seeds.rb +1 -1
- data/spec/rails_app/lib/custom_optional_targets/console_output.rb +13 -0
- data/spec/rails_app/lib/custom_optional_targets/wrong_target.rb +10 -0
- data/spec/roles/acts_as_notifiable_spec.rb +124 -2
- metadata +49 -4
- data/spec/rails_app/app/models/notification.rb +0 -6
@@ -48,12 +48,17 @@ shared_examples_for :common do
|
|
48
48
|
end
|
49
49
|
|
50
50
|
context "with Proc" do
|
51
|
-
it "returns specified lambda
|
51
|
+
it "returns specified lambda without argument" do
|
52
|
+
test_proc = ->{ 1 }
|
53
|
+
expect(ActivityNotification.resolve_value(test_instance, test_proc)).to eq(1)
|
54
|
+
end
|
55
|
+
|
56
|
+
it "returns specified lambda with context(model) arguments" do
|
52
57
|
test_proc = ->(model){ model == test_instance ? 1 : 0 }
|
53
58
|
expect(ActivityNotification.resolve_value(test_instance, test_proc)).to eq(1)
|
54
59
|
end
|
55
60
|
|
56
|
-
it "returns specified lambda with controller and context(model)
|
61
|
+
it "returns specified lambda with controller and context(model) arguments" do
|
57
62
|
test_proc = ->(controller, model){ controller == 'StubController' and model == test_instance ? 1 : 0 }
|
58
63
|
expect(ActivityNotification.resolve_value(test_instance, test_proc)).to eq(1)
|
59
64
|
end
|
@@ -493,13 +493,99 @@ shared_examples_for :notifiable do
|
|
493
493
|
expect(test_instance.printable_notifiable_name(test_target, 'dummy_key')).to eq('test_printable_name')
|
494
494
|
end
|
495
495
|
|
496
|
-
it "returns specified lambda with
|
497
|
-
described_class._printable_notifiable_name[:users] = ->(target){ 'test_printable_name' }
|
496
|
+
it "returns specified lambda with notifiable, target and key argument" do
|
497
|
+
described_class._printable_notifiable_name[:users] = ->(notifiable, target, key){ 'test_printable_name' }
|
498
498
|
expect(test_instance.printable_notifiable_name(test_target, 'dummy_key')).to eq('test_printable_name')
|
499
499
|
end
|
500
500
|
end
|
501
501
|
end
|
502
502
|
|
503
|
+
describe "#optional_targets" do
|
504
|
+
require 'custom_optional_targets/console_output'
|
505
|
+
|
506
|
+
context "without any configuration" do
|
507
|
+
it "returns blank array" do
|
508
|
+
expect(test_instance.optional_targets(test_target, 'dummy_key')).to eq([])
|
509
|
+
end
|
510
|
+
end
|
511
|
+
|
512
|
+
context "configured with a field" do
|
513
|
+
before do
|
514
|
+
@optional_target_instance = CustomOptionalTarget::ConsoleOutput.new
|
515
|
+
end
|
516
|
+
|
517
|
+
it "returns specified value" do
|
518
|
+
described_class._optional_targets[:users] = [@optional_target_instance]
|
519
|
+
expect(test_instance.optional_targets(User, 'dummy_key')).to eq([@optional_target_instance])
|
520
|
+
end
|
521
|
+
|
522
|
+
it "returns specified symbol of method" do
|
523
|
+
module AdditionalMethods
|
524
|
+
def custom_optional_targets
|
525
|
+
[ActivityNotification::OptionalTarget::Base.new]
|
526
|
+
end
|
527
|
+
end
|
528
|
+
test_instance.extend(AdditionalMethods)
|
529
|
+
described_class._optional_targets[:users] = :custom_optional_targets
|
530
|
+
expect(test_instance.optional_targets(User, 'dummy_key').size).to eq(1)
|
531
|
+
expect(test_instance.optional_targets(User, 'dummy_key').first).to be_a(ActivityNotification::OptionalTarget::Base)
|
532
|
+
end
|
533
|
+
|
534
|
+
it "returns specified lambda with no arguments" do
|
535
|
+
described_class._optional_targets[:users] = ->{ [ActivityNotification::OptionalTarget::Base.new] }
|
536
|
+
expect(test_instance.optional_targets(User, 'dummy_key').first).to be_a(ActivityNotification::OptionalTarget::Base)
|
537
|
+
end
|
538
|
+
|
539
|
+
it "returns specified lambda with notifiable and key argument" do
|
540
|
+
described_class._optional_targets[:users] = ->(notifiable, key){ key == 'dummy_key' ? [ActivityNotification::OptionalTarget::Base.new] : [] }
|
541
|
+
expect(test_instance.optional_targets(User)).to eq([])
|
542
|
+
expect(test_instance.optional_targets(User, 'dummy_key').first).to be_a(ActivityNotification::OptionalTarget::Base)
|
543
|
+
end
|
544
|
+
end
|
545
|
+
end
|
546
|
+
|
547
|
+
describe "#optional_target_names" do
|
548
|
+
require 'custom_optional_targets/console_output'
|
549
|
+
|
550
|
+
context "without any configuration" do
|
551
|
+
it "returns blank array" do
|
552
|
+
expect(test_instance.optional_target_names(test_target, 'dummy_key')).to eq([])
|
553
|
+
end
|
554
|
+
end
|
555
|
+
|
556
|
+
context "configured with a field" do
|
557
|
+
before do
|
558
|
+
@optional_target_instance = CustomOptionalTarget::ConsoleOutput.new
|
559
|
+
end
|
560
|
+
|
561
|
+
it "returns specified value" do
|
562
|
+
described_class._optional_targets[:users] = [@optional_target_instance]
|
563
|
+
expect(test_instance.optional_target_names(User, 'dummy_key')).to eq([:console_output])
|
564
|
+
end
|
565
|
+
|
566
|
+
it "returns specified symbol of method" do
|
567
|
+
module AdditionalMethods
|
568
|
+
def custom_optional_targets
|
569
|
+
[ActivityNotification::OptionalTarget::Base.new]
|
570
|
+
end
|
571
|
+
end
|
572
|
+
test_instance.extend(AdditionalMethods)
|
573
|
+
described_class._optional_targets[:users] = :custom_optional_targets
|
574
|
+
expect(test_instance.optional_target_names(User, 'dummy_key')).to eq([:base])
|
575
|
+
end
|
576
|
+
|
577
|
+
it "returns specified lambda with no arguments" do
|
578
|
+
described_class._optional_targets[:users] = ->{ [@optional_target_instance] }
|
579
|
+
expect(test_instance.optional_target_names(User, 'dummy_key')).to eq([:console_output])
|
580
|
+
end
|
581
|
+
|
582
|
+
it "returns specified lambda with notifiable and key argument" do
|
583
|
+
described_class._optional_targets[:users] = ->(notifiable, key){ key == 'dummy_key' ? [@optional_target_instance] : [] }
|
584
|
+
expect(test_instance.optional_target_names(User, 'dummy_key')).to eq([:console_output])
|
585
|
+
end
|
586
|
+
end
|
587
|
+
end
|
588
|
+
|
503
589
|
describe "#notify" do
|
504
590
|
it "is an alias of ActivityNotification::Notification.notify" do
|
505
591
|
expect(ActivityNotification::Notification).to receive(:notify)
|
@@ -89,8 +89,8 @@ shared_examples_for :subscriber do
|
|
89
89
|
it "creates a new subscription" do
|
90
90
|
params = { key: 'key_1' }
|
91
91
|
new_subscription = test_instance.create_subscription(params)
|
92
|
-
expect(new_subscription.subscribing).to be_truthy
|
93
|
-
expect(new_subscription.subscribing_to_email).to be_truthy
|
92
|
+
expect(new_subscription.subscribing?).to be_truthy
|
93
|
+
expect(new_subscription.subscribing_to_email?).to be_truthy
|
94
94
|
expect(test_instance.subscriptions.reload.size).to eq(1)
|
95
95
|
end
|
96
96
|
end
|
@@ -99,8 +99,8 @@ shared_examples_for :subscriber do
|
|
99
99
|
it "creates a new subscription" do
|
100
100
|
params = { key: 'key_1', subscribing: false }
|
101
101
|
new_subscription = test_instance.create_subscription(params)
|
102
|
-
expect(new_subscription.subscribing).to be_falsey
|
103
|
-
expect(new_subscription.subscribing_to_email).to be_falsey
|
102
|
+
expect(new_subscription.subscribing?).to be_falsey
|
103
|
+
expect(new_subscription.subscribing_to_email?).to be_falsey
|
104
104
|
expect(test_instance.subscriptions.reload.size).to eq(1)
|
105
105
|
end
|
106
106
|
end
|
@@ -109,8 +109,8 @@ shared_examples_for :subscriber do
|
|
109
109
|
it "creates a new subscription" do
|
110
110
|
params = { key: 'key_1', subscribing_to_email: false }
|
111
111
|
new_subscription = test_instance.create_subscription(params)
|
112
|
-
expect(new_subscription.subscribing).to be_truthy
|
113
|
-
expect(new_subscription.subscribing_to_email).to be_falsey
|
112
|
+
expect(new_subscription.subscribing?).to be_truthy
|
113
|
+
expect(new_subscription.subscribing_to_email?).to be_falsey
|
114
114
|
expect(test_instance.subscriptions.reload.size).to eq(1)
|
115
115
|
end
|
116
116
|
end
|
@@ -119,8 +119,8 @@ shared_examples_for :subscriber do
|
|
119
119
|
it "creates a new subscription" do
|
120
120
|
params = { key: 'key_1', subscribing: true, subscribing_to_email: false }
|
121
121
|
new_subscription = test_instance.create_subscription(params)
|
122
|
-
expect(new_subscription.subscribing).to be_truthy
|
123
|
-
expect(new_subscription.subscribing_to_email).to be_falsey
|
122
|
+
expect(new_subscription.subscribing?).to be_truthy
|
123
|
+
expect(new_subscription.subscribing_to_email?).to be_falsey
|
124
124
|
expect(test_instance.subscriptions.reload.size).to eq(1)
|
125
125
|
end
|
126
126
|
end
|
@@ -133,6 +133,47 @@ shared_examples_for :subscriber do
|
|
133
133
|
expect(test_instance.subscriptions.reload).to be_empty
|
134
134
|
end
|
135
135
|
end
|
136
|
+
|
137
|
+
|
138
|
+
|
139
|
+
context "with true as optional_targets params" do
|
140
|
+
it "creates a new subscription" do
|
141
|
+
params = { key: 'key_1', optional_targets: { subscribing_to_console_output: true } }
|
142
|
+
new_subscription = test_instance.create_subscription(params)
|
143
|
+
expect(new_subscription.subscribing?).to be_truthy
|
144
|
+
expect(new_subscription.subscribing_to_optional_target?(:console_output)).to be_truthy
|
145
|
+
expect(test_instance.subscriptions.reload.size).to eq(1)
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
context "with false as optional_targets params" do
|
150
|
+
it "creates a new subscription" do
|
151
|
+
params = { key: 'key_1', optional_targets: { subscribing_to_console_output: false } }
|
152
|
+
new_subscription = test_instance.create_subscription(params)
|
153
|
+
expect(new_subscription.subscribing?).to be_truthy
|
154
|
+
expect(new_subscription.subscribing_to_optional_target?(:console_output)).to be_falsey
|
155
|
+
expect(test_instance.subscriptions.reload.size).to eq(1)
|
156
|
+
end
|
157
|
+
end
|
158
|
+
|
159
|
+
context "with true as subscribing and false as optional_targets params" do
|
160
|
+
it "creates a new subscription" do
|
161
|
+
params = { key: 'key_1', subscribing: true, optional_targets: { subscribing_to_console_output: false } }
|
162
|
+
new_subscription = test_instance.create_subscription(params)
|
163
|
+
expect(new_subscription.subscribing?).to be_truthy
|
164
|
+
expect(new_subscription.subscribing_to_optional_target?(:console_output)).to be_falsey
|
165
|
+
expect(test_instance.subscriptions.reload.size).to eq(1)
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
169
|
+
context "with false as subscribing and true as optional_targets params" do
|
170
|
+
it "does not create a new subscription since it is invalid" do
|
171
|
+
params = { key: 'key_1', subscribing: false, optional_targets: { subscribing_to_console_output: true } }
|
172
|
+
new_subscription = test_instance.create_subscription(params)
|
173
|
+
expect(new_subscription).to be_nil
|
174
|
+
expect(test_instance.subscriptions.reload).to be_empty
|
175
|
+
end
|
176
|
+
end
|
136
177
|
end
|
137
178
|
|
138
179
|
describe "#subscription_index" do
|
@@ -446,7 +487,7 @@ shared_examples_for :subscriber do
|
|
446
487
|
context "subscribing to notification" do
|
447
488
|
it "returns true" do
|
448
489
|
subscription = test_instance.create_subscription(key: @test_key)
|
449
|
-
expect(subscription.subscribing).to be_truthy
|
490
|
+
expect(subscription.subscribing?).to be_truthy
|
450
491
|
expect(test_instance.subscribes_to_notification?(@test_key)).to be_truthy
|
451
492
|
end
|
452
493
|
end
|
@@ -454,7 +495,7 @@ shared_examples_for :subscriber do
|
|
454
495
|
context "unsubscribed to notification" do
|
455
496
|
it "returns false" do
|
456
497
|
subscription = test_instance.create_subscription(key: @test_key, subscribing: false)
|
457
|
-
expect(subscription.subscribing).to be_falsey
|
498
|
+
expect(subscription.subscribing?).to be_falsey
|
458
499
|
expect(test_instance.subscribes_to_notification?(@test_key)).to be_falsey
|
459
500
|
end
|
460
501
|
end
|
@@ -505,15 +546,15 @@ shared_examples_for :subscriber do
|
|
505
546
|
context "subscribing to notification email" do
|
506
547
|
it "returns true" do
|
507
548
|
subscription = test_instance.create_subscription(key: @test_key)
|
508
|
-
expect(subscription.subscribing_to_email).to be_truthy
|
549
|
+
expect(subscription.subscribing_to_email?).to be_truthy
|
509
550
|
expect(test_instance.subscribes_to_notification_email?(@test_key)).to be_truthy
|
510
551
|
end
|
511
552
|
end
|
512
553
|
|
513
|
-
context "unsubscribed to notification" do
|
554
|
+
context "unsubscribed to notification email" do
|
514
555
|
it "returns false" do
|
515
556
|
subscription = test_instance.create_subscription(key: @test_key, subscribing: true, subscribing_to_email: false)
|
516
|
-
expect(subscription.subscribing_to_email).to be_falsey
|
557
|
+
expect(subscription.subscribing_to_email?).to be_falsey
|
517
558
|
expect(test_instance.subscribes_to_notification_email?(@test_key)).to be_falsey
|
518
559
|
end
|
519
560
|
end
|
@@ -521,5 +562,65 @@ shared_examples_for :subscriber do
|
|
521
562
|
end
|
522
563
|
end
|
523
564
|
|
565
|
+
describe "#subscribes_to_optional_target?" do
|
566
|
+
before do
|
567
|
+
@test_key = 'test_key'
|
568
|
+
@optional_target_name = :console_output
|
569
|
+
end
|
570
|
+
|
571
|
+
context "when the subscription is not enabled for the target" do
|
572
|
+
it "returns true" do
|
573
|
+
described_class._notification_subscription_allowed = false
|
574
|
+
expect(test_instance.subscribes_to_optional_target?(@test_key, @optional_target_name)).to be_truthy
|
575
|
+
end
|
576
|
+
end
|
577
|
+
|
578
|
+
context "when the subscription is enabled for the target" do
|
579
|
+
before do
|
580
|
+
described_class._notification_subscription_allowed = true
|
581
|
+
end
|
582
|
+
|
583
|
+
context "without configured subscpriotion" do
|
584
|
+
context "without subscribe_as_default argument" do
|
585
|
+
context "with true as ActivityNotification.config.subscribe_as_default" do
|
586
|
+
it "returns true" do
|
587
|
+
subscribe_as_default = ActivityNotification.config.subscribe_as_default
|
588
|
+
ActivityNotification.config.subscribe_as_default = true
|
589
|
+
expect(test_instance.subscribes_to_optional_target?(@test_key, @optional_target_name)).to be_truthy
|
590
|
+
ActivityNotification.config.subscribe_as_default = subscribe_as_default
|
591
|
+
end
|
592
|
+
end
|
593
|
+
|
594
|
+
context "with false as ActivityNotification.config.subscribe_as_default" do
|
595
|
+
it "returns false" do
|
596
|
+
subscribe_as_default = ActivityNotification.config.subscribe_as_default
|
597
|
+
ActivityNotification.config.subscribe_as_default = false
|
598
|
+
expect(test_instance.subscribes_to_optional_target?(@test_key, @optional_target_name)).to be_falsey
|
599
|
+
ActivityNotification.config.subscribe_as_default = subscribe_as_default
|
600
|
+
end
|
601
|
+
end
|
602
|
+
end
|
603
|
+
end
|
604
|
+
|
605
|
+
context "with configured subscpriotion" do
|
606
|
+
context "subscribing to the specified optional target" do
|
607
|
+
it "returns true" do
|
608
|
+
subscription = test_instance.create_subscription(key: @test_key, optional_targets: { ActivityNotification::Subscription.to_optional_target_key(@optional_target_name) => true })
|
609
|
+
expect(subscription.subscribing_to_optional_target?(@optional_target_name)).to be_truthy
|
610
|
+
expect(test_instance.subscribes_to_optional_target?(@test_key, @optional_target_name)).to be_truthy
|
611
|
+
end
|
612
|
+
end
|
613
|
+
|
614
|
+
context "unsubscribed to the specified optional target" do
|
615
|
+
it "returns false" do
|
616
|
+
subscription = test_instance.create_subscription(key: @test_key, subscribing: true, optional_targets: { ActivityNotification::Subscription.to_optional_target_key(@optional_target_name) => false })
|
617
|
+
expect(subscription.subscribing_to_optional_target?(@optional_target_name)).to be_falsey
|
618
|
+
expect(test_instance.subscribes_to_optional_target?(@test_key, @optional_target_name)).to be_falsey
|
619
|
+
end
|
620
|
+
end
|
621
|
+
end
|
622
|
+
end
|
623
|
+
end
|
624
|
+
|
524
625
|
end
|
525
626
|
end
|
@@ -1113,6 +1113,23 @@ shared_examples_for :target do
|
|
1113
1113
|
end
|
1114
1114
|
end
|
1115
1115
|
end
|
1116
|
+
|
1117
|
+
describe "#subscribes_to_optional_target?" do
|
1118
|
+
context "when the subscription is not enabled for the target" do
|
1119
|
+
it "returns true" do
|
1120
|
+
described_class._notification_subscription_allowed = false
|
1121
|
+
expect(test_instance.subscribes_to_optional_target?('test_key', :slack)).to be_truthy
|
1122
|
+
end
|
1123
|
+
end
|
1124
|
+
|
1125
|
+
context "when the subscription is enabled for the target" do
|
1126
|
+
it "calls Subscriber#_subscribes_to_optional_target?" do
|
1127
|
+
described_class._notification_subscription_allowed = true
|
1128
|
+
expect(test_instance).to receive(:_subscribes_to_optional_target?)
|
1129
|
+
test_instance.subscribes_to_optional_target?('test_key', :slack)
|
1130
|
+
end
|
1131
|
+
end
|
1132
|
+
end
|
1116
1133
|
end
|
1117
1134
|
|
1118
1135
|
end
|
@@ -220,7 +220,7 @@ shared_examples_for :subscription_controller do
|
|
220
220
|
expect(test_target.subscriptions.size).to eq(0)
|
221
221
|
end
|
222
222
|
|
223
|
-
context "http direct POST request" do
|
223
|
+
context "http direct POST request without optional targets" do
|
224
224
|
before do
|
225
225
|
post_with_compatibility :create, target_params.merge({
|
226
226
|
typed_target_param => test_target,
|
@@ -245,6 +245,34 @@ shared_examples_for :subscription_controller do
|
|
245
245
|
end
|
246
246
|
end
|
247
247
|
|
248
|
+
context "http direct POST request with optional targets" do
|
249
|
+
before do
|
250
|
+
post_with_compatibility :create, target_params.merge({
|
251
|
+
typed_target_param => test_target,
|
252
|
+
"subscription" => { "key" => "new_subscription_key",
|
253
|
+
"subscribing"=> "true",
|
254
|
+
"subscribing_to_email"=>"true",
|
255
|
+
"optional_targets" => { "subscribing_to_base1" => "true", "subscribing_to_base2" => "false" }
|
256
|
+
}
|
257
|
+
}), valid_session
|
258
|
+
end
|
259
|
+
|
260
|
+
it "returns 302 as http status code" do
|
261
|
+
expect(response.status).to eq(302)
|
262
|
+
end
|
263
|
+
|
264
|
+
it "creates new subscription of the target" do
|
265
|
+
expect(test_target.subscriptions.reload.size).to eq(1)
|
266
|
+
expect(test_target.subscriptions.reload.first.key).to eq("new_subscription_key")
|
267
|
+
expect(test_target.subscriptions.reload.first.subscribing_to_optional_target?("base1")).to be_truthy
|
268
|
+
expect(test_target.subscriptions.reload.first.subscribing_to_optional_target?("base2")).to be_falsey
|
269
|
+
end
|
270
|
+
|
271
|
+
it "redirects to :index" do
|
272
|
+
expect(response).to redirect_to action: :index
|
273
|
+
end
|
274
|
+
end
|
275
|
+
|
248
276
|
context "http POST request from root_path" do
|
249
277
|
before do
|
250
278
|
request.env["HTTP_REFERER"] = root_path
|
@@ -403,7 +431,7 @@ shared_examples_for :subscription_controller do
|
|
403
431
|
before do
|
404
432
|
@subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
|
405
433
|
@subscription.unsubscribe
|
406
|
-
expect(@subscription.subscribing).to be_falsey
|
434
|
+
expect(@subscription.subscribing?).to be_falsey
|
407
435
|
post_with_compatibility :subscribe, target_params.merge({ id: @subscription, typed_target_param => test_target }), valid_session
|
408
436
|
end
|
409
437
|
|
@@ -412,7 +440,7 @@ shared_examples_for :subscription_controller do
|
|
412
440
|
end
|
413
441
|
|
414
442
|
it "updates subscribing to true" do
|
415
|
-
expect(@subscription.reload.subscribing).to be_truthy
|
443
|
+
expect(@subscription.reload.subscribing?).to be_truthy
|
416
444
|
end
|
417
445
|
|
418
446
|
it "redirects to :index" do
|
@@ -424,7 +452,7 @@ shared_examples_for :subscription_controller do
|
|
424
452
|
before do
|
425
453
|
@subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
|
426
454
|
@subscription.unsubscribe
|
427
|
-
expect(@subscription.subscribing).to be_falsey
|
455
|
+
expect(@subscription.subscribing?).to be_falsey
|
428
456
|
request.env["HTTP_REFERER"] = root_path
|
429
457
|
post_with_compatibility :subscribe, target_params.merge({ id: @subscription, typed_target_param => test_target }), valid_session
|
430
458
|
end
|
@@ -434,7 +462,7 @@ shared_examples_for :subscription_controller do
|
|
434
462
|
end
|
435
463
|
|
436
464
|
it "updates subscribing to true" do
|
437
|
-
expect(@subscription.reload.subscribing).to be_truthy
|
465
|
+
expect(@subscription.reload.subscribing?).to be_truthy
|
438
466
|
end
|
439
467
|
|
440
468
|
it "redirects to root_path as request.referer" do
|
@@ -446,7 +474,7 @@ shared_examples_for :subscription_controller do
|
|
446
474
|
before do
|
447
475
|
@subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
|
448
476
|
@subscription.unsubscribe
|
449
|
-
expect(@subscription.subscribing).to be_falsey
|
477
|
+
expect(@subscription.subscribing?).to be_falsey
|
450
478
|
request.env["HTTP_REFERER"] = root_path
|
451
479
|
xhr_with_compatibility :post, :subscribe, target_params.merge({ id: @subscription, typed_target_param => test_target }), valid_session
|
452
480
|
end
|
@@ -460,7 +488,7 @@ shared_examples_for :subscription_controller do
|
|
460
488
|
end
|
461
489
|
|
462
490
|
it "updates subscribing to true" do
|
463
|
-
expect(@subscription.reload.subscribing).to be_truthy
|
491
|
+
expect(@subscription.reload.subscribing?).to be_truthy
|
464
492
|
end
|
465
493
|
|
466
494
|
it "renders the :open template as format js" do
|
@@ -473,7 +501,7 @@ shared_examples_for :subscription_controller do
|
|
473
501
|
context "http direct POST request" do
|
474
502
|
before do
|
475
503
|
@subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
|
476
|
-
expect(@subscription.subscribing).to be_truthy
|
504
|
+
expect(@subscription.subscribing?).to be_truthy
|
477
505
|
post_with_compatibility :unsubscribe, target_params.merge({ id: @subscription, typed_target_param => test_target }), valid_session
|
478
506
|
end
|
479
507
|
|
@@ -482,7 +510,7 @@ shared_examples_for :subscription_controller do
|
|
482
510
|
end
|
483
511
|
|
484
512
|
it "updates subscribing to false" do
|
485
|
-
expect(@subscription.reload.subscribing).to be_falsey
|
513
|
+
expect(@subscription.reload.subscribing?).to be_falsey
|
486
514
|
end
|
487
515
|
|
488
516
|
it "redirects to :index" do
|
@@ -493,7 +521,7 @@ shared_examples_for :subscription_controller do
|
|
493
521
|
context "http POST request from root_path" do
|
494
522
|
before do
|
495
523
|
@subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
|
496
|
-
expect(@subscription.subscribing).to be_truthy
|
524
|
+
expect(@subscription.subscribing?).to be_truthy
|
497
525
|
request.env["HTTP_REFERER"] = root_path
|
498
526
|
post_with_compatibility :unsubscribe, target_params.merge({ id: @subscription, typed_target_param => test_target }), valid_session
|
499
527
|
end
|
@@ -503,7 +531,7 @@ shared_examples_for :subscription_controller do
|
|
503
531
|
end
|
504
532
|
|
505
533
|
it "updates subscribing to false" do
|
506
|
-
expect(@subscription.reload.subscribing).to be_falsey
|
534
|
+
expect(@subscription.reload.subscribing?).to be_falsey
|
507
535
|
end
|
508
536
|
|
509
537
|
it "redirects to root_path as request.referer" do
|
@@ -514,7 +542,7 @@ shared_examples_for :subscription_controller do
|
|
514
542
|
context "Ajax POST request" do
|
515
543
|
before do
|
516
544
|
@subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
|
517
|
-
expect(@subscription.subscribing).to be_truthy
|
545
|
+
expect(@subscription.subscribing?).to be_truthy
|
518
546
|
request.env["HTTP_REFERER"] = root_path
|
519
547
|
xhr_with_compatibility :post, :unsubscribe, target_params.merge({ id: @subscription, typed_target_param => test_target }), valid_session
|
520
548
|
end
|
@@ -528,7 +556,7 @@ shared_examples_for :subscription_controller do
|
|
528
556
|
end
|
529
557
|
|
530
558
|
it "updates subscribing to false" do
|
531
|
-
expect(@subscription.reload.subscribing).to be_falsey
|
559
|
+
expect(@subscription.reload.subscribing?).to be_falsey
|
532
560
|
end
|
533
561
|
|
534
562
|
it "renders the :open template as format js" do
|
@@ -542,7 +570,7 @@ shared_examples_for :subscription_controller do
|
|
542
570
|
before do
|
543
571
|
@subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
|
544
572
|
@subscription.unsubscribe_to_email
|
545
|
-
expect(@subscription.subscribing_to_email).to be_falsey
|
573
|
+
expect(@subscription.subscribing_to_email?).to be_falsey
|
546
574
|
post_with_compatibility :subscribe_to_email, target_params.merge({ id: @subscription, typed_target_param => test_target }), valid_session
|
547
575
|
end
|
548
576
|
|
@@ -551,7 +579,7 @@ shared_examples_for :subscription_controller do
|
|
551
579
|
end
|
552
580
|
|
553
581
|
it "updates subscribing_to_email to true" do
|
554
|
-
expect(@subscription.reload.subscribing_to_email).to be_truthy
|
582
|
+
expect(@subscription.reload.subscribing_to_email?).to be_truthy
|
555
583
|
end
|
556
584
|
|
557
585
|
it "redirects to :index" do
|
@@ -563,7 +591,7 @@ shared_examples_for :subscription_controller do
|
|
563
591
|
before do
|
564
592
|
@subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
|
565
593
|
@subscription.unsubscribe_to_email
|
566
|
-
expect(@subscription.subscribing_to_email).to be_falsey
|
594
|
+
expect(@subscription.subscribing_to_email?).to be_falsey
|
567
595
|
request.env["HTTP_REFERER"] = root_path
|
568
596
|
post_with_compatibility :subscribe_to_email, target_params.merge({ id: @subscription, typed_target_param => test_target }), valid_session
|
569
597
|
end
|
@@ -573,7 +601,7 @@ shared_examples_for :subscription_controller do
|
|
573
601
|
end
|
574
602
|
|
575
603
|
it "updates subscribing_to_email to true" do
|
576
|
-
expect(@subscription.reload.subscribing_to_email).to be_truthy
|
604
|
+
expect(@subscription.reload.subscribing_to_email?).to be_truthy
|
577
605
|
end
|
578
606
|
|
579
607
|
it "redirects to root_path as request.referer" do
|
@@ -585,7 +613,7 @@ shared_examples_for :subscription_controller do
|
|
585
613
|
before do
|
586
614
|
@subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
|
587
615
|
@subscription.unsubscribe_to_email
|
588
|
-
expect(@subscription.subscribing_to_email).to be_falsey
|
616
|
+
expect(@subscription.subscribing_to_email?).to be_falsey
|
589
617
|
request.env["HTTP_REFERER"] = root_path
|
590
618
|
xhr_with_compatibility :post, :subscribe_to_email, target_params.merge({ id: @subscription, typed_target_param => test_target }), valid_session
|
591
619
|
end
|
@@ -599,7 +627,7 @@ shared_examples_for :subscription_controller do
|
|
599
627
|
end
|
600
628
|
|
601
629
|
it "updates subscribing_to_email to true" do
|
602
|
-
expect(@subscription.reload.subscribing_to_email).to be_truthy
|
630
|
+
expect(@subscription.reload.subscribing_to_email?).to be_truthy
|
603
631
|
end
|
604
632
|
|
605
633
|
it "renders the :open template as format js" do
|
@@ -611,8 +639,8 @@ shared_examples_for :subscription_controller do
|
|
611
639
|
before do
|
612
640
|
@subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
|
613
641
|
@subscription.unsubscribe
|
614
|
-
expect(@subscription.subscribing).to be_falsey
|
615
|
-
expect(@subscription.subscribing_to_email).to be_falsey
|
642
|
+
expect(@subscription.subscribing?).to be_falsey
|
643
|
+
expect(@subscription.subscribing_to_email?).to be_falsey
|
616
644
|
post_with_compatibility :subscribe_to_email, target_params.merge({ id: @subscription, typed_target_param => test_target }), valid_session
|
617
645
|
end
|
618
646
|
|
@@ -621,7 +649,7 @@ shared_examples_for :subscription_controller do
|
|
621
649
|
end
|
622
650
|
|
623
651
|
it "cannot update subscribing_to_email to true" do
|
624
|
-
expect(@subscription.reload.subscribing_to_email).to be_falsey
|
652
|
+
expect(@subscription.reload.subscribing_to_email?).to be_falsey
|
625
653
|
end
|
626
654
|
|
627
655
|
it "redirects to :index" do
|
@@ -634,7 +662,7 @@ shared_examples_for :subscription_controller do
|
|
634
662
|
context "http direct POST request" do
|
635
663
|
before do
|
636
664
|
@subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
|
637
|
-
expect(@subscription.subscribing_to_email).to be_truthy
|
665
|
+
expect(@subscription.subscribing_to_email?).to be_truthy
|
638
666
|
post_with_compatibility :unsubscribe_to_email, target_params.merge({ id: @subscription, typed_target_param => test_target }), valid_session
|
639
667
|
end
|
640
668
|
|
@@ -643,7 +671,7 @@ shared_examples_for :subscription_controller do
|
|
643
671
|
end
|
644
672
|
|
645
673
|
it "updates subscribing_to_email to false" do
|
646
|
-
expect(@subscription.reload.subscribing_to_email).to be_falsey
|
674
|
+
expect(@subscription.reload.subscribing_to_email?).to be_falsey
|
647
675
|
end
|
648
676
|
|
649
677
|
it "redirects to :index" do
|
@@ -654,7 +682,7 @@ shared_examples_for :subscription_controller do
|
|
654
682
|
context "http POST request from root_path" do
|
655
683
|
before do
|
656
684
|
@subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
|
657
|
-
expect(@subscription.subscribing_to_email).to be_truthy
|
685
|
+
expect(@subscription.subscribing_to_email?).to be_truthy
|
658
686
|
request.env["HTTP_REFERER"] = root_path
|
659
687
|
post_with_compatibility :unsubscribe_to_email, target_params.merge({ id: @subscription, typed_target_param => test_target }), valid_session
|
660
688
|
end
|
@@ -664,7 +692,7 @@ shared_examples_for :subscription_controller do
|
|
664
692
|
end
|
665
693
|
|
666
694
|
it "updates subscribing_to_email to false" do
|
667
|
-
expect(@subscription.reload.subscribing_to_email).to be_falsey
|
695
|
+
expect(@subscription.reload.subscribing_to_email?).to be_falsey
|
668
696
|
end
|
669
697
|
|
670
698
|
it "redirects to root_path as request.referer" do
|
@@ -675,7 +703,7 @@ shared_examples_for :subscription_controller do
|
|
675
703
|
context "Ajax POST request" do
|
676
704
|
before do
|
677
705
|
@subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
|
678
|
-
expect(@subscription.subscribing_to_email).to be_truthy
|
706
|
+
expect(@subscription.subscribing_to_email?).to be_truthy
|
679
707
|
request.env["HTTP_REFERER"] = root_path
|
680
708
|
xhr_with_compatibility :post, :unsubscribe_to_email, target_params.merge({ id: @subscription, typed_target_param => test_target }), valid_session
|
681
709
|
end
|
@@ -689,7 +717,7 @@ shared_examples_for :subscription_controller do
|
|
689
717
|
end
|
690
718
|
|
691
719
|
it "updates subscribing_to_email to false" do
|
692
|
-
expect(@subscription.reload.subscribing_to_email).to be_falsey
|
720
|
+
expect(@subscription.reload.subscribing_to_email?).to be_falsey
|
693
721
|
end
|
694
722
|
|
695
723
|
it "renders the :open template as format js" do
|
@@ -698,6 +726,201 @@ shared_examples_for :subscription_controller do
|
|
698
726
|
end
|
699
727
|
end
|
700
728
|
|
729
|
+
describe "POST #subscribe_to_optional_target" do
|
730
|
+
context "without optional_target_name param" do
|
731
|
+
before do
|
732
|
+
@subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
|
733
|
+
@subscription.unsubscribe_to_optional_target(:base)
|
734
|
+
expect(@subscription.subscribing_to_optional_target?(:base)).to be_falsey
|
735
|
+
post_with_compatibility :subscribe_to_optional_target, target_params.merge({ id: @subscription, typed_target_param => test_target }), valid_session
|
736
|
+
end
|
737
|
+
|
738
|
+
it "returns 400 as http status code" do
|
739
|
+
expect(response.status).to eq(400)
|
740
|
+
end
|
741
|
+
|
742
|
+
it "does not update subscribing_to_optional_target?" do
|
743
|
+
expect(@subscription.subscribing_to_optional_target?(:base)).to be_falsey
|
744
|
+
end
|
745
|
+
end
|
746
|
+
|
747
|
+
context "http direct POST request" do
|
748
|
+
before do
|
749
|
+
@subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
|
750
|
+
@subscription.unsubscribe_to_optional_target(:base)
|
751
|
+
expect(@subscription.subscribing_to_optional_target?(:base)).to be_falsey
|
752
|
+
post_with_compatibility :subscribe_to_optional_target, target_params.merge({ id: @subscription, optional_target_name: 'base', typed_target_param => test_target }), valid_session
|
753
|
+
end
|
754
|
+
|
755
|
+
it "returns 302 as http status code" do
|
756
|
+
expect(response.status).to eq(302)
|
757
|
+
end
|
758
|
+
|
759
|
+
it "updates subscribing_to_optional_target to true" do
|
760
|
+
expect(@subscription.reload.subscribing_to_optional_target?(:base)).to be_truthy
|
761
|
+
end
|
762
|
+
|
763
|
+
it "redirects to :index" do
|
764
|
+
expect(response).to redirect_to action: :index
|
765
|
+
end
|
766
|
+
end
|
767
|
+
|
768
|
+
context "http POST request from root_path" do
|
769
|
+
before do
|
770
|
+
@subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
|
771
|
+
@subscription.unsubscribe_to_optional_target(:base)
|
772
|
+
expect(@subscription.subscribing_to_optional_target?(:base)).to be_falsey
|
773
|
+
request.env["HTTP_REFERER"] = root_path
|
774
|
+
post_with_compatibility :subscribe_to_optional_target, target_params.merge({ id: @subscription, optional_target_name: 'base', typed_target_param => test_target }), valid_session
|
775
|
+
end
|
776
|
+
|
777
|
+
it "returns 302 as http status code" do
|
778
|
+
expect(response.status).to eq(302)
|
779
|
+
end
|
780
|
+
|
781
|
+
it "updates subscribing_to_optional_target to true" do
|
782
|
+
expect(@subscription.reload.subscribing_to_optional_target?(:base)).to be_truthy
|
783
|
+
end
|
784
|
+
|
785
|
+
it "redirects to root_path as request.referer" do
|
786
|
+
expect(response).to redirect_to root_path
|
787
|
+
end
|
788
|
+
end
|
789
|
+
|
790
|
+
context "Ajax POST request" do
|
791
|
+
before do
|
792
|
+
@subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
|
793
|
+
@subscription.unsubscribe_to_optional_target(:base)
|
794
|
+
expect(@subscription.subscribing_to_optional_target?(:base)).to be_falsey
|
795
|
+
request.env["HTTP_REFERER"] = root_path
|
796
|
+
xhr_with_compatibility :post, :subscribe_to_optional_target, target_params.merge({ id: @subscription, optional_target_name: 'base', typed_target_param => test_target }), valid_session
|
797
|
+
end
|
798
|
+
|
799
|
+
it "returns 200 as http status code" do
|
800
|
+
expect(response.status).to eq(200)
|
801
|
+
end
|
802
|
+
|
803
|
+
it "assigns subscription index as @subscriptions" do
|
804
|
+
expect(assigns(:subscriptions)).to eq([@subscription])
|
805
|
+
end
|
806
|
+
|
807
|
+
it "updates subscribing_to_optional_target to true" do
|
808
|
+
expect(@subscription.reload.subscribing_to_optional_target?(:base)).to be_truthy
|
809
|
+
end
|
810
|
+
|
811
|
+
it "renders the :open template as format js" do
|
812
|
+
expect(response).to render_template :subscribe_to_optional_target, format: :js
|
813
|
+
end
|
814
|
+
end
|
815
|
+
|
816
|
+
context "with unsubscribed target" do
|
817
|
+
before do
|
818
|
+
@subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
|
819
|
+
@subscription.unsubscribe_to_optional_target(:base)
|
820
|
+
@subscription.unsubscribe
|
821
|
+
expect(@subscription.subscribing?).to be_falsey
|
822
|
+
expect(@subscription.subscribing_to_optional_target?(:base)).to be_falsey
|
823
|
+
post_with_compatibility :subscribe_to_optional_target, target_params.merge({ id: @subscription, optional_target_name: 'base', typed_target_param => test_target }), valid_session
|
824
|
+
end
|
825
|
+
|
826
|
+
it "returns 302 as http status code" do
|
827
|
+
expect(response.status).to eq(302)
|
828
|
+
end
|
829
|
+
|
830
|
+
it "cannot update subscribing_to_optional_target to true" do
|
831
|
+
expect(@subscription.reload.subscribing_to_optional_target?(:base)).to be_falsey
|
832
|
+
end
|
833
|
+
|
834
|
+
it "redirects to :index" do
|
835
|
+
expect(response).to redirect_to action: :index
|
836
|
+
end
|
837
|
+
end
|
838
|
+
end
|
839
|
+
|
840
|
+
describe "POST #unsubscribe_to_email" do
|
841
|
+
context "without optional_target_name param" do
|
842
|
+
before do
|
843
|
+
@subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
|
844
|
+
expect(@subscription.subscribing_to_optional_target?(:base)).to be_truthy
|
845
|
+
post_with_compatibility :unsubscribe_to_optional_target, target_params.merge({ id: @subscription, typed_target_param => test_target }), valid_session
|
846
|
+
end
|
847
|
+
|
848
|
+
it "returns 400 as http status code" do
|
849
|
+
expect(response.status).to eq(400)
|
850
|
+
end
|
851
|
+
|
852
|
+
it "does not update subscribing_to_optional_target?" do
|
853
|
+
expect(@subscription.subscribing_to_optional_target?(:base)).to be_truthy
|
854
|
+
end
|
855
|
+
end
|
856
|
+
|
857
|
+
context "http direct POST request" do
|
858
|
+
before do
|
859
|
+
@subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
|
860
|
+
expect(@subscription.subscribing_to_optional_target?(:base)).to be_truthy
|
861
|
+
post_with_compatibility :unsubscribe_to_optional_target, target_params.merge({ id: @subscription, optional_target_name: 'base', typed_target_param => test_target }), valid_session
|
862
|
+
end
|
863
|
+
|
864
|
+
it "returns 302 as http status code" do
|
865
|
+
expect(response.status).to eq(302)
|
866
|
+
end
|
867
|
+
|
868
|
+
it "updates subscribing_to_optional_target to false" do
|
869
|
+
expect(@subscription.reload.subscribing_to_optional_target?(:base)).to be_falsey
|
870
|
+
end
|
871
|
+
|
872
|
+
it "redirects to :index" do
|
873
|
+
expect(response).to redirect_to action: :index
|
874
|
+
end
|
875
|
+
end
|
876
|
+
|
877
|
+
context "http POST request from root_path" do
|
878
|
+
before do
|
879
|
+
@subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
|
880
|
+
expect(@subscription.subscribing_to_optional_target?(:base)).to be_truthy
|
881
|
+
request.env["HTTP_REFERER"] = root_path
|
882
|
+
post_with_compatibility :unsubscribe_to_optional_target, target_params.merge({ id: @subscription, optional_target_name: 'base', typed_target_param => test_target }), valid_session
|
883
|
+
end
|
884
|
+
|
885
|
+
it "returns 302 as http status code" do
|
886
|
+
expect(response.status).to eq(302)
|
887
|
+
end
|
888
|
+
|
889
|
+
it "updates subscribing_to_optional_target to false" do
|
890
|
+
expect(@subscription.reload.subscribing_to_optional_target?(:base)).to be_falsey
|
891
|
+
end
|
892
|
+
|
893
|
+
it "redirects to root_path as request.referer" do
|
894
|
+
expect(response).to redirect_to root_path
|
895
|
+
end
|
896
|
+
end
|
897
|
+
|
898
|
+
context "Ajax POST request" do
|
899
|
+
before do
|
900
|
+
@subscription = create(:subscription, target: test_target, key: 'test_subscription_key')
|
901
|
+
expect(@subscription.subscribing_to_optional_target?(:base)).to be_truthy
|
902
|
+
request.env["HTTP_REFERER"] = root_path
|
903
|
+
xhr_with_compatibility :post, :unsubscribe_to_optional_target, target_params.merge({ id: @subscription, optional_target_name: 'base', typed_target_param => test_target }), valid_session
|
904
|
+
end
|
905
|
+
|
906
|
+
it "returns 200 as http status code" do
|
907
|
+
expect(response.status).to eq(200)
|
908
|
+
end
|
909
|
+
|
910
|
+
it "assigns subscription index as @subscriptions" do
|
911
|
+
expect(assigns(:subscriptions)).to eq([@subscription])
|
912
|
+
end
|
913
|
+
|
914
|
+
it "updates subscribing_to_optional_target to false" do
|
915
|
+
expect(@subscription.reload.subscribing_to_optional_target?(:base)).to be_falsey
|
916
|
+
end
|
917
|
+
|
918
|
+
it "renders the :open template as format js" do
|
919
|
+
expect(response).to render_template :unsubscribe_to_optional_target, format: :js
|
920
|
+
end
|
921
|
+
end
|
922
|
+
end
|
923
|
+
|
701
924
|
|
702
925
|
private
|
703
926
|
|