DATAJDBC-637 - Fix tests for all databases.

Adds SQL scripts for all databases.
Separates tests for all databases vs. those that actually support nanosecond precision.

Original pull request: #255.
This commit is contained in:
Jens Schauder
2020-12-09 09:03:46 +01:00
parent 306f1b39dd
commit 2188b5d6cf
9 changed files with 68 additions and 2 deletions

View File

@@ -823,11 +823,26 @@ public class JdbcAggregateTemplateIntegrationTests {
}
@Test // DATAJDBC-637
@EnabledOnFeature(SUPPORTS_NANOSECOND_PRECISION)
public void saveAndLoadDateTimeWithFullPrecision() {
WithLocalDateTime entity = new WithLocalDateTime();
entity.id = 23L;
entity.testTime = LocalDateTime.of(5, 5, 5, 5, 5, 5, 123456789);
entity.testTime = LocalDateTime.of(2005, 5, 5, 5, 5, 5, 123456789);
template.insert(entity);
WithLocalDateTime loaded = template.findById(23L, WithLocalDateTime.class);
assertThat(loaded.testTime).isEqualTo(entity.testTime);
}
@Test // DATAJDBC-637
public void saveAndLoadDateTimeWithMicrosecondPrecision() {
WithLocalDateTime entity = new WithLocalDateTime();
entity.id = 23L;
entity.testTime = LocalDateTime.of(2005, 5, 5, 5, 5, 5, 123456000);
template.insert(entity);

View File

@@ -72,6 +72,11 @@ public class TestDatabaseFeatures {
assumeThat(database).isNotIn(Database.MySql, Database.MariaDb, Database.SqlServer, Database.Db2, Database.Oracle);
}
private void supportsNanosecondPrecision() {
assumeThat(database).isNotIn(Database.MySql, Database.PostgreSql, Database.MariaDb, Database.SqlServer);
}
private void supportsMultiDimensionalArrays() {
supportsArrays();
@@ -109,6 +114,7 @@ public class TestDatabaseFeatures {
SUPPORTS_HUGE_NUMBERS(TestDatabaseFeatures::supportsHugeNumbers), //
SUPPORTS_ARRAYS(TestDatabaseFeatures::supportsArrays), //
SUPPORTS_GENERATED_IDS_IN_REFERENCED_ENTITIES(TestDatabaseFeatures::supportsGeneratedIdsInReferencedEntities), //
SUPPORTS_NANOSECOND_PRECISION(TestDatabaseFeatures::supportsNanosecondPrecision), //
IS_HSQL(f -> f.databaseIs(Database.Hsql));
private final Consumer<TestDatabaseFeatures> featureMethod;

View File

@@ -35,6 +35,7 @@ DROP TABLE NO_ID_LIST_CHAIN4;
DROP TABLE WITH_READ_ONLY;
DROP TABLE VERSIONED_AGGREGATE;
DROP TABLE WITH_LOCAL_DATE_TIME;
CREATE TABLE LEGO_SET
(
@@ -343,3 +344,10 @@ CREATE TABLE VERSIONED_AGGREGATE
ID BIGINT GENERATED BY DEFAULT AS IDENTITY (START WITH 1) PRIMARY KEY,
VERSION BIGINT
);
CREATE TABLE WITH_LOCAL_DATE_TIME
(
ID BIGINT NOT NULL PRIMARY KEY,
TEST_TIME TIMESTAMP(9)
);

View File

@@ -307,6 +307,6 @@ CREATE TABLE WITH_READ_ONLY
CREATE TABLE WITH_LOCAL_DATE_TIME
(
ID SERIAL PRIMARY KEY,
ID BIGINT PRIMARY KEY,
TEST_TIME TIMESTAMP(9) WITHOUT TIME ZONE
);

View File

@@ -290,3 +290,10 @@ CREATE TABLE VERSIONED_AGGREGATE
ID BIGINT AUTO_INCREMENT PRIMARY KEY,
VERSION BIGINT
);
CREATE TABLE WITH_LOCAL_DATE_TIME
(
ID BIGINT PRIMARY KEY,
TEST_TIME TIMESTAMP(6)
);

View File

@@ -316,3 +316,12 @@ CREATE TABLE VERSIONED_AGGREGATE
ID BIGINT IDENTITY PRIMARY KEY,
VERSION BIGINT
);
DROP TABLE IF EXISTS WITH_LOCAL_DATE_TIME;
CREATE TABLE WITH_LOCAL_DATE_TIME
(
ID BIGINT PRIMARY KEY,
TEST_TIME datetime2(7)
);

View File

@@ -295,3 +295,10 @@ CREATE TABLE WITH_READ_ONLY
NAME VARCHAR(200),
READ_ONLY VARCHAR(200) DEFAULT 'from-db'
);
CREATE TABLE WITH_LOCAL_DATE_TIME
(
ID BIGINT PRIMARY KEY,
TEST_TIME TIMESTAMP(6)
);

View File

@@ -27,6 +27,7 @@ DROP TABLE NO_ID_MAP_CHAIN3 CASCADE CONSTRAINTS PURGE;
DROP TABLE NO_ID_MAP_CHAIN4 CASCADE CONSTRAINTS PURGE;
DROP TABLE VERSIONED_AGGREGATE CASCADE CONSTRAINTS PURGE;
DROP TABLE WITH_READ_ONLY CASCADE CONSTRAINTS PURGE;
DROP TABLE WITH_LOCAL_DATE_TIME CASCADE CONSTRAINTS PURGE;
CREATE TABLE LEGO_SET
(
@@ -325,3 +326,10 @@ CREATE TABLE WITH_READ_ONLY
NAME VARCHAR(200),
READ_ONLY VARCHAR(200) DEFAULT 'from-db'
);
CREATE TABLE WITH_LOCAL_DATE_TIME
(
ID NUMBER PRIMARY KEY,
TEST_TIME TIMESTAMP(9)
);

View File

@@ -318,3 +318,9 @@ CREATE TABLE WITH_READ_ONLY
NAME VARCHAR(200),
READ_ONLY VARCHAR(200) DEFAULT 'from-db'
);
CREATE TABLE WITH_LOCAL_DATE_TIME
(
ID BIGINT PRIMARY KEY,
TEST_TIME TIMESTAMP(9) WITHOUT TIME ZONE
);