示例#1
0
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]
示例#2
0
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'
            }
示例#3
0
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'
示例#4
0
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'
示例#5
0
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
    ]
示例#6
0
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
示例#7
0
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']
示例#8
0
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']
示例#9
0
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
示例#10
0
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']
示例#11
0
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'}]
示例#12
0
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'}