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):
|
||||
creation_counter = 0
|
||||
is_read_only = False
|
||||
_value = None
|
||||
|
||||
def __init__(self, name=None, max_length=0, required=True, uppercase=True, creation_counter=None):
|
||||
self.name = name
|
||||
|
@ -122,7 +123,7 @@ class TextField(Field):
|
|||
raise ValidationError("value is too long", field=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:
|
||||
value = value.upper()
|
||||
return value.ljust(self.max_length)[:self.max_length]
|
||||
|
@ -195,13 +196,13 @@ class IntegerField(TextField):
|
|||
|
||||
|
||||
class StaticField(TextField):
|
||||
def __init__(self, name=None, required=True, value=None):
|
||||
super(StaticField, self).__init__(name=name, required=required,
|
||||
max_length=len(value))
|
||||
def __init__(self, name=None, required=True, value=None, uppercase=False):
|
||||
super(StaticField, self).__init__(name=name,
|
||||
required=required,
|
||||
max_length=len(value),
|
||||
uppercase=uppercase)
|
||||
self._static_value = value
|
||||
|
||||
def get_data(self):
|
||||
return str(self._static_value).encode('ascii')[:self.max_length]
|
||||
self._value = value
|
||||
|
||||
def parse(self, s):
|
||||
pass
|
||||
|
|
|
@ -25,7 +25,7 @@ class Model(object):
|
|||
setattr(src_field, 'parent_name', self.__class__.__name__)
|
||||
new_field_instance = copy.copy(src_field)
|
||||
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
|
||||
|
||||
def __setattr__(self, key, value):
|
||||
|
|
|
@ -33,6 +33,11 @@ class TestTextField(unittest.TestCase):
|
|||
self.assertEqual(len(data), field.max_length)
|
||||
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):
|
||||
def test_static_field(self):
|
||||
field = StaticField(value='TEST')
|
||||
|
|
|
@ -7,6 +7,7 @@ from pyaccuwage.fields import MoneyField
|
|||
from pyaccuwage.fields import StateField
|
||||
from pyaccuwage.fields import TextField
|
||||
from pyaccuwage.fields import ZeroField
|
||||
from pyaccuwage.fields import StaticField
|
||||
from pyaccuwage.model import Model
|
||||
|
||||
class TestModelOutput(unittest.TestCase):
|
||||
|
@ -20,7 +21,8 @@ class TestModelOutput(unittest.TestCase):
|
|||
money = MoneyField(max_length=32)
|
||||
state_txt = StateField()
|
||||
state_num = StateField(use_numeric=True)
|
||||
blank2 = BlankField(max_length=24)
|
||||
blank2 = BlankField(max_length=12)
|
||||
static1 = StaticField(value='hey mister!!')
|
||||
|
||||
def setUp(self):
|
||||
self.model = TestModelOutput.TestModel()
|
||||
|
@ -42,7 +44,8 @@ class TestModelOutput(unittest.TestCase):
|
|||
b'313377'.zfill(32),
|
||||
b'IA',
|
||||
b'19',
|
||||
b' ' * 24,
|
||||
b' ' * 12,
|
||||
b'hey mister!!',
|
||||
])
|
||||
|
||||
output = model.output()
|
||||
|
@ -64,6 +67,7 @@ field2: 12345
|
|||
money: 3133.77
|
||||
state_txt: IA
|
||||
state_num: IA
|
||||
static1: hey mister!!
|
||||
|
||||
''')
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue