config: Add Integer ConfigValue and tests.
This commit is contained in:
parent
7cb68a41ac
commit
21d0a938f9
@ -81,3 +81,12 @@ class String(ConfigValue):
|
||||
|
||||
def serialize(self, value):
|
||||
return value.strip()
|
||||
|
||||
|
||||
class Integer(ConfigValue):
|
||||
def deserialize(self, value):
|
||||
value = int(value.strip())
|
||||
validate_choice(value, self.choices)
|
||||
validate_minimum(value, self.minimum)
|
||||
validate_maximum(value, self.maximum)
|
||||
return value
|
||||
|
||||
@ -109,3 +109,40 @@ class StringTest(unittest.TestCase):
|
||||
def test_format_masks_secrets(self):
|
||||
value = config.String(secret=True)
|
||||
self.assertEqual('********', value.format('s3cret'))
|
||||
|
||||
|
||||
class IntegerTest(unittest.TestCase):
|
||||
def test_deserialize_converts_to_int(self):
|
||||
value = config.Integer()
|
||||
self.assertEqual(123, value.deserialize('123'))
|
||||
self.assertEqual(0, value.deserialize('0'))
|
||||
self.assertEqual(-10, value.deserialize('-10'))
|
||||
|
||||
def test_deserialize_fails_on_bad_data(self):
|
||||
value = config.Integer()
|
||||
with self.assertRaises(ValueError):
|
||||
value.deserialize('asd')
|
||||
with self.assertRaises(ValueError):
|
||||
value.deserialize('3.14')
|
||||
|
||||
def test_deserialize_enforces_choices(self):
|
||||
value = config.Integer(choices=[1, 2, 3])
|
||||
self.assertEqual(3, value.deserialize('3'))
|
||||
with self.assertRaises(ValueError):
|
||||
value.deserialize('5')
|
||||
|
||||
def test_deserialize_enforces_minimum(self):
|
||||
value = config.Integer(minimum=10)
|
||||
self.assertEqual(15, value.deserialize('15'))
|
||||
with self.assertRaises(ValueError):
|
||||
value.deserialize('5')
|
||||
|
||||
def test_deserialize_enforces_maximum(self):
|
||||
value = config.Integer(maximum=10)
|
||||
self.assertEqual(5, value.deserialize('5'))
|
||||
with self.assertRaises(ValueError):
|
||||
value.deserialize('15')
|
||||
|
||||
def test_format_masks_secrets(self):
|
||||
value = config.Integer(secret=True)
|
||||
self.assertEqual('********', value.format('1337'))
|
||||
|
||||
Loading…
Reference in New Issue
Block a user