summaryrefslogtreecommitdiff
path: root/spec/models/concerns/subscribable_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/models/concerns/subscribable_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/models/concerns/subscribable_spec.rb')
-rw-r--r--spec/models/concerns/subscribable_spec.rb51
1 files changed, 46 insertions, 5 deletions
diff --git a/spec/models/concerns/subscribable_spec.rb b/spec/models/concerns/subscribable_spec.rb
index 9ee60426a5d..e31fdb0bffb 100644
--- a/spec/models/concerns/subscribable_spec.rb
+++ b/spec/models/concerns/subscribable_spec.rb
@@ -1,15 +1,56 @@
-require "spec_helper"
+require 'spec_helper'
-describe Subscribable, "Subscribable" do
+describe Subscribable, 'Subscribable' do
let(:resource) { create(:issue) }
let(:user) { create(:user) }
- describe "#subscribed?" do
- it do
+ describe '#subscribed?' do
+ it 'returns false when no subcription exists' do
expect(resource.subscribed?(user)).to be_falsey
- resource.toggle_subscription(user)
+ end
+
+ it 'returns true when a subcription exists and subscribed is true' do
+ resource.subscriptions.create(user: user, subscribed: true)
+
expect(resource.subscribed?(user)).to be_truthy
+ end
+
+ it 'returns false when a subcription exists and subscribed is false' do
+ resource.subscriptions.create(user: user, subscribed: false)
+
+ expect(resource.subscribed?(user)).to be_falsey
+ end
+ end
+ describe '#subscribers' do
+ it 'returns [] when no subcribers exists' do
+ expect(resource.subscribers).to be_empty
+ end
+
+ it 'returns the subscribed users' do
+ resource.subscriptions.create(user: user, subscribed: true)
+ resource.subscriptions.create(user: create(:user), subscribed: false)
+
+ expect(resource.subscribers).to eq [user]
+ end
+ end
+
+ describe '#toggle_subscription' do
+ it 'toggles the current subscription state for the given user' do
+ expect(resource.subscribed?(user)).to be_falsey
+
resource.toggle_subscription(user)
+
+ expect(resource.subscribed?(user)).to be_truthy
+ end
+ end
+
+ describe '#unsubscribe' do
+ it 'unsubscribes the given current user' do
+ resource.subscriptions.create(user: user, subscribed: true)
+ expect(resource.subscribed?(user)).to be_truthy
+
+ resource.unsubscribe(user)
+
expect(resource.subscribed?(user)).to be_falsey
end
end