Casting array type properties now possible

This commit is contained in:
Sam Lown 2011-07-19 18:03:31 +02:00
parent 9d724aee47
commit 3f1b2ea0c6
3 changed files with 15 additions and 8 deletions

View file

@ -1,5 +1,10 @@
# CouchRest Model Change History
## 1.1.2 - 2011-07-XX
* Minor fix
* Removing restriction that prohibited objects that cast as an array to be loaded.
## 1.1.1 - 2011-07-04
* Minor fix

View file

@ -43,9 +43,8 @@ module CouchRest::Model
end
end
# Cast an individual value, not an array
# Cast an individual value
def cast_value(parent, value)
raise "An array inside an array cannot be casted, use Embeddable module" if value.is_a?(Array)
value = typecast_value(value, self)
associate_casted_value_to_parent(parent, value)
end

View file

@ -442,15 +442,18 @@ describe "Property Class" do
ary.last.should eql(Date.new(2011, 05, 22))
end
it "should raise and error if value is array when type is not" do
property = CouchRest::Model::Property.new(:test, Date)
it "should cast an object that provides an array" do
prop = Class.new do
attr_accessor :ary
def initialize(val); self.ary = val; end
def as_json; ary; end
end
property = CouchRest::Model::Property.new(:test, prop)
parent = mock("FooClass")
lambda {
cast = property.cast(parent, [Date.new(2010, 6, 1)])
}.should raise_error
cast = property.cast(parent, [1, 2])
cast.ary.should eql([1, 2])
end
it "should set parent as casted_by object in CastedArray" do
property = CouchRest::Model::Property.new(:test, [Object])
parent = mock("FooObject")