File: test_cdata.rb

package info (click to toggle)
ruby-nokogiri 1.18.2%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 8,076 kB
  • sloc: ansic: 38,893; xml: 27,665; ruby: 27,285; java: 15,348; cpp: 7,107; yacc: 244; sh: 208; makefile: 154; sed: 14
file content (66 lines) | stat: -rw-r--r-- 2,169 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# frozen_string_literal: true

require "helper"

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

    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

    it "when passed nil raises TypeError" do
      assert_raises(TypeError) do
        Nokogiri::XML::CDATA.new(Nokogiri::XML::Document.new, nil)
      end
    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

    it "does not accept anything other than Node or Document" do
      assert_raises(TypeError) { Nokogiri::XML::CDATA.new(1234, "hello world") }
      assert_raises(TypeError) { Nokogiri::XML::CDATA.new("asdf", "hello world") }.inspect
      assert_raises(TypeError) { Nokogiri::XML::CDATA.new({}, "hello world") }
      assert_raises(TypeError) { Nokogiri::XML::CDATA.new(nil, "hello world") }
    end
  end

  it "supports #content and #content=" do
    doc = Nokogiri::XML::Document.new
    node = Nokogiri::XML::CDATA.new(doc, "foo")

    assert_equal("foo", node.content)

    node.content = "& <foo> &amp;"

    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