Skip to content

Commit

Permalink
prefactor: clean up XML::CDATA tests
Browse files Browse the repository at this point in the history
(cherry picked from commit 0fad726)
  • Loading branch information
flavorjones committed Jul 5, 2023
1 parent a3c2d6e commit 299b73e
Showing 1 changed file with 44 additions and 42 deletions.
86 changes: 44 additions & 42 deletions test/xml/test_cdata.rb
Expand Up @@ -2,57 +2,59 @@

require "helper"

module Nokogiri
module XML
class TestCDATA < Nokogiri::TestCase
def setup
super
@xml = Nokogiri::XML.parse(File.read(XML_FILE), XML_FILE)
end
describe Nokogiri::XML::CDATA do
describe ".new" do
it "acts like a constructor" do
doc = Nokogiri::XML::Document.new
node = Nokogiri::XML::CDATA.new(doc, "foo")

assert_instance_of(Nokogiri::XML::CDATA, node)
assert_equal("foo", node.content)
assert_same(doc, node.document)
assert_predicate(node, :cdata?)
assert_equal("#cdata-section", node.name)
end

def test_cdata_node
name = @xml.xpath("//employee[2]/name").first
assert(cdata = name.children[1])
assert_predicate(cdata, :cdata?)
assert_equal("#cdata-section", cdata.name)
it "accepts a node as the first parameter but warns about it" do
doc = Nokogiri::XML::Document.new
related_node = Nokogiri::XML::Element.new("foo", doc)
node = nil

assert_output(nil, /Passing a Node as the first parameter to CDATA\.new is deprecated/) do
node = Nokogiri::XML::CDATA.new(related_node, "foo")
end
assert_instance_of(Nokogiri::XML::CDATA, node)
assert_equal("foo", node.content)
assert_same(doc, node.document)
end

def test_new
node = CDATA.new(@xml, "foo")
assert_equal("foo", node.content)
it "has nil content when passed nil" do
node = Nokogiri::XML::CDATA.new(Nokogiri::XML::Document.new, nil)

assert_output(nil, /Passing a Node as the first parameter to CDATA\.new is deprecated/) do
node = CDATA.new(@xml.root, "foo")
end
assert_equal("foo", node.content)
end
assert_instance_of(Nokogiri::XML::CDATA, node)
assert_nil(node.content)
end

def test_new_with_nil
node = CDATA.new(@xml, nil)
assert_nil(node.content)
end
it "does not accept anything but a string" do
doc = Nokogiri::XML::Document.new
assert_raises(TypeError) { Nokogiri::XML::CDATA.new(doc, 1.234) }
assert_raises(TypeError) { Nokogiri::XML::CDATA.new(doc, {}) }
end
end

def test_new_with_non_string
assert_raises(TypeError) do
CDATA.new(@xml, 1.234)
end
end
it "supports #content and #content=" do
doc = Nokogiri::XML::Document.new
node = Nokogiri::XML::CDATA.new(doc, "foo")

def test_lots_of_new_cdata
assert(100.times { CDATA.new(@xml, "asdfasdf") })
end
assert_equal("foo", node.content)

def test_content=
node = CDATA.new(@xml, "foo")
assert_equal("foo", node.content)
node.content = "& <foo> &amp;"

node.content = "& <foo> &amp;"
assert_equal("& <foo> &amp;", node.content)
assert_equal("<![CDATA[& <foo> &amp;]]>", node.to_xml)
assert_equal("& <foo> &amp;", node.content)
assert_equal("<![CDATA[& <foo> &amp;]]>", node.to_xml)

node.content = "foo ]]> bar"
assert_equal("foo ]]> bar", node.content)
end
end
node.content = "foo ]]> bar"

assert_equal("foo ]]> bar", node.content)
end
end

0 comments on commit 299b73e

Please sign in to comment.