Sha256: 7a8395903dd1ffe0dcaaeef34282b431561a1415430430acd4a32190a46d8572

Contents?: true

Size: 1.18 KB

Versions: 3

Compression:

Stored size: 1.18 KB

Contents

require File.expand_path('../spec_helper', File.dirname(__FILE__))
require 'gorillib/metaprogramming/cattr_accessor'

describe 'metaprogramming' do
  describe 'cattr_accessor' do
    before do
      @class = Class.new do
        cattr_accessor :foo
        cattr_accessor :bar,  :instance_writer => false
        cattr_reader   :shaq, :instance_reader => false
      end
      @object = @class.new
    end

    it 'does not have an effect if already provided by another library.'

    it 'uses mattr default' do
      @class.foo.should be_nil
      @object.foo.should be_nil
    end

    it 'sets mattr value' do
      @class.foo = :test
      @object.foo.should == :test

      @object.foo = :test2
      @class.foo.should == :test2
    end

    it 'with instance_writer => false, does not create an instance writer' do
      @class.should respond_to(:foo)
      @class.should respond_to(:foo=)
      @object.should respond_to(:bar)
      @object.should_not respond_to(:bar=)
    end

    it 'with instance_reader => false, does not create an instance reader' do
      @class.should respond_to(:shaq)
      @object.should_not respond_to(:shaq)
      @object.should_not respond_to(:shaq=)
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
gorillib-0.1.11 spec/metaprogramming/cattr_accessor_spec.rb
gorillib-0.1.9 spec/metaprogramming/cattr_accessor_spec.rb
gorillib-0.1.8 spec/metaprogramming/cattr_accessor_spec.rb