18
18
import static org .hamcrest .Matchers .*;
19
19
import static org .junit .Assert .*;
20
20
21
+ import io .reactivex .Flowable ;
22
+ import io .reactivex .Maybe ;
23
+ import io .reactivex .observers .TestObserver ;
21
24
import lombok .Data ;
22
25
import lombok .NoArgsConstructor ;
23
26
import reactor .core .publisher .Flux ;
42
45
import org .springframework .data .mongodb .repository .config .EnableReactiveMongoRepositories ;
43
46
import org .springframework .data .repository .reactive .ReactiveSortingRepository ;
44
47
import org .springframework .data .repository .reactive .RxJava1SortingRepository ;
48
+ import org .springframework .data .repository .reactive .RxJava2SortingRepository ;
45
49
import org .springframework .stereotype .Repository ;
46
50
import org .springframework .test .context .ContextConfiguration ;
47
51
import org .springframework .test .context .junit4 .SpringJUnit4ClassRunner ;
@@ -62,7 +66,8 @@ static class Config {}
62
66
63
67
@ Autowired MixedReactivePersonRepostitory reactiveRepository ;
64
68
@ Autowired ReactivePersonRepostitory reactivePersonRepostitory ;
65
- @ Autowired RxJavaPersonRepostitory rxJavaPersonRepostitory ;
69
+ @ Autowired RxJava1PersonRepostitory rxJava1PersonRepostitory ;
70
+ @ Autowired RxJava2PersonRepostitory rxJava2PersonRepostitory ;
66
71
67
72
ReactivePerson dave , oliver , carter , boyd , stefan , leroi , alicia ;
68
73
@@ -95,9 +100,9 @@ public void reactiveStreamsQueryMethodsShouldWork() {
95
100
}
96
101
97
102
@ Test // DATAMONGO-1444
98
- public void simpleRxJavaMethodsShouldWork () {
103
+ public void simpleRxJava1MethodsShouldWork () throws Exception {
99
104
100
- rxJavaPersonRepostitory .exists (dave .getId ()) //
105
+ rxJava1PersonRepostitory .exists (dave .getId ()) //
101
106
.test () //
102
107
.awaitTerminalEvent () //
103
108
.assertValue (true ) //
@@ -106,9 +111,9 @@ public void simpleRxJavaMethodsShouldWork() {
106
111
}
107
112
108
113
@ Test // DATAMONGO-1444
109
- public void existsWithSingleRxJavaIdMethodsShouldWork () {
114
+ public void existsWithSingleRxJava1IdMethodsShouldWork () throws Exception {
110
115
111
- rxJavaPersonRepostitory .exists (Single .just (dave .getId ())) //
116
+ rxJava1PersonRepostitory .exists (Single .just (dave .getId ())) //
112
117
.test () //
113
118
.awaitTerminalEvent () //
114
119
.assertValue (true ) //
@@ -117,9 +122,9 @@ public void existsWithSingleRxJavaIdMethodsShouldWork() {
117
122
}
118
123
119
124
@ Test // DATAMONGO-1444
120
- public void singleRxJavaQueryMethodShouldWork () {
125
+ public void singleRxJava1QueryMethodShouldWork () throws Exception {
121
126
122
- rxJavaPersonRepostitory .findByFirstnameAndLastname (dave .getFirstname (), dave .getLastname ()) //
127
+ rxJava1PersonRepostitory .findByFirstnameAndLastname (dave .getFirstname (), dave .getLastname ()) //
123
128
.test () //
124
129
.awaitTerminalEvent () //
125
130
.assertValue (dave ) //
@@ -128,9 +133,9 @@ public void singleRxJavaQueryMethodShouldWork() {
128
133
}
129
134
130
135
@ Test // DATAMONGO-1444
131
- public void singleProjectedRxJavaQueryMethodShouldWork () {
136
+ public void singleProjectedRxJava1QueryMethodShouldWork () throws Exception {
132
137
133
- List <ProjectedPerson > people = rxJavaPersonRepostitory .findProjectedByLastname (carter .getLastname ()) //
138
+ List <ProjectedPerson > people = rxJava1PersonRepostitory .findProjectedByLastname (carter .getLastname ()) //
134
139
.test () //
135
140
.awaitTerminalEvent () //
136
141
.assertValueCount (1 ) //
@@ -143,9 +148,9 @@ public void singleProjectedRxJavaQueryMethodShouldWork() {
143
148
}
144
149
145
150
@ Test // DATAMONGO-1444
146
- public void observableRxJavaQueryMethodShouldWork () {
151
+ public void observableRxJava1QueryMethodShouldWork () throws Exception {
147
152
148
- rxJavaPersonRepostitory .findByLastname (boyd .getLastname ()) //
153
+ rxJava1PersonRepostitory .findByLastname (boyd .getLastname ()) //
149
154
.test () //
150
155
.awaitTerminalEvent () //
151
156
.assertValue (boyd ) //
@@ -154,6 +159,83 @@ public void observableRxJavaQueryMethodShouldWork() {
154
159
.getOnNextEvents ();
155
160
}
156
161
162
+ @ Test // DATAMONGO-1610
163
+ public void simpleRxJava2MethodsShouldWork () throws Exception {
164
+
165
+ TestObserver <Boolean > testObserver = rxJava2PersonRepostitory .exists (dave .getId ()).test ();
166
+
167
+ testObserver .awaitTerminalEvent ();
168
+ testObserver .assertComplete ();
169
+ testObserver .assertNoErrors ();
170
+ testObserver .assertValue (true );
171
+ }
172
+
173
+ @ Test // DATAMONGO-1610
174
+ public void existsWithSingleRxJava2IdMethodsShouldWork () throws Exception {
175
+
176
+ TestObserver <Boolean > testObserver = rxJava2PersonRepostitory .exists (io .reactivex .Single .just (dave .getId ())).test ();
177
+
178
+ testObserver .awaitTerminalEvent ();
179
+ testObserver .assertComplete ();
180
+ testObserver .assertNoErrors ();
181
+ testObserver .assertValue (true );
182
+ }
183
+
184
+ @ Test // DATAMONGO-1610
185
+ public void flowableRxJava2QueryMethodShouldWork () throws Exception {
186
+
187
+ io .reactivex .subscribers .TestSubscriber <ReactivePerson > testSubscriber = rxJava2PersonRepostitory
188
+ .findByFirstnameAndLastname (dave .getFirstname (), dave .getLastname ()).test ();
189
+
190
+ testSubscriber .awaitTerminalEvent ();
191
+ testSubscriber .assertComplete ();
192
+ testSubscriber .assertNoErrors ();
193
+ testSubscriber .assertValue (dave );
194
+ }
195
+
196
+ @ Test // DATAMONGO-1610
197
+ public void singleProjectedRxJava2QueryMethodShouldWork () throws Exception {
198
+
199
+ TestObserver <ProjectedPerson > testObserver = rxJava2PersonRepostitory
200
+ .findProjectedByLastname (Maybe .just (carter .getLastname ())).test ();
201
+
202
+ testObserver .awaitTerminalEvent ();
203
+ testObserver .assertComplete ();
204
+ testObserver .assertNoErrors ();
205
+
206
+ testObserver .assertValue (actual -> {
207
+ assertThat (actual .getFirstname (), is (equalTo (carter .getFirstname ())));
208
+ return true ;
209
+ });
210
+ }
211
+
212
+ @ Test // DATAMONGO-1610
213
+ public void observableProjectedRxJava2QueryMethodShouldWork () throws Exception {
214
+
215
+ TestObserver <ProjectedPerson > testObserver = rxJava2PersonRepostitory
216
+ .findProjectedByLastname (Single .just (carter .getLastname ())).test ();
217
+
218
+ testObserver .awaitTerminalEvent ();
219
+ testObserver .assertComplete ();
220
+ testObserver .assertNoErrors ();
221
+
222
+ testObserver .assertValue (actual -> {
223
+ assertThat (actual .getFirstname (), is (equalTo (carter .getFirstname ())));
224
+ return true ;
225
+ });
226
+ }
227
+
228
+ @ Test // DATAMONGO-1610
229
+ public void maybeRxJava2QueryMethodShouldWork () throws Exception {
230
+
231
+ TestObserver <ReactivePerson > testObserver = rxJava2PersonRepostitory .findByLastname (boyd .getLastname ()).test ();
232
+
233
+ testObserver .awaitTerminalEvent ();
234
+ testObserver .assertComplete ();
235
+ testObserver .assertNoErrors ();
236
+ testObserver .assertValue (boyd );
237
+ }
238
+
157
239
@ Test // DATAMONGO-1444
158
240
public void mixedRepositoryShouldWork () {
159
241
@@ -203,7 +285,7 @@ interface ReactivePersonRepostitory extends ReactiveSortingRepository<ReactivePe
203
285
}
204
286
205
287
@ Repository
206
- interface RxJavaPersonRepostitory extends RxJava1SortingRepository <ReactivePerson , String > {
288
+ interface RxJava1PersonRepostitory extends RxJava1SortingRepository <ReactivePerson , String > {
207
289
208
290
Observable <ReactivePerson > findByFirstnameAndLastname (String firstname , String lastname );
209
291
@@ -212,6 +294,18 @@ interface RxJavaPersonRepostitory extends RxJava1SortingRepository<ReactivePerso
212
294
Single <ProjectedPerson > findProjectedByLastname (String lastname );
213
295
}
214
296
297
+ @ Repository
298
+ interface RxJava2PersonRepostitory extends RxJava2SortingRepository <ReactivePerson , String > {
299
+
300
+ Flowable <ReactivePerson > findByFirstnameAndLastname (String firstname , String lastname );
301
+
302
+ Maybe <ReactivePerson > findByLastname (String lastname );
303
+
304
+ io .reactivex .Single <ProjectedPerson > findProjectedByLastname (Maybe <String > lastname );
305
+
306
+ io .reactivex .Observable <ProjectedPerson > findProjectedByLastname (Single <String > lastname );
307
+ }
308
+
215
309
@ Repository
216
310
interface MixedReactivePersonRepostitory extends ReactiveMongoRepository <ReactivePerson , String > {
217
311
0 commit comments