use of com.google.cloud.spring.data.firestore.entities.User in project spring-cloud-gcp by GoogleCloudPlatform.
the class FirestoreIntegrationTests method transactionTest.
@Test
void transactionTest() {
User alice = new User("Alice", 29);
User bob = new User("Bob", 60);
User user = new User(null, 40);
DefaultTransactionDefinition transactionDefinition = new DefaultTransactionDefinition();
transactionDefinition.setReadOnly(false);
TransactionalOperator operator = TransactionalOperator.create(this.txManager, transactionDefinition);
reset(this.txManager);
this.firestoreTemplate.save(alice).then(this.firestoreTemplate.save(bob)).then(this.firestoreTemplate.save(user)).as(operator::transactional).block();
assertThat(this.firestoreTemplate.findAll(User.class).collectList().block()).containsExactlyInAnyOrder(bob, alice, user);
verify(this.txManager, times(1)).commit(any());
verify(this.txManager, times(0)).rollback(any());
verify(this.txManager, times(1)).getReactiveTransaction(any());
reset(this.txManager);
// test rollback
this.firestoreTemplate.saveAll(Mono.defer(() -> {
throw new FirestoreDataException("BOOM!");
})).then(this.firestoreTemplate.deleteAll(User.class)).as(operator::transactional).onErrorResume(throwable -> Mono.empty()).block();
verify(this.txManager, times(0)).commit(any());
verify(this.txManager, times(1)).rollback(any());
verify(this.txManager, times(1)).getReactiveTransaction(any());
assertThat(this.firestoreTemplate.count(User.class).block()).isEqualTo(3);
this.firestoreTemplate.findAll(User.class).flatMap(a -> {
a.setAge(a.getAge() - 1);
return this.firestoreTemplate.save(a);
}).as(operator::transactional).collectList().block();
List<User> users = this.firestoreTemplate.findAll(User.class).collectList().block();
assertThat(users).extracting("age").containsExactlyInAnyOrder(28, 59, 39);
assertThat(users).extracting("name").doesNotContainNull();
this.firestoreTemplate.deleteAll(User.class).as(operator::transactional).block();
assertThat(this.firestoreTemplate.findAll(User.class).collectList().block()).isEmpty();
}
use of com.google.cloud.spring.data.firestore.entities.User in project spring-cloud-gcp by GoogleCloudPlatform.
the class FirestoreIntegrationTests method deleteAllByIdTest.
@Test
void deleteAllByIdTest() {
User alice = new User("Alice", 29);
User bob = new User("Bob", 60);
this.firestoreTemplate.save(alice).block();
this.firestoreTemplate.save(bob).block();
StepVerifier.create(this.firestoreTemplate.deleteById(Flux.just("Bob", "Saitama", "Alice"), User.class).then(this.firestoreTemplate.count(User.class))).expectNext(0L).verifyComplete();
}
use of com.google.cloud.spring.data.firestore.entities.User in project spring-cloud-gcp by GoogleCloudPlatform.
the class FirestoreIntegrationTests method deleteTest.
@Test
void deleteTest() {
this.firestoreTemplate.save(new User("alpha", 45)).block();
this.firestoreTemplate.save(new User("beta", 23)).block();
this.firestoreTemplate.save(new User("gamma", 44)).block();
this.firestoreTemplate.save(new User("Joe Hogan", 22)).block();
assertThat(this.firestoreTemplate.count(User.class).block()).isEqualTo(4);
this.firestoreTemplate.delete(Mono.just(new User("alpha", 45))).block();
assertThat(this.firestoreTemplate.findAll(User.class).map(User::getName).collectList().block()).containsExactlyInAnyOrder("beta", "gamma", "Joe Hogan");
this.firestoreTemplate.deleteById(Mono.just("beta"), User.class).block();
assertThat(this.firestoreTemplate.findAll(User.class).map(User::getName).collectList().block()).containsExactlyInAnyOrder("gamma", "Joe Hogan");
this.firestoreTemplate.deleteAll(User.class).block();
assertThat(this.firestoreTemplate.count(User.class).block()).isZero();
}
use of com.google.cloud.spring.data.firestore.entities.User in project spring-cloud-gcp by GoogleCloudPlatform.
the class FirestoreIntegrationTests method updateTimeTest.
@Test
void updateTimeTest() {
User bob = new User("Bob", 60, null);
this.firestoreTemplate.saveAll(Flux.just(bob)).collectList().block();
List<User> users = this.firestoreTemplate.findAll(User.class).collectList().block();
assertThat(users).containsExactly(bob);
assertThat(bob.getUpdateTime()).isNotNull();
}
use of com.google.cloud.spring.data.firestore.entities.User in project spring-cloud-gcp by GoogleCloudPlatform.
the class FirestoreRepositoryIntegrationTests method transactionPropagationTest.
@Test
void transactionPropagationTest() {
User alice = new User("Alice", 29);
User bob = new User("Bob", 60);
this.userRepository.save(alice).then(this.userRepository.save(bob)).block();
this.userService.updateUsersTransactionPropagation().block();
verify(this.transactionManager, times(1)).commit(any());
verify(this.transactionManager, times(0)).rollback(any());
verify(this.transactionManager, times(1)).getReactiveTransaction(any());
assertThat(this.userRepository.findAll().map(User::getAge).collectList().block()).containsExactlyInAnyOrder(28, 59);
}
Aggregations