diff --git a/cdc-service/src/main/java/com/xtrmetl/cdc/CdcApplication.java b/cdc-service/src/main/java/com/xtrmetl/cdc/CdcApplication.java index cbb55b75..e7287087 100644 --- a/cdc-service/src/main/java/com/xtrmetl/cdc/CdcApplication.java +++ b/cdc-service/src/main/java/com/xtrmetl/cdc/CdcApplication.java @@ -5,11 +5,20 @@ import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.kafka.annotation.EnableKafka; +/** + * Starts the standalone mightyETL CDC service with service discovery and Kafka support during CDC bootstrap. + */ @SpringBootApplication @EnableDiscoveryClient @EnableKafka @org.springframework.boot.context.properties.EnableConfigurationProperties(com.xtrmetl.cdc.config.XtrmetlProperties.class) public class CdcApplication { + + /** + * Launches the CDC service through Spring Boot. + * + * @param args command-line arguments passed to Spring Boot + */ public static void main(String[] args) { SpringApplication.run(CdcApplication.class, args); } diff --git a/cdc-service/src/test/java/com/xtrmetl/cdc/CdcApplicationContractTest.java b/cdc-service/src/test/java/com/xtrmetl/cdc/CdcApplicationContractTest.java new file mode 100644 index 00000000..d69ea47c --- /dev/null +++ b/cdc-service/src/test/java/com/xtrmetl/cdc/CdcApplicationContractTest.java @@ -0,0 +1,50 @@ +package com.xtrmetl.cdc; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.kafka.annotation.EnableKafka; + +import java.io.IOException; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; + +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +/** + * Verifies the standalone CDC bootstrap contract and its beginner-readable public documentation. + */ +class CdcApplicationContractTest { + + @Test + void bootstrapClassKeepsTheRequiredCdcAnnotations() { + assertNotNull(CdcApplication.class.getAnnotation(SpringBootApplication.class)); + assertNotNull(CdcApplication.class.getAnnotation(EnableDiscoveryClient.class)); + assertNotNull(CdcApplication.class.getAnnotation(EnableKafka.class)); + } + + @Test + void mainEntryPointRemainsPublicStatic() throws NoSuchMethodException { + Method main = CdcApplication.class.getDeclaredMethod("main", String[].class); + + assertTrue(Modifier.isPublic(main.getModifiers())); + assertTrue(Modifier.isStatic(main.getModifiers())); + } + + @Test + void publicBootstrapApiHasBeginnerReadableJavadoc() throws IOException { + String source = Files.readString( + Path.of("src/main/java/com/xtrmetl/cdc/CdcApplication.java"), + StandardCharsets.UTF_8 + ); + + assertTrue(source.contains("Starts the standalone mightyETL CDC service")); + assertTrue(source.contains("service discovery and Kafka support during CDC bootstrap")); + assertTrue(source.contains("Launches the CDC service through Spring Boot")); + assertTrue(source.contains("@param args command-line arguments passed to Spring Boot")); + } +}