Skip to content

Commit ff0f8a0

Browse files
committed
[#1442] Format + Minor clean up
1 parent 49bb128 commit ff0f8a0

File tree

1 file changed

+84
-96
lines changed

1 file changed

+84
-96
lines changed

hibernate-reactive-core/src/test/java/org/hibernate/reactive/timezones/TimeZoneStorageMappingTest.java

Lines changed: 84 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,15 @@
4646
* <p>
4747
* Note that the tests below do not use ORM's annotations below to calculate
4848
* if a Dialect supports Format or Timezone types:
49-
* @RequiresDialectFeature(feature = DialectFeatureChecks.SupportsFormat.class)
50-
* @RequiresDialectFeature(feature = DialectFeatureChecks.SupportsTimezoneTypes.class....)
49+
*
50+
* <pre>{@code
51+
* @RequiresDialectFeature(feature = DialectFeatureChecks.SupportsFormat.class)
52+
* @RequiresDialectFeature(feature = DialectFeatureChecks.SupportsTimezoneTypes.class....)
53+
* }</pre>
5154
* </p>
5255
* <p>
5356
* It appears that DB2, SQLServer and Oracle do not yet support FORMAT and none of reactive's supported Dialects
54-
* support Timezone Types via Offset, so the ORM's testNormalizeOffset(...) method is not included in these tests.
57+
* support Timezone Types via Offset, so the ORM's {@code testNormalizeOffset(...)} method is not included in these tests.
5558
* </p>
5659
*/
5760
@Timeout(value = 10, timeUnit = MINUTES)
@@ -62,36 +65,22 @@ public class TimeZoneStorageMappingTest extends BaseReactiveTest {
6265
public DBSelectionExtension selectionRule = DBSelectionExtension.skipTestsFor( SQLSERVER );
6366

6467
private static final ZoneOffset JVM_TIMEZONE_OFFSET = OffsetDateTime.now().getOffset();
68+
6569
private static final OffsetTime OFFSET_TIME = OffsetTime.of(
66-
LocalTime.of(
67-
12,
68-
0,
69-
0
70-
),
70+
LocalTime.of( 12, 0, 0 ),
7171
ZoneOffset.ofHoursMinutes( 5, 45 )
7272
);
73+
7374
private static final OffsetDateTime OFFSET_DATE_TIME = OffsetDateTime.of(
74-
LocalDateTime.of(
75-
2022,
76-
3,
77-
1,
78-
12,
79-
0,
80-
0
81-
),
75+
LocalDateTime.of( 2022, 3, 1, 12, 0, 0 ),
8276
ZoneOffset.ofHoursMinutes( 5, 45 )
8377
);
78+
8479
private static final ZonedDateTime ZONED_DATE_TIME = ZonedDateTime.of(
85-
LocalDateTime.of(
86-
2022,
87-
3,
88-
1,
89-
12,
90-
0,
91-
0
92-
),
80+
LocalDateTime.of( 2022, 3, 1, 12, 0, 0 ),
9381
ZoneOffset.ofHoursMinutes( 5, 45 )
9482
);
83+
9584
private static final DateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern( "HH:mm:ssxxx" );
9685
private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern( "dd/MM/yyyy 'at' HH:mm:ssxxx" );
9786

@@ -108,8 +97,7 @@ protected void setProperties(Configuration configuration) {
10897

10998
@BeforeEach
11099
public void populateDb(VertxTestContext context) {
111-
TimeZoneStorageEntity entity = new TimeZoneStorageEntity( 1, OFFSET_TIME, OFFSET_DATE_TIME, ZONED_DATE_TIME );
112-
100+
TimeZoneStorageEntity entity = new TimeZoneStorageEntity( 1, OFFSET_TIME, OFFSET_DATE_TIME, ZONED_DATE_TIME );
113101
test( context, getMutinySessionFactory().withTransaction( (s, t) -> s.persist( entity ) ) );
114102
}
115103

@@ -136,87 +124,89 @@ public void testOffsetRetainedFormatColumn(VertxTestContext context) {
136124
public void testOffsetRetained(VertxTestContext context, String suffix) {
137125
test( context, openSession()
138126
.thenCompose( session -> session.createQuery(
139-
"select " +
140-
"e.offsetTime" + suffix + ", " +
141-
"e.offsetDateTime" + suffix + ", " +
142-
"e.zonedDateTime" + suffix + ", " +
143-
"extract(offset from e.offsetTime" + suffix + "), " +
144-
"extract(offset from e.offsetDateTime" + suffix + "), " +
145-
"extract(offset from e.zonedDateTime" + suffix + "), " +
146-
"e.offsetTime" + suffix + " + 1 hour, " +
147-
"e.offsetDateTime" + suffix + " + 1 hour, " +
148-
"e.zonedDateTime" + suffix + " + 1 hour, " +
149-
"e.offsetTime" + suffix + " + 1 hour - e.offsetTime" + suffix + ", " +
150-
"e.offsetDateTime" + suffix + " + 1 hour - e.offsetDateTime" + suffix + ", " +
151-
"e.zonedDateTime" + suffix + " + 1 hour - e.zonedDateTime" + suffix + ", " +
152-
"1 from TimeZoneStorageEntity e " +
153-
"where e.offsetDateTime" + suffix + " = e.offsetDateTime" + suffix,
154-
Tuple.class
155-
).getSingleResult()
156-
.thenAccept( result -> {
157-
assertThat( result.get( 0, OffsetTime.class ) ).isEqualTo( OFFSET_TIME );
158-
assertThat( result.get( 1, OffsetDateTime.class ) ).isEqualTo( OFFSET_DATE_TIME );
159-
assertThat( result.get( 2, ZonedDateTime.class ) ).isEqualTo( ZONED_DATE_TIME );
160-
assertThat( result.get( 3, ZoneOffset.class ) ).isEqualTo( OFFSET_TIME.getOffset() );
161-
assertThat( result.get( 4, ZoneOffset.class ) ).isEqualTo( OFFSET_DATE_TIME.getOffset() );
162-
assertThat( result.get( 5, ZoneOffset.class ) ).isEqualTo( ZONED_DATE_TIME.getOffset() );
163-
assertThat( result.get( 6, OffsetTime.class ) ).isEqualTo( OFFSET_TIME.plusHours( 1L ) );
164-
assertThat( result.get( 7, OffsetDateTime.class ) ).isEqualTo( OFFSET_DATE_TIME.plusHours( 1L ) );
165-
assertThat( result.get( 8, ZonedDateTime.class ) ).isEqualTo( ZONED_DATE_TIME.plusHours( 1L ) );
166-
assertThat( result.get( 9, Duration.class ) ).isEqualTo( Duration.ofHours( 1L ) );
167-
assertThat( result.get( 10, Duration.class ) ).isEqualTo( Duration.ofHours( 1L ) );
168-
assertThat( result.get( 11, Duration.class ) ).isEqualTo( Duration.ofHours( 1L ) );
169-
} )
170-
)
127+
"select " +
128+
"e.offsetTime" + suffix + ", " +
129+
"e.offsetDateTime" + suffix + ", " +
130+
"e.zonedDateTime" + suffix + ", " +
131+
"extract(offset from e.offsetTime" + suffix + "), " +
132+
"extract(offset from e.offsetDateTime" + suffix + "), " +
133+
"extract(offset from e.zonedDateTime" + suffix + "), " +
134+
"e.offsetTime" + suffix + " + 1 hour, " +
135+
"e.offsetDateTime" + suffix + " + 1 hour, " +
136+
"e.zonedDateTime" + suffix + " + 1 hour, " +
137+
"e.offsetTime" + suffix + " + 1 hour - e.offsetTime" + suffix + ", " +
138+
"e.offsetDateTime" + suffix + " + 1 hour - e.offsetDateTime" + suffix + ", " +
139+
"e.zonedDateTime" + suffix + " + 1 hour - e.zonedDateTime" + suffix + ", " +
140+
"1 from TimeZoneStorageEntity e " +
141+
"where e.offsetDateTime" + suffix + " = e.offsetDateTime" + suffix,
142+
Tuple.class
143+
).getSingleResult() )
144+
.thenAccept( result -> {
145+
assertThat( result.get( 0, OffsetTime.class ) ).isEqualTo( OFFSET_TIME );
146+
assertThat( result.get( 1, OffsetDateTime.class ) ).isEqualTo( OFFSET_DATE_TIME );
147+
assertThat( result.get( 2, ZonedDateTime.class ) ).isEqualTo( ZONED_DATE_TIME );
148+
assertThat( result.get( 3, ZoneOffset.class ) ).isEqualTo( OFFSET_TIME.getOffset() );
149+
assertThat( result.get( 4, ZoneOffset.class ) ).isEqualTo( OFFSET_DATE_TIME.getOffset() );
150+
assertThat( result.get( 5, ZoneOffset.class ) ).isEqualTo( ZONED_DATE_TIME.getOffset() );
151+
assertThat( result.get( 6, OffsetTime.class ) ).isEqualTo( OFFSET_TIME.plusHours( 1L ) );
152+
assertThat( result.get( 7, OffsetDateTime.class ) ).isEqualTo( OFFSET_DATE_TIME.plusHours( 1L ) );
153+
assertThat( result.get( 8, ZonedDateTime.class ) ).isEqualTo( ZONED_DATE_TIME.plusHours( 1L ) );
154+
assertThat( result.get( 9, Duration.class ) ).isEqualTo( Duration.ofHours( 1L ) );
155+
assertThat( result.get( 10, Duration.class ) ).isEqualTo( Duration.ofHours( 1L ) );
156+
assertThat( result.get( 11, Duration.class ) ).isEqualTo( Duration.ofHours( 1L ) );
157+
} )
171158
);
172159
}
173160

174161
public void testOffsetRetainedFormat(VertxTestContext context, String suffix) {
175162
test( context, openSession()
176163
.thenCompose( session -> session.createQuery(
177-
"select " +
178-
"format(e.offsetTime" + suffix + " as 'HH:mm:ssxxx'), " +
179-
"format(e.offsetDateTime" + suffix + " as 'dd/MM/yyyy ''at'' HH:mm:ssxxx'), " +
180-
"format(e.zonedDateTime" + suffix + " as 'dd/MM/yyyy ''at'' HH:mm:ssxxx'), " +
181-
"1 from TimeZoneStorageEntity e " +
182-
"where e.offsetDateTime" + suffix + " = e.offsetDateTime" + suffix,
183-
Tuple.class
184-
).getSingleResult()
185-
.thenAccept( result -> {
186-
assertThat( result.get( 0, String.class ) ).isEqualTo( TIME_FORMATTER.format( OFFSET_TIME ) );
187-
assertThat( result.get( 1, String.class ) ).isEqualTo( FORMATTER.format( OFFSET_DATE_TIME ) );
188-
assertThat( result.get( 2, String.class ) ).isEqualTo( FORMATTER.format( ZONED_DATE_TIME ) );
189-
} )
190-
)
164+
"select " +
165+
"format(e.offsetTime" + suffix + " as 'HH:mm:ssxxx'), " +
166+
"format(e.offsetDateTime" + suffix + " as 'dd/MM/yyyy ''at'' HH:mm:ssxxx'), " +
167+
"format(e.zonedDateTime" + suffix + " as 'dd/MM/yyyy ''at'' HH:mm:ssxxx'), " +
168+
"1 from TimeZoneStorageEntity e " +
169+
"where e.offsetDateTime" + suffix + " = e.offsetDateTime" + suffix,
170+
Tuple.class
171+
).getSingleResult() )
172+
.thenAccept( result -> {
173+
assertThat( result.get( 0, String.class ) ).isEqualTo( TIME_FORMATTER.format( OFFSET_TIME ) );
174+
assertThat( result.get( 1, String.class ) ).isEqualTo( FORMATTER.format( OFFSET_DATE_TIME ) );
175+
assertThat( result.get( 2, String.class ) ).isEqualTo( FORMATTER.format( ZONED_DATE_TIME ) );
176+
} )
191177
);
192178
}
193179

