[BAEL-6689] code for zipwhen

This commit is contained in:
uzma 2023-07-12 01:26:57 +01:00
parent 4ce1835f93
commit d04a167840
5 changed files with 20 additions and 45 deletions

View File

@ -10,26 +10,13 @@ import reactor.core.publisher.Mono;
public class DatabaseService {
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) {
return Mono.create(sink -> {
// Simulate saving the user data to a database or data store
try {
dataStore.put(user.getId(), user);
sink.success(true); // Database save operation successful
sink.success(true);
} catch (Exception e) {
sink.success(false); // Database save operation failed
sink.success(false);
}
});
}

View File

@ -2,14 +2,6 @@ package com.baeldung.webflux.zipwhen.service;
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 {
private final UserService userService;
@ -20,7 +12,6 @@ public class EmailService {
public Mono<Boolean> sendEmail(String userId) {
return userService.getUser(userId)
.flatMap(user -> {
// Code to send the email using the user's information
System.out.println("Sending email to: " + user.getEmail());
return Mono.just(true);
})

View File

@ -6,10 +6,7 @@ import reactor.core.publisher.Mono;
public class UserService {
public Mono<User> getUser(String userId) {
// Replace with your implementation to validate the user
// and return a Mono<User> with the validated user data
// For example:
return Mono.just(new User(userId, "John Doe"));
return Mono.just(new User(userId, "john Major"));
}
}

View File

@ -14,16 +14,15 @@ import reactor.core.scheduler.Schedulers;
import reactor.util.function.Tuples;
public class UserController {
private final UserService userService;
private final EmailService emailService;
private final DatabaseService databaseService;
public UserController(UserService userService,
EmailService emailService,
DatabaseService databaseService) {
this.userService = userService;
this.emailService = emailService;
this.databaseService = databaseService;
}
private final UserService userService;
private final EmailService emailService;
private final DatabaseService databaseService;
public UserController(UserService userService, EmailService emailService, DatabaseService databaseService) {
this.userService = userService;
this.emailService = emailService;
this.databaseService = databaseService;
}
@GetMapping("/example/{userId}")
public Mono<ResponseEntity<String>> combineAllDataFor(@PathVariable String userId) {

View File

@ -24,19 +24,20 @@ public class UserControllerTest {
String userId = "123";
User user = new User(userId, "John Doe");
Mockito.when(userService.getUser(userId)).thenReturn(Mono.just(user));
Mockito.when(emailService.sendEmail(userId)).thenReturn(Mono.just(true));
Mockito.when(databaseService.saveUserData(user)).thenReturn(Mono.just(true));
Mockito.when(userService.getUser(userId))
.thenReturn(Mono.just(user));
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);
Mono<ResponseEntity<String>> responseMono = userController.combineAllDataFor(userId);
StepVerifier.create(responseMono)
.expectNextMatches(responseEntity ->
responseEntity.getStatusCode() == HttpStatus.OK &&
responseEntity.getBody().equals("Response: " + user + ", Email Sent: true, Database Result: " + true)
)
.expectNextMatches(responseEntity -> responseEntity.getStatusCode() == HttpStatus.OK && responseEntity.getBody()
.equals("Response: " + user + ", Email Sent: true, Database Result: " + true))
.verifyComplete();
}
}