Git Product home page Git Product logo

Comments (4)

tomix26 avatar tomix26 commented on July 28, 2024 1

Hi @cfecherolle. Try creating the following bean:

@Bean
public PostgreSQLContainerCustomizer postgresContainerCustomizer() {
    return container -> container.withDatabaseName("template1");
}

It ses the $POSTGRES_DB property to the template1 database, which is used as a template for creating all new databases. Maybe I could set this setting as default, but I need to check the possible drawbacks first.

from embedded-database-spring-test.

cfecherolle avatar cfecherolle commented on July 28, 2024 1

Hi @tomix26,

Thanks for the help!
Actually, I forgot to post here but I found a solution to my issue last week. As you said, this can work by using Flyway to execute the CREATE EXTENSION query in a migration script before tests.
I intend to use Flyway soon in my app anyway, so the added weight from the new dependencies was not a deal breaker to me.

If it can help others, here is what I did:

  1. Added these dependencies to my pom.xml:
<dependency>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-core</artifactId>
    <version>6.5.7</version>
</dependency>
<dependency>
    <groupId>org.flywaydb.flyway-test-extensions</groupId>
    <artifactId>flyway-spring-test</artifactId>
    <version>6.4.0</version>
    <scope>test</scope>
</dependency>
  1. Added @FlywayTest annotation to the tests which require PostGIS to create their database schema.

  2. Added a migration file V1__create-postgis-extension.sql containing CREATE EXTENSION IF NOT EXISTS postgis;

  3. Adapted my Spring Boot configuration to enable Flyway and set the correct location to my migration file:

spring:
  # Flyway migrations are enabled for this profile in order to create (= enable) the PostGIS extension
  # Without this hack to enable extension creation, the database schema cannot be created with DDL auto because of missing data types (such as geometry)
  flyway:
    enabled: true
    locations: classpath:/db/migration/<your_migrations_directory>

The database name fix looks good too and would be lighter, so I'm going to try it too.

from embedded-database-spring-test.

tomix26 avatar tomix26 commented on July 28, 2024

By the way, you could also add extension registration to flyway or liquibase scripts, that would work too.

from embedded-database-spring-test.

cfecherolle avatar cfecherolle commented on July 28, 2024

... And the PostgreSQLContainerCustomizer bean solution also works, without Flyway 🎉 Thank you!

from embedded-database-spring-test.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.