Sha256: d465da3ca867b4a3e7085c9db3772f8cf2ad640cbcc7bd0440c3b190b148508d

Contents?: true

Size: 1.26 KB

Versions: 11

Compression:

Stored size: 1.26 KB

Contents

require File.dirname(__FILE__) + '/spec_helper'
require 'rext/module'

describe Module do
  describe "helpers" do
    describe "#proxy_method" do
      it "should implement method_missing, passing regexp captures and arguments to the handler method" do
        class FooBar
          call_method :find, :if => /^find_by_(\w+)_(\w+)/
          call_method :delete, :if => lambda { |meth, *args| meth.to_s =~ /^delete_by_(\w+)_(\w+)/ }
          def find *args; args end
          def delete *args; args; end
        end
        foo = FooBar.new
        foo.find_by_user_email.should == ['user', 'email']
        foo.find_by_user_name('foo').should == ['user', 'name', 'foo']
        foo.delete_by_user_name('foo', 'bar').should == ['foo', 'bar']
        lambda { foo.does_not_exist }.should raise_error(NoMethodError)
      end
    end
    
    describe "#setup" do
      it "should define included instance evaluated in context to the module passed" do
        module BarFoo
          setup do
            include InstanceMethods
          end
          
          module InstanceMethods
            def bar_foo
              'wahoo'
            end 
          end
        end
        FooBar.send :include, BarFoo
        FooBar.new.bar_foo.should == 'wahoo'
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 2 rubygems

Version Path
visionmedia-rext-0.3.0 spec/module_spec.rb
visionmedia-rext-0.3.1 spec/module_spec.rb
rext-0.7.0 spec/module_spec.rb
rext-0.6.2 spec/module_spec.rb
rext-0.6.1 spec/module_spec.rb
rext-0.6.0 spec/module_spec.rb
rext-0.5.0 spec/module_spec.rb
rext-0.4.1 spec/module_spec.rb
rext-0.4.0 spec/module_spec.rb
rext-0.3.5 spec/module_spec.rb
rext-0.3.4 spec/module_spec.rb