def test_enum_field_conversion(self): class TestModel(Document): int_field = ma_fields.EnumField(ma_fields.IntField(), 4, 6, 7) form = model_form(TestModel) assert form.int_field.field_class == wtf_fields.IntegerField assert form.int_field.kwargs['validators'][0].values == (4, 6, 7)
def test_tuple_field_conversion(self): class TestModel(Document): tuple_field = ma_fields.TupleField( ma_fields.IntField(), ma_fields.BoolField(), ma_fields.StringField()) unbound_form = model_form(TestModel) form = unbound_form() assert form.tuple_field.tuple_field_0.__class__ == wtf_fields.IntegerField assert form.tuple_field.tuple_field_1.__class__ == wtf_fields.BooleanField assert form.tuple_field.tuple_field_2.__class__ == wtf_fields.TextField
def assert_convert(ma_field, wtf_field): """helper function for testing that MongoAlchemy fields get converted to proper wtforms fields """ class TestModel(Document): required_field = ma_field(required=True) not_required_field = ma_field(required=False) form = model_form(TestModel) assert form.required_field.field_class == wtf_field not_required_validator_names = [ validator.__class__.__name__ for validator in form.not_required_field.kwargs['validators']] assert 'Optional' in not_required_validator_names
def assert_min_max_length(ma_field): class TestModel(Document): min_field = ma_field(min_length=5) max_field = ma_field(max_length=19) min_max_field = ma_field(min_length=11, max_length=21) form = model_form(TestModel) min_validator = [ validator for validator in form.min_field.kwargs['validators'] if validator.__class__.__name__ == 'Length'][0] max_validator = [ validator for validator in form.max_field.kwargs['validators'] if validator.__class__.__name__ == 'Length'][0] min_max_validator = [ validator for validator in form.min_max_field.kwargs['validators'] if validator.__class__.__name__ == 'Length'][0] assert min_validator.min == 5 assert min_validator.max == -1 assert max_validator.max == 19 assert max_validator.min == -1 assert min_max_validator.min == 11 assert min_max_validator.max == 21
def assert_min_max_number_range(ma_field): class TestModel(Document): min_field = ma_field(min_value=5) max_field = ma_field(max_value=19) min_max_field = ma_field(min_value=11, max_value=21) form = model_form(TestModel) min_validator = [ validator for validator in form.min_field.kwargs['validators'] if validator.__class__.__name__ == 'NumberRange'][0] max_validator = [ validator for validator in form.max_field.kwargs['validators'] if validator.__class__.__name__ == 'NumberRange'][0] min_max_validator = [ validator for validator in form.min_max_field.kwargs['validators'] if validator.__class__.__name__ == 'NumberRange'][0] assert min_validator.min == 5 assert not min_validator.max assert max_validator.max == 19 assert not max_validator.min assert min_max_validator.min == 11 assert min_max_validator.max == 21