test/override_methods_test.rb in surrounded-0.9.0 vs test/override_methods_test.rb in surrounded-0.9.1
- old
+ new
@@ -1,40 +1,62 @@
require 'test_helper'
+class PrependedRoles
+ extend Surrounded::Context
+
+ initialize :user, :other
+
+ trigger :get_name do
+ user.name
+ end
+
+ trigger :other_title do
+ other.title
+ end
+
+ role :user do
+ def name
+ "Not what you thought, #{super}"
+ end
+ end
+
+ module OtherStuff
+ def title
+ "OtherStuff #{name}"
+ end
+ end
+
+ def map_role_other(role_player)
+ @other = role_player
+ map_role(:other, OtherStuff, role_player)
+ end
+
+ def apply_behavior_user(mod, object)
+ mod.instance_methods.each do |meth|
+ object.singleton_class.send(:define_method, meth, mod.instance_method(meth))
+ end
+ object
+ end
+
+ def remove_behavior_user(mod, object)
+ mod.instance_methods.each do |meth|
+ object.singleton_class.send(:remove_method, meth)
+ end
+ object
+ end
+end
+
describe Surrounded::Context, 'custom role application' do
+ let(:user){ User.new('Jim') }
+ let(:other){ User.new('Amy') }
+
+ let(:context){ PrependedRoles.new(user, other) }
+
it 'allows you to override existing methods on a role player' do
- class PrependedRoles
- extend Surrounded::Context
-
- initialize :user
-
- trigger :get_name do
- user.name
- end
-
- role :user do
- def name
- "Not what you thought, #{super}"
- end
- end
-
- def apply_behavior_user(mod, object)
- mod.instance_methods.each do |meth|
- object.singleton_class.send(:define_method, meth, mod.instance_method(meth))
- end
- object
- end
-
- def remove_behavior_user(mod, object)
- mod.instance_methods.each do |meth|
- object.singleton_class.send(:remove_method, meth)
- end
- object
- end
- end
-
- user = User.new('Jim')
-
- assert_equal "Not what you thought, Jim", PrependedRoles.new(user).get_name
+ assert_equal "Not what you thought, Jim", context.get_name
assert_equal "Jim", user.name
+ end
+
+ it 'allows you to override the way a role is mapped' do
+ assert_equal 'OtherStuff Amy', context.other_title
end
end
\ No newline at end of file