Initial Development #1

Merged
danieljsummers merged 88 commits from v1-rc into main 2025-04-16 01:29:20 +00:00
82 changed files with 232 additions and 537 deletions
Showing only changes of commit 11e3200ff7 - Show all commits

View File

@ -1,90 +0,0 @@
<?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>
<groupId>solutions.bitbadger.documents</groupId>
<artifactId>common</artifactId>
<version>4.0.0-alpha1-SNAPSHOT</version>
<packaging>jar</packaging>
<parent>
<groupId>solutions.bitbadger</groupId>
<artifactId>documents</artifactId>
<version>4.0.0-alpha1-SNAPSHOT</version>
</parent>
<name>${project.groupId}:${project.artifactId}</name>
<description>Expose a document store interface for PostgreSQL and SQLite (Common Library)</description>
<url>https://bitbadger.solutions/open-source/relational-documents/jvm/</url>
<scm>
<connection>scm:git:https://git.bitbadger.solutions/bit-badger/solutions.bitbadger.documents.git</connection>
<developerConnection>scm:git:https://git.bitbadger.solutions/bit-badger/solutions.bitbadger.documents.git</developerConnection>
<url>https://git.bitbadger.solutions/bit-badger/solutions.bitbadger.documents</url>
</scm>
<build>
<sourceDirectory>src/main/kotlin</sourceDirectory>
<testSourceDirectory>src/test/kotlin</testSourceDirectory>
<plugins>
<plugin>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-plugin</artifactId>
<version>${kotlin.version}</version>
<executions>
<execution>
<id>compile</id>
<phase>process-sources</phase>
<goals>
<goal>compile</goal>
</goals>
<configuration>
<sourceDirs>
<sourceDir>${project.basedir}/src/main/kotlin</sourceDir>
</sourceDirs>
</configuration>
</execution>
<execution>
<id>test-compile</id>
<phase>test-compile</phase>
<goals>
<goal>test-compile</goal>
</goals>
<configuration>
<sourceDirs>
<sourceDir>${project.basedir}/src/test/java</sourceDir>
<sourceDir>${project.basedir}/src/test/kotlin</sourceDir>
</sourceDirs>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.2</version>
</plugin>
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.22.2</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
</plugins>
</build>
</project>

View File

