From be3ae8ffab504251610c6bb0e2e7ec8ddf6cd76e Mon Sep 17 00:00:00 2001 From: "Daniel J. Summers" Date: Fri, 14 Mar 2025 20:56:41 -0400 Subject: [PATCH] Run Java tests --- src/common/pom.xml | 12 ---- src/java/pom.xml | 3 +- .../java/java/integration/common/Count.java | 20 ------ .../integration/common/CountFunctions.java | 62 +++++++++++++++++++ .../java/integration/postgresql/CountIT.java | 53 +++++++++++++++- .../java/java/integration/sqlite/CountIT.java | 56 +++++++++++++++++ src/pom.xml | 2 +- 7 files changed, 170 insertions(+), 38 deletions(-) delete mode 100644 src/java/src/test/java/solutions/bitbadger/documents/java/java/integration/common/Count.java create mode 100644 src/java/src/test/java/solutions/bitbadger/documents/java/java/integration/common/CountFunctions.java create mode 100644 src/java/src/test/java/solutions/bitbadger/documents/java/java/integration/sqlite/CountIT.java diff --git a/src/common/pom.xml b/src/common/pom.xml index 85865a4..61cfe2f 100644 --- a/src/common/pom.xml +++ b/src/common/pom.xml @@ -60,18 +60,6 @@ - - - kotlinx-serialization - - - - - org.jetbrains.kotlin - kotlin-maven-serialization - ${kotlin.version} - - maven-surefire-plugin diff --git a/src/java/pom.xml b/src/java/pom.xml index 0ca3107..55e441b 100644 --- a/src/java/pom.xml +++ b/src/java/pom.xml @@ -48,7 +48,6 @@ src/main/kotlin - src/test/kotlin org.jetbrains.kotlin @@ -69,7 +68,7 @@ test-compile - test-compile + process-test-sources test-compile diff --git a/src/java/src/test/java/solutions/bitbadger/documents/java/java/integration/common/Count.java b/src/java/src/test/java/solutions/bitbadger/documents/java/java/integration/common/Count.java deleted file mode 100644 index 4ffc4ce..0000000 --- a/src/java/src/test/java/solutions/bitbadger/documents/java/java/integration/common/Count.java +++ /dev/null @@ -1,20 +0,0 @@ -package solutions.bitbadger.documents.java.java.integration.common; - -import solutions.bitbadger.documents.java.integration.ThrowawayDatabase; -import solutions.bitbadger.documents.java.java.testDocs.JsonDocument; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static solutions.bitbadger.documents.java.integration.TypesKt.TEST_TABLE; - -final public class Count { - - public static void all(ThrowawayDatabase db) { - JsonDocument.load(db); - assertEquals(5L, solutions.bitbadger.documents.java.Count.all(TEST_TABLE, db.getConn()), - "There should have been 5 documents in the table"); - } - - - private Count() { - } -} diff --git a/src/java/src/test/java/solutions/bitbadger/documents/java/java/integration/common/CountFunctions.java b/src/java/src/test/java/solutions/bitbadger/documents/java/java/integration/common/CountFunctions.java new file mode 100644 index 0000000..4556020 --- /dev/null +++ b/src/java/src/test/java/solutions/bitbadger/documents/java/java/integration/common/CountFunctions.java @@ -0,0 +1,62 @@ +package solutions.bitbadger.documents.java.java.integration.common; + +import solutions.bitbadger.documents.common.Field; +import solutions.bitbadger.documents.java.Count; +import solutions.bitbadger.documents.java.integration.ThrowawayDatabase; +import solutions.bitbadger.documents.java.java.testDocs.JsonDocument; + +import java.util.List; +import java.util.Map; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static solutions.bitbadger.documents.java.integration.TypesKt.TEST_TABLE; + +/** + * Integration tests for the `Count` object + */ +final public class CountFunctions { + + public static void all(ThrowawayDatabase db) { + JsonDocument.load(db); + assertEquals(5L, Count.all(TEST_TABLE, db.getConn()), "There should have been 5 documents in the table"); + } + + public static void byFieldsNumeric(ThrowawayDatabase db) { + JsonDocument.load(db); + assertEquals(3L, Count.byFields(TEST_TABLE, List.of(Field.between("numValue", 10, 20)), db.getConn()), + "There should have been 3 matching documents"); + } + + public static void byFieldsAlpha(ThrowawayDatabase db) { + JsonDocument.load(db); + assertEquals(1L, Count.byFields(TEST_TABLE, List.of(Field.between("value", "aardvark", "apple")), db.getConn()), + "There should have been 1 matching document"); + } + + public static void byContainsMatch(ThrowawayDatabase db) { + JsonDocument.load(db); + assertEquals(2L, Count.byContains(TEST_TABLE, Map.of("value", "purple"), db.getConn()), + "There should have been 2 matching documents"); + } + + public static void byContainsNoMatch(ThrowawayDatabase db) { + JsonDocument.load(db); + assertEquals(0L, Count.byContains(TEST_TABLE, Map.of("value", "magenta"), db.getConn()), + "There should have been no matching documents"); + } + + public static void byJsonPathMatch(ThrowawayDatabase db) { + JsonDocument.load(db); + assertEquals(2L, Count.byJsonPath(TEST_TABLE, "$.numValue ? (@ < 5)", db.getConn()), + "There should have been 2 matching documents"); + } + + public static void byJsonPathNoMatch(ThrowawayDatabase db) { + JsonDocument.load(db); + assertEquals(0L, Count.byJsonPath(TEST_TABLE, "$.numValue ? (@ > 100)", db.getConn()), + "There should have been no matching documents"); + } + + private CountFunctions() { + } +} diff --git a/src/java/src/test/java/solutions/bitbadger/documents/java/java/integration/postgresql/CountIT.java b/src/java/src/test/java/solutions/bitbadger/documents/java/java/integration/postgresql/CountIT.java index 525aee5..54871dc 100644 --- a/src/java/src/test/java/solutions/bitbadger/documents/java/java/integration/postgresql/CountIT.java +++ b/src/java/src/test/java/solutions/bitbadger/documents/java/java/integration/postgresql/CountIT.java @@ -3,20 +3,67 @@ package solutions.bitbadger.documents.java.java.integration.postgresql; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import solutions.bitbadger.documents.java.integration.postgresql.PgDB; -import solutions.bitbadger.documents.java.java.integration.common.Count; +import solutions.bitbadger.documents.java.java.integration.common.CountFunctions; /** * PostgreSQL integration tests for the `Count` object / `count*` connection extension functions */ -@DisplayName("Java | PostgreSQL: Count") +@DisplayName("Java | Java | PostgreSQL: Count") public class CountIT { @Test @DisplayName("all counts all documents") public void all() { try (PgDB db = new PgDB()) { - Count.all(db); + CountFunctions.all(db); } } + @Test + @DisplayName("byFields counts documents by a numeric value") + public void byFieldsNumeric() { + try (PgDB db = new PgDB()) { + CountFunctions.byFieldsNumeric(db); + } + } + + @Test + @DisplayName("byFields counts documents by a alphanumeric value") + public void byFieldsAlpha() { + try (PgDB db = new PgDB()) { + CountFunctions.byFieldsAlpha(db); + } + } + + @Test + @DisplayName("byContains counts documents when matches are found") + public void byContainsMatch() { + try (PgDB db = new PgDB()) { + CountFunctions.byContainsMatch(db); + } + } + + @Test + @DisplayName("byContains counts documents when no matches are found") + public void byContainsNoMatch() { + try (PgDB db = new PgDB()) { + CountFunctions.byContainsNoMatch(db); + } + } + + @Test + @DisplayName("byJsonPath counts documents when matches are found") + public void byJsonPathMatch() { + try (PgDB db = new PgDB()) { + CountFunctions.byJsonPathMatch(db); + } + } + + @Test + @DisplayName("byJsonPath counts documents when no matches are found") + public void byJsonPathNoMatch() { + try (PgDB db = new PgDB()) { + CountFunctions.byJsonPathNoMatch(db); + } + } } diff --git a/src/java/src/test/java/solutions/bitbadger/documents/java/java/integration/sqlite/CountIT.java b/src/java/src/test/java/solutions/bitbadger/documents/java/java/integration/sqlite/CountIT.java new file mode 100644 index 0000000..ec59271 --- /dev/null +++ b/src/java/src/test/java/solutions/bitbadger/documents/java/java/integration/sqlite/CountIT.java @@ -0,0 +1,56 @@ +package solutions.bitbadger.documents.java.java.integration.sqlite; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import solutions.bitbadger.documents.common.DocumentException; +import solutions.bitbadger.documents.java.integration.sqlite.SQLiteDB; +import solutions.bitbadger.documents.java.java.integration.common.CountFunctions; + +import static org.junit.jupiter.api.Assertions.assertThrows; + +/** + * SQLite integration tests for the `Count` object / `count*` connection extension functions + */ +@DisplayName("Java | Java | SQLite: Count") +public class CountIT { + + @Test + @DisplayName("all counts all documents") + public void all() { + try (SQLiteDB db = new SQLiteDB()) { + CountFunctions.all(db); + } + } + + @Test + @DisplayName("byFields counts documents by a numeric value") + public void byFieldsNumeric() { + try (SQLiteDB db = new SQLiteDB()) { + CountFunctions.byFieldsNumeric(db); + } + } + + @Test + @DisplayName("byFields counts documents by a alphanumeric value") + public void byFieldsAlpha() { + try (SQLiteDB db = new SQLiteDB()) { + CountFunctions.byFieldsAlpha(db); + } + } + + @Test + @DisplayName("byContains fails") + public void byContainsMatch() { + try (SQLiteDB db = new SQLiteDB()) { + assertThrows(DocumentException.class, () -> CountFunctions.byContainsMatch(db)); + } + } + + @Test + @DisplayName("byJsonPath fails") + public void byJsonPathMatch() { + try (SQLiteDB db = new SQLiteDB()) { + assertThrows(DocumentException.class, () -> CountFunctions.byJsonPathMatch(db)); + } + } +} diff --git a/src/pom.xml b/src/pom.xml index 544ca00..fa7686e 100644 --- a/src/pom.xml +++ b/src/pom.xml @@ -40,7 +40,7 @@ UTF-8 official ${java.version} - 2.1.0 + 2.1.10 1.8.0