Exemplo n.º 1
0
def test_field_evaluate_implicit_typecast_integer():
    schema_loader = SchemaLoader()
    name = schema_loader.add_schema_spec({
        'Name': 'max_attempts',
        'Type': Type.INTEGER,
        'Value': '23.45'
    })
    field_schema = IntegerFieldSchema(name, schema_loader)
    field = Field(field_schema, EvaluationContext())
    field.run_evaluate()

    assert field._snapshot == 23
Exemplo n.º 2
0
def test_field_evaluate_implicit_typecast_bool():
    schema_loader = SchemaLoader()
    name = schema_loader.add_schema_spec({
        'Name': 'max_attempts',
        'Type': Type.BOOLEAN,
        'Value': '1+2'
    })
    field_schema = BooleanFieldSchema(name, schema_loader)
    field = Field(field_schema, EvaluationContext())
    field.run_evaluate()

    assert field._snapshot is True
Exemplo n.º 3
0
def test_set_field_snapshot_decoding():
    schema_loader = SchemaLoader()
    name = schema_loader.add_schema_spec({
        'Name': 'test',
        'Type': Type.SET,
        'Value': 'test.add(0).add(1)'
    })
    field_schema = SetFieldSchema(name, schema_loader)
    field = Field(field_schema, EvaluationContext())
    field.run_restore([2, 3])

    assert field.value == {2, 3}
    assert field._snapshot
    assert isinstance(field._snapshot, list)
    assert set(field._snapshot) == field.value
Exemplo n.º 4
0
def test_set_field_snapshot_encoding():
    schema_loader = SchemaLoader()
    name = schema_loader.add_schema_spec({
        'Name': 'test',
        'Type': Type.SET,
        'Value': 'test.add(0).add(1)'
    })
    field_schema = SetFieldSchema(name, schema_loader)
    field = Field(field_schema, EvaluationContext())
    field._evaluation_context.global_add('test', field.value)
    field.run_evaluate()

    assert field.value == {0, 1}
    assert field._snapshot
    assert isinstance(field._snapshot, list)
    assert set(field._snapshot) == field.value
Exemplo n.º 5
0
def test_field_evaluate_incorrect_typecast_to_type_default(caplog):
    caplog.set_level(logging.DEBUG)
    schema_loader = SchemaLoader()
    name = schema_loader.add_schema_spec({
        'Name': 'max_attempts',
        'Type': Type.INTEGER,
        'Value': '"Hi"'
    })
    field_schema = IntegerFieldSchema(name, schema_loader)
    field = Field(field_schema, EvaluationContext())
    field.run_evaluate()

    assert field.value == 0
    assert (
        'ValueError in casting Hi to Type.INTEGER for field max_attempts. Error: invalid '
        'literal for int() with base 10: \'Hi\'') in caplog.records[0].message
    assert caplog.records[0].levelno == logging.DEBUG
Exemplo n.º 6
0
def test_set_field_sanitize():
    schema_loader = SchemaLoader()
    name = schema_loader.add_schema_spec({
        'Name': 'test',
        'Type': 'integer',
        'Value': 'test+1'
    })
    field_schema = MockFieldSchema(name, schema_loader)
    field = Field(field_schema, EvaluationContext())
    field._evaluation_context.global_add('test', 98)

    field.run_evaluate()
    assert field.value == 99
    field._evaluation_context.global_add('test', field.value)

    field.run_evaluate()
    assert field.value == -100
    field._evaluation_context.global_add('test', field.value)

    field.run_evaluate()
    assert field.value == -99