@ -23,7 +23,8 @@ fun <TDoc> Connection.customList(
parameters: Collection<Parameter<*>> = listOf(),
clazz: Class<TDoc>,
mapFunc: (ResultSet, Class<TDoc>) -> TDoc
) = Custom.list(query, parameters, clazz, this, mapFunc)
) =
solutions.bitbadger.documents.jvm.Custom.list(query, parameters, clazz, this, mapFunc)
/**
* Execute a query that returns one or no results
@ -39,7 +40,8 @@ fun <TDoc> Connection.customSingle(
parameters: Collection<Parameter<*>> = listOf(),
clazz: Class<TDoc>,
mapFunc: (ResultSet, Class<TDoc>) -> TDoc
) = Custom.single(query, parameters, clazz, this, mapFunc)
) =
solutions.bitbadger.documents.jvm.Custom.single(query, parameters, clazz, this, mapFunc)
/**
* Execute a query that returns no results
@ -48,7 +50,7 @@ fun <TDoc> Connection.customSingle(
* @param parameters Parameters to use for the query
*/
fun Connection.customNonQuery(query: String, parameters: Collection<Parameter<*>> = listOf()) =
Custom.nonQuery(query, parameters, this)
solutions.bitbadger.documents.jvm.Custom.nonQuery(query, parameters, this)
/**
* Execute a query that returns a scalar result
@ -64,7 +66,8 @@ fun <T : Any> Connection.customScalar(
parameters: Collection<Parameter<*>> = listOf(),
clazz: Class<T>,
mapFunc: (ResultSet, Class<T>) -> T
) = Custom.scalar(query, parameters, clazz, this, mapFunc)
) =
solutions.bitbadger.documents.jvm.Custom.scalar(query, parameters, clazz, this, mapFunc)
// ~~~ DEFINITION QUERIES ~~~

View File

@ -1,10 +1,10 @@
package solutions.bitbadger.documents.common.java;
package solutions.bitbadger.documents.java;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import AutoId;
import solutions.bitbadger.documents.AutoId;
import solutions.bitbadger.documents.DocumentException;
import solutions.bitbadger.documents.java.java.testDocs.*;
import solutions.bitbadger.documents.java.support.*;
import static org.junit.jupiter.api.Assertions.*;

View File

@ -1,4 +1,4 @@
package solutions.bitbadger.documents.common.java;
package solutions.bitbadger.documents.java;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;

View File

@ -1,4 +1,4 @@
package solutions.bitbadger.documents.common.java;
package solutions.bitbadger.documents.java;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;

View File

@ -1,4 +1,4 @@
package solutions.bitbadger.documents.common.java;
package solutions.bitbadger.documents.java;
import kotlin.Pair;
import org.junit.jupiter.api.AfterEach;

View File

@ -1,4 +1,4 @@
package solutions.bitbadger.documents.common.java;
package solutions.bitbadger.documents.java;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;

View File

@ -1,4 +1,4 @@
package solutions.bitbadger.documents.common.java;
package solutions.bitbadger.documents.java;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;

View File

@ -1,4 +1,4 @@
package solutions.bitbadger.documents.common.java;
package solutions.bitbadger.documents.java;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;

View File

@ -1,10 +1,10 @@
package solutions.bitbadger.documents.java.java;
package solutions.bitbadger.documents.java.jvm;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import solutions.bitbadger.documents.*;
import solutions.bitbadger.documents.java.jvm.Parameters;
import solutions.bitbadger.documents.jvm.Parameters;
import java.util.List;

View File

@ -1,15 +1,15 @@
package solutions.bitbadger.documents.java.java.integration.common;
package solutions.bitbadger.documents.java.jvm.integration.common;
import solutions.bitbadger.documents.Field;
import solutions.bitbadger.documents.java.jvm.Count;
import solutions.bitbadger.documents.java.integration.ThrowawayDatabase;
import solutions.bitbadger.documents.java.java.testDocs.JsonDocument;
import solutions.bitbadger.documents.jvm.Count;
import solutions.bitbadger.documents.support.ThrowawayDatabase;
import solutions.bitbadger.documents.java.support.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;
import static solutions.bitbadger.documents.support.TypesKt.TEST_TABLE;
/**
* Integration tests for the `Count` object

View File

@ -1,9 +1,9 @@
package solutions.bitbadger.documents.java.java.integration.postgresql;
package solutions.bitbadger.documents.java.jvm.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.CountFunctions;
import solutions.bitbadger.documents.java.jvm.integration.common.CountFunctions;
import solutions.bitbadger.documents.jvm.integration.postgresql.PgDB;
/**
* PostgreSQL integration tests for the `Count` object / `count*` connection extension functions

View File

@ -1,10 +1,10 @@
package solutions.bitbadger.documents.java.java.integration.sqlite;
package solutions.bitbadger.documents.java.jvm.integration.sqlite;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import solutions.bitbadger.documents.DocumentException;
import solutions.bitbadger.documents.java.integration.sqlite.SQLiteDB;
import solutions.bitbadger.documents.java.java.integration.common.CountFunctions;
import solutions.bitbadger.documents.java.jvm.integration.common.CountFunctions;
import solutions.bitbadger.documents.jvm.integration.sqlite.SQLiteDB;
import static org.junit.jupiter.api.Assertions.assertThrows;

View File

@ -1,4 +1,4 @@
package solutions.bitbadger.documents.java.java.testDocs;
package solutions.bitbadger.documents.java.support;
public class ByteIdClass {

View File

@ -1,4 +1,4 @@
package solutions.bitbadger.documents.java.java.testDocs;
package solutions.bitbadger.documents.java.support;
public class IntIdClass {

View File

@ -1,12 +1,12 @@
package solutions.bitbadger.documents.java.java.testDocs;
package solutions.bitbadger.documents.java.support;
import kotlinx.serialization.Serializable;
import solutions.bitbadger.documents.java.jvm.Document;
import solutions.bitbadger.documents.java.integration.ThrowawayDatabase;
import solutions.bitbadger.documents.jvm.Document;
import solutions.bitbadger.documents.support.ThrowawayDatabase;
import java.util.List;
import static solutions.bitbadger.documents.java.integration.TypesKt.TEST_TABLE;
import static solutions.bitbadger.documents.support.TypesKt.TEST_TABLE;
@Serializable
public class JsonDocument {

View File

@ -1,4 +1,4 @@
package solutions.bitbadger.documents.java.java.testDocs;
package solutions.bitbadger.documents.java.support;
public class LongIdClass {

View File

@ -1,4 +1,4 @@
package solutions.bitbadger.documents.java.java.testDocs;
package solutions.bitbadger.documents.java.support;
public class ShortIdClass {

View File

@ -1,4 +1,4 @@
package solutions.bitbadger.documents.java.java.testDocs;
package solutions.bitbadger.documents.java.support;
public class StringIdClass {

View File

@ -1,4 +1,4 @@
package solutions.bitbadger.documents.java.java.testDocs;
package solutions.bitbadger.documents.java.support;
public class SubDocument {

View File

@ -1,10 +1,8 @@
package solutions.bitbadger.documents.common
package solutions.bitbadger.documents
import AutoId
import org.junit.jupiter.api.DisplayName
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.assertThrows
import solutions.bitbadger.documents.DocumentException
import kotlin.test.assertEquals
import kotlin.test.assertFalse
import kotlin.test.assertNotEquals

View File

@ -1,8 +1,7 @@
package solutions.bitbadger.documents.common
package solutions.bitbadger.documents
import org.junit.jupiter.api.DisplayName
import org.junit.jupiter.api.Test
import solutions.bitbadger.documents.*
import kotlin.test.assertEquals
import kotlin.test.assertFalse
import kotlin.test.assertTrue

View File

@ -1,12 +1,8 @@
package solutions.bitbadger.documents.common
package solutions.bitbadger.documents
import AutoId
import org.junit.jupiter.api.DisplayName
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.assertThrows
import solutions.bitbadger.documents.Configuration
import solutions.bitbadger.documents.Dialect
import solutions.bitbadger.documents.DocumentException
import kotlin.test.assertEquals
/**

View File

@ -1,9 +1,7 @@
package solutions.bitbadger.documents.common
package solutions.bitbadger.documents
import org.junit.jupiter.api.DisplayName
import org.junit.jupiter.api.Test
import solutions.bitbadger.documents.Dialect
import solutions.bitbadger.documents.DocumentException
import kotlin.test.assertEquals
import kotlin.test.assertNotNull
import kotlin.test.assertTrue

View File

@ -1,8 +1,7 @@
package solutions.bitbadger.documents.common
package solutions.bitbadger.documents
import org.junit.jupiter.api.DisplayName
import org.junit.jupiter.api.Test
import solutions.bitbadger.documents.DocumentIndex
import kotlin.test.assertEquals
/**

View File

@ -1,8 +1,7 @@
package solutions.bitbadger.documents.common
package solutions.bitbadger.documents
import org.junit.jupiter.api.DisplayName
import org.junit.jupiter.api.Test
import solutions.bitbadger.documents.FieldMatch
import kotlin.test.assertEquals
/**

View File

@ -1,10 +1,9 @@
package solutions.bitbadger.documents.common
package solutions.bitbadger.documents
import org.junit.jupiter.api.AfterEach
import org.junit.jupiter.api.DisplayName
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.assertThrows
import solutions.bitbadger.documents.*
import kotlin.test.assertEquals
import kotlin.test.assertNotSame
import kotlin.test.assertNull

View File

@ -1,8 +1,7 @@
package solutions.bitbadger.documents.common
package solutions.bitbadger.documents
import org.junit.jupiter.api.DisplayName
import org.junit.jupiter.api.Test
import solutions.bitbadger.documents.Op
import kotlin.test.assertEquals
/**

View File

@ -1,8 +1,7 @@
package solutions.bitbadger.documents.common
package solutions.bitbadger.documents
import org.junit.jupiter.api.DisplayName
import org.junit.jupiter.api.Test
import solutions.bitbadger.documents.ParameterName
import kotlin.test.assertEquals
/**

View File

@ -1,10 +1,7 @@
package solutions.bitbadger.documents.common
package solutions.bitbadger.documents
import org.junit.jupiter.api.DisplayName
import org.junit.jupiter.api.assertThrows
import solutions.bitbadger.documents.DocumentException
import solutions.bitbadger.documents.Parameter
import solutions.bitbadger.documents.ParameterType
import kotlin.test.Test
import kotlin.test.assertEquals
import kotlin.test.assertNull

View File

@ -1,4 +1,4 @@
package solutions.bitbadger.documents.java
package solutions.bitbadger.documents.jvm
import org.junit.jupiter.api.AfterEach
import org.junit.jupiter.api.DisplayName
@ -38,7 +38,8 @@ class ParametersTest {
@DisplayName("nameFields works when changing fields")
fun nameFieldsChange() {
val fields = listOf(
Field.equal("a", ""), Field.equal("e", "", ":hi"), Field.equal("b", ""), Field.notExists("z"))
Field.equal("a", ""), Field.equal("e", "", ":hi"), Field.equal("b", ""), Field.notExists("z")
)
val named = Parameters.nameFields(fields)
assertEquals(fields.size, named.size, "There should have been 4 fields in the list")
assertNotSame(fields.elementAt(0), named.elementAt(0), "The first field should not be the same")

View File

@ -1,13 +1,8 @@
package solutions.bitbadger.documents.java.integration.common
package solutions.bitbadger.documents.jvm.integration.common
import solutions.bitbadger.documents.Field
import solutions.bitbadger.documents.java.extensions.countAll
import solutions.bitbadger.documents.java.extensions.countByContains
import solutions.bitbadger.documents.java.extensions.countByFields
import solutions.bitbadger.documents.java.extensions.countByJsonPath
import solutions.bitbadger.documents.java.integration.JsonDocument
import solutions.bitbadger.documents.java.integration.TEST_TABLE
import solutions.bitbadger.documents.java.integration.ThrowawayDatabase
import solutions.bitbadger.documents.extensions.*
import solutions.bitbadger.documents.support.*
import kotlin.test.assertEquals
/**

View File

@ -1,16 +1,12 @@
package solutions.bitbadger.documents.java.integration.common
package solutions.bitbadger.documents.jvm.integration.common
import solutions.bitbadger.documents.Configuration
import solutions.bitbadger.documents.Field
import solutions.bitbadger.documents.Parameter
import solutions.bitbadger.documents.ParameterType
import solutions.bitbadger.documents.common.*
import solutions.bitbadger.documents.java.*
import solutions.bitbadger.documents.java.extensions.*
import solutions.bitbadger.documents.java.integration.JsonDocument
import solutions.bitbadger.documents.java.integration.TEST_TABLE
import solutions.bitbadger.documents.java.integration.ThrowawayDatabase
import solutions.bitbadger.documents.java.jvm.Results
import solutions.bitbadger.documents.*
import solutions.bitbadger.documents.extensions.*
import solutions.bitbadger.documents.jvm.Results
import solutions.bitbadger.documents.query.Count
import solutions.bitbadger.documents.query.Delete
import solutions.bitbadger.documents.query.Find
import solutions.bitbadger.documents.support.*
import kotlin.test.assertEquals
import kotlin.test.assertNotNull
import kotlin.test.assertNull

View File

@ -1,11 +1,11 @@
package solutions.bitbadger.documents.java.integration.common
package solutions.bitbadger.documents.jvm.integration.common
import solutions.bitbadger.documents.DocumentIndex
import solutions.bitbadger.documents.java.extensions.ensureDocumentIndex
import solutions.bitbadger.documents.java.extensions.ensureFieldIndex
import solutions.bitbadger.documents.java.extensions.ensureTable
import solutions.bitbadger.documents.java.integration.TEST_TABLE
import solutions.bitbadger.documents.java.integration.ThrowawayDatabase
import solutions.bitbadger.documents.extensions.ensureDocumentIndex
import solutions.bitbadger.documents.extensions.ensureFieldIndex
import solutions.bitbadger.documents.extensions.ensureTable
import solutions.bitbadger.documents.support.TEST_TABLE
import solutions.bitbadger.documents.support.ThrowawayDatabase
import kotlin.test.assertFalse
import kotlin.test.assertTrue

View File

@ -1,10 +1,10 @@
package solutions.bitbadger.documents.java.integration.common
package solutions.bitbadger.documents.jvm.integration.common
import solutions.bitbadger.documents.Field
import solutions.bitbadger.documents.java.extensions.*
import solutions.bitbadger.documents.java.integration.JsonDocument
import solutions.bitbadger.documents.java.integration.TEST_TABLE
import solutions.bitbadger.documents.java.integration.ThrowawayDatabase
import solutions.bitbadger.documents.extensions.*
import solutions.bitbadger.documents.support.JsonDocument
import solutions.bitbadger.documents.support.TEST_TABLE
import solutions.bitbadger.documents.support.ThrowawayDatabase
import kotlin.test.assertEquals
/**

View File

@ -1,11 +1,10 @@
package solutions.bitbadger.documents.java.integration.common
package solutions.bitbadger.documents.jvm.integration.common
import AutoId
import solutions.bitbadger.documents.AutoId
import solutions.bitbadger.documents.Configuration
import solutions.bitbadger.documents.Field
import solutions.bitbadger.documents.common.*
import solutions.bitbadger.documents.java.extensions.*
import solutions.bitbadger.documents.java.integration.*
import solutions.bitbadger.documents.extensions.*
import solutions.bitbadger.documents.support.*
import kotlin.test.*
/**

View File

@ -1,13 +1,8 @@
package solutions.bitbadger.documents.java.integration.common
package solutions.bitbadger.documents.jvm.integration.common
import solutions.bitbadger.documents.Field
import solutions.bitbadger.documents.java.extensions.existsByContains
import solutions.bitbadger.documents.java.extensions.existsByFields
import solutions.bitbadger.documents.java.extensions.existsById
import solutions.bitbadger.documents.java.extensions.existsByJsonPath
import solutions.bitbadger.documents.java.integration.JsonDocument
import solutions.bitbadger.documents.java.integration.TEST_TABLE
import solutions.bitbadger.documents.java.integration.ThrowawayDatabase
import solutions.bitbadger.documents.extensions.*
import solutions.bitbadger.documents.support.*
import kotlin.test.assertFalse
import kotlin.test.assertTrue

View File

@ -1,11 +1,10 @@
package solutions.bitbadger.documents.java.integration.common
package solutions.bitbadger.documents.jvm.integration.common
import solutions.bitbadger.documents.Configuration
import solutions.bitbadger.documents.Field
import solutions.bitbadger.documents.FieldMatch
import solutions.bitbadger.documents.common.*
import solutions.bitbadger.documents.java.extensions.*
import solutions.bitbadger.documents.java.integration.*
import solutions.bitbadger.documents.extensions.*
import solutions.bitbadger.documents.support.*
import kotlin.test.assertEquals
import kotlin.test.assertNotNull
import kotlin.test.assertNull

View File

@ -1,10 +1,8 @@
package solutions.bitbadger.documents.java.integration.common
package solutions.bitbadger.documents.jvm.integration.common
import solutions.bitbadger.documents.Field
import solutions.bitbadger.documents.java.extensions.*
import solutions.bitbadger.documents.java.integration.JsonDocument
import solutions.bitbadger.documents.java.integration.TEST_TABLE
import solutions.bitbadger.documents.java.integration.ThrowawayDatabase
import solutions.bitbadger.documents.extensions.*
import solutions.bitbadger.documents.support.*
import kotlin.test.assertEquals
import kotlin.test.assertFalse
import kotlin.test.assertNotNull

View File

@ -1,10 +1,8 @@
package solutions.bitbadger.documents.java.integration.common
package solutions.bitbadger.documents.jvm.integration.common
import solutions.bitbadger.documents.Field
import solutions.bitbadger.documents.java.extensions.*
import solutions.bitbadger.documents.java.integration.JsonDocument
import solutions.bitbadger.documents.java.integration.TEST_TABLE
import solutions.bitbadger.documents.java.integration.ThrowawayDatabase
import solutions.bitbadger.documents.extensions.*
import solutions.bitbadger.documents.support.*
import kotlin.test.*

View File

@ -1,7 +1,7 @@
package solutions.bitbadger.documents.java.integration.postgresql
package solutions.bitbadger.documents.jvm.integration.postgresql
import org.junit.jupiter.api.DisplayName
import solutions.bitbadger.documents.java.integration.common.Count
import solutions.bitbadger.documents.jvm.integration.common.Count
import kotlin.test.Test
/**

View File

@ -1,7 +1,7 @@
package solutions.bitbadger.documents.java.integration.postgresql
package solutions.bitbadger.documents.jvm.integration.postgresql
import org.junit.jupiter.api.DisplayName
import solutions.bitbadger.documents.java.integration.common.Custom
import solutions.bitbadger.documents.jvm.integration.common.Custom
import kotlin.test.Test

View File

@ -1,7 +1,7 @@
package solutions.bitbadger.documents.java.integration.postgresql
package solutions.bitbadger.documents.jvm.integration.postgresql
import org.junit.jupiter.api.DisplayName
import solutions.bitbadger.documents.java.integration.common.Definition
import solutions.bitbadger.documents.jvm.integration.common.Definition
import kotlin.test.Test
/**

View File

@ -1,7 +1,7 @@
package solutions.bitbadger.documents.java.integration.postgresql
package solutions.bitbadger.documents.jvm.integration.postgresql
import org.junit.jupiter.api.DisplayName
import solutions.bitbadger.documents.java.integration.common.Delete
import solutions.bitbadger.documents.jvm.integration.common.Delete
import kotlin.test.Test
/**

View File

@ -1,7 +1,7 @@
package solutions.bitbadger.documents.java.integration.postgresql
package solutions.bitbadger.documents.jvm.integration.postgresql
import org.junit.jupiter.api.DisplayName
import solutions.bitbadger.documents.java.integration.common.Document
import solutions.bitbadger.documents.jvm.integration.common.Document
import kotlin.test.Test
/**

View File

@ -1,7 +1,7 @@
package solutions.bitbadger.documents.java.integration.postgresql
package solutions.bitbadger.documents.jvm.integration.postgresql
import org.junit.jupiter.api.DisplayName
import solutions.bitbadger.documents.java.integration.common.Exists
import solutions.bitbadger.documents.jvm.integration.common.Exists
import kotlin.test.Test
/**

View File

@ -1,7 +1,7 @@
package solutions.bitbadger.documents.java.integration.postgresql
package solutions.bitbadger.documents.jvm.integration.postgresql
import org.junit.jupiter.api.DisplayName
import solutions.bitbadger.documents.java.integration.common.Find
import solutions.bitbadger.documents.jvm.integration.common.Find
import kotlin.test.Test
/**

View File

@ -1,7 +1,7 @@
package solutions.bitbadger.documents.java.integration.postgresql
package solutions.bitbadger.documents.jvm.integration.postgresql
import org.junit.jupiter.api.DisplayName
import solutions.bitbadger.documents.java.integration.common.Patch
import solutions.bitbadger.documents.jvm.integration.common.Patch
import kotlin.test.Test
/**

View File

@ -1,18 +1,11 @@
package solutions.bitbadger.documents.java.integration.postgresql
package solutions.bitbadger.documents.jvm.integration.postgresql
import AutoId
import solutions.bitbadger.documents.Configuration
import solutions.bitbadger.documents.Parameter
import solutions.bitbadger.documents.ParameterType
import solutions.bitbadger.documents.common.*
import solutions.bitbadger.documents.java.*
import solutions.bitbadger.documents.java.extensions.customNonQuery
import solutions.bitbadger.documents.java.extensions.customScalar
import solutions.bitbadger.documents.java.extensions.ensureTable
import solutions.bitbadger.documents.java.integration.TEST_TABLE
import solutions.bitbadger.documents.java.integration.ThrowawayDatabase
import solutions.bitbadger.documents.java.jvm.DocumentConfig
import solutions.bitbadger.documents.java.jvm.Results
import solutions.bitbadger.documents.*
import solutions.bitbadger.documents.extensions.customNonQuery
import solutions.bitbadger.documents.extensions.customScalar
import solutions.bitbadger.documents.extensions.ensureTable
import solutions.bitbadger.documents.jvm.*
import solutions.bitbadger.documents.support.*
/**
* A wrapper for a throwaway PostgreSQL database

View File

@ -1,7 +1,7 @@
package solutions.bitbadger.documents.java.integration.postgresql
package solutions.bitbadger.documents.jvm.integration.postgresql
import org.junit.jupiter.api.DisplayName
import solutions.bitbadger.documents.java.integration.common.RemoveFields
import solutions.bitbadger.documents.jvm.integration.common.RemoveFields
import kotlin.test.Test
/**

View File

@ -1,9 +1,9 @@
package solutions.bitbadger.documents.java.integration.sqlite
package solutions.bitbadger.documents.jvm.integration.sqlite
import org.junit.jupiter.api.DisplayName
import org.junit.jupiter.api.assertThrows
import solutions.bitbadger.documents.DocumentException
import solutions.bitbadger.documents.java.integration.common.Count
import solutions.bitbadger.documents.jvm.integration.common.Count
import kotlin.test.Test
/**

View File

@ -1,7 +1,7 @@
package solutions.bitbadger.documents.java.integration.sqlite
package solutions.bitbadger.documents.jvm.integration.sqlite
import org.junit.jupiter.api.DisplayName
import solutions.bitbadger.documents.java.integration.common.Custom
import solutions.bitbadger.documents.jvm.integration.common.Custom
import kotlin.test.Test
/**

View File

@ -1,9 +1,9 @@
package solutions.bitbadger.documents.java.integration.sqlite
package solutions.bitbadger.documents.jvm.integration.sqlite
import org.junit.jupiter.api.DisplayName
import org.junit.jupiter.api.assertThrows
import solutions.bitbadger.documents.DocumentException
import solutions.bitbadger.documents.java.integration.common.Definition
import solutions.bitbadger.documents.jvm.integration.common.Definition
import kotlin.test.Test
/**

View File

@ -1,9 +1,9 @@
package solutions.bitbadger.documents.java.integration.sqlite
package solutions.bitbadger.documents.jvm.integration.sqlite
import org.junit.jupiter.api.DisplayName
import org.junit.jupiter.api.assertThrows
import solutions.bitbadger.documents.DocumentException
import solutions.bitbadger.documents.java.integration.common.Delete
import solutions.bitbadger.documents.jvm.integration.common.Delete
import kotlin.test.Test
/**

View File

@ -1,7 +1,7 @@
package solutions.bitbadger.documents.java.integration.sqlite
package solutions.bitbadger.documents.jvm.integration.sqlite
import org.junit.jupiter.api.DisplayName
import solutions.bitbadger.documents.java.integration.common.Document
import solutions.bitbadger.documents.jvm.integration.common.Document
import kotlin.test.Test
/**

View File

@ -1,9 +1,9 @@
package solutions.bitbadger.documents.java.integration.sqlite
package solutions.bitbadger.documents.jvm.integration.sqlite
import org.junit.jupiter.api.DisplayName
import org.junit.jupiter.api.assertThrows
import solutions.bitbadger.documents.DocumentException
import solutions.bitbadger.documents.java.integration.common.Exists
import solutions.bitbadger.documents.jvm.integration.common.Exists
import kotlin.test.Test
/**

View File

@ -1,9 +1,9 @@
package solutions.bitbadger.documents.java.integration.sqlite
package solutions.bitbadger.documents.jvm.integration.sqlite
import org.junit.jupiter.api.DisplayName
import org.junit.jupiter.api.assertThrows
import solutions.bitbadger.documents.DocumentException
import solutions.bitbadger.documents.java.integration.common.Find
import solutions.bitbadger.documents.jvm.integration.common.Find
import kotlin.test.Test
/**

View File

@ -1,9 +1,9 @@
package solutions.bitbadger.documents.java.integration.sqlite
package solutions.bitbadger.documents.jvm.integration.sqlite
import org.junit.jupiter.api.DisplayName
import org.junit.jupiter.api.assertThrows
import solutions.bitbadger.documents.DocumentException
import solutions.bitbadger.documents.java.integration.common.Patch
import solutions.bitbadger.documents.jvm.integration.common.Patch
import kotlin.test.Test
/**

View File

@ -1,9 +1,9 @@
package solutions.bitbadger.documents.java.integration.sqlite
package solutions.bitbadger.documents.jvm.integration.sqlite
import org.junit.jupiter.api.DisplayName
import org.junit.jupiter.api.assertThrows
import solutions.bitbadger.documents.DocumentException
import solutions.bitbadger.documents.java.integration.common.RemoveFields
import solutions.bitbadger.documents.jvm.integration.common.RemoveFields
import kotlin.test.Test
/**

View File

@ -1,17 +1,10 @@
package solutions.bitbadger.documents.java.integration.sqlite
package solutions.bitbadger.documents.jvm.integration.sqlite
import AutoId
import solutions.bitbadger.documents.Configuration
import solutions.bitbadger.documents.Parameter
import solutions.bitbadger.documents.ParameterType
import solutions.bitbadger.documents.common.*
import solutions.bitbadger.documents.java.*
import solutions.bitbadger.documents.java.extensions.customScalar
import solutions.bitbadger.documents.java.extensions.ensureTable
import solutions.bitbadger.documents.java.integration.TEST_TABLE
import solutions.bitbadger.documents.java.integration.ThrowawayDatabase
import solutions.bitbadger.documents.java.jvm.DocumentConfig
import solutions.bitbadger.documents.java.jvm.Results
import solutions.bitbadger.documents.*
import solutions.bitbadger.documents.extensions.customScalar
import solutions.bitbadger.documents.extensions.ensureTable
import solutions.bitbadger.documents.jvm.*
import solutions.bitbadger.documents.support.*
import java.io.File
/**

View File

@ -1,4 +1,4 @@
package solutions.bitbadger.documents.common.query
package solutions.bitbadger.documents.query
import org.junit.jupiter.api.AfterEach
import org.junit.jupiter.api.DisplayName
@ -8,7 +8,6 @@ import solutions.bitbadger.documents.Configuration
import solutions.bitbadger.documents.Dialect
import solutions.bitbadger.documents.DocumentException
import solutions.bitbadger.documents.Field
import solutions.bitbadger.documents.java.query.Count
import kotlin.test.assertEquals
/**

View File

@ -1,4 +1,4 @@
package solutions.bitbadger.documents.common.query
package solutions.bitbadger.documents.query
import org.junit.jupiter.api.AfterEach
import org.junit.jupiter.api.DisplayName

View File

@ -1,4 +1,4 @@
package solutions.bitbadger.documents.common.query
package solutions.bitbadger.documents.query
import org.junit.jupiter.api.AfterEach
import org.junit.jupiter.api.DisplayName

View File

@ -1,14 +1,13 @@
package solutions.bitbadger.documents.common.query
package solutions.bitbadger.documents.query
import org.junit.jupiter.api.AfterEach
import org.junit.jupiter.api.DisplayName
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.assertThrows
import AutoId
import solutions.bitbadger.documents.AutoId
import solutions.bitbadger.documents.Configuration
import solutions.bitbadger.documents.Dialect
import solutions.bitbadger.documents.DocumentException
import solutions.bitbadger.documents.java.query.Document
import kotlin.test.assertEquals
import kotlin.test.assertTrue

View File

@ -1,4 +1,4 @@
package solutions.bitbadger.documents.common.query
package solutions.bitbadger.documents.query
import org.junit.jupiter.api.AfterEach
import org.junit.jupiter.api.DisplayName

View File

@ -1,4 +1,4 @@
package solutions.bitbadger.documents.common.query
package solutions.bitbadger.documents.query
import org.junit.jupiter.api.AfterEach
import org.junit.jupiter.api.DisplayName

View File

@ -1,4 +1,4 @@
package solutions.bitbadger.documents.common.query
package solutions.bitbadger.documents.query
import org.junit.jupiter.api.AfterEach
import org.junit.jupiter.api.DisplayName

View File

@ -1,4 +1,4 @@
package solutions.bitbadger.documents.common.query
package solutions.bitbadger.documents.query
import org.junit.jupiter.api.AfterEach
import org.junit.jupiter.api.DisplayName
@ -7,9 +7,6 @@ import solutions.bitbadger.documents.Configuration
import solutions.bitbadger.documents.Dialect
import solutions.bitbadger.documents.Field
import solutions.bitbadger.documents.FieldMatch
import solutions.bitbadger.documents.java.query.byFields
import solutions.bitbadger.documents.java.query.byId
import solutions.bitbadger.documents.java.query.orderBy
import kotlin.test.assertEquals
/**
@ -29,7 +26,7 @@ class QueryTest {
@Test
@DisplayName("statementWhere generates correctly")
fun statementWhere() =
assertEquals("x WHERE y", solutions.bitbadger.documents.java.query.statementWhere("x", "y"), "Statements not combined correctly")
assertEquals("x WHERE y", statementWhere("x", "y"), "Statements not combined correctly")
@Test
@DisplayName("byId generates a numeric ID query (PostgreSQL)")

View File

@ -1,11 +1,10 @@
package solutions.bitbadger.documents.common.query
package solutions.bitbadger.documents.query
import org.junit.jupiter.api.AfterEach
import org.junit.jupiter.api.DisplayName
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.assertThrows
import solutions.bitbadger.documents.*
import solutions.bitbadger.documents.common.*
import kotlin.test.assertEquals
/**

View File

@ -1,12 +1,10 @@
package solutions.bitbadger.documents.common.query
package solutions.bitbadger.documents.query
import org.junit.jupiter.api.AfterEach
import org.junit.jupiter.api.DisplayName
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.assertThrows
import solutions.bitbadger.documents.*
import solutions.bitbadger.documents.common.*
import solutions.bitbadger.documents.java.query.Where
import kotlin.test.assertEquals
/**

View File

@ -1,4 +1,4 @@
package solutions.bitbadger.documents.java
package solutions.bitbadger.documents.support
import solutions.bitbadger.documents.DocumentSerializer
import com.fasterxml.jackson.databind.ObjectMapper

View File

@ -1,4 +1,4 @@
package solutions.bitbadger.documents.java.integration
package solutions.bitbadger.documents.support
import java.sql.Connection

View File

@ -1,7 +1,7 @@
package solutions.bitbadger.documents.java.integration
package solutions.bitbadger.documents.support
import kotlinx.serialization.Serializable
import solutions.bitbadger.documents.java.extensions.insert
import solutions.bitbadger.documents.extensions.insert
/** The test table name to use for integration tests */
const val TEST_TABLE = "test_table"

