From bc6df2f5ca0ce15b92012d03dd437ff4cba17d35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tapaj=C3=B3s?= Date: Wed, 2 Sep 2009 23:54:25 -0300 Subject: [PATCH] Adding support to :cast_as => 'Date'. --- lib/couchrest/mixins/properties.rb | 3 +++ spec/couchrest/more/property_spec.rb | 5 ++++- spec/fixtures/more/event.rb | 3 +++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/lib/couchrest/mixins/properties.rb b/lib/couchrest/mixins/properties.rb index b1dddd5..e627186 100644 --- a/lib/couchrest/mixins/properties.rb +++ b/lib/couchrest/mixins/properties.rb @@ -53,6 +53,9 @@ module CouchRest # Auto parse Time objects self[property.name] = if ((property.init_method == 'new') && target == 'Time') self[key].is_a?(String) ? Time.parse(self[key].dup) : self[key] + elsif + ((property.init_method == 'new') && target == 'Date') + self[key].is_a?(String) ? Date.parse(self[key].dup) : self[key] else # Let people use :send as a Time parse arg klass = ::CouchRest.constantize(target) diff --git a/spec/couchrest/more/property_spec.rb b/spec/couchrest/more/property_spec.rb index 95899aa..f8626f1 100644 --- a/spec/couchrest/more/property_spec.rb +++ b/spec/couchrest/more/property_spec.rb @@ -122,7 +122,7 @@ describe "ExtendedDocument properties" do describe "casting" do describe "cast keys to any type" do before(:all) do - event_doc = { :subject => "Some event", :occurs_at => Time.now } + event_doc = { :subject => "Some event", :occurs_at => Time.now, :end_date => Date.today } e = Event.database.save_doc event_doc @event = Event.get e['id'] @@ -130,6 +130,9 @@ describe "ExtendedDocument properties" do it "should cast occurs_at to Time" do @event['occurs_at'].should be_an_instance_of(Time) end + it "should cast end_date to Date" do + @event['end_date'].should be_an_instance_of(Date) + end end end diff --git a/spec/fixtures/more/event.rb b/spec/fixtures/more/event.rb index c36527a..b1ca6e3 100644 --- a/spec/fixtures/more/event.rb +++ b/spec/fixtures/more/event.rb @@ -3,4 +3,7 @@ class Event < CouchRest::ExtendedDocument property :subject property :occurs_at, :cast_as => 'Time', :send => 'parse' + property :end_date, :cast_as => 'Date' + + end \ No newline at end of file