Sha256: e9512152d180815af1c7a447798e34dba99901e674827e5dc7557abe8b013d91

Contents?: true

Size: 1.48 KB

Versions: 3

Compression:

Stored size: 1.48 KB

Contents

require File.dirname(__FILE__) + "/test_helper.rb"
require 'adhearsion/core_extensions/relationship_properties'

describe "Module#relationships" do
  
  describe "Overriding relationships in subclasses" do
  
    it "should be overridable in subclasses" do
      super_class = Class.new do
        relationships :storage_medium => Array
      end
      sub_class = Class.new(super_class) do
        relationships :storage_medium => Hash
      end
      super_class.new.send(:storage_medium).should.equal Array
      sub_class.new.send(:storage_medium).should.equal Hash
    end

    it "should not affect other defined relationships" do
      super_class = Class.new do
        relationships :io_class => TCPSocket, :error_class => StandardError
      end
      sub_class = Class.new(super_class) do
        relationships :error_class => RuntimeError
      end
      super_class.new.send(:io_class).should.equal TCPSocket
      sub_class.new.send(:io_class).should.equal TCPSocket
    end

  end
  
  it "should be accessible within instance methods of that Class as another instance method" do
    klass = Class.new do
      relationships :struct => Struct
      def new_struct
        struct.new
      end
    end
  end
  
  it "should be accessible in subclasses" do
    super_class = Class.new do
      relationships :number_class => Bignum
    end
    
    Class.new(super_class) do
      def number_class_name
        number_class.name
      end
    end.new.number_class_name.should == "Bignum"
    
  end
  
end

Version data entries

3 entries across 3 versions & 2 rubygems

Version Path
eric-adhearsion-0.7.999 spec/test_relationship_properties.rb
sevenscale-adhearsion-0.7.1000 spec/test_relationship_properties.rb
sevenscale-adhearsion-0.7.1003 spec/test_relationship_properties.rb