3333import org .springframework .data .convert .ReadingConverter ;
3434import org .springframework .data .convert .WritingConverter ;
3535import org .springframework .data .r2dbc .convert .EnumWriteSupport ;
36+ import org .springframework .data .r2dbc .convert .MappingR2dbcConverter ;
37+ import org .springframework .data .r2dbc .convert .R2dbcCustomConversions ;
3638import org .springframework .data .r2dbc .core .StatementMapper .InsertSpec ;
3739import org .springframework .data .r2dbc .dialect .PostgresDialect ;
3840import org .springframework .data .r2dbc .mapping .OutboundRow ;
41+ import org .springframework .data .r2dbc .mapping .R2dbcMappingContext ;
3942import org .springframework .data .relational .core .sql .SqlIdentifier ;
4043import org .springframework .r2dbc .core .Parameter ;
4144import org .springframework .r2dbc .core .PreparedOperation ;
4548 * {@link PostgresDialect} specific tests for {@link ReactiveDataAccessStrategy}.
4649 *
4750 * @author Mark Paluch
51+ * @author Jens Schauder
4852 */
4953public class PostgresReactiveDataAccessStrategyTests extends ReactiveDataAccessStrategyTestSupport {
5054
51- private final ReactiveDataAccessStrategy strategy = new DefaultReactiveDataAccessStrategy (PostgresDialect .INSTANCE ,
52- Arrays .asList (DurationToIntervalConverter .INSTANCE , IntervalToDurationConverter .INSTANCE ));
55+ private R2dbcMappingContext context ;
56+ private final ReactiveDataAccessStrategy strategy ;
57+
58+ {
59+ context = new R2dbcMappingContext ();
60+ context .setForceQuote (false );
61+
62+ DefaultReactiveDataAccessStrategy strategy1 = createReactiveDataAccessStrategy (DurationToIntervalConverter .INSTANCE ,
63+ IntervalToDurationConverter .INSTANCE );
64+ strategy = strategy1 ;
65+ }
66+
67+ private DefaultReactiveDataAccessStrategy createReactiveDataAccessStrategy (Object ... converters ) {
68+ R2dbcCustomConversions customConversions = R2dbcCustomConversions .of (PostgresDialect .INSTANCE , converters );
69+
70+ MappingR2dbcConverter converter = new MappingR2dbcConverter (context , customConversions );
71+ DefaultReactiveDataAccessStrategy strategy1 = new DefaultReactiveDataAccessStrategy (PostgresDialect .INSTANCE ,
72+ converter );
73+ return strategy1 ;
74+ }
5375
5476 @ Override
5577 protected ReactiveDataAccessStrategy getStrategy () {
78+
5679 return strategy ;
5780 }
5881
@@ -98,8 +121,6 @@ void shouldConvertCollectionToArray() {
98121 @ Test // gh-139
99122 void shouldConvertToArray () {
100123
101- DefaultReactiveDataAccessStrategy strategy = new DefaultReactiveDataAccessStrategy (PostgresDialect .INSTANCE );
102-
103124 WithArray withArray = new WithArray ();
104125 withArray .stringArray = new String [] { "hello" , "world" };
105126 withArray .stringList = Arrays .asList ("hello" , "world" );
@@ -113,8 +134,7 @@ void shouldConvertToArray() {
113134 @ Test // gh-139
114135 void shouldApplyCustomConversion () {
115136
116- DefaultReactiveDataAccessStrategy strategy = new DefaultReactiveDataAccessStrategy (PostgresDialect .INSTANCE ,
117- Collections .singletonList (MyObjectsToStringConverter .INSTANCE ));
137+ DefaultReactiveDataAccessStrategy strategy = createReactiveDataAccessStrategy (MyObjectsToStringConverter .INSTANCE );
118138
119139 WithConversion withConversion = new WithConversion ();
120140 withConversion .myObjects = Arrays .asList (new MyObject ("one" ), new MyObject ("two" ));
@@ -127,8 +147,7 @@ void shouldApplyCustomConversion() {
127147 @ Test // gh-139
128148 void shouldApplyCustomConversionForNull () {
129149
130- DefaultReactiveDataAccessStrategy strategy = new DefaultReactiveDataAccessStrategy (PostgresDialect .INSTANCE ,
131- Collections .singletonList (MyObjectsToStringConverter .INSTANCE ));
150+ DefaultReactiveDataAccessStrategy strategy = createReactiveDataAccessStrategy (MyObjectsToStringConverter .INSTANCE );
132151
133152 WithConversion withConversion = new WithConversion ();
134153 withConversion .myObjects = null ;
@@ -152,8 +171,6 @@ void shouldApplyCustomConversionForEmptyList() {
152171 @ Test // gh-252, gh-593
153172 void shouldConvertCollectionOfEnumToString () {
154173
155- DefaultReactiveDataAccessStrategy strategy = new DefaultReactiveDataAccessStrategy (PostgresDialect .INSTANCE );
156-
157174 WithEnumCollections withEnums = new WithEnumCollections ();
158175 withEnums .enumSet = EnumSet .of (MyEnum .ONE , MyEnum .TWO );
159176 withEnums .enumList = Arrays .asList (MyEnum .ONE , MyEnum .TWO );
@@ -170,8 +187,6 @@ void shouldConvertCollectionOfEnumToString() {
170187 @ Test // gh-593
171188 void shouldCorrectlyWriteConvertedEnumNullValues () {
172189
173- DefaultReactiveDataAccessStrategy strategy = new DefaultReactiveDataAccessStrategy (PostgresDialect .INSTANCE );
174-
175190 WithEnumCollections withEnums = new WithEnumCollections ();
176191
177192 OutboundRow outboundRow = strategy .getOutboundRow (withEnums );
@@ -185,8 +200,6 @@ void shouldCorrectlyWriteConvertedEnumNullValues() {
185200 @ Test // gh-1544
186201 void shouldCorrectlyWriteConvertedEmptyEnumCollections () {
187202
188- DefaultReactiveDataAccessStrategy strategy = new DefaultReactiveDataAccessStrategy (PostgresDialect .INSTANCE );
189-
190203 WithEnumCollections withEnums = new WithEnumCollections ();
191204 withEnums .enumArray = new MyEnum [0 ];
192205 withEnums .enumList = Collections .emptyList ();
@@ -203,8 +216,7 @@ void shouldCorrectlyWriteConvertedEmptyEnumCollections() {
203216 @ Test // gh-593
204217 void shouldConvertCollectionOfEnumNatively () {
205218
206- DefaultReactiveDataAccessStrategy strategy = new DefaultReactiveDataAccessStrategy (PostgresDialect .INSTANCE ,
207- Collections .singletonList (new MyEnumSupport ()));
219+ DefaultReactiveDataAccessStrategy strategy = createReactiveDataAccessStrategy (new MyEnumSupport ());
208220
209221 WithEnumCollections withEnums = new WithEnumCollections ();
210222 withEnums .enumSet = EnumSet .of (MyEnum .ONE , MyEnum .TWO );
@@ -222,8 +234,7 @@ void shouldConvertCollectionOfEnumNatively() {
222234 @ Test // gh-593
223235 void shouldCorrectlyWriteNativeEnumNullValues () {
224236
225- DefaultReactiveDataAccessStrategy strategy = new DefaultReactiveDataAccessStrategy (PostgresDialect .INSTANCE ,
226- Collections .singletonList (new MyEnumSupport ()));
237+ DefaultReactiveDataAccessStrategy strategy = createReactiveDataAccessStrategy (new MyEnumSupport ());
227238
228239 WithEnumCollections withEnums = new WithEnumCollections ();
229240
0 commit comments