test/xml_representer_test.rb in roar-0.11.4 vs test/xml_representer_test.rb in roar-0.11.5
- old
+ new
@@ -1,207 +1,207 @@
require 'test_helper'
class ItemRepresenter
- include AttributesContructor
+ include AttributesConstructor
include Roar::Representer::XML
self.representation_wrap= :item
property :value
attr_accessor :value
end
class PositionRepresenter
- include AttributesContructor
+ include AttributesConstructor
include Roar::Representer::XML
self.representation_wrap= :position
property :id
property :item, :class => ItemRepresenter
attr_accessor :id, :item
end
class XMLRepresenterFunctionalTest < MiniTest::Spec
class Order
- include AttributesContructor
+ include AttributesConstructor
attr_accessor :id, :items
end
-
+
class GreedyOrder < Order
end
-
+
class TestXmlRepresenter
include Roar::Representer::XML
self.representation_wrap= :order
property :id
attr_accessor :id
end
-
-
+
+
describe "XMLRepresenter" do
before do
@m = {"id" => "1"}
@o = Order.new(@m)
-
+
@r = TestXmlRepresenter.new
@i = ItemRepresenter.new
@i.value = "Beer"
end
-
+
describe "#to_xml" do
it "serializes the model" do
assert_xml_equal "<order/>", @r.to_xml
-
+
@r.id = 1
assert_xml_equal "<order><id>1</id></order>", @r.to_xml
-
+
@r.id = 2
assert_xml_equal "<rap><id>2</id></rap>", @r.to_xml(:wrap => :rap)
end
-
+
it "is aliased by #serialize" do
assert_equal @r.to_xml, @r.serialize
end
-
+
it "accepts :include and :exclude" do
assert_equal '<order/>', @r.to_xml(:exclude => [:id])
end
end
-
+
describe "#from_xml" do
it "deserializes object" do
@order = Order.new.from_xml("<order><id>1</id></order>")
assert_equal "1", @order.id
end
-
+
it "is aliased by #deserialize" do
@order = Order.new.deserialize("<order><id>1</id></order>")
assert_equal "1", @order.id
end
-
+
it "accepts :include and :exclude" do
@order = Order.new.deserialize("<order><id>1</id></order>", :exclude => [:id])
assert_equal nil, @order.id
end
end
-
-
+
+
describe "XML.from_xml" do
class Order
include Roar::Representer::XML
property :id
property :pending
attr_accessor :id, :pending
end
-
+
it "is aliased to #deserialize" do
assert_equal TestXmlRepresenter.from_xml("<order/>").id, TestXmlRepresenter.deserialize("<order/>").id
end
-
+
it "accepts :exclude option" do
order = Order.from_xml(%{<order><id>1</id><pending>1</pending></order>}, :exclude => [:id])
assert_equal nil, order.id
assert_equal "1", order.pending
end
-
+
it "accepts :include option" do
order = Order.from_xml(%{<order><id>1</id><pending>1</pending></order>}, :include => [:id])
assert_equal "1", order.id
assert_equal nil, order.pending
end
end
-
-
+
+
describe "without options" do
it ".from_xml returns the deserialized model" do
@m = TestXmlRepresenter.from_xml("<order><id>1</id></order>")
assert_equal "1", @m.id
end
-
+
#it ".from_xml still works with nil" do
# assert TestXmlRepresenter.from_xml(nil)
#end
-
+
end
-
-
+
+
describe "with a typed attribute" do
before do
@r = PositionRepresenter.new("id" => "1")
end
-
+
it "#serialize skips empty :item" do
assert_xml_equal "<position><id>1</id></position>", @r.to_xml
end
-
+
it "#to_xml delegates to ItemRepresenter#to_xml" do
@r.item = @i
assert_xml_equal "<position><id>1</id><item><value>Beer</value></item></position>", @r.to_xml
end
-
+
it ".from_xml typecasts :item" do
@m = PositionRepresenter.from_xml("<position><id>1</id><item><value>beer</value></item>\n</position>")
-
+
assert_equal "1", @m.id
assert_equal "beer", @m.item.value
end
end
-
-
+
+
describe "with a typed list" do
before do
@c = Class.new do
- include AttributesContructor
+ include AttributesConstructor
include Roar::Representer::XML
-
+
self.representation_wrap= :order
property :id
collection :items, :class => ItemRepresenter, :from => :item
attr_accessor :id, :items
end
-
+
@r = @c.new("id" => 1)
end
-
+
it "#serialize_model skips empty :item" do
assert_xml_equal "<order><id>1</id></order>", @r.to_xml
end
-
+
it "#serialize delegates to ItemXmlRepresenter#to_xml in list" do
@r.items = [ItemRepresenter.new("value" => "Bier")]
-
- assert_xml_equal "<order><id>1</id><item><value>Bier</value></item></order>",
+
+ assert_xml_equal "<order><id>1</id><item><value>Bier</value></item></order>",
@r.to_xml
end
-
+
it ".from_xml typecasts list" do
@m = @c.from_xml("<order><id>1</id><item><value>beer</value></item>\n</order>")
-
+
assert_equal "1", @m.id
assert_equal 1, @m.items.size
assert_equal "beer", @m.items.first.value
end
end
-
+
end
end
class XmlHyperlinkRepresenterTest < MiniTest::Spec
describe "API" do
before do
@link = Roar::Representer::Feature::Hypermedia::Hyperlink.new.extend(Roar::Representer::XML::HyperlinkRepresenter).from_xml(%{<link rel="self" href="http://roar.apotomo.de" media="web"/>})
end
-
+
it "responds to #rel" do
assert_equal "self", @link.rel
end
-
+
it "responds to #href" do
assert_equal "http://roar.apotomo.de", @link.href
end
-
+
it "responds to #media" do
assert_equal "web", @link.media
end
-
+
it "responds to #to_xml" do
assert_xml_equal %{<link rel=\"self\" href=\"http://roar.apotomo.de\" media="web"/>}, @link.to_xml
end
end
end