def test_shopping_cart_first_item(): validation_rules1 = ( ('items', gl.type_(list), ('@first', ('price', gl.eq(1.34))))) result = gl.validate(validation_rules1, valid_test_data) assert result.success is True
import gladiator as gl valid_test_data = { 'cart_id': 123, 'user_id': 1, 'items': [ {'item_id': 1, 'price': 1.34, 'count': 1}, {'item_id': 2, 'price': 0.34, 'count': 2}, {'item_id': 3, 'price': 1.22, 'count': 1}, ] } validation_rules = ( ('cart_id', gl.required, gl.type_(int)), ('user_id', gl.required, gl.type_(int)), ('items', gl.type_(list), ('@all', ('item_id', gl.required), ('price', gl.required, gl.type_(float)), ('count', gl.required, gl.type_(int))))) def test_shopping_cart_with_valid_data(): result = gl.validate(validation_rules, valid_test_data) assert result.success is True def test_shopping_cart_with_empty_data(): result = gl.validate(validation_rules, {}) assert result.success is False
'is_email_validated': None, # 'is_blocked' not included } def custom_validator(obj, selector, ctx): if 'custom_variable' in ctx: return True else: return False, _('{selector} Custom Validator Error Str') registration_form_validator = ( ('email', gl.required, gl.format_email), ('pw', gl.required, gl.length_min(5)), ('name', gl.required, gl.type_(str)), ('birth_year', gl.required, gl.type_(int), gl.lt((2014 - 18))), ('is_email_validated', gl.required, gl.type_(bool)), ('is_blocked', gl.required, gl.type_(bool)), custom_validator ) def test_registration_form(): validator_func = partial(gl.validate, registration_form_validator, ctx={'custom_variable': 'exists', 'lazy': True}) success_result = validator_func(valid_test_data) failure_result = validator_func(invalid_test_data) assert success_result.success is True assert success_result.errors == []