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')