Changing CouchRest::ExtendedDocument to allow chaining the inherit class callback
This commit is contained in:
parent
b1f4040a44
commit
17dac85a02
|
@ -1,6 +1,7 @@
|
|||
== Next Version
|
||||
|
||||
* Major enhancements
|
||||
* CouchRest::ExtendedDocument allow chaining the inherit class callback (Kenneth Kalmer) - http://github.com/couchrest/couchrest/issues#issue/8
|
||||
|
||||
* Minor enhancements
|
||||
* Fix attachment bug (Johannes Jörg Schmidt)
|
||||
|
|
|
@ -21,9 +21,11 @@ module CouchRest
|
|||
end
|
||||
|
||||
def self.inherited(subklass)
|
||||
super
|
||||
subklass.send(:include, CouchRest::Mixins::Properties)
|
||||
subklass.class_eval <<-EOS, __FILE__, __LINE__ + 1
|
||||
def self.inherited(subklass)
|
||||
super
|
||||
subklass.properties = self.properties.dup
|
||||
end
|
||||
EOS
|
||||
|
|
|
@ -49,7 +49,7 @@ describe "assigning a value to casted attribute after initializing an object" do
|
|||
end
|
||||
|
||||
it "should cast attribute" do
|
||||
@car.driver = JSON.parse(JSON.generate(@driver))
|
||||
@car.driver = JSON.parse(@driver.to_json)
|
||||
@car.driver.should be_instance_of(Driver)
|
||||
end
|
||||
|
||||
|
@ -60,7 +60,7 @@ describe "casting an extended document from parsed JSON" do
|
|||
before(:each) do
|
||||
@driver = Driver.new(:name => 'Matt')
|
||||
@car = Car.new(:name => 'Renault 306', :driver => @driver)
|
||||
@new_car = Car.new(JSON.parse(JSON.generate(@car)))
|
||||
@new_car = Car.new(JSON.parse(@car.to_json))
|
||||
end
|
||||
|
||||
it "should cast casted attribute" do
|
||||
|
|
40
spec/couchrest/more/extended_doc_inherited_spec.rb
Normal file
40
spec/couchrest/more/extended_doc_inherited_spec.rb
Normal file
|
@ -0,0 +1,40 @@
|
|||
require File.expand_path('../../../spec_helper', __FILE__)
|
||||
|
||||
begin
|
||||
require 'rubygems' unless ENV['SKIP_RUBYGEMS']
|
||||
require 'activesupport'
|
||||
ActiveSupport::JSON.backend = :JSONGem
|
||||
|
||||
class PlainParent
|
||||
class_inheritable_accessor :foo
|
||||
self.foo = :bar
|
||||
end
|
||||
|
||||
class PlainChild < PlainParent
|
||||
end
|
||||
|
||||
class ExtendedParent < CouchRest::ExtendedDocument
|
||||
class_inheritable_accessor :foo
|
||||
self.foo = :bar
|
||||
end
|
||||
|
||||
class ExtendedChild < ExtendedParent
|
||||
end
|
||||
|
||||
describe "Using chained inheritance without CouchRest::ExtendedDocument" do
|
||||
it "should preserve inheritable attributes" do
|
||||
PlainParent.foo.should == :bar
|
||||
PlainChild.foo.should == :bar
|
||||
end
|
||||
end
|
||||
|
||||
describe "Using chained inheritance with CouchRest::ExtendedDocument" do
|
||||
it "should preserve inheritable attributes" do
|
||||
ExtendedParent.foo.should == :bar
|
||||
ExtendedChild.foo.should == :bar
|
||||
end
|
||||
end
|
||||
|
||||
rescue LoadError
|
||||
puts "This spec requires 'active_support' to be loaded"
|
||||
end
|
Loading…
Reference in a new issue