def test_cmp_funcs(): range_validator = validate.Range(0, 10) daterange_validator = validate.DateRange( "2019-01-01", "2019-01-05", step={"days": 2} ) choice_validator = validate.OneOf(choices=["one", "two"]) cases = [ ("one", "two", fields.Str(validate=[choice_validator])), ( datetime.date(2019, 1, 2), datetime.date(2019, 1, 3), fields.Date(validate=[daterange_validator]), ), (2, 5, fields.Integer(validate=[range_validator])), ] for (min_, max_, field) in cases: cmp_funcs = field.cmp_funcs() assert cmp_funcs["gt"](min_, max_) is False assert cmp_funcs["lt"](min_, max_) is True assert cmp_funcs["eq"](min_, max_) is False assert cmp_funcs["eq"](max_, max_) is True assert cmp_funcs["lte"](max_, max_) is True assert cmp_funcs["lte"](min_, max_) is True assert cmp_funcs["gte"](max_, min_) is True
def test_contrib_fields(): range_validator = validate.Range(0, 10) daterange_validator = validate.DateRange("2019-01-01", "2019-01-05", step={"days": 2}) choice_validator = validate.OneOf(choices=["one", "two"]) s = fields.Str(validate=[choice_validator]) assert s.mesh() == ["one", "two"] s = fields.Str() assert s.mesh() == [] s = fields.Integer(validate=[range_validator]) assert s.mesh() == [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] s = fields.Str() assert s.mesh() == [] # date will need an interval argument. s = fields.Date(validate=[daterange_validator]) assert s.mesh() == [datetime.date(2019, 1, i) for i in range(1, 6, 2)]
# A few fields that have not been instantiated yet CLASS_FIELD_MAP = { "str": contrib_fields.Str, "int": contrib_fields.Integer, "float": contrib_fields.Float, "bool": contrib_fields.Boolean, "date": contrib_fields.Date, } INVALID_NUMBER = {"invalid": "Not a valid number: {input}."} INVALID_BOOLEAN = {"invalid": "Not a valid boolean: {input}."} INVALID_DATE = {"invalid": "Not a valid date: {input}."} # A few fields that have been instantiated FIELD_MAP = { "str": contrib_fields.Str(allow_none=True), "int": contrib_fields.Integer(allow_none=True, error_messages=INVALID_NUMBER), "float": contrib_fields.Float(allow_none=True, error_messages=INVALID_NUMBER), "bool": contrib_fields.Boolean(allow_none=True, error_messages=INVALID_BOOLEAN), "date": contrib_fields.Date(allow_none=True, error_messages=INVALID_DATE), } VALIDATOR_MAP = { "range": contrib_validate.Range, "date_range": contrib_validate.DateRange, "choice": contrib_validate.OneOf, }