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