diff --git a/src/main/java/org/testcontainers/jooq/codegen/database/DatabaseProvider.java b/src/main/java/org/testcontainers/jooq/codegen/database/DatabaseProvider.java index afbb61c..55c48ff 100644 --- a/src/main/java/org/testcontainers/jooq/codegen/database/DatabaseProvider.java +++ b/src/main/java/org/testcontainers/jooq/codegen/database/DatabaseProvider.java @@ -5,6 +5,7 @@ import org.testcontainers.containers.MariaDBContainer; import org.testcontainers.containers.MySQLContainer; import org.testcontainers.containers.PostgreSQLContainer; +import org.testcontainers.utility.DockerImageName; /** DatabaseProvider provides container instance for a given DatabaseType */ public class DatabaseProvider { @@ -15,9 +16,12 @@ public static JdbcDatabaseContainer getDatabaseContainer(DatabaseProps props) String image = Optional.ofNullable(props.getContainerImage()).orElse(dbType.getDefaultImage()); JdbcDatabaseContainer container = switch (dbType) { - case POSTGRES -> new PostgreSQLContainer<>(image); - case MARIADB -> new MariaDBContainer<>(image); - case MYSQL -> new MySQLContainer<>(image); + case POSTGRES -> new PostgreSQLContainer<>( + DockerImageName.parse(image).asCompatibleSubstituteFor("postgres")); + case MARIADB -> new MariaDBContainer<>( + DockerImageName.parse(image).asCompatibleSubstituteFor("mariadb")); + case MYSQL -> new MySQLContainer<>( + DockerImageName.parse(image).asCompatibleSubstituteFor("mysql")); }; if (isNotEmpty(props.getUsername())) { container.withUsername(props.getUsername()); diff --git a/src/test/java/org/testcontainers/jooq/codegen/PluginTest.java b/src/test/java/org/testcontainers/jooq/codegen/PluginTest.java index 508cc79..ad7a765 100644 --- a/src/test/java/org/testcontainers/jooq/codegen/PluginTest.java +++ b/src/test/java/org/testcontainers/jooq/codegen/PluginTest.java @@ -55,6 +55,20 @@ public void testPostgresLiquibase() throws Exception { .hasGeneratedJooqTable("public_", "Databasechangelog.java"); } + @Test + public void testPostgisFlyway() throws Exception { + // given + MavenProject mavenProject = getMavenProject("postgis-flyway"); + + // when + mojoRule.lookupConfiguredMojo(mavenProject, "generate").execute(); + + // then + assertThatProject(mavenProject) + .hasGeneratedJooqTable("Users.java") + .hasGeneratedJooqTable("FlywaySchemaHistory.java"); + } + @Test public void testMysqlFlyway() throws Exception { // given diff --git a/src/test/resources/pom/postgis-flyway/pom.xml b/src/test/resources/pom/postgis-flyway/pom.xml new file mode 100644 index 0000000..d62b6d7 --- /dev/null +++ b/src/test/resources/pom/postgis-flyway/pom.xml @@ -0,0 +1,92 @@ + + + 4.0.0 + + org.testcontainers + testcontainers-jooq-codegen-maven-plugin-test + 0.0.1-SNAPSHOT + + + 17 + 1.19.0 + 0.0.4-SNAPSHOT + 3.18.3 + 42.6.0 + + + + + org.jooq + jooq-codegen + ${jooq.version} + + + org.jooq + jooq + ${jooq.version} + + + + + + + + org.testcontainers + testcontainers-jooq-codegen-maven-plugin + ${testcontainers-jooq-codegen-maven-plugin.version} + + + org.testcontainers + postgresql + ${testcontainers.version} + + + org.postgresql + postgresql + ${postgresql.version} + + + + generate + + + + generate + + generate + + generate-sources + + + + + POSTGRES + postgis/postgis:15-3.4-alpine + test + test + test + + + + filesystem:${project.basedir}/src/main/resources/db/migration/postgres + + + + + + .* + public + + + org.jooq.codegen.maven.test + target/generated-sources/jooq + + + + + + + + diff --git a/src/test/resources/pom/postgis-flyway/src/main/resources/db/migration/postgres/V1__create_tables.sql b/src/test/resources/pom/postgis-flyway/src/main/resources/db/migration/postgres/V1__create_tables.sql new file mode 100755 index 0000000..46520c7 --- /dev/null +++ b/src/test/resources/pom/postgis-flyway/src/main/resources/db/migration/postgres/V1__create_tables.sql @@ -0,0 +1,16 @@ +create sequence user_id_seq start with 1 increment by 5; + +create table users +( + id bigint DEFAULT nextval('user_id_seq') not null, + email varchar not null, + password varchar not null, + name varchar not null, + role varchar not null, + verified bool not null default false, + verification_token varchar, + created_at timestamp, + updated_at timestamp, + primary key (id), + CONSTRAINT user_email_unique UNIQUE (email) +);