test/helpers_test.rb in acl9-0.11.0 vs test/helpers_test.rb in acl9-0.12.0
- old
+ new
@@ -15,23 +15,27 @@
module Hamlet
def current_user
user = Object.new
class <<user
- def has_role?(role, obj=nil)
- role == 'hamlet'
+ def has_role?(role, object=nil)
+ if object
+ return (role == 'hamlet' && object.name == 'castle')
+ else
+ return role == 'hamlet'
+ end
end
end
user
end
end
module NotLoggedIn
def current_user; nil end
end
-
+
module Noone
def current_user
user = Object.new
class <<user
@@ -52,42 +56,79 @@
end
class Klass1 < Base
include Hamlet
end
-
+
class Klass2 < Base
include NotLoggedIn
end
-
+
class Klass3 < Base
include Noone
end
it "has :the_question method" do
Base.new.should respond_to(:the_question)
end
-
+
it "role :hamlet is allowed to be" do
k = Klass1.new
k.action_name = 'be'
k.the_question.should be_true
end
-
+
it "role :hamlet is allowed to not_be" do
k = Klass1.new
k.action_name = 'not_be'
k.the_question.should be_true
end
-
+
it "not logged in is not allowed to be" do
k = Klass2.new
k.action_name = 'be'
k.the_question.should == false
end
-
+
it "noone is not allowed to be" do
k = Klass3.new
k.action_name = 'be'
k.the_question.should == false
end
+
+ it "has :show_to method" do
+ Base.new.should respond_to(:show_to)
+ end
+
+ it "has :show_to hamlet 'hello hamlet' message" do
+ k = Klass1.new
+ message = 'hello hamlet'
+ k.show_to('hamlet') { message }.should == message
+ end
+
+ it "has to show message if user has hamlet role on object" do
+ k = Klass1.new
+ message = 'hello hamlet'
+
+ obj = Object.new
+ def obj.name; 'castle'; end
+
+ k.show_to('hamlet', :of => obj) { message }.should == message
+ end
+
+ it "has not to show message if user has no hamlet role on object" do
+ k = Klass1.new
+
+ obj = Object.new
+ def obj.name; 'persia'; end
+
+ k.show_to('hamlet', :of => obj) { 'hello my prince' }.should == ''
+ end
+
+ it "has :show_to nothing to NotLoggedIn" do
+ k = Klass2.new
+ k.action_name = 'be'
+ message = 'hello hamlet'
+ k.show_to(:hamlet) { message }.should == ''
+ end
+
end