23
23
import java .util .HashMap ;
24
24
import java .util .HashSet ;
25
25
import java .util .Map ;
26
+ import java .util .Optional ;
26
27
import java .util .function .Consumer ;
27
28
28
29
import org .junit .jupiter .api .Test ;
@@ -47,6 +48,13 @@ public void withEmptyCollection() {
47
48
48
49
assertThat (DataAccessUtils .uniqueResult (col )).isNull ();
49
50
51
+ assertThat (DataAccessUtils .singleResult (col )).isNull ();
52
+ assertThat (DataAccessUtils .singleResult (col .stream ())).isNull ();
53
+ assertThat (DataAccessUtils .singleResult (col .iterator ())).isNull ();
54
+ assertThat (DataAccessUtils .optionalResult (col )).isEmpty ();
55
+ assertThat (DataAccessUtils .optionalResult (col .stream ())).isEmpty ();
56
+ assertThat (DataAccessUtils .optionalResult (col .iterator ())).isEmpty ();
57
+
50
58
assertThatExceptionOfType (IncorrectResultSizeDataAccessException .class ).isThrownBy (() ->
51
59
DataAccessUtils .requiredUniqueResult (col ))
52
60
.satisfies (sizeRequirements (1 , 0 ));
@@ -89,6 +97,30 @@ public void withTooLargeCollection() {
89
97
assertThatExceptionOfType (IncorrectResultSizeDataAccessException .class ).isThrownBy (() ->
90
98
DataAccessUtils .longResult (col ))
91
99
.satisfies (sizeRequirements (1 , 2 ));
100
+
101
+ assertThatExceptionOfType (IncorrectResultSizeDataAccessException .class ).isThrownBy (() ->
102
+ DataAccessUtils .singleResult (col ))
103
+ .satisfies (sizeRequirements (1 , 2 ));
104
+
105
+ assertThatExceptionOfType (IncorrectResultSizeDataAccessException .class ).isThrownBy (() ->
106
+ DataAccessUtils .singleResult (col .stream ()))
107
+ .satisfies (sizeRequirements (1 ));
108
+
109
+ assertThatExceptionOfType (IncorrectResultSizeDataAccessException .class ).isThrownBy (() ->
110
+ DataAccessUtils .singleResult (col .iterator ()))
111
+ .satisfies (sizeRequirements (1 ));
112
+
113
+ assertThatExceptionOfType (IncorrectResultSizeDataAccessException .class ).isThrownBy (() ->
114
+ DataAccessUtils .optionalResult (col ))
115
+ .satisfies (sizeRequirements (1 , 2 ));
116
+
117
+ assertThatExceptionOfType (IncorrectResultSizeDataAccessException .class ).isThrownBy (() ->
118
+ DataAccessUtils .optionalResult (col .stream ()))
119
+ .satisfies (sizeRequirements (1 ));
120
+
121
+ assertThatExceptionOfType (IncorrectResultSizeDataAccessException .class ).isThrownBy (() ->
122
+ DataAccessUtils .optionalResult (col .iterator ()))
123
+ .satisfies (sizeRequirements (1 ));
92
124
}
93
125
94
126
@ Test
@@ -102,6 +134,12 @@ public void withInteger() {
102
134
assertThat (DataAccessUtils .objectResult (col , String .class )).isEqualTo ("5" );
103
135
assertThat (DataAccessUtils .intResult (col )).isEqualTo (5 );
104
136
assertThat (DataAccessUtils .longResult (col )).isEqualTo (5 );
137
+ assertThat (DataAccessUtils .singleResult (col )).isEqualTo (5 );
138
+ assertThat (DataAccessUtils .singleResult (col .stream ())).isEqualTo (5 );
139
+ assertThat (DataAccessUtils .singleResult (col .iterator ())).isEqualTo (5 );
140
+ assertThat (DataAccessUtils .optionalResult (col )).isEqualTo (Optional .of (5 ));
141
+ assertThat (DataAccessUtils .optionalResult (col .stream ())).isEqualTo (Optional .of (5 ));
142
+ assertThat (DataAccessUtils .optionalResult (col .iterator ())).isEqualTo (Optional .of (5 ));
105
143
}
106
144
107
145
@ Test
@@ -139,6 +177,12 @@ public void withLong() {
139
177
assertThat (DataAccessUtils .objectResult (col , String .class )).isEqualTo ("5" );
140
178
assertThat (DataAccessUtils .intResult (col )).isEqualTo (5 );
141
179
assertThat (DataAccessUtils .longResult (col )).isEqualTo (5 );
180
+ assertThat (DataAccessUtils .singleResult (col )).isEqualTo (Long .valueOf (5L ));
181
+ assertThat (DataAccessUtils .singleResult (col .stream ())).isEqualTo (Long .valueOf (5L ));
182
+ assertThat (DataAccessUtils .singleResult (col .iterator ())).isEqualTo (Long .valueOf (5L ));
183
+ assertThat (DataAccessUtils .optionalResult (col )).isEqualTo (Optional .of (5L ));
184
+ assertThat (DataAccessUtils .optionalResult (col .stream ())).isEqualTo (Optional .of (5L ));
185
+ assertThat (DataAccessUtils .optionalResult (col .iterator ())).isEqualTo (Optional .of (5L ));
142
186
}
143
187
144
188
@ Test
@@ -149,6 +193,12 @@ public void withString() {
149
193
assertThat (DataAccessUtils .uniqueResult (col )).isEqualTo ("test1" );
150
194
assertThat (DataAccessUtils .requiredUniqueResult (col )).isEqualTo ("test1" );
151
195
assertThat (DataAccessUtils .objectResult (col , String .class )).isEqualTo ("test1" );
196
+ assertThat (DataAccessUtils .singleResult (col )).isEqualTo ("test1" );
197
+ assertThat (DataAccessUtils .singleResult (col .stream ())).isEqualTo ("test1" );
198
+ assertThat (DataAccessUtils .singleResult (col .iterator ())).isEqualTo ("test1" );
199
+ assertThat (DataAccessUtils .optionalResult (col )).isEqualTo (Optional .of ("test1" ));
200
+ assertThat (DataAccessUtils .optionalResult (col .stream ())).isEqualTo (Optional .of ("test1" ));
201
+ assertThat (DataAccessUtils .optionalResult (col .iterator ())).isEqualTo (Optional .of ("test1" ));
152
202
153
203
assertThatExceptionOfType (TypeMismatchDataAccessException .class ).isThrownBy (() ->
154
204
DataAccessUtils .intResult (col ));
@@ -167,6 +217,12 @@ public void withDate() {
167
217
assertThat (DataAccessUtils .requiredUniqueResult (col )).isEqualTo (date );
168
218
assertThat (DataAccessUtils .objectResult (col , Date .class )).isEqualTo (date );
169
219
assertThat (DataAccessUtils .objectResult (col , String .class )).isEqualTo (date .toString ());
220
+ assertThat (DataAccessUtils .singleResult (col )).isEqualTo (date );
221
+ assertThat (DataAccessUtils .singleResult (col .stream ())).isEqualTo (date );
222
+ assertThat (DataAccessUtils .singleResult (col .iterator ())).isEqualTo (date );
223
+ assertThat (DataAccessUtils .optionalResult (col )).isEqualTo (Optional .of (date ));
224
+ assertThat (DataAccessUtils .optionalResult (col .stream ())).isEqualTo (Optional .of (date ));
225
+ assertThat (DataAccessUtils .optionalResult (col .iterator ())).isEqualTo (Optional .of (date ));
170
226
171
227
assertThatExceptionOfType (TypeMismatchDataAccessException .class ).isThrownBy (() ->
172
228
DataAccessUtils .intResult (col ));
@@ -199,6 +255,13 @@ private <E extends IncorrectResultSizeDataAccessException> Consumer<E> sizeRequi
199
255
};
200
256
}
201
257
258
+ private <E extends IncorrectResultSizeDataAccessException > Consumer <E > sizeRequirements (
259
+ int expectedSize ) {
260
+ return ex -> {
261
+ assertThat (ex .getExpectedSize ()).as ("expected size" ).isEqualTo (expectedSize );
262
+ };
263
+ }
264
+
202
265
public static class MapPersistenceExceptionTranslator implements PersistenceExceptionTranslator {
203
266
204
267
// in to out
0 commit comments