summaryrefslogtreecommitdiffstats
path: root/funcweb/funcweb/tests/test_widget_validation.py
diff options
context:
space:
mode:
Diffstat (limited to 'funcweb/funcweb/tests/test_widget_validation.py')
-rw-r--r--funcweb/funcweb/tests/test_widget_validation.py339
1 files changed, 339 insertions, 0 deletions
diff --git a/funcweb/funcweb/tests/test_widget_validation.py b/funcweb/funcweb/tests/test_widget_validation.py
new file mode 100644
index 0000000..c800d41
--- /dev/null
+++ b/funcweb/funcweb/tests/test_widget_validation.py
@@ -0,0 +1,339 @@
+import unittest
+import turbogears
+from turbogears import testutil
+from funcweb.widget_validation import WidgetSchemaFactory,MinionIntValidator,MinionFloatValidator,MinionListValidator,MinionHashValidator
+from turbogears import validators
+
+class TestWidgetValidator(unittest.TestCase):
+
+ def test_string_validator(self):
+ wf = WidgetSchemaFactory(self.get_string_params())
+ schema_man=wf.get_ready_schema()
+
+ conversion_schema = {
+ 'max_length':'max',
+ 'min_length':'min',
+ 'validator':'regex'
+ }
+
+ #do better test here
+ for argument_name,arg_options in self.get_string_params().iteritems():
+ #print argument_name
+ assert hasattr(schema_man,argument_name)==True
+ #not very efficient but it si just a test :)
+ if argument_name != 'string_mix':
+ for arg,value in arg_options.iteritems():
+ #print getattr(schema_man,argument_name)
+ if conversion_schema.has_key(arg):
+ if hasattr(getattr(schema_man,argument_name),conversion_schema[arg]):
+ #print arg,value
+ #couldnt find a way to test it !??
+ if arg != 'validator':
+ assert getattr(getattr(schema_man,argument_name),conversion_schema[arg])==value
+ #print getattr(getattr(schema_man,argument_name),conversion_schema[arg])
+ else:
+ #just print it to see what is inside because the test will be very hardcoded otherwise
+ #print getattr(schema_man,argument_name)
+ continue
+ print "Happy tests !"
+
+ def test_int_validator(self):
+ wf = WidgetSchemaFactory(self.get_int_params())
+ schema_man=wf.get_ready_schema()
+
+ for argument_name,arg_options in self.get_int_params().iteritems():
+ #print argument_name
+ assert hasattr(schema_man,argument_name)==True
+ #print " ",argument_name," : ",getattr(schema_man,argument_name)
+
+ #if the argument includes some range
+ if arg_options.has_key('range'):
+ #print " ",argument_name," : ",getattr(schema_man,argument_name)
+ assert getattr(getattr(schema_man,argument_name),'max') == arg_options['range'][1]
+ assert getattr(getattr(schema_man,argument_name),'min') == arg_options['range'][0]
+ if arg_options.has_key('min'):
+ #print " ",argument_name," : ",getattr(schema_man,argument_name)
+ assert getattr(getattr(schema_man,argument_name),'min') == arg_options['min']
+
+ if arg_options.has_key('max'):
+ #print " ",argument_name," : ",getattr(schema_man,argument_name)
+ assert getattr(getattr(schema_man,argument_name),'max') == arg_options['max']
+
+ if arg_options.has_key('optional'):
+ #print " ",argument_name," : ",getattr(schema_man,argument_name)
+ assert not getattr(getattr(schema_man,argument_name),'not_empty') == arg_options['optional']
+
+
+ print "Happy test!"
+
+ def test_float_validator(self):
+ wf = WidgetSchemaFactory(self.get_float_params())
+ schema_man=wf.get_ready_schema()
+
+ for argument_name,arg_options in self.get_float_params().iteritems():
+ #print argument_name
+ assert hasattr(schema_man,argument_name)==True
+ #print " ",argument_name," : ",getattr(schema_man,argument_name)
+
+ if arg_options.has_key('min'):
+ #print " ",argument_name," : ",getattr(schema_man,argument_name)
+ assert getattr(getattr(schema_man,argument_name),'min') == arg_options['min']
+
+ if arg_options.has_key('max'):
+ #print " ",argument_name," : ",getattr(schema_man,argument_name)
+ assert getattr(getattr(schema_man,argument_name),'max') == arg_options['max']
+
+ if arg_options.has_key('optional'):
+ #print " ",argument_name," : ",getattr(schema_man,argument_name)
+ assert not getattr(getattr(schema_man,argument_name),'not_empty') == arg_options['optional']
+
+
+ print "Happy test!"
+
+ def test_bool_validator(self):
+ testing_data = self.get_bool_params()
+ wf = WidgetSchemaFactory(testing_data)
+ schema_man=wf.get_ready_schema()
+
+ for argument_name,arg_options in testing_data.iteritems():
+ #print argument_name
+ #should all the argument names really
+ assert hasattr(schema_man,argument_name)==True
+ #print " ",argument_name," : ",getattr(schema_man,argument_name)
+
+ if arg_options.has_key('optional'):
+ #print " ",argument_name," : ",getattr(schema_man,argument_name)
+ assert not getattr(getattr(schema_man,argument_name),'not_empty') == arg_options['optional']
+
+ print "Happy test!"
+
+
+
+ def test_list_validator(self,the_type='list'):
+ if the_type == 'list':
+ testing_data = self.get_list_params()
+ else:
+ testing_data = self.get_hash_params()
+
+ wf = WidgetSchemaFactory(testing_data)
+ schema_man=wf.get_ready_schema()
+
+ for argument_name,arg_options in testing_data.iteritems():
+ #print argument_name
+ #should all the argument names really
+ assert hasattr(schema_man,argument_name)==True
+ #print " ",argument_name," : ",getattr(schema_man,argument_name)
+
+ if arg_options.has_key('validator'):
+ #print " ",argument_name," : ",getattr(schema_man,argument_name)
+ assert getattr(getattr(schema_man,argument_name),'regex_string') == arg_options['validator']
+
+ if arg_options.has_key('optional'):
+ #print " ",argument_name," : ",getattr(schema_man,argument_name)
+ assert not getattr(getattr(schema_man,argument_name),'not_empty') == arg_options['optional']
+
+
+ print "Happy test!"
+
+
+ def test_hash_validator(self):
+ self.test_list_validator(the_type = 'hash')
+
+ def test_minion_int_validator(self):
+ mv=MinionIntValidator(max = 44,min=2)
+ self.assertRaises(validators.Invalid,mv.to_python,100)
+ self.assertRaises(validators.Invalid,mv.to_python,1)
+ self.assertRaises(validators.Invalid,mv.to_python,'some_string')
+ assert mv.to_python(21) == 21
+
+ #dont use the min
+ mv=MinionIntValidator(max = 44)
+ self.assertRaises(validators.Invalid,mv.to_python,100)
+ assert mv.to_python(1)==1
+ self.assertRaises(validators.Invalid,mv.to_python,'some_string')
+ assert mv.to_python(21) == 21
+
+ mv=MinionIntValidator(min=12)
+ self.assertRaises(validators.Invalid,mv.to_python,10)
+ assert mv.to_python(14)==14
+ self.assertRaises(validators.Invalid,mv.to_python,'some_string')
+ assert mv.to_python(21) == 21
+
+ mv=MinionIntValidator()
+ assert mv.to_python(14)==14
+ self.assertRaises(validators.Invalid,mv.to_python,'some_string')
+
+ def test_minion_float_validator(self):
+ mv=MinionFloatValidator(max = 44.0,min=2.0)
+ self.assertRaises(validators.Invalid,mv.to_python,100.0)
+ self.assertRaises(validators.Invalid,mv.to_python,1.0)
+ self.assertRaises(validators.Invalid,mv.to_python,'some_string')
+ assert mv.to_python(21.0) == 21.0
+
+ #dont use the min
+ mv=MinionFloatValidator(max = 44.0)
+ self.assertRaises(validators.Invalid,mv.to_python,100.0)
+ assert mv.to_python(1.0)==1.0
+ self.assertRaises(validators.Invalid,mv.to_python,'some_string')
+ assert mv.to_python(21.0) == 21.0
+
+ mv=MinionFloatValidator(min=12.0)
+ self.assertRaises(validators.Invalid,mv.to_python,10.0)
+ assert mv.to_python(14.0)==14.0
+ self.assertRaises(validators.Invalid,mv.to_python,'some_string')
+ assert mv.to_python(21.0) == 21.0
+
+ mv=MinionFloatValidator()
+ assert mv.to_python(14.0)==14.0
+ self.assertRaises(validators.Invalid,mv.to_python,'some_string')
+
+ def test_minion_list_validator(self):
+
+ #test default
+ mv = MinionListValidator()
+ assert mv.to_python(['fedora','debian','others']) == ['fedora','debian','others']
+ del mv
+
+ #test with regex
+ mv = MinionListValidator(regex_string='^[A-Z]+$',not_empty=True)
+ assert mv.to_python(['FEDORA','MACOSX']) == ['FEDORA','MACOSX']
+ self.assertRaises(validators.Invalid,mv.to_python,[])
+ self.assertRaises(validators.Invalid,mv.to_python,['hey_error'])
+ self.assertRaises(validators.Invalid,mv.to_python,{})
+ del mv
+
+
+ print "Happy testing !"
+
+
+ def test_minion_hash_validator(self):
+
+ #test default
+ mv = MinionHashValidator()
+ assert mv.to_python({'fedora':1,'debian':2,'others':3}) == {'fedora':1,'debian':2,'others':3}
+ del mv
+
+ #test with regex
+ mv = MinionHashValidator(regex_string='^[A-Z]+$',not_empty=True)
+ assert mv.to_python({'FEDORA':'FEDORA','MACOSX':'MACOSX'}) == {'FEDORA':'FEDORA','MACOSX':'MACOSX'}
+ self.assertRaises(validators.Invalid,mv.to_python,{})
+ self.assertRaises(validators.Invalid,mv.to_python,{'hey_error':12})
+ self.assertRaises(validators.Invalid,mv.to_python,"hwy")
+ del mv
+
+ print "Happy testing !"
+
+
+ def get_string_params(self):
+ return {
+ 'string_default':{
+ 'type':'string',
+ 'default':'default string',
+ 'description':'default description'
+ },
+ 'string_regex':{
+ 'type':'string',
+ 'default':'some',
+ 'validator':'^[a-z]*$'
+ }
+ ,
+ 'min_max_string':{
+ 'type':'string',
+ 'default':'myfirst',
+ 'optional':False,
+ 'description':'default dropdown list',
+ 'max_length':12,
+ 'min_length':5
+ },
+ 'string_mix':{
+ 'type':'string',
+ 'optional':False,
+ 'max_length':123,
+ 'min_length':12,
+ 'validator':'^[A-Z]+$'
+ }
+ }
+
+ def get_int_params(self):
+ return {
+ 'int_default':{
+ 'type':'int',
+ 'default':2,
+ 'description':'default integer'
+ },
+ 'min_max':{
+ 'type':'int',
+ 'default':12,
+ 'optional':False,
+ 'description':'default dropdown list',
+ 'max':12,
+ 'min':5
+ },
+ 'range_int':{
+ 'type':'int',
+ 'optional':False,
+ 'range':[1,55]
+ }
+ }
+
+ def get_float_params(self):
+ return {
+ 'float_default':{
+ 'type':'float',
+ 'default':2.0,
+ 'description':'default float'
+ },
+ 'min_max':{
+ 'type':'float',
+ 'default':11.0,
+ 'optional':False,
+ 'description':'default dropdown list',
+ 'max':12.0,
+ 'min':5.0
+ },
+ }
+
+ def get_list_params(self):
+ return {
+ 'list_default':{
+ 'type':'list',
+ 'default':'cooler',
+ 'description':'default list'
+ },
+ 'list_regex':{
+ 'type':'list',
+ 'default':'hey',
+ 'optional':False,
+ 'description':'default regex list',
+ 'validator':'^[A-Z]$'
+ },
+ }
+
+ def get_hash_params(self):
+ return {
+ 'hash_default':{
+ 'type':'hash',
+ 'default':{'hey':12},
+ 'description':'default hash'
+ },
+ 'hash_regex':{
+ 'type':'hash',
+ 'default':{'hey':12},
+ 'optional':False,
+ 'description':'default regex hash',
+ 'validator':'^[A-Z]$'
+ },
+ }
+
+ def get_bool_params(self):
+ return {
+ 'bool_default':{
+ 'type':'boolean',
+ 'default':{'hey':12},
+ 'description':'default hash',
+ 'optional':False,
+ },
+ }
+
+
+