diff --git a/src/main/java/zw/qantra/tm/TmApplication.java b/src/main/java/zw/qantra/tm/TmApplication.java index 08381c4..85384c7 100644 --- a/src/main/java/zw/qantra/tm/TmApplication.java +++ b/src/main/java/zw/qantra/tm/TmApplication.java @@ -1,17 +1,16 @@ package zw.qantra.tm; -import io.nflow.rest.config.RestConfiguration; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCaching; import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; import com.google.gson.Gson; -import org.springframework.context.annotation.Import; import org.springframework.scheduling.annotation.EnableAsync; @SpringBootApplication -@Import(RestConfiguration.class) @EnableCaching @EnableAsync public class TmApplication { @@ -24,4 +23,14 @@ public class TmApplication { public Gson gson() { return new Gson(); } -} + + /** + * Conditionally imports nFlow REST configuration only when NOT running the "test" profile. + * This prevents nFlow's PostgreSQL-dependent beans from loading in tests that use H2. + */ + @Configuration + @Profile("!test") + @org.springframework.context.annotation.Import(io.nflow.rest.config.RestConfiguration.class) + static class NflowRestConfig { + } +} \ No newline at end of file diff --git a/src/main/java/zw/qantra/tm/configs/NflowDatabaseConfig.java b/src/main/java/zw/qantra/tm/configs/NflowDatabaseConfig.java index 92d95f5..f4041c4 100644 --- a/src/main/java/zw/qantra/tm/configs/NflowDatabaseConfig.java +++ b/src/main/java/zw/qantra/tm/configs/NflowDatabaseConfig.java @@ -8,11 +8,13 @@ import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; import org.springframework.core.env.Environment; import javax.sql.DataSource; @Configuration +@Profile("!test") public class NflowDatabaseConfig extends PgDatabaseConfiguration { @Bean @@ -31,4 +33,4 @@ public class NflowDatabaseConfig extends PgDatabaseConfiguration { .initializeDataSourceBuilder() .build(); } -} +} \ No newline at end of file diff --git a/src/test/java/zw/qantra/tm/TmApplicationTests.java b/src/test/java/zw/qantra/tm/TmApplicationTests.java index 674e2d1..e02367b 100644 --- a/src/test/java/zw/qantra/tm/TmApplicationTests.java +++ b/src/test/java/zw/qantra/tm/TmApplicationTests.java @@ -2,10 +2,13 @@ package zw.qantra.tm; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.annotation.Import; import org.springframework.test.context.ActiveProfiles; +import zw.qantra.tm.config.NflowTestConfig; @SpringBootTest @ActiveProfiles("test") +@Import(NflowTestConfig.class) class TmApplicationTests { @Test diff --git a/src/test/java/zw/qantra/tm/config/NflowTestConfig.java b/src/test/java/zw/qantra/tm/config/NflowTestConfig.java new file mode 100644 index 0000000..ac922d5 --- /dev/null +++ b/src/test/java/zw/qantra/tm/config/NflowTestConfig.java @@ -0,0 +1,34 @@ +package zw.qantra.tm.config; + +import io.nflow.engine.internal.workflow.ObjectStringMapper; +import io.nflow.engine.service.WorkflowInstanceService; +import io.nflow.engine.workflow.instance.QueryWorkflowInstances; +import io.nflow.engine.workflow.instance.WorkflowInstanceFactory; +import org.mockito.Mockito; +import org.springframework.boot.test.context.TestConfiguration; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Primary; +import org.springframework.context.annotation.Profile; + +@TestConfiguration +@Profile("test") +public class NflowTestConfig { + + @Bean + @Primary + public WorkflowInstanceFactory workflowInstanceFactory() { + return Mockito.mock(WorkflowInstanceFactory.class); + } + + @Bean + @Primary + public WorkflowInstanceService workflowInstanceService() { + return Mockito.mock(WorkflowInstanceService.class); + } + + @Bean + @Primary + public ObjectStringMapper objectStringMapper() { + return Mockito.mock(ObjectStringMapper.class); + } +} \ No newline at end of file diff --git a/src/test/resources/application-test.properties b/src/test/resources/application-test.properties index 1742323..c59a575 100644 --- a/src/test/resources/application-test.properties +++ b/src/test/resources/application-test.properties @@ -15,7 +15,7 @@ nflow.db.h2.password= nflow.autostart=false # Disable security for tests -spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration,io.nflow.spring.boot.autoconfigure.NflowAutoConfiguration +spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration # Disable jobrunr for tests jobrunr.enabled=false