BAEL-7540
This commit is contained in:
parent
dab8be8a01
commit
2b1ef27527
|
@ -5,9 +5,7 @@ import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
import com.baeldung.webflux.zipwhen.model.User;
|
import com.baeldung.webflux.exceptionhandeling.model.User;
|
||||||
|
|
||||||
import reactor.core.publisher.Mono;
|
|
||||||
|
|
||||||
@Repository
|
@Repository
|
||||||
public class UserRepository {
|
public class UserRepository {
|
||||||
|
@ -18,7 +16,7 @@ public class UserRepository {
|
||||||
userDatabase.put("2", new User("2", "Jane Smith"));
|
userDatabase.put("2", new User("2", "Jane Smith"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public Mono<User> findById(String id) {
|
public User findById(String id) {
|
||||||
return Mono.justOrEmpty(userDatabase.get(id));
|
return userDatabase.get(id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,8 @@
|
||||||
package com.baeldung.webflux.exceptionhandeling.controller;
|
package com.baeldung.webflux.exceptionhandeling.service;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.PathVariable;
|
import org.springframework.web.bind.annotation.PathVariable;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
|
||||||
import com.baeldung.webflux.exceptionhandeling.ex.NotFoundException;
|
import com.baeldung.webflux.exceptionhandeling.ex.NotFoundException;
|
||||||
import com.baeldung.webflux.exceptionhandeling.model.User;
|
import com.baeldung.webflux.exceptionhandeling.model.User;
|
||||||
|
@ -11,13 +10,12 @@ import com.baeldung.webflux.exceptionhandeling.repository.UserRepository;
|
||||||
|
|
||||||
import reactor.core.publisher.Mono;
|
import reactor.core.publisher.Mono;
|
||||||
|
|
||||||
@RestController
|
public class UserService {
|
||||||
public class UserController {
|
|
||||||
|
|
||||||
private final UserRepository userRepository;
|
private final UserRepository userRepository;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
public UserController(MyRepository userRepository) {
|
public UserService(UserRepository userRepository) {
|
||||||
this.userRepository = userRepository;
|
this.userRepository = userRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,8 +30,7 @@ public class UserController {
|
||||||
@GetMapping("/user/{id}")
|
@GetMapping("/user/{id}")
|
||||||
public Mono<User> getUserByIdUsingMonoError(@PathVariable String id) {
|
public Mono<User> getUserByIdUsingMonoError(@PathVariable String id) {
|
||||||
User user = userRepository.findById(id);
|
User user = userRepository.findById(id);
|
||||||
if(user==null)
|
return (user != null) ? Mono.justOrEmpty(user) : Mono.error(new NotFoundException("User Not Found"));
|
||||||
return Mono.error(new NotFoundException("User Not Found"));
|
|
||||||
return Mono.justOrEmpty(user);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,2 +1,36 @@
|
||||||
package com.baeldung.webflux.exceptionhandeling;public class UserControllerUnitTest {
|
package com.baeldung.webflux.exceptionhandeling;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import reactor.core.publisher.Mono;
|
||||||
|
import reactor.test.StepVerifier;
|
||||||
|
|
||||||
|
import com.baeldung.webflux.exceptionhandeling.ex.NotFoundException;
|
||||||
|
import com.baeldung.webflux.exceptionhandeling.model.User;
|
||||||
|
import com.baeldung.webflux.exceptionhandeling.service.UserService;
|
||||||
|
import com.baeldung.webflux.exceptionhandeling.repository.UserRepository;
|
||||||
|
|
||||||
|
public class UserControllerUnitTest {
|
||||||
|
UserRepository repositoryMock = mock(UserRepository.class);
|
||||||
|
private final UserService userService = new UserService(repositoryMock);
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenNonExistUser_whenFailureCall_then_Throws_exception() {
|
||||||
|
assertThrows(NotFoundException.class, () -> userService.getUserByIdThrowingException("3"));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenNonExistUser_whenFailureCall_then_returnMonoError() {
|
||||||
|
Mono<User> result = userService.getUserByIdUsingMonoError("3");
|
||||||
|
StepVerifier.create(result)
|
||||||
|
.expectError(NotFoundException.class)
|
||||||
|
.verify();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue