Skip to content

Commit f3bf2f9

Browse files
committed
Test reactive repository default scan consistency.
1 parent 59f3c92 commit f3bf2f9

File tree

4 files changed

+76
-13
lines changed

4 files changed

+76
-13
lines changed

src/main/java/org/springframework/data/couchbase/repository/support/SimpleReactiveCouchbaseRepository.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
* @author David Kelly
4747
* @author Douglas Six
4848
* @author Jens Schauder
49+
* @author Jonathan Massuchetti
4950
* @since 3.0
5051
*/
5152
public class SimpleReactiveCouchbaseRepository<T, ID> implements ReactiveCouchbaseRepository<T, ID> {

src/test/java/org/springframework/data/couchbase/domain/ReactiveAirportDefaultConsistencyRepository.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,7 @@
3434
/**
3535
* template class for Reactive Couchbase operations
3636
*
37-
* @author Michael Nitschinger
38-
* @author Michael Reiche
37+
* @author Jonathan Massuchetti
3938
*/
4039
@Repository
4140
public interface ReactiveAirportDefaultConsistencyRepository extends ReactiveSortingRepository<Airport, String> {

src/test/java/org/springframework/data/couchbase/repository/CouchbaseRepositoryQueryIntegrationTests.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,6 @@ public void saveNotBoundedRequestPlus() {
274274
assertFalse(!airports.isEmpty(), "airports should have been empty");
275275
}
276276

277-
278277
@Test
279278
public void saveNotBoundedRequestPlusWithDefaultRepository() {
280279
ApplicationContext ac = new AnnotationConfigApplicationContext(ConfigRequestPlus.class);
@@ -303,7 +302,6 @@ public void saveNotBoundedRequestPlusWithDefaultRepository() {
303302
assertTrue(success);
304303
}
305304

306-
307305
@Test
308306
void findByTypeAlias() {
309307
Airport vie = null;

src/test/java/org/springframework/data/couchbase/repository/ReactiveCouchbaseRepositoryQueryIntegrationTests.java

Lines changed: 74 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,21 +16,32 @@
1616

1717
package org.springframework.data.couchbase.repository;
1818

19+
import static com.couchbase.client.java.query.QueryScanConsistency.REQUEST_PLUS;
1920
import static java.util.Arrays.asList;
2021
import static org.junit.jupiter.api.Assertions.assertEquals;
2122
import static org.junit.jupiter.api.Assertions.assertFalse;
2223
import static org.junit.jupiter.api.Assertions.assertThrows;
2324
import static org.junit.jupiter.api.Assertions.assertTrue;
24-
25+
import static org.springframework.data.couchbase.config.BeanNames.COUCHBASE_TEMPLATE;
26+
import static org.springframework.data.couchbase.config.BeanNames.REACTIVE_COUCHBASE_TEMPLATE;
27+
28+
import com.couchbase.client.java.query.QueryScanConsistency;
29+
import org.springframework.context.ApplicationContext;
30+
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
31+
import org.springframework.context.annotation.Bean;
32+
import org.springframework.data.auditing.DateTimeProvider;
33+
import org.springframework.data.couchbase.core.CouchbaseTemplate;
34+
import org.springframework.data.couchbase.core.ReactiveCouchbaseTemplate;
35+
import org.springframework.data.couchbase.domain.*;
36+
import org.springframework.data.couchbase.domain.time.AuditingDateTimeProvider;
37+
import org.springframework.data.couchbase.repository.auditing.EnableCouchbaseAuditing;
38+
import org.springframework.data.couchbase.repository.config.EnableCouchbaseRepositories;
2539
import reactor.core.publisher.Flux;
2640
import reactor.core.publisher.Mono;
2741
import reactor.test.StepVerifier;
2842

2943
import java.time.Instant;
30-
import java.util.HashSet;
31-
import java.util.List;
32-
import java.util.Set;
33-
import java.util.UUID;
44+
import java.util.*;
3445
import java.util.concurrent.Callable;
3546
import java.util.concurrent.ExecutorService;
3647
import java.util.concurrent.Executors;
@@ -44,10 +55,6 @@
4455
import org.springframework.dao.DataRetrievalFailureException;
4556
import org.springframework.data.couchbase.CouchbaseClientFactory;
4657
import org.springframework.data.couchbase.config.AbstractCouchbaseConfiguration;
47-
import org.springframework.data.couchbase.domain.Airport;
48-
import org.springframework.data.couchbase.domain.ReactiveAirportRepository;
49-
import org.springframework.data.couchbase.domain.ReactiveUserRepository;
50-
import org.springframework.data.couchbase.domain.User;
5158
import org.springframework.data.couchbase.repository.config.EnableReactiveCouchbaseRepositories;
5259
import org.springframework.data.couchbase.util.Capabilities;
5360
import org.springframework.data.couchbase.util.ClusterType;
@@ -61,6 +68,7 @@
6168
*
6269
* @author Michael Nitschinger
6370
* @author Michael Reiche
71+
* @author Jonathan Massuchetti
6472
*/
6573
@SpringJUnitConfig(ReactiveCouchbaseRepositoryQueryIntegrationTests.Config.class)
6674
@IgnoreWhen(missesCapabilities = Capabilities.QUERY, clusterTypes = ClusterType.MOCKED)
@@ -249,6 +257,34 @@ void deleteAll() {
249257
}
250258
}
251259

260+
@Test
261+
public void saveNotBoundedRequestPlusWithDefaultRepository() {
262+
ApplicationContext ac = new AnnotationConfigApplicationContext(ConfigRequestPlus.class);
263+
// the Config class has been modified, these need to be loaded again
264+
ReactiveCouchbaseTemplate couchbaseTemplateRP = (ReactiveCouchbaseTemplate) ac.getBean(REACTIVE_COUCHBASE_TEMPLATE);
265+
ReactiveAirportDefaultConsistencyRepository airportRepositoryRP = (ReactiveAirportDefaultConsistencyRepository) ac.getBean("reactiveAirportDefaultConsistencyRepository");
266+
267+
List<Airport> sizeBeforeTest = airportRepositoryRP.findAll().collectList().block();
268+
assertEquals(0, sizeBeforeTest.size());
269+
270+
List<String> idsToRemove = new ArrayList<>(100);
271+
for (int i = 1; i <= 100; i++) {
272+
Airport vie = new Airport("airports::vie" + i, "vie" + i, "low9");
273+
Airport saved = airportRepositoryRP.save(vie).block();
274+
idsToRemove.add(saved.getId());
275+
}
276+
277+
List<Airport> allSaved = airportRepositoryRP.findAll().collectList().block();
278+
279+
boolean success = allSaved.size() == 100;
280+
281+
for (String idToRemove : idsToRemove) {
282+
couchbaseTemplateRP.removeById().one(idToRemove);
283+
}
284+
285+
assertTrue(success);
286+
}
287+
252288
@Configuration
253289
@EnableReactiveCouchbaseRepositories("org.springframework.data.couchbase")
254290
static class Config extends AbstractCouchbaseConfiguration {
@@ -275,4 +311,33 @@ public String getBucketName() {
275311

276312
}
277313

314+
@Configuration
315+
@EnableReactiveCouchbaseRepositories("org.springframework.data.couchbase")
316+
static class ConfigRequestPlus extends AbstractCouchbaseConfiguration {
317+
318+
@Override
319+
public String getConnectionString() {
320+
return connectionString();
321+
}
322+
323+
@Override
324+
public String getUserName() {
325+
return config().adminUsername();
326+
}
327+
328+
@Override
329+
public String getPassword() {
330+
return config().adminPassword();
331+
}
332+
333+
@Override
334+
public String getBucketName() {
335+
return bucketName();
336+
}
337+
338+
@Override
339+
public QueryScanConsistency getDefaultConsistency() {
340+
return REQUEST_PLUS;
341+
}
342+
}
278343
}

0 commit comments

Comments
 (0)