Sha256: 7d5e4dd77880daff30b40eca46648eb6cf2355ec9a1c89b924480dc484691003

Contents?: true

Size: 1.26 KB

Versions: 2

Compression:

Stored size: 1.26 KB

Contents

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

describe Module do
  describe 'mattr_accessor' do
    before do
      m = @module = Module.new do
        mattr_accessor :foo
        mattr_accessor :bar, :instance_writer => false
        mattr_reader   :shaq, :instance_reader => false
      end
      @class = Class.new
      @class.instance_eval { include m }
      @object = @class.new
    end

    it 'does not have an effect if already provided by another library.' unless ENV['QUIET_RSPEC']

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

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

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

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

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

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
gorillib-0.6.0 old/spec/gorillib/metaprogramming/mattr_accessor_spec.rb
gorillib-0.5.2 old/spec/gorillib/metaprogramming/mattr_accessor_spec.rb