summaryrefslogtreecommitdiff
path: root/spec/services/issues/update_service_spec.rb
diff options
context:
space:
mode:
authorRémy Coutable <remy@rymai.me>2016-03-01 17:33:13 +0100
committerRémy Coutable <remy@rymai.me>2016-03-15 18:22:02 +0100
commit54ec7e959900493b6e9174bf4dfe09ed0afd1e46 (patch)
tree22b79458e9d5ad2aa8ccf7ae00935c9a14aae33c /spec/services/issues/update_service_spec.rb
parent0444fa560acd07255960284f19b1de6499cd5910 (diff)
downloadgitlab-ce-54ec7e959900493b6e9174bf4dfe09ed0afd1e46.tar.gz
Improving the original label-subscribing implementation
1. Make the "subscribed" text in Issuable sidebar reflect the labels subscription status 2. Current user mut be logged-in to toggle issue/MR/label subscription
Diffstat (limited to 'spec/services/issues/update_service_spec.rb')
-rw-r--r--spec/services/issues/update_service_spec.rb55
1 files changed, 22 insertions, 33 deletions
diff --git a/spec/services/issues/update_service_spec.rb b/spec/services/issues/update_service_spec.rb
index dc9d8329751..4ffe753fef5 100644
--- a/spec/services/issues/update_service_spec.rb
+++ b/spec/services/issues/update_service_spec.rb
@@ -6,6 +6,7 @@ describe Issues::UpdateService, services: true do
let(:user3) { create(:user) }
let(:issue) { create(:issue, title: 'Old title', assignee_id: user3.id) }
let(:label) { create(:label) }
+ let(:label2) { create(:label) }
let(:project) { issue.project }
before do
@@ -148,57 +149,45 @@ describe Issues::UpdateService, services: true do
end
end
- context "when the issue is relabeled" do
- it "sends notifications for subscribers of newly added labels" do
- subscriber, non_subscriber = create_list(:user, 2)
- label.toggle_subscription(subscriber)
- 2.times { label.toggle_subscription(non_subscriber) }
+ context 'when the issue is relabeled' do
+ let!(:non_subscriber) { create(:user) }
+ let!(:subscriber) { create(:user).tap { |u| label.toggle_subscription(u) } }
+ it 'sends notifications for subscribers of newly added labels' do
opts = { label_ids: [label.id] }
perform_enqueued_jobs do
@issue = Issues::UpdateService.new(project, user, opts).execute(issue)
end
- @issue.reload
should_email(subscriber)
should_not_email(non_subscriber)
end
- it "does send notifications for existing labels" do
- second_label = create(:label)
- issue.labels << label
- subscriber, non_subscriber = create_list(:user, 2)
- label.toggle_subscription(subscriber)
- 2.times { label.toggle_subscription(non_subscriber) }
+ context 'when issue has the `label` label' do
+ before { issue.labels << label }
- opts = { label_ids: [label.id, second_label.id] }
+ it 'does not send notifications for existing labels' do
+ opts = { label_ids: [label.id, label2.id] }
- perform_enqueued_jobs do
- @issue = Issues::UpdateService.new(project, user, opts).execute(issue)
- end
+ perform_enqueued_jobs do
+ @issue = Issues::UpdateService.new(project, user, opts).execute(issue)
+ end
- @issue.reload
- should_email(subscriber)
- should_not_email(non_subscriber)
- end
+ should_not_email(subscriber)
+ should_not_email(non_subscriber)
+ end
- it "does not send notifications for removed labels" do
- second_label = create(:label)
- issue.labels << label
- subscriber, non_subscriber = create_list(:user, 2)
- label.toggle_subscription(subscriber)
- 2.times { label.toggle_subscription(non_subscriber) }
+ it 'does not send notifications for removed labels' do
+ opts = { label_ids: [label2.id] }
- opts = { label_ids: [second_label.id] }
+ perform_enqueued_jobs do
+ @issue = Issues::UpdateService.new(project, user, opts).execute(issue)
+ end
- perform_enqueued_jobs do
- @issue = Issues::UpdateService.new(project, user, opts).execute(issue)
+ should_not_email(subscriber)
+ should_not_email(non_subscriber)
end
-
- @issue.reload
- should_not_email(subscriber)
- should_not_email(non_subscriber)
end
end