use of com.bakdata.quick.common.type.TopicTypeService in project quick by bakdata.
the class MutationFetcherTest method shouldIngestDataWithDifferentKeyTypes.
@ParameterizedTest(name = "shouldIngestDataWithDifferentKeyTypes ({0})")
@MethodSource("provideValueArgumentsForKeys")
<K, T> void shouldIngestDataWithDifferentKeyTypes(final TestParameterBuilder<K, String, T> testParameter) throws Exception {
final String topic = testParameter.getTopic();
final QuickData<T> keyInfo = testParameter.getInfoType();
final QuickTopicData<T, String> info = new QuickTopicData<>(topic, TopicWriteType.MUTABLE, keyInfo, TestTypeUtils.newStringData());
final KafkaConfig kafkaConfig = new KafkaConfig(kafkaCluster.getBrokerList(), schemaRegistry.getUrl());
kafkaCluster.createTopic(TopicConfig.withName(topic).useDefaults());
final TopicTypeService typeService = topicTypeService(keyInfo.getType(), QuickTopicType.STRING, null);
final KafkaIngestService kafkaIngestService = new KafkaIngestService(typeService, kafkaConfig);
final DataFetcher<String> mutationFetcher = new MutationFetcher<>(topic, "id", "name", new Lazy<>(() -> info), kafkaIngestService);
final KeyValue<K, String> keyValue = testParameter.getKeyValue();
final DataFetchingEnvironment env = DataFetchingEnvironmentImpl.newDataFetchingEnvironment().arguments(Map.of("id", keyValue.getKey(), "name", keyValue.getValue())).build();
final String actual = mutationFetcher.get(env);
assertThat(actual).isEqualTo(keyValue.getValue());
final Optional<KeyValue<String, String>> consumedRecords = kafkaCluster.read(ReadKeyValues.from(topic, String.class).with(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, keyInfo.getSerde().deserializer().getClass()).with(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class)).stream().findFirst();
assertThat(consumedRecords).isPresent().get().hasFieldOrPropertyWithValue("key", keyValue.getKey()).hasFieldOrPropertyWithValue("value", keyValue.getValue());
}
Aggregations