require 'test_helper'
require 'representable/xml/hash'
class XMLBindingTest < MiniTest::Spec
module SongRepresenter
include Representable::XML
property :name
self.representation_wrap = :song
end
class SongWithRepresenter < ::Song
include Representable
include SongRepresenter
self.representation_wrap = :song
end
before do
@doc = Nokogiri::XML::Document.new
@song = SongWithRepresenter.new("Thinning the Herd")
end
describe "AttributeBinding" do
describe "with plain text items" do
before do
@property = Representable::XML::Binding::Attribute.new(Representable::Definition.new(:name, :attribute => true))
end
it "extracts with #read" do
assert_equal "The Gargoyle", @property.read(Nokogiri::XML("").root, "name")
end
it "inserts with #write" do
parent = Nokogiri::XML::Node.new("song", @doc)
@property.write(parent, "The Gargoyle", "name")
assert_xml_equal("", parent.to_s)
end
end
end
describe "ContentBinding" do
before do
@property = Representable::XML::Binding::Content.new(Representable::Definition.new(:name, :content => true))
end
it "extracts with #read" do
assert_equal "The Gargoyle", @property.read(Nokogiri::XML("The Gargoyle").root, "song")
end
it "inserts with #write" do
parent = Nokogiri::XML::Node.new("song", @doc)
@property.write(parent, "The Gargoyle", "song")
assert_xml_equal("The Gargoyle", parent.to_s)
end
end
end