def test_form_from_model_valid_form(): assert [ x.value for x in Form.from_model( model=FormFromModelTest, include=['f_int', 'f_float', 'f_bool'], data=Data(f_int='1', f_float='1.1', f_bool='true')).fields ] == [1, 1.1, True]
def test_field_from_model_many_to_one_foreign_key(): assert set( Form.from_model( data={}, model=Bar, field__foo__class=Field.from_model).fields_by_name.keys()) == { 'foo' }
def test_field_from_model_foreign_key2(): form = Form.from_model( data={}, model=FieldFromModelOneToOneTest, field__foo_one_to_one__class=Field.from_model_expand, field__foo_one_to_one__field__foo__label='blaha', ) assert set(form.fields_by_name.keys()) == {'foo_one_to_one__foo'} assert form.fields_by_name['foo_one_to_one__foo'].label == 'blaha'
def test_form_from_model_valid_form(): assert [x.value for x in Form.from_model( model=FormFromModelTest, include=['f_int', 'f_float', 'f_bool'], data=dict(f_int='1', f_float='1.1', f_bool='true') ).fields] == [ 1, 1.1, True ]
def test_form_from_model_invalid_form(): actual_errors = [x.errors for x in Form.from_model( model=FormFromModelTest, exclude=['f_int_excluded'], data=dict(f_int='1.1', f_float='true', f_bool='asd', f_file='foo') ).fields] assert len(actual_errors) == 4 assert {'could not convert string to float: true'} in actual_errors assert {u'asd is not a valid boolean value'} in actual_errors assert {"invalid literal for int() with base 10: '1.1'"} in actual_errors or {"invalid literal for int() with base 10: u'1.1'"} in actual_errors
def test_null_field_factory(): class ShouldBeNullField(models.Field): pass class FooModel(models.Model): should_be_null = ShouldBeNullField() foo = models.IntegerField() register_field_factory(ShouldBeNullField, lambda **_: None) form = Form.from_model(data=None, model=FooModel) assert list(form.fields_by_name.keys()) == ['foo']
def test_form_from_model_invalid_form(): actual_errors = [ x.errors for x in Form.from_model( model=FormFromModelTest, exclude=['f_int_excluded'], data=Data(f_int='1.1', f_float='true', f_bool='asd')).fields ] assert len(actual_errors) == 3 assert {'could not convert string to float: true'} in actual_errors assert {u'asd is not a valid boolean value'} in actual_errors assert {"invalid literal for int() with base 10: '1.1'" } in actual_errors or { "invalid literal for int() with base 10: u'1.1'" } in actual_errors
def test_field_from_model_foreign_key2(): assert Form.from_model(data={}, model=FieldFromModelOneToOneTest, foo_one_to_one__class=Field.from_model_expand).fields_by_name.keys() == ['foo_one_to_one__foo']
def test_form_from_model(): assert [x.value for x in Form.from_model(model=FormFromModelTest, include=['f_int', 'f_float', 'f_bool'], data=Data(f_int='1', f_float='1.1', f_bool='true')).validate().fields] == [1, 1.1, True] assert [x.errors for x in Form.from_model(model=FormFromModelTest, exclude=['f_int_excluded'], data=Data(f_int='1.1', f_float='true', f_bool='asd')).validate().fields] == [{"invalid literal for int() with base 10: '1.1'"}, {'could not convert string to float: true'}, {u'asd is not a valid boolean value'}]
def test_field_from_model_many_to_one_foreign_key(): assert set(Form.from_model( data={}, model=Bar, field__foo__class=Field.from_model ).fields_by_name.keys()) == {'foo'}