Sha256: c59856c836375d2c59b7c6841fa4b3ad01a8214beb1fe5ce9dadf6d0a7e14735

Contents?: true

Size: 1.46 KB

Versions: 3

Compression:

Stored size: 1.46 KB

Contents

require 'spec_helper'

describe Concord do

  let(:class_under_test) do
    Class.new do
      include Concord.new(:foo, :bar)
    end
  end

  let(:instance_a) { class_under_test.new(foo, bar) }
  let(:instance_b) { class_under_test.new(foo, bar) }
  let(:instance_c) { class_under_test.new(foo, mock('Baz')) }

  let(:foo) { mock('Foo') }
  let(:bar) { mock('Bar') }

  context 'initializer lines' do
    unless Devtools.jruby?
      it 'sets initializer correctly' do
        klass = Class.new
        # Nicher way to assert this?
        klass.should_receive(:class_eval) do |code, file, line|
          file.should eql(File.expand_path('../../../../lib/concord.rb', __FILE__))
          line.should be(82)
        end
        klass.send(:include, Concord.new)
      end
    end
  end

  context 'attribute behavior' do
    subject { instance_a }

    its(:foo) { should be(foo) }
    its(:bar) { should be(bar) }
  end

  context 'equalization behavior' do
    specify 'composed objects are equalized on attributes' do
      instance_a.should      == instance_b
      instance_a.hash.should == instance_b.hash
      instance_a.should      eql(instance_b)

      instance_a.should_not  == instance_c
      instance_a.should_not  eql(instance_c)
    end
  end

  context 'to much composition behavior' do
    specify 'it raises an error' do
      expect { Concord.new(:a, :b, :c, :d) }.to raise_error(RuntimeError, 'Composition of more than three objects is not allowed')
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
concord-0.0.3 spec/unit/concord/universal_spec.rb
concord-0.0.2 spec/unit/concord/universal_spec.rb
concord-0.0.1 spec/unit/concord/universal_spec.rb