Changeset 51:d6bbf24ef053
- Timestamp:
- Jan 13, 2009, 7:30:35 PM (13 years ago)
- Branch:
- default
- Convert:
- svn:b33ecbfc-034c-dc11-8662-000475d9059e/trunk@162
- Location:
- wokkel
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
wokkel/data_form.py
r50 r51 220 220 for value in self.values: 221 221 if self.fieldType == 'boolean': 222 # We send out the textual representation of boolean values 223 value = bool(int(value)) 222 if isinstance(value, (str, unicode)): 223 checkValue = value.lower() 224 if not checkValue in ('0', '1', 'false', 'true'): 225 raise ValueError("Not a boolean") 226 value = checkValue in ('1', 'true') 227 value = bool(value) 224 228 elif self.fieldType in ('jid-single', 'jid-multi'): 225 value = value.full() 229 if not hasattr(value, 'full'): 230 value = JID(value) 226 231 227 232 newValues.append(value) … … 249 254 if self.fieldType == 'boolean': 250 255 value = unicode(value).lower() 256 elif self.fieldType in ('jid-single', 'jid-multi'): 257 value = value.full() 258 251 259 field.addElement('value', content=value) 252 260 -
wokkel/test/test_data_form.py
r50 r51 8 8 from twisted.trial import unittest 9 9 from twisted.words.xish import domish 10 11 from wokkel.data_form import Field, Form, Option, FieldNameRequiredError 10 from twisted.words.protocols.jabber import jid 11 12 from wokkel import data_form 12 13 13 14 NS_X_DATA = 'jabber:x:data' 14 15 15 16 17 16 class OptionTest(unittest.TestCase): 18 17 """ 19 Tests for L{ Option}.18 Tests for L{data_form.Option}. 20 19 """ 21 20 22 21 def test_toElement(self): 23 option = Option('value', 'label')22 option = data_form.Option('value', 'label') 24 23 element = option.toElement() 25 24 self.assertEquals('option', element.name) … … 34 33 class FieldTest(unittest.TestCase): 35 34 """ 36 Tests for L{ Field}.35 Tests for L{data_form.Field}. 37 36 """ 38 37 … … 41 40 Test basic field initialization. 42 41 """ 43 field = Field(var='test')42 field = data_form.Field(var='test') 44 43 self.assertEqual('text-single', field.fieldType) 45 44 self.assertEqual('test', field.var) 46 45 47 46 48 def test_noFieldName(self):49 field = Field()50 self.assertRaises(FieldNameRequiredError, field.toElement)51 52 53 47 def test_toElement(self): 54 48 """ 55 49 Test rendering to a DOM. 56 50 """ 57 field = Field(var='test')51 field = data_form.Field(var='test') 58 52 element = field.toElement() 59 53 … … 71 65 Always render the field type, if different from list-single. 72 66 """ 73 field = Field('hidden', var='test')67 field = data_form.Field('hidden', var='test') 74 68 element = field.toElement() 75 69 … … 81 75 Always render the field type, if asForm is True. 82 76 """ 83 field = Field(var='test')77 field = data_form.Field(var='test') 84 78 element = field.toElement(True) 85 79 … … 91 85 Test rendering to a DOM with options. 92 86 """ 93 field = Field('list-single', var='test') 94 field.options = [Option(u'option1'), Option(u'option2')] 87 field = data_form.Field('list-single', var='test') 88 field.options = [data_form.Option(u'option1'), 89 data_form.Option(u'option2')] 95 90 element = field.toElement(True) 96 91 … … 102 97 Test rendering to a DOM with a label. 103 98 """ 104 field = Field(var='test', label=u'my label')99 field = data_form.Field(var='test', label=u'my label') 105 100 element = field.toElement(True) 106 101 … … 112 107 Test rendering to a DOM with options. 113 108 """ 114 field = Field(var='test', desc=u'My desc')109 field = data_form.Field(var='test', desc=u'My desc') 115 110 element = field.toElement(True) 116 111 … … 126 121 Test rendering to a DOM with options. 127 122 """ 128 field = Field(var='test', required=True)123 field = data_form.Field(var='test', required=True) 129 124 element = field.toElement(True) 130 125 … … 135 130 136 131 132 def test_toElementJID(self): 133 field = data_form.Field(fieldType='jid-single', var='test', 134 value=jid.JID(u'test@example.org')) 135 element = field.toElement() 136 self.assertEqual(u'test@example.org', unicode(element.value)) 137 138 139 def test_typeCheckNoFieldName(self): 140 """ 141 A field not of type fixed must have a var. 142 """ 143 field = data_form.Field(fieldType='list-single') 144 self.assertRaises(data_form.FieldNameRequiredError, field.typeCheck) 145 146 147 def test_typeCheckTooManyValues(self): 148 """ 149 Expect an exception if too many values are set, depending on type. 150 """ 151 field = data_form.Field(fieldType='list-single', var='test', 152 values=[u'value1', u'value2']) 153 self.assertRaises(data_form.TooManyValuesError, field.typeCheck) 154 155 156 def test_typeCheckBooleanFalse(self): 157 """ 158 Test possible False values for a boolean field. 159 """ 160 field = data_form.Field(fieldType='boolean', var='test') 161 162 for value in (False, 0, '0', 'false', 'False', []): 163 field.value = value 164 field.typeCheck() 165 self.assertIsInstance(field.value, bool) 166 self.assertFalse(field.value) 167 168 169 def test_typeCheckBooleanTrue(self): 170 """ 171 Test possible True values for a boolean field. 172 """ 173 field = data_form.Field(fieldType='boolean', var='test') 174 175 for value in (True, 1, '1', 'true', 'True', ['test']): 176 field.value = value 177 field.typeCheck() 178 self.assertIsInstance(field.value, bool) 179 self.assertTrue(field.value) 180 181 182 def test_typeCheckBooleanBad(self): 183 """ 184 A bad value for a boolean field should raise a ValueError 185 """ 186 field = data_form.Field(fieldType='boolean', var='test') 187 field.value = 'test' 188 self.assertRaises(ValueError, field.typeCheck) 189 190 191 def test_typeCheckJID(self): 192 """ 193 The value of jid field should be a JID or coercable to one. 194 """ 195 field = data_form.Field(fieldType='jid-single', var='test', 196 value=jid.JID('test@example.org')) 197 field.typeCheck() 198 199 200 def test_typeCheckJIDString(self): 201 """ 202 The string value of jid field should be coercable into a JID. 203 """ 204 field = data_form.Field(fieldType='jid-single', var='test', 205 value='test@example.org') 206 field.typeCheck() 207 self.assertEquals(jid.JID(u'test@example.org'), field.value) 208 209 210 def test_typeCheckJIDBad(self): 211 """ 212 An invalid JID string should raise an exception. 213 """ 214 field = data_form.Field(fieldType='jid-single', var='test', 215 value='test@@example.org') 216 self.assertRaises(jid.InvalidFormat, field.typeCheck) 217 218 137 219 def test_fromElementType(self): 138 220 element = domish.Element((NS_X_DATA, 'field')) 139 221 element['type'] = 'fixed' 140 field = Field.fromElement(element)222 field = data_form.Field.fromElement(element) 141 223 self.assertEquals('fixed', field.fieldType) 142 224 … … 144 226 def test_fromElementNoType(self): 145 227 element = domish.Element((NS_X_DATA, 'field')) 146 field = Field.fromElement(element)228 field = data_form.Field.fromElement(element) 147 229 self.assertEquals(None, field.fieldType) 148 230 … … 151 233 element = domish.Element((NS_X_DATA, 'field')) 152 234 element.addElement("value", content="text") 153 field = Field.fromElement(element)235 field = data_form.Field.fromElement(element) 154 236 self.assertEquals('text', field.value) 155 237 … … 158 240 class FormTest(unittest.TestCase): 159 241 """ 160 Tests for L{ Form}.242 Tests for L{data_form.Form}. 161 243 """ 162 244 … … 166 248 """ 167 249 168 form = Form('result')250 form = data_form.Form('result') 169 251 self.assertEqual('result', form.formType) 170 252 … … 173 255 The toElement method returns a form's DOM representation. 174 256 """ 175 form = Form('result')257 form = data_form.Form('result') 176 258 element = form.toElement() 177 259 … … 185 267 def test_fromElement(self): 186 268 """ 187 The fromElement static method creates a L{Form} from a L{DOM.269 C{fromElement} creates a L{data_form.Form} from a DOM representation. 188 270 """ 189 271 element = domish.Element((NS_X_DATA, 'x')) 190 272 element['type'] = 'result' 191 form = Form.fromElement(element)273 form = data_form.Form.fromElement(element) 192 274 193 275 self.assertEquals('result', form.formType) … … 202 284 """ 203 285 element = domish.Element((NS_X_DATA, 'form')) 204 self.assertRaises(Exception, Form.fromElement, element)286 self.assertRaises(Exception, data_form.Form.fromElement, element) 205 287 206 288 … … 210 292 """ 211 293 element = domish.Element(('myns', 'x')) 212 self.assertRaises(Exception, Form.fromElement, element)294 self.assertRaises(Exception, data_form.Form.fromElement, element) 213 295 214 296 … … 216 298 element = domish.Element((NS_X_DATA, 'x')) 217 299 element.addElement('title', content='My title') 218 form = Form.fromElement(element)300 form = data_form.Form.fromElement(element) 219 301 220 302 self.assertEquals('My title', form.title) … … 224 306 element = domish.Element((NS_X_DATA, 'x')) 225 307 element.addElement('instructions', content='instruction') 226 form = Form.fromElement(element)308 form = data_form.Form.fromElement(element) 227 309 228 310 self.assertEquals(['instruction'], form.instructions) … … 232 314 element.addElement('instructions', content='instruction 1') 233 315 element.addElement('instructions', content='instruction 2') 234 form = Form.fromElement(element)316 form = data_form.Form.fromElement(element) 235 317 236 318 self.assertEquals(['instruction 1', 'instruction 2'], form.instructions) … … 240 322 element = domish.Element((NS_X_DATA, 'x')) 241 323 element.addElement('field') 242 form = Form.fromElement(element)324 form = data_form.Form.fromElement(element) 243 325 244 326 self.assertEquals(1, len(form.fieldList)) … … 250 332 element.addElement('field')['var'] = 'field1' 251 333 element.addElement('field')['var'] = 'field2' 252 form = Form.fromElement(element)334 form = data_form.Form.fromElement(element) 253 335 254 336 self.assertEquals(2, len(form.fieldList))
Note: See TracChangeset
for help on using the changeset viewer.