194180
@Test
195181
public void testNormalize(VertxTestContext context) {
196182
test( context, openSession()
197183
.thenCompose( session -> session.createQuery(
198-
"select " +
199-
"e.offsetTimeNormalized, " +
200-
"e.offsetDateTimeNormalized, " +
201-
"e.zonedDateTimeNormalized, " +
202-
"e.offsetTimeNormalizedUtc, " +
203-
"e.offsetDateTimeNormalizedUtc, " +
204-
"e.zonedDateTimeNormalizedUtc " +
205-
"from TimeZoneStorageEntity e",
206-
Tuple.class
207-
).getSingleResult()
208-
.thenAccept( result -> {
209-
assertThat( result.get( 0, OffsetTime.class ).toLocalTime()).isEqualTo( OFFSET_TIME.withOffsetSameInstant( JVM_TIMEZONE_OFFSET ).toLocalTime() );
210-
assertThat( result.get( 0, OffsetTime.class ).getOffset()).isEqualTo( JVM_TIMEZONE_OFFSET );
211-
assertThat( result.get( 1, OffsetDateTime.class ).toInstant()).isEqualTo( OFFSET_DATE_TIME.toInstant() );
212-
assertThat( result.get( 2, ZonedDateTime.class ).toInstant()).isEqualTo( ZONED_DATE_TIME.toInstant() );
213-
assertThat( result.get( 3, OffsetTime.class ).toLocalTime()).isEqualTo( OFFSET_TIME.withOffsetSameInstant( ZoneOffset.UTC ).toLocalTime() );
214-
assertThat( result.get( 3, OffsetTime.class ).getOffset()).isEqualTo( ZoneOffset.UTC );
215-
assertThat( result.get( 4, OffsetDateTime.class ).toInstant()).isEqualTo( OFFSET_DATE_TIME.toInstant() );
216-
assertThat( result.get( 5, ZonedDateTime.class ).toInstant()).isEqualTo( ZONED_DATE_TIME.toInstant() );
217-
}
218-
)
219-
)
184+
"select " +
185+
"e.offsetTimeNormalized, " +
186+
"e.offsetDateTimeNormalized, " +
187+
"e.zonedDateTimeNormalized, " +
188+
"e.offsetTimeNormalizedUtc, " +
189+
"e.offsetDateTimeNormalizedUtc, " +
190+
"e.zonedDateTimeNormalizedUtc " +
191+
"from TimeZoneStorageEntity e",
192+
Tuple.class
193+
).getSingleResult() )
194+
.thenAccept( result -> {
195+
assertThat( result.get( 0, OffsetTime.class ).toLocalTime() )
196+
.isEqualTo( OFFSET_TIME.withOffsetSameInstant( JVM_TIMEZONE_OFFSET ).toLocalTime() );
197+
assertThat( result.get( 0, OffsetTime.class ).getOffset() ).isEqualTo( JVM_TIMEZONE_OFFSET );
198+
assertThat( result.get( 1, OffsetDateTime.class ).toInstant() )
199+
.isEqualTo( OFFSET_DATE_TIME.toInstant() );
200+
assertThat( result.get( 2, ZonedDateTime.class ).toInstant() )
201+
.isEqualTo( ZONED_DATE_TIME.toInstant() );
202+
assertThat( result.get( 3, OffsetTime.class ).toLocalTime() )
203+
.isEqualTo( OFFSET_TIME.withOffsetSameInstant( ZoneOffset.UTC ).toLocalTime() );
204+
assertThat( result.get( 3, OffsetTime.class ).getOffset() ).isEqualTo( ZoneOffset.UTC );
205+
assertThat( result.get( 4, OffsetDateTime.class ).toInstant() )
206+
.isEqualTo( OFFSET_DATE_TIME.toInstant() );
207+
assertThat( result.get( 5, ZonedDateTime.class ).toInstant() )
208+
.isEqualTo( ZONED_DATE_TIME.toInstant() );
209+
} )
220210
);
221211
}
222212

@@ -226,7 +216,6 @@ public static class TimeZoneStorageEntity {
226216
@Id
227217
public Integer id;
228218

229-
//tag::time-zone-column-examples-mapping-example[]
230219
@TimeZoneStorage(TimeZoneStorageType.COLUMN)
231220
@TimeZoneColumn(name = "birthtime_offset_offset")
232221
@Column(name = "birthtime_offset")
@@ -241,7 +230,6 @@ public static class TimeZoneStorageEntity {
241230
@TimeZoneColumn(name = "birthday_zoned_offset")
242231
@Column(name = "birthday_zoned")
243232
public ZonedDateTime zonedDateTimeColumn;
244-
//end::time-zone-column-examples-mapping-example[]
245233

246234
@TimeZoneStorage
247235
@Column(name = "birthtime_offset_auto")

0 commit comments

Comments
 (0)