View File

@ -1,24 +0,0 @@
package solutions.bitbadger.documents.kotlin
import kotlinx.serialization.json.Json
object Configuration {
/**
* JSON serializer; replace to configure with non-default options
*
* The default sets `encodeDefaults` to `true` and `explicitNulls` to `false`; see
* https://github.com/Kotlin/kotlinx.serialization/blob/master/docs/json.md for all configuration options
*/
@JvmField
var json = Json {
encodeDefaults = true
explicitNulls = false
coerceInputValues = true
}
/** The JSON serializer to use for documents */
@JvmStatic
var serializer: DocumentSerializer = DocumentSerializerKotlin()
}

View File

@ -5,6 +5,7 @@ import solutions.bitbadger.documents.Field
import solutions.bitbadger.documents.FieldMatch
import solutions.bitbadger.documents.Parameter
import solutions.bitbadger.documents.ParameterType
import solutions.bitbadger.documents.query.Count
import java.sql.Connection

View File

@ -1,7 +1,9 @@
package solutions.bitbadger.documents.kotlin
import solutions.bitbadger.documents.*
import solutions.bitbadger.documents.Configuration
import solutions.bitbadger.documents.Parameter
import solutions.bitbadger.documents.jvm.Parameters
import solutions.bitbadger.documents.jvm.Custom as JvmCustom
import java.sql.Connection
import java.sql.ResultSet
@ -15,17 +17,16 @@ object Custom {
*
* @param query The query to retrieve the results
* @param parameters Parameters to use for the query
* @param clazz The class of the document to be returned
* @param conn The connection over which the query should be executed
* @param mapFunc The mapping function between the document and the domain item
* @return A list of results for the given query
*/
inline fun <reified TDoc> list(
inline fun <reified TDoc : Any> list(
query: String,
parameters: Collection<Parameter<*>> = listOf(),
conn: Connection,
noinline mapFunc: (ResultSet, Class<TDoc>) -> TDoc
) = Custom.list(query, parameters, TDoc::class.java, conn, mapFunc)
mapFunc: (ResultSet) -> TDoc
) = Parameters.apply(conn, query, parameters).use { Results.toCustomList(it, mapFunc) }
/**
* Execute a query that returns a list of results (creates connection)
@ -35,10 +36,10 @@ object Custom {
* @param mapFunc The mapping function between the document and the domain item
* @return A list of results for the given query
*/
inline fun <reified TDoc> list(
inline fun <reified TDoc : Any> list(
query: String,
parameters: Collection<Parameter<*>> = listOf(),
noinline mapFunc: (ResultSet, Class<TDoc>) -> TDoc
mapFunc: (ResultSet) -> TDoc
) = Configuration.dbConn().use { list(query, parameters, it, mapFunc) }
/**
@ -50,12 +51,12 @@ object Custom {
* @param mapFunc The mapping function between the document and the domain item
* @return The document if one matches the query, `null` otherwise
*/
inline fun <reified TDoc> single(
inline fun <reified TDoc : Any> single(
query: String,
parameters: Collection<Parameter<*>> = listOf(),
conn: Connection,
noinline mapFunc: (ResultSet, Class<TDoc>) -> TDoc
) = Custom.single(query, parameters, TDoc::class.java, conn, mapFunc)
mapFunc: (ResultSet) -> TDoc
) = list("$query LIMIT 1", parameters, conn, mapFunc).singleOrNull()
/**
* Execute a query that returns one or no results
@ -65,10 +66,10 @@ object Custom {
* @param mapFunc The mapping function between the document and the domain item
* @return The document if one matches the query, `null` otherwise
*/
inline fun <reified TDoc> single(
inline fun <reified TDoc : Any> single(
query: String,
parameters: Collection<Parameter<*>> = listOf(),
noinline mapFunc: (ResultSet, Class<TDoc>) -> TDoc
noinline mapFunc: (ResultSet) -> TDoc
) = Configuration.dbConn().use { single(query, parameters, it, mapFunc) }
/**
@ -79,7 +80,7 @@ object Custom {
* @param parameters Parameters to use for the query
*/
fun nonQuery(query: String, parameters: Collection<Parameter<*>> = listOf(), conn: Connection) =
Custom.nonQuery(query, parameters, conn)
JvmCustom.nonQuery(query, parameters, conn)
/**
* Execute a query that returns no results
@ -103,8 +104,13 @@ object Custom {
query: String,
parameters: Collection<Parameter<*>> = listOf(),
conn: Connection,
noinline mapFunc: (ResultSet, Class<T>) -> T
) = Custom.scalar(query, parameters, T::class.java, conn, mapFunc)
mapFunc: (ResultSet) -> T
) = Parameters.apply(conn, query, parameters).use { stmt ->
stmt.executeQuery().use { rs ->
rs.next()
mapFunc(rs)
}
}
/**
* Execute a query that returns a scalar result
@ -115,6 +121,6 @@ object Custom {
* @return The scalar value from the query
*/
inline fun <reified T : Any> scalar(
query: String, parameters: Collection<Parameter<*>> = listOf(), noinline mapFunc: (ResultSet, Class<T>) -> T
query: String, parameters: Collection<Parameter<*>> = listOf(), mapFunc: (ResultSet) -> T
) = Configuration.dbConn().use { scalar(query, parameters, it, mapFunc) }
}

View File

@ -0,0 +1,33 @@
package solutions.bitbadger.documents.kotlin
import kotlinx.serialization.json.Json
/**
* Configuration for document serialization
*/
object DocumentConfig {
val options = Json {
coerceInputValues = true
encodeDefaults = true
explicitNulls = false
}
/**
* Serialize a document to JSON
*
* @param document The document to be serialized
* @return The JSON string with the serialized document
*/
inline fun <reified TDoc> serialize(document: TDoc) =
options.encodeToString(document)
/**
* Deserialize a document from JSON
*
* @param json The JSON string with the serialized document
* @return The document created from the given JSON
*/
inline fun <reified TDoc> deserialize(json: String) =
options.decodeFromString<TDoc>(json)
}

View File

@ -0,0 +1,21 @@
package solutions.bitbadger.documents.kotlin
import org.junit.jupiter.api.DisplayName
import org.junit.jupiter.api.Test
import kotlin.test.assertFalse
import kotlin.test.assertTrue
/**
* Unit tests for the `Configuration` object
*/
@DisplayName("Kotlin | DocumentConfig")
class DocumentConfigTest {
@Test
@DisplayName("Default JSON options are as expected")
fun defaultJsonOptions() {
assertTrue(DocumentConfig.options.configuration.encodeDefaults, "Encode Defaults should have been set")
assertFalse(DocumentConfig.options.configuration.explicitNulls, "Explicit Nulls should not have been set")
assertTrue(DocumentConfig.options.configuration.coerceInputValues, "Coerce Input Values should have been set")
}
}

View File

@ -1,118 +0,0 @@
package solutions.bitbadger.documents
import java.sql.Connection
import java.sql.ResultSet
/**
* Custom query execution functions
*/
object Custom {
/**
* Execute a query that returns a list of results
*
* @param query The query to retrieve the results
* @param parameters Parameters to use for the query
* @param clazz The class of the document to be returned
* @param conn The connection over which the query should be executed
* @param mapFunc The mapping function between the document and the domain item
* @return A list of results for the given query
*/
inline fun <reified TDoc> list(
query: String,
parameters: Collection<Parameter<*>> = listOf(),
conn: Connection,
noinline mapFunc: (ResultSet, Class<TDoc>) -> TDoc
) = Custom.list(query, parameters, TDoc::class.java, conn, mapFunc)
/**
* Execute a query that returns a list of results (creates connection)
*
* @param query The query to retrieve the results
* @param parameters Parameters to use for the query
* @param mapFunc The mapping function between the document and the domain item
* @return A list of results for the given query
*/
inline fun <reified TDoc> list(
query: String,
parameters: Collection<Parameter<*>> = listOf(),
noinline mapFunc: (ResultSet, Class<TDoc>) -> TDoc
) = Configuration.dbConn().use { list(query, parameters, it, mapFunc) }
/**
* Execute a query that returns one or no results
*
* @param query The query to retrieve the results
* @param parameters Parameters to use for the query
* @param conn The connection over which the query should be executed
* @param mapFunc The mapping function between the document and the domain item
* @return The document if one matches the query, `null` otherwise
*/
inline fun <reified TDoc> single(
query: String,
parameters: Collection<Parameter<*>> = listOf(),
conn: Connection,
noinline mapFunc: (ResultSet, Class<TDoc>) -> TDoc
) = Custom.single(query, parameters, TDoc::class.java, conn, mapFunc)
/**
* Execute a query that returns one or no results
*
* @param query The query to retrieve the results
* @param parameters Parameters to use for the query
* @param mapFunc The mapping function between the document and the domain item
* @return The document if one matches the query, `null` otherwise
*/
inline fun <reified TDoc> single(
query: String,
parameters: Collection<Parameter<*>> = listOf(),
noinline mapFunc: (ResultSet, Class<TDoc>) -> TDoc
) = Configuration.dbConn().use { single(query, parameters, it, mapFunc) }
/**
* Execute a query that returns no results
*
* @param query The query to retrieve the results
* @param conn The connection over which the query should be executed
* @param parameters Parameters to use for the query
*/
fun nonQuery(query: String, parameters: Collection<Parameter<*>> = listOf(), conn: Connection) =
Custom.nonQuery(query, parameters, conn)
/**
* Execute a query that returns no results
*
* @param query The query to retrieve the results
* @param parameters Parameters to use for the query
*/
fun nonQuery(query: String, parameters: Collection<Parameter<*>> = listOf()) =
Configuration.dbConn().use { nonQuery(query, parameters, it) }
/**
* Execute a query that returns a scalar result
*
* @param query The query to retrieve the result
* @param parameters Parameters to use for the query
* @param conn The connection over which the query should be executed
* @param mapFunc The mapping function between the document and the domain item
* @return The scalar value from the query
*/
inline fun <reified T : Any> scalar(
query: String,
parameters: Collection<Parameter<*>> = listOf(),
conn: Connection,
noinline mapFunc: (ResultSet, Class<T>) -> T
) = Custom.scalar(query, parameters, T::class.java, conn, mapFunc)
/**
* Execute a query that returns a scalar result
*
* @param query The query to retrieve the result
* @param parameters Parameters to use for the query
* @param mapFunc The mapping function between the document and the domain item
* @return The scalar value from the query
*/
inline fun <reified T : Any> scalar(
query: String, parameters: Collection<Parameter<*>> = listOf(), noinline mapFunc: (ResultSet, Class<T>) -> T
) = Configuration.dbConn().use { scalar(query, parameters, it, mapFunc) }
}

View File

@ -45,7 +45,6 @@
</properties>
<modules>
<module>common</module>
<module>jvm</module>
</modules>

View File

@ -1,57 +0,0 @@
package solutions.bitbadger.documents.java;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import solutions.bitbadger.documents.common.Dialect;
import solutions.bitbadger.documents.common.DocumentException;
import static org.junit.jupiter.api.Assertions.*;
/**
* Unit tests for the `Configuration` object
*/
@DisplayName("Java | Configuration")
final public class ConfigurationTest {
@Test
@DisplayName("Default JSON options are as expected")
public void defaultJsonOptions() {
assertTrue(Configuration.json.getConfiguration().getEncodeDefaults(), "Encode Defaults should have been set");
assertFalse(Configuration.json.getConfiguration().getExplicitNulls(),
"Explicit Nulls should not have been set");
assertTrue(Configuration.json.getConfiguration().getCoerceInputValues(),
"Coerce Input Values should have been set");
}
@Test
@DisplayName("Default ID field is `id`")
public void defaultIdField() {
assertEquals("id", Configuration.idField, "Default ID field incorrect");
}
@Test
@DisplayName("Default Auto ID strategy is `DISABLED`")
public void defaultAutoId() {
assertEquals(AutoId.DISABLED, Configuration.autoIdStrategy, "Default Auto ID strategy should be `disabled`");
}
@Test
@DisplayName("Default ID string length should be 16")
public void defaultIdStringLength() {
assertEquals(16, Configuration.idStringLength, "Default ID string length should be 16");
}
@Test
@DisplayName("Dialect is derived from connection string")
public void dialectIsDerived() {
try {
assertThrows(DocumentException.class, Configuration::dialect);
Configuration.setConnectionString("jdbc:postgresql:db");
assertEquals(Dialect.POSTGRESQL, Configuration.dialect());
} catch (DocumentException ex) {
fail(ex);
} finally {
Configuration.setConnectionString(null);
}
}
}

View File

@ -1,21 +0,0 @@
package solutions.bitbadger.documents
import org.junit.jupiter.api.DisplayName
import org.junit.jupiter.api.Test
import kotlin.test.assertFalse
import kotlin.test.assertTrue
/**
* Unit tests for the `Configuration` object
*/
@DisplayName("Kotlin | Configuration")
class ConfigurationTest {
@Test
@DisplayName("Default JSON options are as expected")
fun defaultJsonOptions() {
assertTrue(Configuration.json.configuration.encodeDefaults, "Encode Defaults should have been set")
assertFalse(Configuration.json.configuration.explicitNulls, "Explicit Nulls should not have been set")
assertTrue(Configuration.json.configuration.coerceInputValues, "Coerce Input Values should have been set")
}
}