From c2c6ed5dea50a8ac50141c404afda9e17f7a3126 Mon Sep 17 00:00:00 2001 From: zaziemo Date: Wed, 2 Sep 2015 10:09:35 +0200 Subject: [PATCH] refactor moderator role and add specs #5324 --- app/controllers/application_controller.rb | 2 +- app/models/role.rb | 2 +- spec/models/role_spec.rb | 17 ++++++++++++++++- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 7d1b99d33..0bcd4a59d 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -91,7 +91,7 @@ class ApplicationController < ActionController::Base end def redirect_unless_moderator - return if current_user.moderator? || current_user.admin? + return if current_user.moderator? redirect_to stream_url, notice: "you need to be an admin or moderator to do that" end diff --git a/app/models/role.rb b/app/models/role.rb index d9f60e867..cbe5644ef 100644 --- a/app/models/role.rb +++ b/app/models/role.rb @@ -19,7 +19,7 @@ class Role < ActiveRecord::Base end def self.moderator?(person) - exists?(person_id: person.id, name: "moderator") + moderators.exists?(person_id: person.id) end def self.add_moderator(person) diff --git a/spec/models/role_spec.rb b/spec/models/role_spec.rb index 06225ab5d..e0f21f7bb 100644 --- a/spec/models/role_spec.rb +++ b/spec/models/role_spec.rb @@ -6,7 +6,7 @@ describe Role do describe "validations" do it { should validate_presence_of(:person) } it { should validate_uniqueness_of(:name).scoped_to(:person_id) } - it { should validate_inclusion_of(:name).in_array(%w(admin spotlight)) } + it { should validate_inclusion_of(:name).in_array(%w(admin spotlight moderator)) } end describe "associations" do @@ -15,6 +15,7 @@ describe Role do describe "scopes" do let!(:admin_role) { person.roles.create(name: "admin") } + let!(:moderator_role) { person.roles.create(name: "moderator") } let!(:spotlight_role) { person.roles.create(name: "spotlight") } describe ".admins" do @@ -22,6 +23,20 @@ describe Role do expect(Role.admins).to match_array([admin_role]) end end + + describe ".moderators" do + it "should include admins" do + expect(Role.moderators).to include(admin_role) + end + + it "should include moderators" do + expect(Role.moderators).to include(moderator_role) + end + + it "should not include normal users" do + expect(Role.moderators).to_not include(person) + end + end end describe ".is_admin?" do