Updated ElementBase._getSubText and added unit tests.

Also added ElementBase._fix_ns() to apply the stanza namespace to elements that don't have a namespace.
This commit is contained in:
Lance Stout
2010-08-24 08:55:37 -04:00
parent f4ecf0bac4
commit 203986dd7c
2 changed files with 71 additions and 9 deletions

View File

@@ -267,5 +267,39 @@ class TestElementBase(SleekTest):
self.failUnless(stanza._getAttr('bar', 'c') == 'c',
"Incorrect default value returned for an unset XML attribute.")
def testGetSubText(self):
"""Test retrieving the contents of a sub element."""
class TestStanza(ElementBase):
name = "foo"
namespace = "foo"
interfaces = set(('bar',))
def setBar(self, value):
wrapper = ET.Element("{foo}wrapper")
bar = ET.Element("{foo}bar")
bar.text = value
wrapper.append(bar)
self.xml.append(wrapper)
def getBar(self):
return self._getSubText("wrapper/bar", default="not found")
stanza = TestStanza()
self.failUnless(stanza['bar'] == 'not found',
"Default _getSubText value incorrect.")
stanza['bar'] = 'found'
self.checkStanza(TestStanza, stanza, """
<foo xmlns="foo">
<wrapper>
<bar>found</bar>
</wrapper>
</foo>
""")
self.failUnless(stanza['bar'] == 'found',
"_getSubText value incorrect: %s." % stanza['bar'])
suite = unittest.TestLoader().loadTestsFromTestCase(TestElementBase)