1
0
Fork 0
mirror of https://github.com/yweber/lodel2.git synced 2025-11-21 05:09:16 +01:00

Created and added varcharlist DH to lodelsites EM

This commit is contained in:
Quentin Bonaventure 2017-02-01 17:05:47 +01:00
commit c4289764ec
3 changed files with 83 additions and 4 deletions

View file

@ -121,7 +121,26 @@ class Concat(FormatString):
super().__init__(
format_string = format_string, field_list = field_list, **kwargs)
class Password(Varchar):
help = 'Handle passwords'
base_type = 'password'
pass
class VarcharList(Varchar):
help = 'DataHandler designed to make a list out of a string.'
base_type = 'varchar'
def __init__(self, delimiter=' ', **kwargs):
if not isinstance(delimiter, str):
raise LodelException("The delimiter has to be a string, %s given" % type(delimiter))
self.delimiter = str(delimiter)
super().__init__(**kwargs)
def construct_data(self, emcomponent, fname, datas, cur_value):
result = cur_value.split(self.delimiter)
return result

View file

@ -22,8 +22,7 @@ base_group = em.new_group(
em_lodel_site = em.new_class(
'LodelSite',
group = base_group,
abstract=True
group = base_group
)
em_lodel_site.new_field(
@ -49,8 +48,8 @@ em_lodel_site.new_field(
display_text = 'lodeSiteExtensions',
help_text = 'Lodel site extensions',
group = base_group,
data_handler = 'list',
back_reference = ('Plugin', 'plugin_name')
data_handler = 'varcharlist',
delimiter = ' '
)
em_lodel_site.new_field(

View file

@ -0,0 +1,61 @@
import unittest
from lodel.leapi.datahandlers.datas import VarcharList as Testee
from lodel.leapi.datahandlers.exceptions import LodelDataHandlerException
from lodel.exceptions import LodelException
class VarcharListTestCase(unittest.TestCase):
string = 'a simple string for testing purpose'
expected_result = string.split(' ')
def test_base_type_is_varchar(self):
'''base_type property has to be equal to \'varchar\''''
self.assertEqual(Testee.base_type, 'varchar')
def test_help_property_str_is_set(self):
'''Help property must be set and be a string'''
self.assertEqual(type(Testee.help), str)
def test_default_delimiter_is_set(self):
'''The DataHandler has to provide a default delimiter if not provided'''
testee = Testee()
self.assertTrue(hasattr(testee, 'delimiter'))
def test_set_custom_delimiter_success(self):
'''The custom delimiter isn't set as expected'''
delimiter = ';'
testee = Testee(delimiter=delimiter)
self.assertEqual(delimiter, testee.delimiter)
def test_custom_delimiter_not_string_raises_error(self):
'''DataHandler\'s init should raise an exception on trying to pass incorrect type delimiter'''
self.assertRaises(LodelException, Testee, 123456789)
def test_construct_datas_success(self):
'''Basic usage of VarcharList doesn't behave as expected'''
string = 'a b c'
testee = Testee()
actual_result = testee.construct_data(None, None, None, self.string)
self.assertEqual(self.expected_result, actual_result)
def test_constuct_datas_with_custom_delimiter_success(self):
'''The use of custom delimiter doesn't work as supposed to !'''
delimiter = ';'
string = self.string.replace(' ', delimiter)
testee = Testee(delimiter=delimiter)
actual_result = testee.construct_data(None, None, None, string)
self.assertEqual(self.expected_result, actual_result)