Sha256: 2562cbd82b5d7dc35a16029f5cff5cb7c9395b2f76c6a280d641bf630bdc4b44

Contents?: true

Size: 1.11 KB

Versions: 2

Compression:

Stored size: 1.11 KB

Contents

require 'test_helper'

if RedCard.check '2.0'

# 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 # RedCard.check '2.0'

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
surrounded-0.3.1 test/example_proxy_test.rb
surrounded-0.3.0 test/example_proxy_test.rb