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
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
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
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
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
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