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:
parent
ec6da44b47
commit
c4289764ec
3 changed files with 83 additions and 4 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
61
tests/datahandlers/test_varcharlist.py
Normal file
61
tests/datahandlers/test_varcharlist.py
Normal 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)
|
||||
Loading…
Add table
Add a link
Reference in a new issue