aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/models/user.rb7
-rw-r--r--spec/models/user_spec.rb22
2 files changed, 27 insertions, 2 deletions
diff --git a/app/models/user.rb b/app/models/user.rb
index 44abab4ba..be27e8f95 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -23,7 +23,7 @@
# Copyright (c) 2007 UK Citizens Online Democracy. All rights reserved.
# Email: francis@mysociety.org; WWW: http://www.mysociety.org/
#
-# $Id: user.rb,v 1.85 2009-03-18 01:55:23 francis Exp $
+# $Id: user.rb,v 1.86 2009-04-06 09:30:26 louise Exp $
require 'digest/sha1'
@@ -214,6 +214,11 @@ class User < ActiveRecord::Base
def requires_admin_power?
self.admin_level == 'super'
end
+
+ def self.requires_admin_power?(user)
+ !user.nil? && user.requires_admin_power?
+ end
+
# Does the user get "(admin)" links on each page on the main site?
def admin_page_links?
self.admin_level == 'super'
diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb
index be56faf39..5b7b08a7d 100644
--- a/spec/models/user_spec.rb
+++ b/spec/models/user_spec.rb
@@ -103,4 +103,24 @@ describe User, "when checking abilities" do
end
-
+describe User, 'when asked if a user has the ability to edit "requires admin" requests' do
+
+ before do
+ @mock_user = mock_model(User)
+ end
+
+ it 'should return false if no user is passed' do
+ User.requires_admin_power?(nil).should be_false
+ end
+
+ it 'should return true if the user has "requires admin" power' do
+ @mock_user.stub!(:requires_admin_power?).and_return true
+ User.requires_admin_power?(@mock_user).should be_true
+ end
+
+ it 'should return false if the user does not have "requires admin" power' do
+ @mock_user.stub!(:requires_admin_power?).and_return false
+ User.requires_admin_power?(@mock_user).should be_false
+ end
+
+end