introduce PropertyValidator (wrapper)
This commit is contained in:
37
test/property/test_property_validator.py
Normal file
37
test/property/test_property_validator.py
Normal file
@ -0,0 +1,37 @@
|
||||
from unittest import TestCase
|
||||
from owrx.property import PropertyLayer, PropertyValidator, PropertyValidationError
|
||||
from owrx.property.validators import NumberValidator, StringValidator
|
||||
|
||||
|
||||
class PropertyValidatorTest(TestCase):
|
||||
def testPassesUnvalidated(self):
|
||||
pm = PropertyLayer()
|
||||
pv = PropertyValidator(pm)
|
||||
pv["testkey"] = "testvalue"
|
||||
self.assertEqual(pv["testkey"], "testvalue")
|
||||
self.assertEqual(pm["testkey"], "testvalue")
|
||||
|
||||
def testPassesValidValue(self):
|
||||
pv = PropertyValidator(PropertyLayer(), {"testkey": NumberValidator()})
|
||||
pv["testkey"] = 42
|
||||
self.assertEqual(pv["testkey"], 42)
|
||||
|
||||
def testThrowsErrorOnInvalidValue(self):
|
||||
pv = PropertyValidator(PropertyLayer(), {"testkey": NumberValidator()})
|
||||
with self.assertRaises(PropertyValidationError):
|
||||
pv["testkey"] = "text"
|
||||
|
||||
def testSetValidator(self):
|
||||
pv = PropertyValidator(PropertyLayer())
|
||||
pv.setValidator("testkey", NumberValidator())
|
||||
with self.assertRaises(PropertyValidationError):
|
||||
pv["testkey"] = "text"
|
||||
|
||||
def testUpdateValidator(self):
|
||||
pv = PropertyValidator(PropertyLayer(), {"testkey": StringValidator()})
|
||||
# this should pass
|
||||
pv["testkey"] = "text"
|
||||
pv.setValidator("testkey", NumberValidator())
|
||||
# this should raise
|
||||
with self.assertRaises(PropertyValidationError):
|
||||
pv["testkey"] = "text"
|
Reference in New Issue
Block a user