Sha256: 175873b6ac3fc28a48e5ebb26192c1b970d756d0ffc7ef2f2b58e91e72c91e80

Contents?: true

Size: 899 Bytes

Versions: 7

Compression:

Stored size: 899 Bytes

Contents

require 'spec_helper'

describe Virtus::InstanceMethods, '#initialize' do
  let(:described_class) do
    Class.new do
      include Virtus
      attribute :name, String
    end
  end

  context 'with no arguments' do
    subject { described_class.new }

    it 'does not set attributes' do
      subject.name.should be_nil
    end
  end

  context 'with nil' do
    subject { described_class.new(nil) }

    it 'does not set attributes' do
      subject.name.should be_nil
    end
  end

  context 'with an argument that responds to #to_hash' do
    subject { described_class.new(:name => name) }

    let(:name) { stub('name') }

    it 'sets attributes' do
      subject.name.should be(name)
    end
  end

  context' with an argument that does not respond to #to_hash' do
    subject { described_class.new(Object.new) }

    specify { expect { subject }.to raise_error(NoMethodError) }
  end
end

Version data entries

7 entries across 7 versions & 2 rubygems

Version Path
fragrant-0.0.5 vendor/bundle/ruby/1.9.1/gems/virtus-0.5.2/spec/unit/virtus/instance_methods/initialize_spec.rb
virtus-0.5.2 spec/unit/virtus/instance_methods/initialize_spec.rb
virtus-0.5.1 spec/unit/virtus/instance_methods/initialize_spec.rb
virtus-0.5.0 spec/unit/virtus/instance_methods/initialize_spec.rb
virtus-0.4.2 spec/unit/virtus/instance_methods/initialize_spec.rb
virtus-0.4.1 spec/unit/virtus/instance_methods/initialize_spec.rb
virtus-0.4.0 spec/unit/virtus/instance_methods/initialize_spec.rb