Reputation: 17048
I am using Eclipse Store with Postgres as a storage.
I have the below dependencies
plugins {
id("com.github.johnrengelman.shadow") version "8.1.1"
id("io.micronaut.application") version "4.4.4"
id("io.micronaut.aot") version "4.4.4"
id("io.micronaut.test-resources") version "4.4.4"
}
dependencies {
annotationProcessor("io.micronaut:micronaut-http-validation")
annotationProcessor("io.micronaut.eclipsestore:micronaut-eclipsestore-annotations")
annotationProcessor("io.micronaut.serde:micronaut-serde-processor")
implementation("io.micronaut.eclipsestore:micronaut-eclipsestore")
implementation("io.micronaut.eclipsestore:micronaut-eclipsestore-annotations")
implementation("io.micronaut.serde:micronaut-serde-jackson")
compileOnly("io.micronaut:micronaut-http-client")
runtimeOnly("ch.qos.logback:logback-classic")
runtimeOnly("io.micronaut.sql:micronaut-jdbc-hikari")
runtimeOnly("org.postgresql:postgresql")
runtimeOnly("org.eclipse.store:afs-sql")
testImplementation("io.micronaut:micronaut-http-client")
testRuntimeOnly("org.postgresql:postgresql")
}
Trying to use TestPropertyProvider
abstract class BaseFixture extends TestContainerConfig {
@Inject
@Client("/")
HttpClient httpClient;
@TempDir
static File tempDir;
protected final TestDataGenerator testDataGenerator = new TestDataGenerator();
}
public class TestContainerConfig implements TestPropertyProvider {
@Override
public @NonNull Map<String, String> getProperties() {
return Map.of(
"datasources.default.dialect", "POSTGRES",
"datasources.default.db-type", "postgres",
"datasources.default.driver-class-name", "org.postgresql.Driver",
"eclipsestore.postgres.storage.default.table-name", "Tag",
"eclipsestore.postgres.storage.default.root-class", "schoolstaff.Root"
);
}
}
@MicronautTest
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class TagRepositoryGetTest extends BaseFixture{
@Inject
private IEclipseStoreRepository<TagResponse,TagRequest, FilterSortRequest> iEclipseStoreRepository;
@Test
@DisplayName("Should return tag for the specified id")
void shouldReturnTagForTheSpecifiedId() {
// Give
TagRequest requestModel = testDataGenerator.generateRecord(TagRequest.class);
var result = this.iEclipseStoreRepository.create(requestModel);
assertNotNull(result.value.id());
// When
var getResult = this.iEclipseStoreRepository.get(result.value.id());
//Then
assertNotNull(getResult.value.id());
assertTrue(getResult.value.id().equals(result.value.id()));
}
}
In the application.properties
file, I have commented the datasources
eclipsestore.rest.enabled=true
eclipsestore.postgres.storage.default.table-name=Tag
eclipsestore.postgres.storage.default.root-class=schoolstaff.Root
#datasources.default.url=jdbc:postgresql://localhost:5432/school_staff_job
#datasources.default.username=school_staff
#datasources.default.password=password
#datasources.default.driverClassName=org.postgresql.Driver
When using Test resources I think datasources
connection are auto created
Error
Bean definition [javax.sql.DataSource] could not be loaded: Error instantiating bean of type [javax.sql.DataSource]
Message: Error configuring data source 'default'. No URL specified
Path Taken: DatasourceFactory.dataSource(DatasourceConfiguration datasourceConfiguration) --> DatasourceFactory.dataSource([DatasourceConfiguration datasourceConfiguration])
io.micronaut.context.exceptions.BeanInstantiationException: Bean definition [javax.sql.DataSource] could not be loaded: Error instantiating bean of type [javax.sql.DataSource]
Message: Error configuring data source 'default'. No URL specified
Path Taken: DatasourceFactory.dataSource(DatasourceConfiguration datasourceConfiguration) --> DatasourceFactory.dataSource([DatasourceConfiguration datasourceConfiguration])
at io.micronaut.context.DefaultBeanContext.initializeContext(DefaultBeanContext.java:2000)
at io.micronaut.context.DefaultApplicationContext.initializeContext(DefaultApplicationContext.java:314)
at io.micronaut.context.DefaultBeanContext.configureAndStartContext(DefaultBeanContext.java:3318)
at io.micronaut.context.DefaultBeanContext.start(DefaultBeanContext.java:345)
at io.micronaut.context.DefaultApplicationContext.start(DefaultApplicationContext.java:216)
at io.micronaut.test.extensions.AbstractMicronautExtension.startApplicationContext(AbstractMicronautExtension.java:507)
at io.micronaut.test.extensions.AbstractMicronautExtension.beforeClass(AbstractMicronautExtension.java:346)
at io.micronaut.test.extensions.junit5.MicronautJunit5Extension.beforeAll(MicronautJunit5Extension.java:84)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
Caused by: io.micronaut.context.exceptions.BeanInstantiationException: Error instantiating bean of type [javax.sql.DataSource]
Message: Error configuring data source 'default'. No URL specified
Upvotes: 0
Views: 43