From f9d8f09ab9e6a114c771a371383c286dcfde535a Mon Sep 17 00:00:00 2001 From: wildchild Date: Tue, 16 Jun 2009 04:31:50 +0600 Subject: [PATCH] Handle default values properly --- lib/couchrest/mixins/properties.rb | 2 +- spec/couchrest/more/extended_doc_spec.rb | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/couchrest/mixins/properties.rb b/lib/couchrest/mixins/properties.rb index 19d33d1..6a69b44 100644 --- a/lib/couchrest/mixins/properties.rb +++ b/lib/couchrest/mixins/properties.rb @@ -24,7 +24,7 @@ module CouchRest self.class.properties.each do |property| key = property.name.to_s # let's make sure we have a default - if property.default + unless property.default.nil? if property.default.class == Proc self[key] = property.default.call else diff --git a/spec/couchrest/more/extended_doc_spec.rb b/spec/couchrest/more/extended_doc_spec.rb index 6fa886f..618ee0c 100644 --- a/spec/couchrest/more/extended_doc_spec.rb +++ b/spec/couchrest/more/extended_doc_spec.rb @@ -11,6 +11,7 @@ describe "ExtendedDocument" do property :set_by_proc, :default => Proc.new{Time.now}, :cast_as => 'Time' property :tags, :default => [] property :read_only_with_default, :default => 'generic', :read_only => true + property :default_false, :default => false property :name timestamps! end @@ -142,6 +143,10 @@ describe "ExtendedDocument" do it "should have the default value set at initalization" do @obj.preset.should == {:right => 10, :top_align => false} end + + it "should have the default false value explicitly assigned" do + @obj.default_false.should == false + end it "should automatically call a proc default at initialization" do @obj.set_by_proc.should be_an_instance_of(Time)