Skip to content

Commit a2e59d4

Browse files
committed
Add Transient, Stream and Flux Pair tests.
Closes #11.74.
1 parent 7d5e33a commit a2e59d4

File tree

4 files changed

+62
-5
lines changed

4 files changed

+62
-5
lines changed

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

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import org.springframework.data.couchbase.util.Capabilities;
1515
import org.springframework.data.couchbase.util.ClusterType;
1616
import org.springframework.data.couchbase.util.IgnoreWhen;
17+
import org.springframework.data.util.Pair;
1718
import reactor.core.publisher.Flux;
1819
import reactor.core.publisher.Mono;
1920
import reactor.core.publisher.ParallelFlux;
@@ -130,6 +131,26 @@ public void cbse() {
130131
assertEquals(0, airports.size(), "should have been all deleted");
131132
}
132133

134+
@Test
135+
@IgnoreWhen(missesCapabilities = { Capabilities.QUERY }, clusterTypes = ClusterType.MOCKED)
136+
public void pairIdAndResult() {
137+
LinkedList<Airport> list = new LinkedList<>();
138+
Airport a = new Airport(UUID.randomUUID().toString(), "iata", "lowp");
139+
for (int i = 0; i < 5; i++) {
140+
list.add(a.withId(UUID.randomUUID().toString()));
141+
}
142+
Flux<Object> af = Flux.fromIterable(list).concatMap((entity) -> airportRepository.save(entity));
143+
List<Object> saved = af.collectList().block();
144+
System.out.println("results.size() : " + saved.size());
145+
Flux<Pair<String, Mono<Airport>>> pairFlux = Flux.fromIterable(list)
146+
.map((airport) -> Pair.of(airport.getId(), airportRepository.findById(airport.getId())));
147+
List<Pair<String, Mono<Airport>>> airportPairs = pairFlux.collectList().block();
148+
for (Pair<String, Mono<Airport>> airportPair : airportPairs) {
149+
System.out.println("id: " + airportPair.getFirst() + " airport: " + airportPair.getSecond().block());
150+
}
151+
152+
}
153+
133154
@Test
134155
public void flatMapCB() throws Exception {
135156
System.out.println("Start flatMapCB");

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import org.springframework.data.annotation.LastModifiedBy;
2525
import org.springframework.data.annotation.LastModifiedDate;
2626
import org.springframework.data.annotation.PersistenceConstructor;
27+
import org.springframework.data.annotation.Transient;
2728
import org.springframework.data.annotation.Version;
2829
import org.springframework.data.couchbase.core.mapping.Document;
2930

@@ -41,6 +42,8 @@ public class User extends ComparableEntity {
4142
@Id private String id;
4243
private String firstname;
4344
private String lastname;
45+
@Transient
46+
private String transientInfo;
4447
@CreatedBy private String createdBy;
4548
@CreatedDate private long createdDate;
4649
@LastModifiedBy private String lastModifiedBy;
@@ -94,4 +97,10 @@ public int hashCode() {
9497
return Objects.hash(id, firstname, lastname);
9598
}
9699

100+
public String getTransientInfo(){
101+
return transientInfo;
102+
}
103+
public void setTransientInfo(String something) {
104+
transientInfo = something;
105+
}
97106
}

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

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2012-2020 the original author or authors
2+
* Copyright 2012-2021 the original author or authors
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -17,15 +17,16 @@
1717
package org.springframework.data.couchbase.domain;
1818

1919
import java.util.List;
20+
import java.util.stream.Stream;
2021

22+
import com.couchbase.client.java.query.QueryScanConsistency;
2123
import org.springframework.data.couchbase.repository.CouchbaseRepository;
2224
import org.springframework.data.couchbase.repository.Query;
2325
import org.springframework.data.couchbase.repository.ScanConsistency;
2426
import org.springframework.data.repository.query.Param;
2527
import org.springframework.stereotype.Repository;
2628

2729
import com.couchbase.client.java.json.JsonArray;
28-
import com.couchbase.client.java.query.QueryScanConsistency;
2930

3031
/**
3132
* User Repository for tests
@@ -34,11 +35,13 @@
3435
* @author Michael Reiche
3536
*/
3637
@Repository
37-
@ScanConsistency(query = QueryScanConsistency.REQUEST_PLUS)
38+
@ScanConsistency(query=QueryScanConsistency.REQUEST_PLUS)
3839
public interface UserRepository extends CouchbaseRepository<User, String> {
3940

4041
List<User> findByFirstname(String firstname);
4142

43+
Stream<User> findByLastname(String lastname);
44+
4245
List<User> findByFirstnameIn(String... firstnames);
4346

4447
List<User> findByFirstnameIn(JsonArray firstnames);
@@ -54,5 +57,4 @@ public interface UserRepository extends CouchbaseRepository<User, String> {
5457
List<User> findByIdIsNotNullAndFirstnameEquals(String firstname);
5558

5659
List<User> findByVersionEqualsAndFirstnameEquals(Long version, String firstname);
57-
5860
}

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

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import java.util.concurrent.ExecutorService;
3636
import java.util.concurrent.Executors;
3737
import java.util.concurrent.Future;
38+
import java.util.Optional;
3839
import java.util.stream.Collectors;
3940

4041
import org.junit.jupiter.api.BeforeEach;
@@ -354,18 +355,42 @@ public void saveNotBounded() {
354355
assertNull(airport2, "airport2 should have likely been null at least once");
355356
}
356357

358+
@Test
359+
public void testTransient() {
360+
User user = new User("1", "Dave", "Wilson");
361+
user.setTransientInfo("something");
362+
userRepository.save(user);
363+
Optional<User> foundUser = userRepository.findById(user.getId());
364+
assertEquals(null, foundUser.get().getTransientInfo());
365+
userRepository.delete(user);
366+
}
367+
357368
@Test
358369
public void testCas() {
359370
User user = new User("1", "Dave", "Wilson");
360371
userRepository.save(user);
361-
userRepository.findByFirstname("Dave");
362372
user.setVersion(user.getVersion() - 1);
363373
assertThrows(DataIntegrityViolationException.class, () -> userRepository.save(user));
364374
user.setVersion(0);
365375
userRepository.save(user);
366376
userRepository.delete(user);
367377
}
368378

379+
@Test
380+
public void testStreamQuery() {
381+
User user1 = new User("1", "Dave", "Wilson");
382+
User user2 = new User("2", "Brian", "Wilson");
383+
384+
userRepository.save(user1);
385+
userRepository.save(user2);
386+
List<User> users = userRepository.findByLastname("Wilson").collect(Collectors.toList());
387+
assertEquals(2,users.size());
388+
assertTrue(users.contains(user1));
389+
assertTrue(users.contains(user2));
390+
userRepository.delete(user1);
391+
userRepository.delete(user2);
392+
}
393+
369394
@Test
370395
public void testExpiryAnnotation() {
371396
UserAnnotated user = new UserAnnotated("1", "Dave", "Wilson");

0 commit comments

Comments
 (0)