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_validation_error_messages(path): builder = ConfigBuilder() custom_message = "test error" builder.validate_field_value("server.debug_mode", lambda x: (x, custom_message)) expected_message = f'Error validating field "server.debug_mode" with value "False": {custom_message}' with pytest.raises(AssertionError, match=expected_message): builder.parse_config(path)
def test_value_validation_builder(): builder = ConfigBuilder() builder.validate_field_value("key1", lambda x: x < 4) builder.validate_field_value("key1.key2", lambda x: len(x) == 3) value_validation_dict = builder._ConfigBuilder__validation_functions assert value_validation_dict["key1"][0](1) assert not value_validation_dict["key1"][0](4) assert value_validation_dict["key1.key2"][0]([1, 2, 3]) assert not value_validation_dict["key1.key2"][0](["a", "b"])
def test_value_validation(path): builder = ConfigBuilder() builder.validate_field_value("server.debug_mode", lambda x: not x) builder.validate_field_value("server.port", [lambda x: x < 10000, lambda x: x > 1023]) builder.parse_config(path) builder.validate_field_value("server.port", lambda x: x > 6000) with pytest.raises(AssertionError): builder.parse_config(path) builder = ConfigBuilder() builder = builder.validate_field_value("cache.ttl", lambda x: x > 200) with pytest.raises(AssertionError): builder.parse_config(path)