Sha256: 26c18667aea947aa42968b22dc169943bb59c15d1f59d2e1a1111fa477e58088

Contents?: true

Size: 820 Bytes

Versions: 2

Compression:

Stored size: 820 Bytes

Contents

require 'spec_helper'

describe Virtus::ClassMethods, '#attribute' do
  subject { object.attribute(name, type) }

  let(:object)     { Class.new { include Virtus } }
  let(:descendant) { Class.new(object)            }
  let(:name)       { :name                        }
  let(:type)       { Virtus::Attribute::String    }

  def assert_attribute_added(klass, name, attribute_class)
    attributes = klass.attribute_set
    attributes[name].should be_nil
    subject
    attribute = attributes[name]
    attribute.name.should be(name)
    attribute.class.should be(attribute_class)
  end

  it { should be(object) }

  it 'adds the attribute to the class' do
    assert_attribute_added(object, name, type)
  end

  it 'adds the attribute to the descendant' do
    assert_attribute_added(descendant, name, type)
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
virtus-0.5.1 spec/unit/virtus/class_methods/attribute_spec.rb
virtus-0.5.0 spec/unit/virtus/class_methods/attribute_spec.rb