aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/test/xml_mini/rexml_engine_test.rb
blob: 6e9ce7ac112ceb62e55b41d5fe9e66892723ff90 (plain) (blame)
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
require 'abstract_unit'
require 'active_support/xml_mini'

class REXMLEngineTest < ActiveSupport::TestCase
  def test_default_is_rexml
    assert_equal ActiveSupport::XmlMini_REXML, ActiveSupport::XmlMini.backend
  end

  def test_set_rexml_as_backend
    ActiveSupport::XmlMini.backend = 'REXML'
    assert_equal ActiveSupport::XmlMini_REXML, ActiveSupport::XmlMini.backend
  end

  def test_parse_from_io
    ActiveSupport::XmlMini.backend = 'REXML'
    io = StringIO.new(<<-eoxml)
    <root>
      good
      <products>
        hello everyone
      </products>
      morning
    </root>
    eoxml
    hash = ActiveSupport::XmlMini.parse(io)
    assert hash.has_key?('root')
    assert hash['root'].has_key?('products')
    assert_match "good", hash['root']['__content__']
    products = hash['root']['products']    
    assert products.has_key?("__content__")    
    assert_match 'hello everyone', products['__content__']
  end

  def test_parse_from_empty_string
    ActiveSupport::XmlMini.backend = 'REXML'
    assert_equal({}, ActiveSupport::XmlMini.parse(""))
  end

  def test_parse_from_frozen_string
    ActiveSupport::XmlMini.backend = 'REXML'
    xml_string = "<root></root>".freeze
    assert_equal({"root" => {}}, ActiveSupport::XmlMini.parse(xml_string))
  end

end