Missed a few docstrings.
[slixmpp.git] / tests / test_forms.py
blobd57106335528f534424437c993fcf05c05b767e3
1 from . sleektest import *
2 import sleekxmpp.plugins.xep_0004 as xep_0004
5 class TestDataForms(SleekTest):
7 def setUp(self):
8 registerStanzaPlugin(Message, xep_0004.Form)
9 registerStanzaPlugin(xep_0004.Form, xep_0004.FormField)
10 registerStanzaPlugin(xep_0004.FormField, xep_0004.FieldOption)
12 def testMultipleInstructions(self):
13 """Testing using multiple instructions elements in a data form."""
14 msg = self.Message()
15 msg['form']['instructions'] = "Instructions\nSecond batch"
17 self.checkMessage(msg, """
18 <message>
19 <x xmlns="jabber:x:data" type="form">
20 <instructions>Instructions</instructions>
21 <instructions>Second batch</instructions>
22 </x>
23 </message>
24 """)
26 def testAddField(self):
27 """Testing adding fields to a data form."""
29 msg = self.Message()
30 form = msg['form']
31 form.addField(var='f1',
32 ftype='text-single',
33 label='Text',
34 desc='A text field',
35 required=True,
36 value='Some text!')
38 self.checkMessage(msg, """
39 <message>
40 <x xmlns="jabber:x:data" type="form">
41 <field var="f1" type="text-single" label="Text">
42 <desc>A text field</desc>
43 <required />
44 <value>Some text!</value>
45 </field>
46 </x>
47 </message>
48 """)
50 form['fields'] = [('f1', {'type': 'text-single',
51 'label': 'Username',
52 'required': True}),
53 ('f2', {'type': 'text-private',
54 'label': 'Password',
55 'required': True}),
56 ('f3', {'type': 'text-multi',
57 'label': 'Message',
58 'value': 'Enter message.\nA long one even.'}),
59 ('f4', {'type': 'list-single',
60 'label': 'Message Type',
61 'options': [{'label': 'Cool!',
62 'value': 'cool'},
63 {'label': 'Urgh!',
64 'value': 'urgh'}]})]
65 self.checkMessage(msg, """
66 <message>
67 <x xmlns="jabber:x:data" type="form">
68 <field var="f1" type="text-single" label="Username">
69 <required />
70 </field>
71 <field var="f2" type="text-private" label="Password">
72 <required />
73 </field>
74 <field var="f3" type="text-multi" label="Message">
75 <value>Enter message.</value>
76 <value>A long one even.</value>
77 </field>
78 <field var="f4" type="list-single" label="Message Type">
79 <option label="Cool!">
80 <value>cool</value>
81 </option>
82 <option label="Urgh!">
83 <value>urgh</value>
84 </option>
85 </field>
86 </x>
87 </message>
88 """)
90 def testSetValues(self):
91 """Testing setting form values"""
93 msg = self.Message()
94 form = msg['form']
95 form.setFields([
96 ('foo', {'type': 'text-single'}),
97 ('bar', {'type': 'list-multi'})])
99 form.setValues({'foo': 'Foo!',
100 'bar': ['a', 'b']})
102 self.checkMessage(msg, """
103 <message>
104 <x xmlns="jabber:x:data" type="form">
105 <field var="foo" type="text-single">
106 <value>Foo!</value>
107 </field>
108 <field var="bar" type="list-multi">
109 <value>a</value>
110 <value>b</value>
111 </field>
112 </x>
113 </message>""")
115 suite = unittest.TestLoader().loadTestsFromTestCase(TestDataForms)