Search in sources :

Example 11 with User

use of org.springframework.cloud.gcp.data.firestore.entities.User in project spring-cloud-gcp by spring-cloud.

the class FirestoreRepositoryIntegrationTests method containsFilterQueryTest.

@Test
public void containsFilterQueryTest() {
    User u1 = new User("Cloud", 22, Arrays.asList("cat", "dog"));
    User u2 = new User("Squall", 17, Collections.singletonList("pony"));
    Flux<User> users = Flux.fromArray(new User[] { u1, u2 });
    this.userRepository.saveAll(users).blockLast();
    List<String> pagedUsers = this.userRepository.findByPetsContains(Arrays.asList("cat", "dog")).map(User::getName).collectList().block();
    assertThat(pagedUsers).containsExactly("Cloud");
    pagedUsers = this.userRepository.findByPetsContains(Arrays.asList("cat", "pony")).map(User::getName).collectList().block();
    assertThat(pagedUsers).containsExactlyInAnyOrder("Cloud", "Squall");
    pagedUsers = this.userRepository.findByAgeAndPetsContains(17, Arrays.asList("cat", "pony")).map(User::getName).collectList().block();
    assertThat(pagedUsers).containsExactlyInAnyOrder("Squall");
    pagedUsers = this.userRepository.findByPetsContainsAndAgeIn("cat", Arrays.asList(22, 23)).map(User::getName).collectList().block();
    assertThat(pagedUsers).containsExactlyInAnyOrder("Cloud");
}
Also used : User(org.springframework.cloud.gcp.data.firestore.entities.User) Test(org.junit.Test)

Example 12 with User

use of org.springframework.cloud.gcp.data.firestore.entities.User in project spring-cloud-gcp by spring-cloud.

the class FirestoreRepositoryIntegrationTests method testDoubleSub.

@Test
public void testDoubleSub() {
    User alice = new User("Alice", 29);
    User bob = new User("Bob", 60);
    this.userRepository.save(alice).then(this.userRepository.save(bob)).block();
    Mono<User> aUser = this.userRepository.findByAge(29).next();
    Flux<String> stringFlux = userRepository.findAll().flatMap(user -> aUser.flatMap(user1 -> Mono.just(user.getName() + " " + user1.getName())));
    List<String> list = stringFlux.collectList().block();
    assertThat(list).contains("Alice Alice", "Bob Alice");
}
Also used : IntStream(java.util.stream.IntStream) ArgumentMatchers.any(org.mockito.ArgumentMatchers.any) Arrays(java.util.Arrays) Order(org.springframework.data.domain.Sort.Order) Assume.assumeThat(org.junit.Assume.assumeThat) BeforeClass(org.junit.BeforeClass) UserRepository(org.springframework.cloud.gcp.data.firestore.entities.UserRepository) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) RunWith(org.junit.runner.RunWith) Autowired(org.springframework.beans.factory.annotation.Autowired) Sort(org.springframework.data.domain.Sort) SpringRunner(org.springframework.test.context.junit4.SpringRunner) DefaultTransactionDefinition(org.springframework.transaction.support.DefaultTransactionDefinition) Before(org.junit.Before) User(org.springframework.cloud.gcp.data.firestore.entities.User) TransactionalOperator(org.springframework.transaction.reactive.TransactionalOperator) PageRequest(org.springframework.data.domain.PageRequest) Test(org.junit.Test) Mono(reactor.core.publisher.Mono) Mockito.times(org.mockito.Mockito.times) Mockito.verify(org.mockito.Mockito.verify) Flux(reactor.core.publisher.Flux) List(java.util.List) Address(org.springframework.cloud.gcp.data.firestore.entities.User.Address) ReactiveFirestoreTransactionManager(org.springframework.cloud.gcp.data.firestore.transaction.ReactiveFirestoreTransactionManager) ContextConfiguration(org.springframework.test.context.ContextConfiguration) Matchers.is(org.hamcrest.Matchers.is) Collections(java.util.Collections) Mockito.reset(org.mockito.Mockito.reset) User(org.springframework.cloud.gcp.data.firestore.entities.User) Test(org.junit.Test)

Example 13 with User

use of org.springframework.cloud.gcp.data.firestore.entities.User in project spring-cloud-gcp by spring-cloud.

the class FirestoreIntegrationTests method deleteTest.

@Test
public 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()).isEqualTo(0);
}
Also used : User(org.springframework.cloud.gcp.data.firestore.entities.User) Test(org.junit.Test)

Example 14 with User

use of org.springframework.cloud.gcp.data.firestore.entities.User in project spring-cloud-gcp by spring-cloud.

the class FirestoreIntegrationTests method saveAllTest.

