def test_dict_to_etree_nodes_with_attr_and_text(self): node1_text = 'Hai, I R node1!' node2_text = 'I do not talk to strangers' nodes_with_attr_and_text = { 'node1': { '@personality': 'brave', '#text': node1_text, }, 'node2': { '@personality': 'shy', '#text': node2_text, '@age': '21', } } helpers.dict_to_etree(nodes_with_attr_and_text, self.root) mapped_nodes = {node.tag for node in self.root} assert etree.iselement(self.root) assert len(self.root) == 2 assert set(nodes_with_attr_and_text.keys()) == mapped_nodes assert self.root[0].text == node1_text assert self.root[1].text == node2_text assert self.root[0].get('personality') == 'brave' assert self.root[1].get('personality') == 'shy' assert self.root[1].get('age') == '21' assert 'age' not in self.root[0].attrib
def test_dict_to_etree_list_of_nodes(self): list_of_nodes = { 'node1': [ {'subnode11': None}, ], 'node2': [ {'subnode21': None}, {'subnode22': None}, ], 'node3': [ {'subnode31': None}, ], 'node4': [ 'simple text', None, None ] } helpers.dict_to_etree(list_of_nodes, self.root) mapped_nodes = {node.tag for node in self.root} assert etree.iselement(self.root) assert len(self.root) == 6 assert set(list_of_nodes.keys()) == mapped_nodes assert len(self.root[0]) == 1 assert len(self.root[1]) == 1 assert len(self.root[2]) == 2
def test_dict_to_etree_list_of_nodes(self): list_of_nodes = { 'node1': [ { 'subnode11': None }, ], 'node2': [ { 'subnode21': None }, { 'subnode22': None }, ], 'node3': [ { 'subnode31': None }, ], 'node4': ['simple text', None, None] } helpers.dict_to_etree(list_of_nodes, self.root) mapped_nodes = {node.tag for node in self.root} assert etree.iselement(self.root) assert len(self.root) == 6 assert set(list_of_nodes.keys()) == mapped_nodes assert len(self.root[0]) == 1 assert len(self.root[1]) == 1 assert len(self.root[2]) == 2
def test_dict_to_etree_nodes_with_text(self): node1_text = "Hai, I R node1!" node2_text = "I do not talk to strangers" nodes_with_text = {"node1": node1_text, "node2": node2_text} helpers.dict_to_etree(nodes_with_text, self.root) mapped_nodes = {node.tag for node in self.root} assert etree.iselement(self.root) assert len(self.root) == 2 assert set(nodes_with_text.keys()) == mapped_nodes assert self.root[0].text == node1_text assert self.root[1].text == node2_text
def test_dict_to_etree(self): u"""Tests the conversion of dict to ``lxml.etree`` structure.""" with pytest.raises(AttributeError) as exc: helpers.dict_to_etree(['node'], self.root) assert 'Argument is neither dict nor basestring' in str(exc.value) helpers.dict_to_etree({'single_node': None}, self.root) # A dict with one empty key should be converted to an etree element with one child. assert etree.iselement(self.root) assert len(self.root) == 1 assert self.root[0].tag == 'single_node'
def test_dict_to_etree_nodes_with_text(self): node1_text = 'Hai, I R node1!' node2_text = 'I do not talk to strangers' nodes_with_text = { 'node1': node1_text, 'node2': node2_text, } helpers.dict_to_etree(nodes_with_text, self.root) mapped_nodes = {node.tag for node in self.root} assert etree.iselement(self.root) assert len(self.root) == 2 assert set(nodes_with_text.keys()) == mapped_nodes assert self.root[0].text == node1_text assert self.root[1].text == node2_text
def test_dict_to_etree_list_of_nodes(self): list_of_nodes = { "node1": [{"subnode11": None}], "node2": [{"subnode21": None}, {"subnode22": None}], "node3": [{"subnode31": None}], "node4": ["simple text", None, None], } helpers.dict_to_etree(list_of_nodes, self.root) mapped_nodes = {node.tag for node in self.root} assert etree.iselement(self.root) assert len(self.root) == 6 assert set(list_of_nodes.keys()) == mapped_nodes assert len(self.root[0]) == 1 assert len(self.root[1]) == 1 assert len(self.root[2]) == 2
def test_dict_to_etree_nodes_with_attr_and_text(self): node1_text = "Hai, I R node1!" node2_text = "I do not talk to strangers" nodes_with_attr_and_text = { "node1": {"@personality": "brave", "#text": node1_text}, "node2": {"@personality": "shy", "#text": node2_text, "@age": "21"}, } helpers.dict_to_etree(nodes_with_attr_and_text, self.root) mapped_nodes = {node.tag for node in self.root} assert etree.iselement(self.root) assert len(self.root) == 2 assert set(nodes_with_attr_and_text.keys()) == mapped_nodes assert self.root[0].text == node1_text assert self.root[1].text == node2_text assert self.root[0].get("personality") == "brave" assert self.root[1].get("personality") == "shy" assert self.root[1].get("age") == "21" assert "age" not in self.root[0].attrib
def test_dict_to_etree_lists_with_none(self): u"""Tests the conversion of dict with empty children to an lxml tree.""" xml_dict = { 'node1': [ None, None, ] } etree_from_dict = helpers.dict_to_etree(xml_dict, self.root) assert etree.iselement(etree_from_dict) assert etree.tostring(etree_from_dict) == '<root><node1/><node1/></root>'
def test_dict_to_etree_lists_with_none(self): u"""Tests the conversion of dict with empty children to an lxml tree.""" xml_dict = { 'node1': [ None, None, ] } etree_from_dict = helpers.dict_to_etree(xml_dict, self.root) assert etree.iselement(etree_from_dict) assert etree.tostring( etree_from_dict) == '<root><node1/><node1/></root>'
def test_dict_to_etree_lists_with_mixed_children(self): u"""Tests the conversion of dicts with different children to an lxml tree.""" xml_dict = { 'node1': [None, None, { '#text': 'text_node', }] } etree_from_dict = helpers.dict_to_etree(xml_dict, self.root) assert etree.iselement(etree_from_dict) assert etree.tostring( etree_from_dict ) == '<root><node1/><node1/><node1>text_node</node1></root>'
def test_dict_to_etree_lists_with_mixed_children(self): u"""Tests the conversion of dicts with different children to an lxml tree.""" xml_dict = { 'node1': [ None, None, { '#text': 'text_node', } ] } etree_from_dict = helpers.dict_to_etree(xml_dict, self.root) assert etree.iselement(etree_from_dict) assert etree.tostring(etree_from_dict) == '<root><node1/><node1/><node1>text_node</node1></root>'
def test_dict_to_etree(self): u"""Tests the conversion of dict to lxml.etree structure.""" with pytest.raises(AttributeError) as exc: helpers.dict_to_etree(["node"], self.root) helpers.dict_to_etree(("node"), self.root) assert "neither dict nor basestring" in str(exc.value) helpers.dict_to_etree({"single_node": None}, self.root) # A dict with one empty key should be converted to an etree element with one child. assert etree.iselement(self.root) assert len(self.root) == 1 assert self.root[0].tag == "single_node"
def test_dict_to_etree_lists_with_mixed_children(self): u"""Tests the conversion of dicts with different children to an lxml tree.""" xml_dict = {"node1": [None, None, {"#text": "text_node"}]} assert helpers.dict_to_etree(xml_dict, self.root) == "<root><node1/><node1/><node1>text_node</node1></root>"
def test_dict_to_etree_lists_with_none(self): u"""Tests the conversion of dict with empty children to an lxml tree.""" xml_dict = {"node1": [None, None]} assert helpers.dict_to_etree(xml_dict, self.root) == "<root><node1/><node1/></root>"