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