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 = votes.where("votable_type = ? AND votable_id IN (?)", "Debate", debates_ids)
voted.each_with_object({}){ |v,_| _[v.votable_id] = v.vote_flag } voted.each_with_object({}){ |v,_| _[v.votable_id] = v.vote_flag }
end end
def administrator?
@is_administrator ||= Administrator.where(user_id: id).exists?
end
def moderator?
@is_moderator ||= Moderator.where(user_id: id).exists?
end
end end

View File

@@ -31,4 +31,12 @@ FactoryGirl.define do
debate debate
end 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) @user = create(:user)
end 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([])).to eq({}) expect(@user.votes_on_debates([])).to eq({})
expect(@user.votes_on_debates([nil, nil])).to eq({}) expect(@user.votes_on_debates([nil, nil])).to eq({})
end 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) debate1 = create(:debate)
debate2 = create(:debate) debate2 = create(:debate)
debate3 = create(:debate) debate3 = create(:debate)
@@ -73,4 +73,28 @@ describe User do
end end
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 end