@Test
public void saveAllTest() {
    User u1 = new User("Cloud", 22);
    User u2 = new User("Squall", 17);
    Flux<User> users = Flux.fromArray(new User[] { u1, u2 });
    assertThat(this.firestoreTemplate.count(User.class).block()).isEqualTo(0);
    this.firestoreTemplate.saveAll(users).blockLast();
    assertThat(this.firestoreTemplate.count(User.class).block()).isEqualTo(2);
    assertThat(this.firestoreTemplate.deleteAll(User.class).block()).isEqualTo(2);
}
Also used : User(org.springframework.cloud.gcp.data.firestore.entities.User) Test(org.junit.Test)

Example 15 with User

use of org.springframework.cloud.gcp.data.firestore.entities.User in project spring-cloud-gcp by spring-cloud.

the class FirestoreIntegrationTests method writeReadDeleteTest.

@Test
public void writeReadDeleteTest() {
    User alice = new User("Alice", 29);
    User bob = new User("Bob", 60);
    this.firestoreTemplate.save(alice).block();
    this.firestoreTemplate.save(bob).block();
    assertThat(this.firestoreTemplate.findById(Mono.just("Saitama"), User.class).block()).isNull();
    assertThat(this.firestoreTemplate.findById(Mono.just("Bob"), User.class).block()).isEqualTo(bob);
    assertThat(this.firestoreTemplate.findAllById(Flux.just("Bob", "Saitama", "Alice"), User.class).collectList().block()).containsExactlyInAnyOrder(bob, alice);
    List<User> usersBeforeDelete = this.firestoreTemplate.findAll(User.class).collectList().block();
    assertThat(this.firestoreTemplate.count(User.class).block()).isEqualTo(2);
    this.firestoreTemplate.delete(Mono.just(bob)).block();
    assertThat(this.firestoreTemplate.count(User.class).block()).isEqualTo(1);
    assertThat(this.firestoreTemplate.existsById(Mono.just("Alice"), User.class).block()).isEqualTo(Boolean.TRUE);
    assertThat(this.firestoreTemplate.existsById(Mono.just("Bob"), User.class).block()).isEqualTo(Boolean.FALSE);
    this.firestoreTemplate.deleteById(Mono.just("Alice"), User.class).block();
    assertThat(this.firestoreTemplate.count(User.class).block()).isEqualTo(0);
    this.firestoreTemplate.save(alice).block();
    this.firestoreTemplate.save(bob).block();
    assertThat(this.firestoreTemplate.deleteAll(User.class).block()).isEqualTo(2);
    assertThat(usersBeforeDelete).containsExactlyInAnyOrder(alice, bob);
    assertThat(this.firestoreTemplate.findAll(User.class).collectList().block()).isEmpty();
    // tag::subcollection[]
    FirestoreReactiveOperations bobTemplate = this.firestoreTemplate.withParent(new User("Bob", 60));
    PhoneNumber phoneNumber = new PhoneNumber("111-222-333");
    bobTemplate.save(phoneNumber).block();
    assertThat(bobTemplate.findAll(PhoneNumber.class).collectList().block()).containsExactly(phoneNumber);
    bobTemplate.deleteAll(PhoneNumber.class).block();
    assertThat(bobTemplate.findAll(PhoneNumber.class).collectList().block()).isEmpty();
// end::subcollection[]
}
Also used : User(org.springframework.cloud.gcp.data.firestore.entities.User) FirestoreReactiveOperations(org.springframework.cloud.gcp.data.firestore.FirestoreReactiveOperations) PhoneNumber(org.springframework.cloud.gcp.data.firestore.entities.PhoneNumber) Test(org.junit.Test)

Aggregations

Test (org.junit.Test)18 User (org.springframework.cloud.gcp.data.firestore.entities.User)18 Address (org.springframework.cloud.gcp.data.firestore.entities.User.Address)4 List (java.util.List)3 Assertions.assertThat (org.assertj.core.api.Assertions.assertThat)3 Matchers.is (org.hamcrest.Matchers.is)3 Assume.assumeThat (org.junit.Assume.assumeThat)3 Before (org.junit.Before)3 BeforeClass (org.junit.BeforeClass)3 RunWith (org.junit.runner.RunWith)3 ArgumentMatchers.any (org.mockito.ArgumentMatchers.any)3 Mockito.reset (org.mockito.Mockito.reset)3 Mockito.times (org.mockito.Mockito.times)3 Mockito.verify (org.mockito.Mockito.verify)3 Autowired (org.springframework.beans.factory.annotation.Autowired)3 ReactiveFirestoreTransactionManager (org.springframework.cloud.gcp.data.firestore.transaction.ReactiveFirestoreTransactionManager)3 PageRequest (org.springframework.data.domain.PageRequest)3 ContextConfiguration (org.springframework.test.context.ContextConfiguration)3 SpringRunner (org.springframework.test.context.junit4.SpringRunner)3 TransactionalOperator (org.springframework.transaction.reactive.TransactionalOperator)3