Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,15 @@ public JdbcDatabaseContainer(final DockerImageName dockerImageName) {
*/
public abstract String getJdbcUrl();

/**
* @return an R2DBC URL that may be used to connect to the dockerized DB
*/
public String getR2dbcUrl() {
String jdbcUrl = getJdbcUrl();
// Convert JDBC URL to R2DBC URL by replacing jdbc: with r2dbc:
return jdbcUrl.replaceFirst("^jdbc:", "r2dbc:");
}

/**
* @return the database name
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import java.sql.Connection;
import java.sql.SQLException;

import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
import static org.mockito.Mockito.mock;

Expand All @@ -20,6 +21,20 @@ void anExceptionIsThrownIfJdbcIsNotAvailable() {
assertThatExceptionOfType(IllegalStateException.class).isThrownBy(jdbcContainer::waitUntilContainerStarted);
}

@Test
void getR2dbcUrlConvertsJdbcUrlToR2dbcUrl() {
JdbcDatabaseContainerStub jdbcContainer = new JdbcDatabaseContainerStub("mysql:latest") {
@Override
public String getJdbcUrl() {
return "jdbc:mysql://localhost:3306/test";
}
};

String r2dbcUrl = jdbcContainer.getR2dbcUrl();

assertThat(r2dbcUrl).isEqualTo("r2dbc:mysql://localhost:3306/test");
}

static class JdbcDatabaseContainerStub extends JdbcDatabaseContainer {

public JdbcDatabaseContainerStub(@NonNull String dockerImageName) {
Expand Down