// Path: nakadi-producer/src/main/java/org/zalando/nakadiproducer/transmission/MockNakadiPublishingClient.java
// public class MockNakadiPublishingClient implements NakadiPublishingClient {
//     private final ObjectMapper objectMapper;
//     private final MultiValueMap<String, String> sentEvents = new LinkedMultiValueMap<>();
// 
//     public MockNakadiPublishingClient() {
//         this(createDefaultObjectMapper());
//     }
// 
//     public MockNakadiPublishingClient(ObjectMapper objectMapper) {
//         this.objectMapper = objectMapper;
//     }
// 
//     @Override
//     public synchronized void publish(String eventType, List<?> nakadiEvents) throws Exception {
//         nakadiEvents.stream().map(this::transformToJson).forEach(e -> sentEvents.add(eventType, e));
//     }
// 
//     public synchronized List<String> getSentEvents(String eventType) {
//         ArrayList<String> events = new ArrayList<>();
//         List<String> sentEvents = this.sentEvents.get(eventType);
//         if (sentEvents != null) {
//             events.addAll(sentEvents);
//         }
//         return events;
//     }
// 
//     public synchronized void clearSentEvents() {
//         sentEvents.clear();
//     }
// 
//     private String transformToJson(Object value) {
//         try {
//             return objectMapper.writeValueAsString(value);
//         } catch (JsonProcessingException e) {
//             throw new RuntimeException(e);
//         }
//     }
// 
//     private static ObjectMapper createDefaultObjectMapper() {
//         final ObjectMapper objectMapper = new ObjectMapper();
//         objectMapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE);
//         objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
//         objectMapper.registerModules(new Jdk8Module(), new ParameterNamesModule(), new JavaTimeModule());
//         objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
//         return objectMapper;
//     }
// }
// 
// Path: nakadi-producer/src/main/java/org/zalando/nakadiproducer/transmission/NakadiPublishingClient.java
// public interface NakadiPublishingClient {
//     void publish(String eventType, List<?> nakadiEvents) throws Exception;
// }


import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.zalando.nakadiproducer.transmission.MockNakadiPublishingClient;
import org.zalando.nakadiproducer.transmission.NakadiPublishingClient;
package org.zalando.nakadiproducer.config;


@Configuration
public class MockNakadiClientConfig {
    @Bean
// Path: nakadi-producer/src/main/java/org/zalando/nakadiproducer/transmission/MockNakadiPublishingClient.java
// public class MockNakadiPublishingClient implements NakadiPublishingClient {
//     private final ObjectMapper objectMapper;
//     private final MultiValueMap<String, String> sentEvents = new LinkedMultiValueMap<>();
// 
//     public MockNakadiPublishingClient() {
//         this(createDefaultObjectMapper());
//     }
// 
//     public MockNakadiPublishingClient(ObjectMapper objectMapper) {
//         this.objectMapper = objectMapper;
//     }
// 
//     @Override
//     public synchronized void publish(String eventType, List<?> nakadiEvents) throws Exception {
//         nakadiEvents.stream().map(this::transformToJson).forEach(e -> sentEvents.add(eventType, e));
//     }
// 
//     public synchronized List<String> getSentEvents(String eventType) {
//         ArrayList<String> events = new ArrayList<>();
//         List<String> sentEvents = this.sentEvents.get(eventType);
//         if (sentEvents != null) {
//             events.addAll(sentEvents);
//         }
//         return events;
//     }
// 
//     public synchronized void clearSentEvents() {
//         sentEvents.clear();
//     }
// 
//     private String transformToJson(Object value) {
//         try {
//             return objectMapper.writeValueAsString(value);
//         } catch (JsonProcessingException e) {
//             throw new RuntimeException(e);
//         }
//     }
// 
//     private static ObjectMapper createDefaultObjectMapper() {
//         final ObjectMapper objectMapper = new ObjectMapper();
//         objectMapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE);
//         objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
//         objectMapper.registerModules(new Jdk8Module(), new ParameterNamesModule(), new JavaTimeModule());
//         objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
//         return objectMapper;
//     }
// }
// 
// Path: nakadi-producer/src/main/java/org/zalando/nakadiproducer/transmission/NakadiPublishingClient.java
// public interface NakadiPublishingClient {
//     void publish(String eventType, List<?> nakadiEvents) throws Exception;
// }


// Path: nakadi-producer-spring-boot-starter/src/test/java/org/zalando/nakadiproducer/config/MockNakadiClientConfig.java
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.zalando.nakadiproducer.transmission.MockNakadiPublishingClient;
import org.zalando.nakadiproducer.transmission.NakadiPublishingClient;

package org.zalando.nakadiproducer.config;


@Configuration
public class MockNakadiClientConfig {
    @Bean
    public NakadiPublishingClient nakadiClient() {