Sha256: 18b655d088959388313732fa17ecad8bfac84b516ed5484d4c3f0f19beb592b8
Contents?: true
Size: 1.89 KB
Versions: 10
Compression:
Stored size: 1.89 KB
Contents
require 'spec_helper' describe Virtus::AttributeSet, '#[]=' do subject { object[name] = attribute } let(:attributes) { [] } let(:parent) { described_class.new } let(:object) { described_class.new(parent, attributes) } let(:name) { :name } context 'with a new attribute' do let(:attribute) { mock('attribute', :name => name) } it { should equal(attribute) } it 'adds an attribute' do expect { subject }.to change { object.to_a }.from(attributes).to([ attribute ]) end it 'allows #[] to access the attribute with a symbol' do expect { subject }.to change { object['name'] }.from(nil).to(attribute) end it 'allows #[] to access the attribute with a string' do expect { subject }.to change { object[:name] }.from(nil).to(attribute) end it 'allows #reset to track overridden attributes' do expect { subject }.to change { object.reset.to_a }.from(attributes).to([ attribute ]) end end context 'with a duplicate attribute' do let(:original) { mock('original', :name => name) } let(:attributes) { [ original ] } let(:attribute) { mock('attribute', :name => name) } it { should equal(attribute) } it 'replaces the original attribute' do expect { subject }.to change { object.to_a }.from(attributes).to([ attribute ]) end it 'allows #[] to access the attribute with a symbol' do expect { subject }.to change { object['name'] }.from(original).to(attribute) end it 'allows #[] to access the attribute with a string' do expect { subject }.to change { object[:name] }.from(original).to(attribute) end it 'allows #reset to track overridden attributes' do expect { subject }.to change { object.reset.to_a }.from(attributes).to([ attribute ]) end end end
Version data entries
10 entries across 10 versions & 2 rubygems