Implements User.administrator? & User.moderator?

This commit is contained in:
kikito
2015-08-07 17:20:20 +02:00
parent 3378790764
commit c04d397e66
3 changed files with 43 additions and 3 deletions

View File

@@ -19,4 +19,12 @@ class User < ActiveRecord::Base
voted = votes.where("votable_type = ? AND votable_id IN (?)", "Debate", debates_ids)
voted.each_with_object({}){ |v,_| _[v.votable_id] = v.vote_flag }
end
def administrator?
@is_administrator ||= Administrator.where(user_id: id).exists?
end
def moderator?
@is_moderator ||= Moderator.where(user_id: id).exists?
end
end

View File

@@ -31,4 +31,12 @@ FactoryGirl.define do
debate
end
end
factory :administrator do
user
end
factory :moderator do
user
end
end

View File

@@ -7,13 +7,13 @@ describe User do
@user = create(:user)
end
it "should return {} if no debate" do
it "returns {} if no debate" do
expect(@user.votes_on_debates()).to eq({})
expect(@user.votes_on_debates([])).to eq({})
expect(@user.votes_on_debates([nil, nil])).to eq({})
end
it "should return a hash of debates ids and votes" do
it "returns a hash of debates ids and votes" do
debate1 = create(:debate)
debate2 = create(:debate)
debate3 = create(:debate)
@@ -73,4 +73,28 @@ describe User do
end
end
describe "administrator?" do
it "is false when the user is not an admin" do
expect(subject.administrator?).to be false
end
it "is true when the user is an admin" do
subject.save
create(:administrator, user: subject)
expect(subject.administrator?).to be true
end
end
describe "moderator?" do
it "is false when the user is not an admin" do
expect(subject.moderator?).to be false
end
it "is true when the user is an admin" do
subject.save
create(:moderator, user: subject)
expect(subject.moderator?).to be true
end
end
end