@@ -61,7 +61,7 @@ class EmsSinkConfigTest extends AnyFunSuite with Matchers {
6161 http = UnproxiedHttpClientConfig (defaultPoolingConfig),
6262 explode = ExplodeConfig .None ,
6363 orderField = OrderFieldConfig (EmbeddedKafkaMetadataFieldInserter .CelonisOrderFieldName .some),
64- preConversionConfig = PreConversionConfig (convertDecimalsToFloat = false ),
64+ preConversionConfig = PreConversionConfig (convertDecimalsToFloat = false , convertFieldsToLowercase = false ),
6565 flattenerConfig = None ,
6666 embedKafkaMetadata = true ,
6767 useInMemoryFileSystem = false ,
@@ -79,19 +79,40 @@ class EmsSinkConfigTest extends AnyFunSuite with Matchers {
7979
8080 test(s " parse PreConversionConfig " ) {
8181 val expectedWithDefault =
82- anEmsSinkConfig.copy(preConversionConfig = PreConversionConfig (convertDecimalsToFloat = false ))
83- val properties = propertiesFromConfig(expectedWithDefault).removed(DECIMAL_CONVERSION_KEY )
82+ anEmsSinkConfig.copy(preConversionConfig =
83+ PreConversionConfig (convertDecimalsToFloat = false , convertFieldsToLowercase = false ),
84+ )
85+ val properties =
86+ propertiesFromConfig(expectedWithDefault).removed(DECIMAL_CONVERSION_KEY ).removed(TRANSFORM_FIELDS_LOWERCASE_KEY )
8487 parseProperties(properties) shouldBe Right (expectedWithDefault)
8588
86- val expectedWithConversion =
87- anEmsSinkConfig.copy(preConversionConfig = PreConversionConfig (convertDecimalsToFloat = true ))
88- val propertiesWithConversion = propertiesFromConfig(expectedWithConversion)
89- parseProperties(propertiesWithConversion) shouldBe Right (expectedWithConversion)
90-
91- val expectedWithoutConversion =
92- anEmsSinkConfig.copy(preConversionConfig = PreConversionConfig (convertDecimalsToFloat = false ))
93- val propertiesWithoutConversion = propertiesFromConfig(expectedWithoutConversion)
94- parseProperties(propertiesWithoutConversion) shouldBe Right (expectedWithoutConversion)
89+ val expectedWithDecimalConversion =
90+ anEmsSinkConfig.copy(preConversionConfig =
91+ PreConversionConfig (convertDecimalsToFloat = true , convertFieldsToLowercase = false ),
92+ )
93+ val propertiesWithDecimalConversion = propertiesFromConfig(expectedWithDecimalConversion)
94+ parseProperties(propertiesWithDecimalConversion) shouldBe Right (expectedWithDecimalConversion)
95+
96+ val expectedWithFieldNamesConversion =
97+ anEmsSinkConfig.copy(preConversionConfig =
98+ PreConversionConfig (convertDecimalsToFloat = false , convertFieldsToLowercase = true ),
99+ )
100+ val propertiesWithFieldNamesConversion = propertiesFromConfig(expectedWithFieldNamesConversion)
101+ parseProperties(propertiesWithFieldNamesConversion) shouldBe Right (expectedWithFieldNamesConversion)
102+
103+ val expectedWithAllConversions =
104+ anEmsSinkConfig.copy(preConversionConfig =
105+ PreConversionConfig (convertDecimalsToFloat = true , convertFieldsToLowercase = true ),
106+ )
107+ val propertiesWithAllConversions = propertiesFromConfig(expectedWithAllConversions)
108+ parseProperties(propertiesWithAllConversions) shouldBe Right (expectedWithAllConversions)
109+
110+ val expectedWithoutConversions =
111+ anEmsSinkConfig.copy(preConversionConfig =
112+ PreConversionConfig (convertDecimalsToFloat = false , convertFieldsToLowercase = false ),
113+ )
114+ val propertiesWithoutConversion = propertiesFromConfig(expectedWithoutConversions)
115+ parseProperties(propertiesWithoutConversion) shouldBe Right (expectedWithoutConversions)
95116 }
96117
97118 test(s " returns an error if AUTHORIZATION_KEY is missing " ) {
@@ -240,23 +261,24 @@ class EmsSinkConfigTest extends AnyFunSuite with Matchers {
240261 }
241262
242263 private def propertiesFromConfig (config : EmsSinkConfig ): Map [String , _] = Map (
243- " name" -> config.sinkName,
244- ENDPOINT_KEY -> config.url.toString,
245- TARGET_TABLE_KEY -> config.target,
246- AUTHORIZATION_KEY -> config.authorization.header,
247- ERROR_POLICY_KEY -> config.errorPolicyConfig.policyType.toString,
248- COMMIT_SIZE_KEY -> config.commitPolicy.fileSize,
249- COMMIT_INTERVAL_KEY -> config.commitPolicy.interval,
250- COMMIT_RECORDS_KEY -> config.commitPolicy.records,
251- ERROR_RETRY_INTERVAL -> config.errorPolicyConfig.retryConfig.interval,
252- ERROR_POLICY_RETRIES_KEY -> config.errorPolicyConfig.retryConfig.retries,
253- TMP_DIRECTORY_KEY -> config.workingDir.toString,
254- PRIMARY_KEYS_KEY -> config.primaryKeys.mkString(" ," ),
255- CONNECTION_ID_KEY -> config.connectionId.get,
256- ORDER_FIELD_NAME_KEY -> config.orderField.name.orNull,
257- FALLBACK_VARCHAR_LENGTH_KEY -> config.fallbackVarCharLengths.orNull,
258- DECIMAL_CONVERSION_KEY -> config.preConversionConfig.convertDecimalsToFloat,
259- FLATTENER_ENABLE_KEY -> config.flattenerConfig.isDefined,
264+ " name" -> config.sinkName,
265+ ENDPOINT_KEY -> config.url.toString,
266+ TARGET_TABLE_KEY -> config.target,
267+ AUTHORIZATION_KEY -> config.authorization.header,
268+ ERROR_POLICY_KEY -> config.errorPolicyConfig.policyType.toString,
269+ COMMIT_SIZE_KEY -> config.commitPolicy.fileSize,
270+ COMMIT_INTERVAL_KEY -> config.commitPolicy.interval,
271+ COMMIT_RECORDS_KEY -> config.commitPolicy.records,
272+ ERROR_RETRY_INTERVAL -> config.errorPolicyConfig.retryConfig.interval,
273+ ERROR_POLICY_RETRIES_KEY -> config.errorPolicyConfig.retryConfig.retries,
274+ TMP_DIRECTORY_KEY -> config.workingDir.toString,
275+ PRIMARY_KEYS_KEY -> config.primaryKeys.mkString(" ," ),
276+ CONNECTION_ID_KEY -> config.connectionId.get,
277+ ORDER_FIELD_NAME_KEY -> config.orderField.name.orNull,
278+ FALLBACK_VARCHAR_LENGTH_KEY -> config.fallbackVarCharLengths.orNull,
279+ DECIMAL_CONVERSION_KEY -> config.preConversionConfig.convertDecimalsToFloat,
280+ TRANSFORM_FIELDS_LOWERCASE_KEY -> config.preConversionConfig.convertFieldsToLowercase,
281+ FLATTENER_ENABLE_KEY -> config.flattenerConfig.isDefined,
260282 FLATTENER_DISCARD_COLLECTIONS_KEY -> config.flattenerConfig.map(_.discardCollections).getOrElse(
261283 FLATTENER_DISCARD_COLLECTIONS_DEFAULT ,
262284 ),
0 commit comments