public class Part06Request { ReactiveRepository<User> repository = new ReactiveUserRepository();//======================================================================================== // TODO Create a StepVerifier that initially requests all values and expect 4 values to be received public StepVerifier requestAllExpectFour(Flux<User> flux) { return StepVerifier .create(flux) .expectNextCount(4) .expectComplete(); }//======================================================================================== // TODO Create a StepVerifier that initially requests 1 value and expects User.SKYLER then requests another value and expects User.JESSE then stops verifying by cancelling the source public StepVerifier requestOneExpectSkylerThenRequestOneExpectJesse(Flux<User> flux) { return StepVerifier.create(flux) .expectNext(User.SKYLER) .thenRequest(1) .expectNext(User.JESSE) .thenCancel(); }//======================================================================================== // TODO Return a Flux with all users stored in the repository that prints automatically logs for all Reactive Streams signals public Flux<User> fluxWithLog() { return repository.findAll().log(); }//======================================================================================== // TODO Return a Flux with all users stored in the repository that prints "Starring:" at first, "firstname lastname" for all values and "The end!" on complete public Flux<User> fluxWithDoOnPrintln() { return repository.findAll() .doOnSubscribe(subscription -> System.out.println("Starring:")) .doOnNext(user -> System.out.println(user.getFirstname() + " " + user.getLastname())) .doOnComplete(() -> System.out.println("The end!")); }}
@Test public void TestRequest(){ Part06Request t = new Part06Request(); t.requestAllExpectFour(Flux.just(User.JESSE, User.SAUL, User.WALTER,User.SKYLER)).verify(); t.requestOneExpectSkylerThenRequestOneExpectJesse(Flux.just(User.SKYLER, User.JESSE)).verify(); t.fluxWithLog().subscribe(); t.fluxWithDoOnPrintln().subscribe(); }