From bb9ab9170420e9101a35f23b04aae17aac942ecd Mon Sep 17 00:00:00 2001 From: Dan Kubb Date: Sat, 21 Jan 2012 22:26:06 -0800 Subject: [PATCH] Add spec for Virtus::Attribute#set --- TODO | 1 - spec/unit/virtus/attribute/set_spec.rb | 29 ++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/TODO b/TODO index 24923f23..657e8f56 100644 --- a/TODO +++ b/TODO @@ -1,6 +1,5 @@ * Add missing specs: * Add spec file spec/unit/virtus/attribute/coercion_method_spec.rb for Virtus::Attribute#coercion_method - * Add spec file spec/unit/virtus/attribute/set_spec.rb for Virtus::Attribute#set * Add spec file spec/unit/virtus/attribute/get_spec.rb for Virtus::Attribute#get! * Add spec file spec/unit/virtus/attribute/define_writer_method_spec.rb for Virtus::Attribute#define_writer_method * Add spec file spec/unit/virtus/attribute/name_spec.rb for Virtus::Attribute#name diff --git a/spec/unit/virtus/attribute/set_spec.rb b/spec/unit/virtus/attribute/set_spec.rb index ca0522e5..1ebfef74 100644 --- a/spec/unit/virtus/attribute/set_spec.rb +++ b/spec/unit/virtus/attribute/set_spec.rb @@ -1,5 +1,34 @@ require 'spec_helper' +describe Virtus::Attribute, '#set' do + subject { object.set(instance, value) } + + let(:object) { described_class.new(:name, options) } + let(:options) { { :primitive => primitive, :coercion_method => coercion_method } } + let(:primitive) { stub('primitive') } + let(:coercion_method) { stub('coercion_method') } + let(:instance) { Object.new } + let(:value) { stub('value') } + let(:coerced) { stub('coerced') } + + before do + object.stub(:coerce).with(value).and_return(coerced) + object.stub(:set!).with(instance, coerced).and_return(object) + end + + it { should be(object) } + + it 'coerces the value' do + object.should_receive(:coerce).with(value) + subject + end + + it 'sets the instance variable to the coerced value' do + object.should_receive(:set!).with(instance, coerced) + subject + end +end + describe Virtus::Attribute, '#set!' do subject { object.set!(instance, value) }