From 959a961536abef623b33865ae91553ca73b7ab30 Mon Sep 17 00:00:00 2001
From: Martin Weise <martin.weise@tuwien.ac.at>
Date: Mon, 12 Dec 2022 20:55:58 +0100
Subject: [PATCH] Fixed the tests

---
 .../tuwien/hibernate/DbrepoSchemaFilter.java  | 29 +++++++++++++++++++
 .../hibernate/DbrepoSchemaProvider.java       | 28 ++++++++++++++++++
 .../src/test/resources/application.properties |  9 ++++--
 .../tuwien/hibernate/DbrepoSchemaFilter.java  | 29 +++++++++++++++++++
 .../hibernate/DbrepoSchemaProvider.java       | 28 ++++++++++++++++++
 .../src/test/resources/application.properties |  5 ++--
 6 files changed, 124 insertions(+), 4 deletions(-)
 create mode 100644 fda-query-service/rest-service/src/test/java/at/tuwien/hibernate/DbrepoSchemaFilter.java
 create mode 100644 fda-query-service/rest-service/src/test/java/at/tuwien/hibernate/DbrepoSchemaProvider.java
 create mode 100644 fda-table-service/rest-service/src/test/java/at/tuwien/hibernate/DbrepoSchemaFilter.java
 create mode 100644 fda-table-service/rest-service/src/test/java/at/tuwien/hibernate/DbrepoSchemaProvider.java

diff --git a/fda-query-service/rest-service/src/test/java/at/tuwien/hibernate/DbrepoSchemaFilter.java b/fda-query-service/rest-service/src/test/java/at/tuwien/hibernate/DbrepoSchemaFilter.java
new file mode 100644
index 0000000000..bdbe4aebe2
--- /dev/null
+++ b/fda-query-service/rest-service/src/test/java/at/tuwien/hibernate/DbrepoSchemaFilter.java
@@ -0,0 +1,29 @@
+package at.tuwien.hibernate;
+
+import org.hibernate.boot.model.relational.Namespace;
+import org.hibernate.boot.model.relational.Sequence;
+import org.hibernate.mapping.Table;
+import org.hibernate.tool.schema.spi.SchemaFilter;
+
+/**
+ * Do not create table for class {@link at.tuwien.entities.database.table.columns.concepts.Concept} when using JUnit test
+ */
+public class DbrepoSchemaFilter implements SchemaFilter {
+
+    public static final DbrepoSchemaFilter INSTANCE = new DbrepoSchemaFilter();
+
+    @Override
+    public boolean includeNamespace(Namespace namespace) {
+        return true;
+    }
+
+    @Override
+    public boolean includeTable(Table table) {
+        return !table.getName().matches("mdb_concepts");
+    }
+
+    @Override
+    public boolean includeSequence(Sequence sequence) {
+        return true;
+    }
+}
diff --git a/fda-query-service/rest-service/src/test/java/at/tuwien/hibernate/DbrepoSchemaProvider.java b/fda-query-service/rest-service/src/test/java/at/tuwien/hibernate/DbrepoSchemaProvider.java
new file mode 100644
index 0000000000..955c1bf462
--- /dev/null
+++ b/fda-query-service/rest-service/src/test/java/at/tuwien/hibernate/DbrepoSchemaProvider.java
@@ -0,0 +1,28 @@
+package at.tuwien.hibernate;
+
+import org.hibernate.tool.schema.spi.SchemaFilter;
+import org.hibernate.tool.schema.spi.SchemaFilterProvider;
+
+/* keep */
+public class DbrepoSchemaProvider implements SchemaFilterProvider {
+
+    @Override
+    public SchemaFilter getCreateFilter() {
+        return DbrepoSchemaFilter.INSTANCE;
+    }
+
+    @Override
+    public SchemaFilter getDropFilter() {
+        return DbrepoSchemaFilter.INSTANCE;
+    }
+
+    @Override
+    public SchemaFilter getMigrateFilter() {
+        return DbrepoSchemaFilter.INSTANCE;
+    }
+
+    @Override
+    public SchemaFilter getValidateFilter() {
+        return DbrepoSchemaFilter.INSTANCE;
+    }
+}
diff --git a/fda-query-service/rest-service/src/test/resources/application.properties b/fda-query-service/rest-service/src/test/resources/application.properties
index a3e7c65927..ef996777c5 100644
--- a/fda-query-service/rest-service/src/test/resources/application.properties
+++ b/fda-query-service/rest-service/src/test/resources/application.properties
@@ -8,11 +8,16 @@ spring.cloud.discovery.enabled = false
 spring.cloud.config.discovery.enabled = false
 spring.cloud.config.enabled = false
 
