diff --git a/modularodm/validators/__init__.py b/modularodm/validators/__init__.py index ff7b0ac..eb58fa7 100644 --- a/modularodm/validators/__init__.py +++ b/modularodm/validators/__init__.py @@ -159,3 +159,15 @@ class MaxLengthValidator(BaseValidator): clean = lambda self, x: len(x) message = 'Ensure this value has length of at most {limit_value} (it has length {show_value}).' code = 'max_length' + + +class ValueNotEmptyValidator(BaseValidator): + + compare = lambda self, a, b: a == b + clean = lambda self, x: x.strip() + message = 'Ensure this value is not empty.' + code = 'not_empty' + + def __init__(self): + self.limit_value = '' + super(ValueNotEmptyValidator, self).__init__(self.limit_value) diff --git a/tests/validators/test_iterable_validators.py b/tests/validators/test_iterable_validators.py index 1b40e57..8951b4b 100644 --- a/tests/validators/test_iterable_validators.py +++ b/tests/validators/test_iterable_validators.py @@ -1,7 +1,7 @@ from modularodm import StoredObject from modularodm.exceptions import ValidationValueError from modularodm.fields import IntegerField, StringField -from modularodm.validators import MaxLengthValidator, MinLengthValidator +from modularodm.validators import MaxLengthValidator, MinLengthValidator, ValueNotEmptyValidator from tests.base import ModularOdmTestCase @@ -18,6 +18,10 @@ class Foo(StoredObject): list=False, validate=[MinLengthValidator(5), ] ) + test_field_empty = StringField( + list=False, + validate=[ValueNotEmptyValidator(), ] + ) self.test_object = Foo(_id=0) return Foo, @@ -39,6 +43,15 @@ def test_min_length_string_validator(self): self.test_object.test_field_min = 'abcdefg' self.test_object.save() + def test_value_not_empty_string_validator(self): + + self.test_object.test_field_empty = '' + with self.assertRaises(ValidationValueError): + self.test_object.save() + + self.test_object.test_field_empty = 'not empty' + self.test_object.save() + class ListValidatorTestCase(ModularOdmTestCase):