コード例 #1
0
ファイル: test_boolean.py プロジェクト: larsks/kim
def test_is_allowed_value():

    field = Boolean(name='test')
    session = Session(field, 'test', {})

    with pytest.raises(FieldInvalid):
        is_valid_choice(session)

    session.data = True
    assert is_valid_choice(session) is True

    session.data = 'true'
    assert is_valid_choice(session) == 'true'

    session.data = '1'
    assert is_valid_choice(session) == '1'

    session.data = 'True'
    assert is_valid_choice(session) == 'True'

    session.data = False
    assert is_valid_choice(session) is False

    session.data = 'false'
    assert is_valid_choice(session) == 'false'

    session.data = '0'
    assert is_valid_choice(session) == '0'

    session.data = 0
    assert is_valid_choice(session) == 0

    session.data = 'False'
    assert is_valid_choice(session) == 'False'
コード例 #2
0
ファイル: test_datetime.py プロジェクト: larsks/kim
def test_is_valid_datetime_pipe():
    """test piping data through is_valid_datetime.
    """

    field = DateTime(name='test')
    session = Session(field, 'test', {})

    with pytest.raises(FieldInvalid):
        is_valid_datetime(session)

    session.data = '2016-02-29T12:00:12Z'
    assert is_valid_datetime(session) == \
        datetime(2016, 2, 29, 12, 0, 12, tzinfo=Utc())
    session.data = '2015-06-29T08:00:12Z'
    assert is_valid_datetime(session) == \
        datetime(2015, 6, 29, 8, 0, 12, tzinfo=Utc())
コード例 #3
0
ファイル: test_numeric.py プロジェクト: mikeywaites/kim
def test_is_valid_decimal_pipe():
    """test piping data through is_valid_decimal.
    """

    field = Decimal(name='test')
    session = Session(field, 'test', {})

    with pytest.raises(FieldInvalid):
        is_valid_decimal(session)

    session.data = '2.5'
    assert is_valid_decimal(session) == decimal.Decimal('2.5')
    session.data = 2
    assert is_valid_decimal(session) == decimal.Decimal(2)
    session.data = 2.3
    assert is_valid_decimal(session) == decimal.Decimal(2.3)
コード例 #4
0
ファイル: test_numeric.py プロジェクト: mikeywaites/kim
def test_is_valid_integer_pipe():
    """test piping data through is_valid_integer.
    """

    field = Integer(name='test')
    session = Session(field, 'test', {})

    with pytest.raises(FieldInvalid):
        is_valid_integer(session)

    session.data = '2'
    assert is_valid_integer(session) == 2
    session.data = 2
    assert is_valid_integer(session) == 2
    session.data = 2.3
    assert is_valid_integer(session) == 2
コード例 #5
0
def test_is_valid_integer_pipe():
    """test piping data through is_valid_integer.
    """

    field = Integer(name='test')
    session = Session(field, 'test', {})

    with pytest.raises(FieldInvalid):
        is_valid_integer(session)

    session.data = '2'
    assert is_valid_integer(session) == 2
    session.data = 2
    assert is_valid_integer(session) == 2
    session.data = 2.3
    assert is_valid_integer(session) == 2
コード例 #6
0
def test_is_valid_decimal_pipe():
    """test piping data through is_valid_decimal.
    """

    field = Decimal(name='test')
    session = Session(field, 'test', {})

    with pytest.raises(FieldInvalid):
        is_valid_decimal(session)

    session.data = '2.5'
    assert is_valid_decimal(session) == decimal.Decimal('2.5')
    session.data = 2
    assert is_valid_decimal(session) == decimal.Decimal(2)
    session.data = 2.3
    assert is_valid_decimal(session) == decimal.Decimal(2.3)
コード例 #7
0
ファイル: test_boolean.py プロジェクト: larsks/kim
def test_is_allowed_value_with_custom_values():

    field = Boolean(name='test', true_boolean_values=['foo'],
                    false_boolean_values=['bar'])

    data = True
    session = Session(field, data, {})

    with pytest.raises(FieldInvalid):
        is_valid_choice(session)

    session.data = False
    with pytest.raises(FieldInvalid):
        is_valid_choice(session)

    session.data = 'foo'
    assert is_valid_choice(session) == 'foo'
    session.data = 'bar'
    assert is_valid_choice(session) == 'bar'
