[BAEL-6689] code for zipwhen
This commit is contained in:
parent
4ce1835f93
commit
d04a167840
spring-5-webflux-2/src
main/java/com/baeldung/webflux/zipwhen
test/java/com/baeldung/webflux/zipwhen
@ -10,26 +10,13 @@ import reactor.core.publisher.Mono;
|
|||||||
public class DatabaseService {
|
public class DatabaseService {
|
||||||
private Map<String, User> dataStore = new ConcurrentHashMap<>();
|
private Map<String, User> dataStore = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
// public Mono<Boolean> saveUserData(User user) {
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// return Mono.fromRunnable(() -> {
|
|
||||||
// // Simulate saving the user data to a database or data store
|
|
||||||
// dataStore.put(user.getId(), user);
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// });
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
|
|
||||||
public Mono<Boolean> saveUserData(User user) {
|
public Mono<Boolean> saveUserData(User user) {
|
||||||
return Mono.create(sink -> {
|
return Mono.create(sink -> {
|
||||||
// Simulate saving the user data to a database or data store
|
|
||||||
try {
|
try {
|
||||||
dataStore.put(user.getId(), user);
|
dataStore.put(user.getId(), user);
|
||||||
sink.success(true); // Database save operation successful
|
sink.success(true);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
sink.success(false); // Database save operation failed
|
sink.success(false);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -2,14 +2,6 @@ package com.baeldung.webflux.zipwhen.service;
|
|||||||
|
|
||||||
import reactor.core.publisher.Mono;
|
import reactor.core.publisher.Mono;
|
||||||
|
|
||||||
//public class EmailService {
|
|
||||||
// public Mono<Boolean> sendEmail(String userId) {
|
|
||||||
// //code to send the email
|
|
||||||
// return Mono.just(true);
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
|
|
||||||
|
|
||||||
public class EmailService {
|
public class EmailService {
|
||||||
private final UserService userService;
|
private final UserService userService;
|
||||||
|
|
||||||
@ -20,7 +12,6 @@ public class EmailService {
|
|||||||
public Mono<Boolean> sendEmail(String userId) {
|
public Mono<Boolean> sendEmail(String userId) {
|
||||||
return userService.getUser(userId)
|
return userService.getUser(userId)
|
||||||
.flatMap(user -> {
|
.flatMap(user -> {
|
||||||
// Code to send the email using the user's information
|
|
||||||
System.out.println("Sending email to: " + user.getEmail());
|
System.out.println("Sending email to: " + user.getEmail());
|
||||||
return Mono.just(true);
|
return Mono.just(true);
|
||||||
})
|
})
|
||||||
|
@ -6,10 +6,7 @@ import reactor.core.publisher.Mono;
|
|||||||
|
|
||||||
public class UserService {
|
public class UserService {
|
||||||
public Mono<User> getUser(String userId) {
|
public Mono<User> getUser(String userId) {
|
||||||
// Replace with your implementation to validate the user
|
return Mono.just(new User(userId, "john Major"));
|
||||||
// and return a Mono<User> with the validated user data
|
|
||||||
// For example:
|
|
||||||
return Mono.just(new User(userId, "John Doe"));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -14,16 +14,15 @@ import reactor.core.scheduler.Schedulers;
|
|||||||
import reactor.util.function.Tuples;
|
import reactor.util.function.Tuples;
|
||||||
|
|
||||||
public class UserController {
|
public class UserController {
|
||||||
private final UserService userService;
|
private final UserService userService;
|
||||||
private final EmailService emailService;
|
private final EmailService emailService;
|
||||||
private final DatabaseService databaseService;
|
private final DatabaseService databaseService;
|
||||||
public UserController(UserService userService,
|
|
||||||
EmailService emailService,
|
public UserController(UserService userService, EmailService emailService, DatabaseService databaseService) {
|
||||||
DatabaseService databaseService) {
|
this.userService = userService;
|
||||||
this.userService = userService;
|
this.emailService = emailService;
|
||||||
this.emailService = emailService;
|
this.databaseService = databaseService;
|
||||||
this.databaseService = databaseService;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
@GetMapping("/example/{userId}")
|
@GetMapping("/example/{userId}")
|
||||||
public Mono<ResponseEntity<String>> combineAllDataFor(@PathVariable String userId) {
|
public Mono<ResponseEntity<String>> combineAllDataFor(@PathVariable String userId) {
|
||||||
|
@ -24,19 +24,20 @@ public class UserControllerTest {
|
|||||||
String userId = "123";
|
String userId = "123";
|
||||||
User user = new User(userId, "John Doe");
|
User user = new User(userId, "John Doe");
|
||||||
|
|
||||||
Mockito.when(userService.getUser(userId)).thenReturn(Mono.just(user));
|
Mockito.when(userService.getUser(userId))
|
||||||
Mockito.when(emailService.sendEmail(userId)).thenReturn(Mono.just(true));
|
.thenReturn(Mono.just(user));
|
||||||
Mockito.when(databaseService.saveUserData(user)).thenReturn(Mono.just(true));
|
Mockito.when(emailService.sendEmail(userId))
|
||||||
|
.thenReturn(Mono.just(true));
|
||||||
|
Mockito.when(databaseService.saveUserData(user))
|
||||||
|
.thenReturn(Mono.just(true));
|
||||||
|
|
||||||
UserController userController = new UserController(userService, emailService, databaseService);
|
UserController userController = new UserController(userService, emailService, databaseService);
|
||||||
|
|
||||||
Mono<ResponseEntity<String>> responseMono = userController.combineAllDataFor(userId);
|
Mono<ResponseEntity<String>> responseMono = userController.combineAllDataFor(userId);
|
||||||
|
|
||||||
StepVerifier.create(responseMono)
|
StepVerifier.create(responseMono)
|
||||||
.expectNextMatches(responseEntity ->
|
.expectNextMatches(responseEntity -> responseEntity.getStatusCode() == HttpStatus.OK && responseEntity.getBody()
|
||||||
responseEntity.getStatusCode() == HttpStatus.OK &&
|
.equals("Response: " + user + ", Email Sent: true, Database Result: " + true))
|
||||||
responseEntity.getBody().equals("Response: " + user + ", Email Sent: true, Database Result: " + true)
|
|
||||||
)
|
|
||||||
.verifyComplete();
|
.verifyComplete();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user