summaryrefslogtreecommitdiff
path: root/tests/test_elementbase.py
diff options
context:
space:
mode:
authorLance Stout <lancestout@gmail.com>2010-08-13 20:05:24 -0400
committerLance Stout <lancestout@gmail.com>2010-08-13 20:05:24 -0400
commitfe49b8c377b8491ec5fd5bc74d44834bd384f6a8 (patch)
tree38e1ca31b266114ef5c53a97c28fac8d310d987d /tests/test_elementbase.py
parentb580a3138d46933331cd9829c7dcb3f4135a194f (diff)
downloadslixmpp-fe49b8c377b8491ec5fd5bc74d44834bd384f6a8.tar.gz
slixmpp-fe49b8c377b8491ec5fd5bc74d44834bd384f6a8.tar.bz2
slixmpp-fe49b8c377b8491ec5fd5bc74d44834bd384f6a8.tar.xz
slixmpp-fe49b8c377b8491ec5fd5bc74d44834bd384f6a8.zip
Updated getStanzaValues and setStanzaValues with docs and unit tests.
Diffstat (limited to 'tests/test_elementbase.py')
-rw-r--r--tests/test_elementbase.py90
1 files changed, 90 insertions, 0 deletions
diff --git a/tests/test_elementbase.py b/tests/test_elementbase.py
index 1b018b44..99c397a5 100644
--- a/tests/test_elementbase.py
+++ b/tests/test_elementbase.py
@@ -19,5 +19,95 @@ class TestElementBase(SleekTest):
</foo>
""")
+ def testGetStanzaValues(self):
+ """Test getStanzaValues using plugins and substanzas."""
+
+ class TestStanzaPlugin(ElementBase):
+ name = "foo2"
+ namespace = "foo"
+ interfaces = set(('bar', 'baz'))
+ plugin_attrib = "foo2"
+
+ class TestSubStanza(ElementBase):
+ name = "subfoo"
+ namespace = "foo"
+ interfaces = set(('bar', 'baz'))
+
+ class TestStanza(ElementBase):
+ name = "foo"
+ namespace = "foo"
+ interfaces = set(('bar', 'baz'))
+ subitem = set((TestSubStanza,))
+
+ registerStanzaPlugin(TestStanza, TestStanzaPlugin)
+
+ stanza = TestStanza()
+ stanza['bar'] = 'a'
+ stanza['foo2']['baz'] = 'b'
+ substanza = TestSubStanza()
+ substanza['bar'] = 'c'
+ stanza.append(substanza)
+
+ values = stanza.getStanzaValues()
+ expected = {'bar': 'a',
+ 'baz': '',
+ 'foo2': {'bar': '',
+ 'baz': 'b'},
+ 'substanzas': [{'__childtag__': '{foo}subfoo',
+ 'bar': 'c',
+ 'baz': ''}]}
+ self.failUnless(values == expected,
+ "Unexpected stanza values:\n%s\n%s" % (str(expected), str(values)))
+
+
+ def testSetStanzaValues(self):
+ """Test using setStanzaValues with substanzas and plugins."""
+
+ class TestStanzaPlugin(ElementBase):
+ name = "pluginfoo"
+ namespace = "foo"
+ interfaces = set(('bar', 'baz'))
+ plugin_attrib = "plugin_foo"
+
+ class TestStanzaPlugin2(ElementBase):
+ name = "pluginfoo2"
+ namespace = "foo"
+ interfaces = set(('bar', 'baz'))
+ plugin_attrib = "plugin_foo2"
+
+ class TestSubStanza(ElementBase):
+ name = "subfoo"
+ namespace = "foo"
+ interfaces = set(('bar', 'baz'))
+
+ class TestStanza(ElementBase):
+ name = "foo"
+ namespace = "foo"
+ interfaces = set(('bar', 'baz'))
+ subitem = set((TestSubStanza,))
+
+ registerStanzaPlugin(TestStanza, TestStanzaPlugin)
+ registerStanzaPlugin(TestStanza, TestStanzaPlugin2)
+
+ stanza = TestStanza()
+ values = {'bar': 'a',
+ 'baz': '',
+ 'plugin_foo': {'bar': '',
+ 'baz': 'b'},
+ 'plugin_foo2': {'bar': 'd',
+ 'baz': 'e'},
+ 'substanzas': [{'__childtag__': '{foo}subfoo',
+ 'bar': 'c',
+ 'baz': ''}]}
+ stanza.setStanzaValues(values)
+
+ self.checkStanza(TestStanza, stanza, """
+ <foo xmlns="foo" bar="a">
+ <pluginfoo baz="b" />
+ <pluginfoo2 bar="d" baz="e" />
+ <subfoo bar="c" />
+ </foo>
+ """)
+
suite = unittest.TestLoader().loadTestsFromTestCase(TestElementBase)