Sha256: b5fe8f4901eb9dfeaf6663da2700378667ce59db93f789986532ab26040bb1cb

Contents?: true

Size: 1.18 KB

Versions: 7

Compression:

Stored size: 1.18 KB

Contents

require File.join( File.dirname(__FILE__), "spec_helper" )

describe "dsl_accessor(:foo, :instance=>true)" do
  before do
    klass = Class.new
    klass.dsl_accessor :foo, :instance=>true
    @klass = klass
  end

  it "should provide instance method 'foo'" do
    @klass.new.should respond_to(:foo)
  end

  it "should delegate instance method to class method about reader" do
    @klass.foo 1
    @klass.new.foo.should == 1
  end
end

describe "dsl_accessor(:foo, :instance=>:opts)" do
  before do
    klass = Class.new
    klass.dsl_accessor :foo, :instance=>:opts
    @klass = klass
    @obj = @klass.new
  end

  it "should raise error when @opts is not set" do
    lambda {
      @obj.foo
    }.should raise_error(/missing @opts/)
  end

  it "should raise error when @opts is present but not responds to []" do
    @obj.instance_eval "@opts = true"
    lambda {
      @obj.foo
    }.should raise_error(/expected @opts\[\]/)
  end

  it "should read value from @opts first" do
    @obj.instance_eval "@opts = {:foo=>2}"
    @obj.foo.should == 2
  end

  it "should read value from class when @opts value is blank" do
    @klass.foo 1
    @obj.instance_eval "@opts = {}"
    @obj.foo.should == 1
  end
end

Version data entries

7 entries across 7 versions & 2 rubygems

Version Path
dsl_accessor-0.4.4 spec/instance_spec.rb
dsl_accessor-0.4.3 spec/instance_spec.rb
dsl_accessor-0.4.2 spec/instance_spec.rb
genki-dsl_accessor-0.4.3 spec/instance_spec.rb
genki-dsl_accessor-0.4.2 spec/instance_spec.rb
dsl_accessor-0.4.1 spec/instance_spec.rb
dsl_accessor-0.4.0 spec/instance_spec.rb