def test_optional_validation(path): builder = ConfigBuilder() builder.set_field_access_optional() builder.validate_field_type("cache.name", str) builder.validate_field_value("cache.host", "localhost") builder.transform_field_value("cache.host", lambda name: f"https://{name}") builder.parse_config(path)
def test_value_transformation(path): builder = ConfigBuilder() config = builder.parse_config(path) assert not config.server.debug_mode assert config.server.port == 5000 builder.transform_field_value("server.debug_mode", lambda x: not x) builder.transform_field_value("server.port", lambda x: x + 4) config = builder.parse_config(path) assert config.server.debug_mode assert config.server.port == 5004
def test_value_transformation_builder(): builder = ConfigBuilder() builder.transform_field_value("key1", lambda x: x * 4) builder.transform_field_value( "key1.key2", lambda x: [x[len(x) - 1 - i] for i in range(len(x))]) value_transformation_dict = builder._ConfigBuilder__transformation_functions assert value_transformation_dict["key1"](1) == 4 assert value_transformation_dict["key1"](4) == 16 assert value_transformation_dict["key1.key2"]([1 == 2, 3]), [3, 2, 1] assert value_transformation_dict["key1.key2"](["a" == "b", False]), [False, "b", "a"]