-# disable datasource
+# internal datasource
 spring.datasource.url=jdbc:h2:mem:testdb;DATABASE_TO_UPPER=false;DB_CLOSE_ON_EXIT=FALSE;INIT=RUNSCRIPT FROM './src/test/resources/init.sql'
 spring.datasource.driverClassName=org.h2.Driver
 spring.datasource.username=sa
 spring.datasource.password=password
 spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
 spring.jpa.hibernate.ddl-auto=create-drop
-spring.jpa.show-sql=false
\ No newline at end of file
+spring.jpa.show-sql=false
+spring.jpa.properties.hibernate.hbm2ddl.schema_filter_provider=at.tuwien.hibernate.DbrepoSchemaProvider
+
+# additional logging
+logging.level.org.hibernate.SQL=debug
+logging.level.org.hibernate.type=trace
\ No newline at end of file
diff --git a/fda-table-service/rest-service/src/test/java/at/tuwien/hibernate/DbrepoSchemaFilter.java b/fda-table-service/rest-service/src/test/java/at/tuwien/hibernate/DbrepoSchemaFilter.java
new file mode 100644
index 0000000000..bdbe4aebe2
--- /dev/null
+++ b/fda-table-service/rest-service/src/test/java/at/tuwien/hibernate/DbrepoSchemaFilter.java
@@ -0,0 +1,29 @@
+package at.tuwien.hibernate;
+
+import org.hibernate.boot.model.relational.Namespace;
+import org.hibernate.boot.model.relational.Sequence;
+import org.hibernate.mapping.Table;
+import org.hibernate.tool.schema.spi.SchemaFilter;
+
+/**
+ * Do not create table for class {@link at.tuwien.entities.database.table.columns.concepts.Concept} when using JUnit test
+ */
+public class DbrepoSchemaFilter implements SchemaFilter {
+
+    public static final DbrepoSchemaFilter INSTANCE = new DbrepoSchemaFilter();
+
+    @Override
+    public boolean includeNamespace(Namespace namespace) {
+        return true;
+    }
+
+    @Override
+    public boolean includeTable(Table table) {
+        return !table.getName().matches("mdb_concepts");
+    }
+
+    @Override
+    public boolean includeSequence(Sequence sequence) {
+        return true;
+    }
+}
diff --git a/fda-table-service/rest-service/src/test/java/at/tuwien/hibernate/DbrepoSchemaProvider.java b/fda-table-service/rest-service/src/test/java/at/tuwien/hibernate/DbrepoSchemaProvider.java
new file mode 100644
index 0000000000..955c1bf462
--- /dev/null
+++ b/fda-table-service/rest-service/src/test/java/at/tuwien/hibernate/DbrepoSchemaProvider.java
@@ -0,0 +1,28 @@
+package at.tuwien.hibernate;
+
+import org.hibernate.tool.schema.spi.SchemaFilter;
+import org.hibernate.tool.schema.spi.SchemaFilterProvider;
+
+/* keep */
+public class DbrepoSchemaProvider implements SchemaFilterProvider {
+
+    @Override
+    public SchemaFilter getCreateFilter() {
+        return DbrepoSchemaFilter.INSTANCE;
+    }
+
+    @Override
+    public SchemaFilter getDropFilter() {
+        return DbrepoSchemaFilter.INSTANCE;
+    }
+
+    @Override
+    public SchemaFilter getMigrateFilter() {
+        return DbrepoSchemaFilter.INSTANCE;
+    }
+
+    @Override
+    public SchemaFilter getValidateFilter() {
+        return DbrepoSchemaFilter.INSTANCE;
+    }
+}
diff --git a/fda-table-service/rest-service/src/test/resources/application.properties b/fda-table-service/rest-service/src/test/resources/application.properties
index 0d089270ca..ef996777c5 100644
--- a/fda-table-service/rest-service/src/test/resources/application.properties
+++ b/fda-table-service/rest-service/src/test/resources/application.properties
@@ -8,14 +8,15 @@ spring.cloud.discovery.enabled = false
 spring.cloud.config.discovery.enabled = false
 spring.cloud.config.enabled = false
 
-# disable datasource
+# internal datasource
 spring.datasource.url=jdbc:h2:mem:testdb;DATABASE_TO_UPPER=false;DB_CLOSE_ON_EXIT=FALSE;INIT=RUNSCRIPT FROM './src/test/resources/init.sql'
 spring.datasource.driverClassName=org.h2.Driver
 spring.datasource.username=sa
 spring.datasource.password=password
 spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
 spring.jpa.hibernate.ddl-auto=create-drop
-spring.jpa.show-sql=true
+spring.jpa.show-sql=false
+spring.jpa.properties.hibernate.hbm2ddl.schema_filter_provider=at.tuwien.hibernate.DbrepoSchemaProvider
 
 # additional logging
 logging.level.org.hibernate.SQL=debug
-- 
GitLab