require "helper" module Nokogiri module XML class TestNamespacesInCreatedDoc < Nokogiri::TestCase def setup super @doc = Nokogiri::XML('') pear = @doc.create_element('pear') bosc = @doc.create_element('bosc') pear.add_child(bosc) @doc.root << pear @doc.root.add_child('') carrot = @doc.create_element('veg:carrot') @doc.root << carrot cheese = @doc.create_element('cheese', :xmlns => 'ns:dairy', :'xlink:href' => 'http://example.com/cheese/') carrot << cheese bacon = @doc.create_element('meat:bacon', :'xmlns:meat' => 'ns:meat') apple = @doc.create_element('apple') apple['count'] = 2 bacon << apple tomato = @doc.create_element('veg:tomato') bacon << tomato @doc.root << bacon end def check_namespace e e.namespace.nil? ? nil : e.namespace.href end def test_created_default_ns assert_equal 'ns:fruit', check_namespace(@doc.root) end def test_created_parent_default_ns assert_equal 'ns:fruit', check_namespace(@doc.root.elements[0]) assert_equal 'ns:fruit', check_namespace(@doc.root.elements[1]) end def test_created_grandparent_default_ns assert_equal 'ns:fruit', check_namespace(@doc.root.elements[0].elements[0]) end def test_created_parent_nondefault_ns assert_equal 'ns:veg', check_namespace(@doc.root.elements[2]) end def test_created_single_decl_ns_1 assert_equal 'ns:dairy', check_namespace(@doc.root.elements[2].elements[0]) end def test_created_nondefault_attr_ns assert_equal 'http://www.w3.org/1999/xlink', check_namespace(@doc.root.elements[2].elements[0].attribute_nodes.find { |a| a.name =~ /href/ }) end def test_created_single_decl_ns_2 assert_equal 'ns:meat', check_namespace(@doc.root.elements[3]) end def test_created_buried_default_ns assert_equal 'ns:fruit', check_namespace(@doc.root.elements[3].elements[0]) end def test_created_buried_decl_ns assert_equal 'ns:veg', check_namespace(@doc.root.elements[3].elements[1]) end end end end