67 lines
2.5 KiB
Python
67 lines
2.5 KiB
Python
import unittest
|
|
from pyaccuwage.fields import TextField
|
|
from pyaccuwage.fields import StaticField
|
|
# from pyaccuwage.fields import IntegerField
|
|
# from pyaccuwage.fields import StateField
|
|
# from pyaccuwage.fields import BlankField
|
|
# from pyaccuwage.fields import ZeroField
|
|
# from pyaccuwage.fields import MoneyField
|
|
from pyaccuwage.fields import ValidationError
|
|
from pyaccuwage.model import Model
|
|
|
|
|
|
class TestTextField(unittest.TestCase):
|
|
def testStringShortOptional(self):
|
|
field = TextField(max_length=6, required=False)
|
|
field.validate() # optional
|
|
field.value = 'Hello'
|
|
field.validate()
|
|
self.assertEqual(field.get_data(), b'HELLO ')
|
|
|
|
def testStringShortRequired(self):
|
|
field = TextField(max_length=6, required=True)
|
|
with self.assertRaises(ValidationError):
|
|
field.validate()
|
|
field.value = 'Hello'
|
|
field.validate()
|
|
self.assertEqual(field.get_data(), b'HELLO ')
|
|
|
|
def testStringLongOptional(self):
|
|
field = TextField(max_length=6, required=False)
|
|
field.value = 'Hello, World!' # too long
|
|
data = field.get_data()
|
|
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)
|
|
|
|
def testStringRequiredUnassigned(self):
|
|
field = TextField(max_length=6)
|
|
self.assertRaises(ValidationError, lambda: field.validate())
|
|
|
|
def testStringRequiredNonBlank(self):
|
|
field = TextField(max_length=6)
|
|
field.value = ''
|
|
self.assertRaises(ValidationError, lambda: field.validate())
|
|
|
|
def testStringRequiredBlank(self):
|
|
field = TextField(max_length=6, blank=True)
|
|
field.value = ''
|
|
field.validate()
|
|
self.assertEqual(len(field.get_data()), 6)
|
|
|
|
def testStringMinimumLength(self):
|
|
field = TextField(max_length=6, min_length=6, blank=True) # blank has no effect
|
|
field.value = '' # one character too short
|
|
self.assertRaises(ValidationError, lambda: field.validate())
|
|
field.value = '12345' # one character too short
|
|
self.assertRaises(ValidationError, lambda: field.validate())
|
|
field.value = '123456' # one character too short
|
|
|
|
class TestStaticField(unittest.TestCase):
|
|
def test_static_field(self):
|
|
field = StaticField(value='TEST')
|
|
self.assertEqual(field.get_data(), b'TEST')
|