diff --git a/pom.xml b/pom.xml
index 42888be..525bb67 100644
--- a/pom.xml
+++ b/pom.xml
@@ -155,5 +155,15 @@
+
+
+
+ org.junit.jupiter
+ junit-jupiter-engine
+ 5.7.0
+ test
+
+
+
diff --git a/sit-csvloader-core/pom.xml b/sit-csvloader-core/pom.xml
index 2a2b379..80784ca 100644
--- a/sit-csvloader-core/pom.xml
+++ b/sit-csvloader-core/pom.xml
@@ -22,7 +22,6 @@
org.junit.jupiter
junit-jupiter-engine
- 5.7.0
test
diff --git a/sit-csvloader-flyway/pom.xml b/sit-csvloader-flyway/pom.xml
index 989d021..c64c952 100644
--- a/sit-csvloader-flyway/pom.xml
+++ b/sit-csvloader-flyway/pom.xml
@@ -15,6 +15,7 @@
7.3.2
+ 5.4.0
@@ -28,5 +29,16 @@
sit-csvloader-core
${project.version}
+
+ org.junit.jupiter
+ junit-jupiter-engine
+ test
+
+
+ org.mockito
+ mockito-core
+ ${mockito.version}
+ test
+
diff --git a/sit-csvloader-flyway/src/test/java/io/sitoolkit/csv/flyway/BaseJavaCsvMigrationTest.java b/sit-csvloader-flyway/src/test/java/io/sitoolkit/csv/flyway/BaseJavaCsvMigrationTest.java
new file mode 100644
index 0000000..bbf2b5b
--- /dev/null
+++ b/sit-csvloader-flyway/src/test/java/io/sitoolkit/csv/flyway/BaseJavaCsvMigrationTest.java
@@ -0,0 +1,73 @@
+package io.sitoolkit.csv.flyway;
+
+import io.sitoolkit.csv.core.CsvLoader;
+import io.sitoolkit.csv.core.LogCallback;
+import io.sitoolkit.csv.core.ResourceFinder;
+import io.sitoolkit.csv.core.TableDataResource;
+import java.sql.Connection;
+import java.util.List;
+import org.flywaydb.core.api.Location;
+import org.flywaydb.core.api.migration.Context;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.mockito.ArgumentMatchers;
+import org.mockito.Mockito;
+
+class BaseJavaCsvMigrationTest {
+
+ private static final List RES_DIR_PATHS = List.of("/classes", "/files");
+
+ private BaseJavaCsvMigration migration;
+
+ @BeforeEach
+ void setUp() {
+ this.migration = new V0__1_MigrationTest();
+ }
+
+ @Test
+ void migrateTest() throws Exception {
+ try (var resourceFinderMockedStatic = Mockito.mockStatic(ResourceFinder.class)) {
+
+ try (var csvLoaderMockedStatic = Mockito.mockStatic(CsvLoader.class)) {
+ Context context = Mockito.mock(Context.class, Mockito.RETURNS_DEEP_STUBS);
+ Connection connection = Mockito.mock(Connection.class, Mockito.RETURNS_DEEP_STUBS);
+ Mockito.when(context.getConnection()).thenReturn(connection);
+
+ mockLocations(context);
+
+ List tableDataResources = List.of(new TableDataResource());
+
+ resourceFinderMockedStatic.when(() -> ResourceFinder.findTableDataResources(
+ ArgumentMatchers.eq(V0__1_MigrationTest.class),
+ ArgumentMatchers.eq(RES_DIR_PATHS),
+ ArgumentMatchers.any(LogCallback.class))
+ ).thenReturn(tableDataResources);
+
+ migration.migrate(context);
+
+ csvLoaderMockedStatic.verify(() -> CsvLoader.load(
+ ArgumentMatchers.eq(connection),
+ ArgumentMatchers.eq(tableDataResources),
+ ArgumentMatchers.any(LogCallback.class)
+ ));
+ }
+ }
+ }
+
+ private static void mockLocations(Context context) {
+ Location[] locations = new Location[2];
+ Location classPathLocation = Mockito.mock(Location.class);
+ Mockito.when(classPathLocation.isClassPath()).thenReturn(true);
+ Mockito.when(classPathLocation.getPath()).thenReturn(RES_DIR_PATHS.get(0).substring(1));
+ locations[0] = classPathLocation;
+ Location fileSystemLocation = Mockito.mock(Location.class);
+ Mockito.when(fileSystemLocation.isClassPath()).thenReturn(false);
+ Mockito.when(fileSystemLocation.getPath()).thenReturn(RES_DIR_PATHS.get(1));
+ locations[1] = fileSystemLocation;
+ Mockito.when(context.getConfiguration().getLocations()).thenReturn(locations);
+ }
+
+ static class V0__1_MigrationTest extends BaseJavaCsvMigration {
+
+ }
+}
\ No newline at end of file