HHH-13379 Enhance date/time tests to allow testing certain values only when forcing the JDBC timezone

(cherry picked from commit de8e965cc8)
This commit is contained in:
Yoann Rodière 2019-07-26 10:10:08 +02:00 committed by gbadner
parent 330b5da305
commit f4fd801c3e
1 changed files with 28 additions and 12 deletions

View File

@ -243,6 +243,8 @@ abstract class AbstractJavaTimeTypeTest<T, E> extends BaseCoreFunctionalTestCase
private final List<Class<? extends AbstractRemappingH2Dialect>> remappingDialectClasses = new ArrayList<>(); private final List<Class<? extends AbstractRemappingH2Dialect>> remappingDialectClasses = new ArrayList<>();
private ZoneId forcedJdbcTimeZone = null;
protected AbstractParametersBuilder() { protected AbstractParametersBuilder() {
dialect = determineDialect(); dialect = determineDialect();
remappingDialectClasses.add( null ); // Always test without remapping remappingDialectClasses.add( null ); // Always test without remapping
@ -261,6 +263,18 @@ abstract class AbstractJavaTimeTypeTest<T, E> extends BaseCoreFunctionalTestCase
return thisAsS(); return thisAsS();
} }
public S withForcedJdbcTimezone(String zoneIdString, Consumer<S> contributor) {
ZoneId zoneId = ZoneId.of( zoneIdString );
this.forcedJdbcTimeZone = zoneId;
try {
contributor.accept( thisAsS() );
}
finally {
this.forcedJdbcTimeZone = null;
}
return thisAsS();
}
@SafeVarargs @SafeVarargs
public final S alsoTestRemappingsWithH2(Class<? extends AbstractRemappingH2Dialect> ... dialectClasses) { public final S alsoTestRemappingsWithH2(Class<? extends AbstractRemappingH2Dialect> ... dialectClasses) {
if ( dialect instanceof H2Dialect ) { if ( dialect instanceof H2Dialect ) {
@ -281,24 +295,26 @@ abstract class AbstractJavaTimeTypeTest<T, E> extends BaseCoreFunctionalTestCase
parameters.add( parameters.add(
new EnvironmentParameters( new EnvironmentParameters(
defaultJvmTimeZone, defaultJvmTimeZone,
null, forcedJdbcTimeZone,
remappingDialectClass remappingDialectClass
) )
); );
Collections.addAll( parameters, subClassParameters ); Collections.addAll( parameters, subClassParameters );
result.add( parameters.toArray() ); result.add( parameters.toArray() );
} }
for ( ZoneId hibernateJdbcTimeZone : getHibernateJdbcTimeZonesToTest() ) { if ( forcedJdbcTimeZone == null ) {
List<Object> parameters = new ArrayList<>(); for ( ZoneId hibernateJdbcTimeZone : getHibernateJdbcTimeZonesToTest() ) {
parameters.add( List<Object> parameters = new ArrayList<>();
new EnvironmentParameters( parameters.add(
defaultJvmTimeZone, new EnvironmentParameters(
hibernateJdbcTimeZone, defaultJvmTimeZone,
null hibernateJdbcTimeZone,
) null
); )
Collections.addAll( parameters, subClassParameters ); );
result.add( parameters.toArray() ); Collections.addAll( parameters, subClassParameters );
result.add( parameters.toArray() );
}
} }
return thisAsS(); return thisAsS();
} }