コード例 #8
0
ファイル: test_base.py プロジェクト: ipv1337/kim
def test_update_output_to_name_with_dict():

    data = {'name': 'mike', 'test': 'true', 'nested': {'foo': 'bar'}}

    output = {}

    field = Field(name='name', required=True)
    session = Session(field, data, output)
    session.data = data['name']
    update_output_to_name(session)
    assert output == {'name': 'mike'}
コード例 #9
0
ファイル: test_base.py プロジェクト: ipv1337/kim
def test_update_output_to_source_with_object_dot_notiation():
    class MyObject(object):
        pass

    output = MyObject()
    output.nested = MyObject()

    field = Field(source='nested.source', required=True)
    session = Session(field, {'name': 'mike'}, output)
    session.data = 'mike'

    update_output_to_source(session)
    assert output.nested.source == 'mike'
コード例 #10
0
ファイル: test_base.py プロジェクト: ipv1337/kim
def test_update_output_to_source_with_object():

    data = {'source': 'mike', 'test': 'true', 'nested': {'foo': 'bar'}}

    class MyObject(object):
        pass

    output = MyObject()
    field = Field(source='source', required=True)
    session = Session(field, data, output)
    session.data = data['source']

    update_output_to_source(session)
    assert output.source == 'mike'
コード例 #11
0
ファイル: test_base.py プロジェクト: mikeywaites/kim
def test_update_output_to_source_with_object_dot_notiation():

    class MyObject(object):
        pass

    output = MyObject()
    output.nested = MyObject()

    field = Field(source='nested.source', required=True)
    session = Session(field, {'name': 'mike'}, output)
    session.data = 'mike'

    update_output_to_source(session)
    assert output.nested.source == 'mike'
コード例 #12
0
ファイル: test_base.py プロジェクト: mikeywaites/kim
def test_update_output_to_name_with_dict():

    data = {
        'name': 'mike',
        'test': 'true',
        'nested': {'foo': 'bar'}
    }

    output = {}

    field = Field(name='name', required=True)
    session = Session(field, data, output)
    session.data = data['name']
    update_output_to_name(session)
    assert output == {'name': 'mike'}
コード例 #13
0
ファイル: test_base.py プロジェクト: larsks/kim
def test_set_default():

    data = {
        'name': None,
        'test': 'true',
        'nested': {'foo': 'bar'}
    }

    output = {}

    field = Field(name='name', required=True, default='default')
    session = Session(field, data, output)
    session.data = data['name']
    set_default(session)
    assert session.data == 'default'
コード例 #14
0
ファイル: test_base.py プロジェクト: larsks/kim
def test_set_default_falsy():
    # Default should not apply if value is falsy

    data = {
        'name': '',
        'test': 'true',
        'nested': {'foo': 'bar'}
    }

    output = {}

    field = Field(name='name', required=True, default='default')
    session = Session(field, data, output)
    session.data = data['name']
    set_default(session)
    assert session.data == ''
コード例 #15
0
ファイル: test_string.py プロジェクト: larsks/kim
def test_is_valid_string_pipe():
    """test piping data through is_valid_string.
    """
    class InvalidString(object):
        def __str__(self):
            raise ValueError('invalid string')

    field = String(name='test')
    invalid_string = InvalidString()
    session = Session(field, invalid_string, {})

    with pytest.raises(FieldInvalid):
        is_valid_string(session)

    session.data = 'yes'
    assert is_valid_string(session) == 'yes'
コード例 #16
0
ファイル: test_string.py プロジェクト: mikeywaites/kim
def test_is_valid_string_pipe():
    """test piping data through is_valid_string.
    """

    class InvalidString(object):

        def __str__(self):
            raise ValueError('invalid string')

    field = String(name='test')
    invalid_string = InvalidString()
    session = Session(field, invalid_string, {})

    with pytest.raises(FieldInvalid):
        is_valid_string(session)

    session.data = 'yes'
    assert is_valid_string(session) == 'yes'
コード例 #17
0
ファイル: test_base.py プロジェクト: mikeywaites/kim
def test_update_output_to_source_with_object():

    data = {
        'source': 'mike',
        'test': 'true',
        'nested': {'foo': 'bar'}
    }

    class MyObject(object):
        pass

    output = MyObject()
    field = Field(source='source', required=True)
    session = Session(field, data, output)
    session.data = data['source']

    update_output_to_source(session)
    assert output.source == 'mike'