From c04d397e66964e2bff23f7b79a622439d6db0f6b Mon Sep 17 00:00:00 2001 From: kikito Date: Fri, 7 Aug 2015 17:20:20 +0200 Subject: [PATCH] Implements User.administrator? & User.moderator? --- app/models/user.rb | 8 ++++++++ spec/factories.rb | 10 +++++++++- spec/models/user_spec.rb | 28 ++++++++++++++++++++++++++-- 3 files changed, 43 insertions(+), 3 deletions(-) diff --git a/app/models/user.rb b/app/models/user.rb index 17573eaa7..4eb832546 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -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 diff --git a/spec/factories.rb b/spec/factories.rb index 8e1a2ea6c..fc76685d0 100644 --- a/spec/factories.rb +++ b/spec/factories.rb @@ -31,4 +31,12 @@ FactoryGirl.define do debate end -end \ No newline at end of file + factory :administrator do + user + end + + factory :moderator do + user + end + +end diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 0a7665127..24ccc9361 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -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