Add addUser Method
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
package com.mangkyu.employment.interview.app.user.controller;
|
||||
|
||||
import com.mangkyu.employment.interview.app.user.dto.AddUserRequest;
|
||||
import com.mangkyu.employment.interview.app.user.service.UserService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.validation.Valid;
|
||||
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
public class UserController {
|
||||
|
||||
private final UserService userService;
|
||||
|
||||
@PostMapping("/user")
|
||||
public ResponseEntity<Void> addUser(@RequestBody @Valid final AddUserRequest addUserRequest) {
|
||||
userService.addUser(addUserRequest);
|
||||
|
||||
return ResponseEntity.status(HttpStatus.CREATED)
|
||||
.build();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,8 +1,10 @@
|
||||
package com.mangkyu.employment.interview.app.user.service;
|
||||
|
||||
import com.mangkyu.employment.interview.app.user.dto.AddUserRequest;
|
||||
import com.mangkyu.employment.interview.app.user.entity.User;
|
||||
import com.mangkyu.employment.interview.app.user.repository.UserRepository;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.modelmapper.ModelMapper;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@@ -14,6 +16,13 @@ import java.util.List;
|
||||
public class UserService {
|
||||
|
||||
private final UserRepository userRepository;
|
||||
private final ModelMapper modelMapper;
|
||||
|
||||
@Transactional
|
||||
public void addUser(final AddUserRequest addUserRequest) {
|
||||
final User user = modelMapper.map(addUserRequest, User.class);
|
||||
userRepository.save(user);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void disableUser(final User user) {
|
||||
|
||||
@@ -0,0 +1,98 @@
|
||||
package com.mangkyu.employment.interview.app.user.controller;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.mangkyu.employment.interview.app.quiz.enums.QuizLevel;
|
||||
import com.mangkyu.employment.interview.app.user.dto.AddUserRequest;
|
||||
import com.mangkyu.employment.interview.app.user.service.UserService;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.test.web.servlet.MockMvc;
|
||||
import org.springframework.test.web.servlet.ResultActions;
|
||||
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
|
||||
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
|
||||
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class UserControllerTest {
|
||||
|
||||
@InjectMocks
|
||||
private UserController target;
|
||||
|
||||
@Mock
|
||||
private UserService userService;
|
||||
|
||||
private MockMvc mockMvc;
|
||||
|
||||
@BeforeEach
|
||||
public void init() {
|
||||
mockMvc = MockMvcBuilders.standaloneSetup(target).build();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void addUserFail_EmailIsEmpty() throws Exception {
|
||||
// given
|
||||
final AddUserRequest addUserRequest = AddUserRequest.builder()
|
||||
.email("")
|
||||
.quizLevel(QuizLevel.JUNIOR)
|
||||
.build();
|
||||
|
||||
// when
|
||||
final ResultActions result = mockMvc.perform(
|
||||
MockMvcRequestBuilders.post("/user")
|
||||
.content(new Gson().toJson(addUserRequest))
|
||||
.contentType(MediaType.APPLICATION_JSON)
|
||||
);
|
||||
|
||||
// then
|
||||
result.andExpect(status().isBadRequest());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void addUserFail_QuizLevelIsNull() throws Exception {
|
||||
// given
|
||||
final AddUserRequest addUserRequest = AddUserRequest.builder()
|
||||
.email("whalsrb1226@gmail.com")
|
||||
.quizLevel(null)
|
||||
.build();
|
||||
|
||||
// when
|
||||
final ResultActions result = mockMvc.perform(
|
||||
MockMvcRequestBuilders.post("/user")
|
||||
.content(new Gson().toJson(addUserRequest))
|
||||
.contentType(MediaType.APPLICATION_JSON)
|
||||
);
|
||||
|
||||
// then
|
||||
result.andExpect(status().isBadRequest());
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void addUserSuccess() throws Exception {
|
||||
// given
|
||||
final AddUserRequest addUserRequest = AddUserRequest.builder()
|
||||
.email("whalsrb1226@gmail.com")
|
||||
.quizLevel(QuizLevel.JUNIOR)
|
||||
.build();
|
||||
|
||||
// when
|
||||
final ResultActions result = mockMvc.perform(
|
||||
MockMvcRequestBuilders.post("/user")
|
||||
.content(new Gson().toJson(addUserRequest))
|
||||
.contentType(MediaType.APPLICATION_JSON)
|
||||
);
|
||||
|
||||
// then
|
||||
result.andExpect(status().isCreated());
|
||||
|
||||
// then
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,13 +1,18 @@
|
||||
package com.mangkyu.employment.interview.app.user.service;
|
||||
|
||||
import com.mangkyu.employment.interview.app.quiz.enums.QuizLevel;
|
||||
import com.mangkyu.employment.interview.app.user.dto.AddUserRequest;
|
||||
import com.mangkyu.employment.interview.app.user.entity.User;
|
||||
import com.mangkyu.employment.interview.app.user.repository.UserRepository;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.Spy;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.modelmapper.ModelMapper;
|
||||
import org.modelmapper.config.Configuration;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
@@ -23,6 +28,29 @@ class UserServiceTest {
|
||||
|
||||
@Mock
|
||||
private UserRepository userRepository;
|
||||
@Spy
|
||||
private ModelMapper modelMapper;
|
||||
|
||||
@BeforeEach
|
||||
public void init() {
|
||||
modelMapper.getConfiguration()
|
||||
.setFieldAccessLevel(Configuration.AccessLevel.PRIVATE)
|
||||
.setFieldMatchingEnabled(true);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void addUserSuccess() {
|
||||
// given
|
||||
final AddUserRequest addUserRequest = AddUserRequest.builder()
|
||||
.email("whalsrb1226@gmail.com")
|
||||
.quizLevel(QuizLevel.JUNIOR)
|
||||
.build();
|
||||
|
||||
// when
|
||||
target.addUser(addUserRequest);
|
||||
|
||||
// then
|
||||
}
|
||||
|
||||
@Test
|
||||
public void disableUserSuccess() {
|
||||
|
||||
Reference in New Issue
Block a user