test/twin/schema_test.rb in disposable-0.1.7 vs test/twin/schema_test.rb in disposable-0.1.8

- old
+ new

@@ -64,6 +64,30 @@ ) decorator.representable_attrs.get(:id).inspect.must_equal "#<Representable::Definition ==>id @options={:parse_filter=>[], :render_filter=>[], :as=>\"id\"}>" decorator.representable_attrs.get(:title).inspect.must_equal "#<Representable::Definition ==>title @options={:writeable=>false, :deserializer=>{:skip_parse=>\"skip lambda\"}, :parse_filter=>[], :render_filter=>[], :as=>\"title\"}>" end +end + + +class TwinSchemaTest < MiniTest::Spec + class Artist < Disposable::Twin + property :name + end + + class Album < Disposable::Twin + property :artist, twin: Artist + end + + it do + decorator = Disposable::Twin::Schema.from(Album, superclass: Representable::Decorator, + representer_from: lambda { |nested| nested.representer_class } + ) + + artist = decorator.representable_attrs.get(:artist) + options = artist.instance_variable_get(:@options) + nested_extend = options.delete(:extend) + options.inspect.must_equal "{:twin=>TwinSchemaTest::Artist, :private_name=>:artist, :parse_filter=>[], :render_filter=>[], :as=>\"artist\"}" + assert nested_extend < Representable::Decorator + nested_extend.representable_attrs.get(:name).inspect.must_equal "#<Representable::Definition ==>name @options={:private_name=>:name, :parse_filter=>[], :render_filter=>[], :as=>\"name\"}>" + end end \ No newline at end of file