From 17c7eb7f87ebb0d607cac14eacf0382435811c5d Mon Sep 17 00:00:00 2001
From: Alexander Schlemmer <a.schlemmer@indiscale.com>
Date: Fri, 23 Aug 2024 21:55:47 +0200
Subject: [PATCH] TST: more tests for xml converter

---
 unittests/test_xml_converter.py | 39 +++++++++++++++++++++++++++++++--
 1 file changed, 37 insertions(+), 2 deletions(-)

diff --git a/unittests/test_xml_converter.py b/unittests/test_xml_converter.py
index e1e0b2e1..62c44c19 100644
--- a/unittests/test_xml_converter.py
+++ b/unittests/test_xml_converter.py
@@ -239,10 +239,10 @@ def test_namespace_xml(converter_registry):
 
     xml_text = """
     <root xmlns="default-namespace" xmlns:test="alternative-namespace">
-        <node1>
+        <node1 active="true">
             Bla
         </node1>
-        <node1>
+        <node1 active="true" size="45">
         text
             <node2 xmlns="sub-namespace">
                 <node3>
@@ -256,6 +256,7 @@ def test_namespace_xml(converter_registry):
     </root>
 """
 
+    # Test unsupported xpath (containing text()):
     converter = XMLTagConverter(yaml.safe_load("""
 type: XMLTag
 match_tag: "{default-namespace}root"
@@ -270,6 +271,7 @@ default_namespace: default
     with pytest.raises(RuntimeError, match="Only standard xml nodes.*"):
         converter.create_children(GeneralStore(), tag)
 
+    # Test complex xml using namespaces and text nodes:
     converter = XMLTagConverter(yaml.safe_load("""
 type: XMLTag
 match_tag: "{default-namespace}root"
@@ -285,3 +287,36 @@ tags_as_children: false
     assert children[0].value.strip() == "Bla"
     assert children[1].name == "{default-namespace}node1[2]/text()"
     assert children[1].value.strip() == "text"
+
+    # Check child generation of attributes:
+    converter = XMLTagConverter(yaml.safe_load("""
+type: XMLTag
+match_tag: "{default-namespace}root"
+xpath: "default:node1"
+default_namespace: default
+attribs_as_children: true
+text_as_children: false
+tags_as_children: false
+"""), "TestXMLTagConverter", converter_registry)
+    children = converter.create_children(GeneralStore(), tag)
+
+    assert len(children) == 3
+    assert children[0].name == "{default-namespace}node1[1]@active"
+    assert children[0].value.strip() == "true"
+    assert children[1].name == "{default-namespace}node1[2]@active"
+    assert children[1].value.strip() == "true"
+    assert children[2].name == "{default-namespace}node1[2]@size"
+    assert children[2].value.strip() == "45"
+
+    # Test setting nsmap entries:
+    converter = XMLTagConverter(yaml.safe_load("""
+type: XMLTag
+match_tag: "{default-namespace}root"
+xpath: "//s:node2"
+default_namespace: default
+nsmap:
+  s: sub-namespace
+"""), "TestXMLTagConverter", converter_registry)
+    children = converter.create_children(GeneralStore(), tag)
+    assert len(children) == 1
+    assert children[0].name == "{default-namespace}node1[2]/{sub-namespace}node2"
-- 
GitLab