Sha256: 1ded87bbe2748e0c052c0be083d05dc378446ec37fbf479d7c66521c7f17b1db

Contents?: true

Size: 1.1 KB

Versions: 13

Compression:

Stored size: 1.1 KB

Contents

require 'test_helper'

if test_rebinding_methods?

# If you want to use wrappers, here's how you could
class ProxyContext
  extend Surrounded::Context

  apply_roles_on(:trigger)
  initialize(:admin, :task)

  interface :admin do
    def some_admin_method
      "hello from #{name}, the admin interface!"
    end
  end

  trigger :do_something do
    admin.some_admin_method
  end

  trigger :admin_name do
    admin.name
  end

  trigger :admin_missing_method do
    admin.method_that_does_not_exist
  end
end

ProxyUser = Struct.new(:name)

describe ProxyContext do
  let(:user){
    ProxyUser.new('Jim')
  }
  let(:context){
    ProxyContext.new(user, Object.new)
  }
  it 'proxys methods between objects and its interface' do
    assert_equal 'hello from Jim, the admin interface!', context.do_something
  end

  it 'forwards methods that the object responds to' do
    assert_equal 'Jim', context.admin_name
  end

  it 'passes missing methods up the ancestry of the object' do
    err = ->{ context.admin_missing_method }.must_raise(NoMethodError)

    assert_match 'ProxyUser name="Jim"', err.message
  end
end

end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
surrounded-0.8.3 test/example_proxy_test.rb
surrounded-0.8.2 test/example_proxy_test.rb
surrounded-0.8.1 test/example_proxy_test.rb
surrounded-0.8.0 test/example_proxy_test.rb
surrounded-0.7.3 test/example_proxy_test.rb
surrounded-0.7.2 test/example_proxy_test.rb
surrounded-0.7.1 test/example_proxy_test.rb
surrounded-0.7.0 test/example_proxy_test.rb
surrounded-0.6.0 test/example_proxy_test.rb
surrounded-0.5.1 test/example_proxy_test.rb
surrounded-0.5.0 test/example_proxy_test.rb
surrounded-0.4.1 test/example_proxy_test.rb
surrounded-0.4.0 test/example_proxy_test.rb