Fix StaticField + tests for StaticField and unset optional TextField
This commit is contained in:
parent
558e3fd232
commit
0bd82e09c4
4 changed files with 20 additions and 10 deletions
|
@ -21,6 +21,7 @@ class ValidationError(Exception):
|
||||||
class Field(object):
|
class Field(object):
|
||||||
creation_counter = 0
|
creation_counter = 0
|
||||||
is_read_only = False
|
is_read_only = False
|
||||||
|
_value = None
|
||||||
|
|
||||||
def __init__(self, name=None, max_length=0, required=True, uppercase=True, creation_counter=None):
|
def __init__(self, name=None, max_length=0, required=True, uppercase=True, creation_counter=None):
|
||||||
self.name = name
|
self.name = name
|
||||||
|
@ -122,7 +123,7 @@ class TextField(Field):
|
||||||
raise ValidationError("value is too long", field=self)
|
raise ValidationError("value is too long", field=self)
|
||||||
|
|
||||||
def get_data(self):
|
def get_data(self):
|
||||||
value = str(self.value).encode('ascii') or b''
|
value = str(self.value or '').encode('ascii') or b''
|
||||||
if self.uppercase:
|
if self.uppercase:
|
||||||
value = value.upper()
|
value = value.upper()
|
||||||
return value.ljust(self.max_length)[:self.max_length]
|
return value.ljust(self.max_length)[:self.max_length]
|
||||||
|
@ -195,13 +196,13 @@ class IntegerField(TextField):
|
||||||
|
|
||||||
|
|
||||||
class StaticField(TextField):
|
class StaticField(TextField):
|
||||||
def __init__(self, name=None, required=True, value=None):
|
def __init__(self, name=None, required=True, value=None, uppercase=False):
|
||||||
super(StaticField, self).__init__(name=name, required=required,
|
super(StaticField, self).__init__(name=name,
|
||||||
max_length=len(value))
|
required=required,
|
||||||
|
max_length=len(value),
|
||||||
|
uppercase=uppercase)
|
||||||
self._static_value = value
|
self._static_value = value
|
||||||
|
self._value = value
|
||||||
def get_data(self):
|
|
||||||
return str(self._static_value).encode('ascii')[:self.max_length]
|
|
||||||
|
|
||||||
def parse(self, s):
|
def parse(self, s):
|
||||||
pass
|
pass
|
||||||
|
|
|
@ -25,7 +25,7 @@ class Model(object):
|
||||||
setattr(src_field, 'parent_name', self.__class__.__name__)
|
setattr(src_field, 'parent_name', self.__class__.__name__)
|
||||||
new_field_instance = copy.copy(src_field)
|
new_field_instance = copy.copy(src_field)
|
||||||
new_field_instance._orig_value = None
|
new_field_instance._orig_value = None
|
||||||
new_field_instance._value = None
|
new_field_instance._value = new_field_instance.value
|
||||||
self.__dict__[key] = new_field_instance
|
self.__dict__[key] = new_field_instance
|
||||||
|
|
||||||
def __setattr__(self, key, value):
|
def __setattr__(self, key, value):
|
||||||
|
|
|
@ -33,6 +33,11 @@ class TestTextField(unittest.TestCase):
|
||||||
self.assertEqual(len(data), field.max_length)
|
self.assertEqual(len(data), field.max_length)
|
||||||
self.assertEqual(data, b'HELLO,')
|
self.assertEqual(data, b'HELLO,')
|
||||||
|
|
||||||
|
def testStringUnsetOptional(self):
|
||||||
|
field = TextField(max_length=6, required=False)
|
||||||
|
field.validate()
|
||||||
|
self.assertEqual(field.get_data(), b' ' * 6)
|
||||||
|
|
||||||
class TestStaticField(unittest.TestCase):
|
class TestStaticField(unittest.TestCase):
|
||||||
def test_static_field(self):
|
def test_static_field(self):
|
||||||
field = StaticField(value='TEST')
|
field = StaticField(value='TEST')
|
||||||
|
|
|
@ -7,6 +7,7 @@ from pyaccuwage.fields import MoneyField
|
||||||
from pyaccuwage.fields import StateField
|
from pyaccuwage.fields import StateField
|
||||||
from pyaccuwage.fields import TextField
|
from pyaccuwage.fields import TextField
|
||||||
from pyaccuwage.fields import ZeroField
|
from pyaccuwage.fields import ZeroField
|
||||||
|
from pyaccuwage.fields import StaticField
|
||||||
from pyaccuwage.model import Model
|
from pyaccuwage.model import Model
|
||||||
|
|
||||||
class TestModelOutput(unittest.TestCase):
|
class TestModelOutput(unittest.TestCase):
|
||||||
|
@ -20,7 +21,8 @@ class TestModelOutput(unittest.TestCase):
|
||||||
money = MoneyField(max_length=32)
|
money = MoneyField(max_length=32)
|
||||||
state_txt = StateField()
|
state_txt = StateField()
|
||||||
state_num = StateField(use_numeric=True)
|
state_num = StateField(use_numeric=True)
|
||||||
blank2 = BlankField(max_length=24)
|
blank2 = BlankField(max_length=12)
|
||||||
|
static1 = StaticField(value='hey mister!!')
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.model = TestModelOutput.TestModel()
|
self.model = TestModelOutput.TestModel()
|
||||||
|
@ -42,7 +44,8 @@ class TestModelOutput(unittest.TestCase):
|
||||||
b'313377'.zfill(32),
|
b'313377'.zfill(32),
|
||||||
b'IA',
|
b'IA',
|
||||||
b'19',
|
b'19',
|
||||||
b' ' * 24,
|
b' ' * 12,
|
||||||
|
b'hey mister!!',
|
||||||
])
|
])
|
||||||
|
|
||||||
output = model.output()
|
output = model.output()
|
||||||
|
@ -64,6 +67,7 @@ field2: 12345
|
||||||
money: 3133.77
|
money: 3133.77
|
||||||
state_txt: IA
|
state_txt: IA
|
||||||
state_num: IA
|
state_num: IA
|
||||||
|
static1: hey mister!!
|
||||||
|
|
||||||
''')
|
''')
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue