<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.squashtest.tm</groupId>
    <artifactId>dataset-builder-parent</artifactId>
    <version>15.0.0-springboot4.IT2</version>
  </parent>

  <artifactId>dataset-builder-library</artifactId>
  <packaging>jar</packaging>

  <dependencies>

    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>core.foundation</artifactId>
    </dependency>

    <dependency>
      <groupId>org.dbunit</groupId>
      <artifactId>dbunit</artifactId>
    </dependency>

    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>dtd-generator</artifactId>
      <version>${project.version}</version>
    </dependency>

    <dependency>
      <groupId>tools.jackson.dataformat</groupId>
      <artifactId>jackson-dataformat-yaml</artifactId>
    </dependency>

    <!-- Test dependencies -->
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter</artifactId>
    </dependency>

    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>model-generator</artifactId>
      <version>${project.version}</version>
    </dependency>

    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-simple</artifactId>
    </dependency>

    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>table-row-builder-generator</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>tm.domain</artifactId>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <artifactId>maven-resources-plugin</artifactId>
        <executions>
          <execution>
            <id>copy-dtd</id>
            <goals>
              <goal>copy-resources</goal>
            </goals>
            <phase>process-resources</phase>
            <configuration>
              <outputDirectory>${project.build.outputDirectory}/org/squashtest/it/datasetbuilder/dbunit</outputDirectory>
              <resources>
                <resource>
                  <directory>${project.basedir}/../dtd-generator/target/generated-resources</directory>
                  <includes>
                    <include>dbunit.dtd</include>
                  </includes>
                </resource>
              </resources>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <!-- Exclude integration tests from Surefire -->
          <excludes>
            <exclude>**/*IT.java</exclude>
          </excludes>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-failsafe-plugin</artifactId>
        <configuration>
          <!-- Tests are enabled with database-specific profile-->
          <skipTests>true</skipTests>
          <includes>
            <include>**/*IT.java</include>
            <include>**/IT*.java</include>
            <include>**/*ITCase.java</include>
          </includes>

          <systemPropertyVariables>
            <liquibase.url>${liquibase.url}</liquibase.url>
            <liquibase.username>${liquibase.username}</liquibase.username>
            <liquibase.password>${liquibase.password}</liquibase.password>
          </systemPropertyVariables>
        </configuration>
        <executions>
          <execution>
            <id>integration-tests</id>
            <goals>
              <goal>integration-test</goal>
              <goal>verify</goal>
            </goals>
            <phase>integration-test</phase>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

  <profiles>
    <profile>
      <!-- Profile used for integration tests -->
      <id>postgresql</id>

      <properties>
        <db.resources.dir>${project.build.directory}/db</db.resources.dir>
        <liquibase.driver>org.postgresql.Driver</liquibase.driver>
        <liquibase.searchPath>${db.resources.dir}</liquibase.searchPath>
      </properties>

      <dependencies>
        <dependency>
          <groupId>org.postgresql</groupId>
          <artifactId>postgresql</artifactId>
          <scope>test</scope>
        </dependency>
      </dependencies>

      <build>
        <plugins>
          <!-- ====================
            Run configuration check
          ========================-->
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-enforcer-plugin</artifactId>
            <executions>
              <execution>
                <id>enforce-configuration</id>
                <goals>
                  <goal>enforce</goal>
                </goals>
                <phase>validate</phase>
                <configuration>
                  <rules>
                    <requireProperty>
                      <property>liquibase.driver</property>
                    </requireProperty>
                    <requireProperty>
                      <property>liquibase.url</property>
                    </requireProperty>
                    <requireProperty>
                      <property>liquibase.username</property>
                    </requireProperty>
                    <requireProperty>
                      <property>liquibase.password</property>
                    </requireProperty>
                  </rules>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <!-- ====================
            Generate the test database
          ========================-->
          <plugin>
            <groupId>org.liquibase</groupId>
            <artifactId>liquibase-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>generate-test-database</id>
                <goals>
                  <goal>update</goal>
                </goals>
                <phase>pre-integration-test</phase>
                <configuration>
                  <dropFirst>true</dropFirst>
                  <changeLogFile>global.changelog-master.xml</changeLogFile>
                  <driver>${liquibase.driver}</driver>
                  <url>${liquibase.url}</url>
                  <username>${liquibase.username}</username>
                  <password>${liquibase.password}</password>
                  <searchPath>${maven.multiModuleProjectDirectory}/database/src/main/liquibase</searchPath>
                </configuration>
              </execution>
            </executions>
          </plugin>

          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-failsafe-plugin</artifactId>
            <configuration>
              <skipTests>false</skipTests>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>
