From 7ab279a534fbc01af22b8fd406f185e55b6d5c70 Mon Sep 17 00:00:00 2001 From: Fabio Rehm Date: Sun, 11 Mar 2012 20:43:00 -0300 Subject: [PATCH] Does not try to set attributes on initialization if provided argument is nil --- lib/virtus/instance_methods.rb | 2 +- .../instance_methods/initialize_spec.rb | 32 +++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 spec/unit/virtus/instance_methods/initialize_spec.rb diff --git a/lib/virtus/instance_methods.rb b/lib/virtus/instance_methods.rb index 58f1f8f4..8d480854 100644 --- a/lib/virtus/instance_methods.rb +++ b/lib/virtus/instance_methods.rb @@ -12,7 +12,7 @@ module InstanceMethods # # @api private def initialize(attribute_values = {}) - self.attributes = attribute_values + self.attributes = attribute_values if attribute_values end # Returns a value of the attribute with the given name diff --git a/spec/unit/virtus/instance_methods/initialize_spec.rb b/spec/unit/virtus/instance_methods/initialize_spec.rb new file mode 100644 index 00000000..0957c668 --- /dev/null +++ b/spec/unit/virtus/instance_methods/initialize_spec.rb @@ -0,0 +1,32 @@ +require 'spec_helper' + +describe Virtus::InstanceMethods, '#initialize' do + let(:described_class) do + Class.new do + include Virtus + attribute :name, String + end + end + + let(:subject) do + described_class.new(attributes) + end + + context "with valid argument" do + let(:attributes) do + {:name => 'john'} + end + + it 'sets attributes' do + subject.name.should == attributes[:name] + end + end + + context "with nil argument" do + let(:attributes) { nil } + + it 'does not try to set attributes' do + expect { subject }.to_not raise_error(NoMethodError) + end + end +end