Refactor access modifier, line and ... etc
This commit is contained in:
@@ -11,13 +11,13 @@ import javax.validation.Valid;
|
||||
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
public class AddAnswerController {
|
||||
class AddAnswerController {
|
||||
|
||||
private final UpdateAnswerService answerService;
|
||||
|
||||
@PostMapping("/answers")
|
||||
public ResponseEntity<Void> postAnswer(@RequestBody @Valid final AddAnswerRequest addAnswerRequest) {
|
||||
answerService.addAnswer(addAnswerRequest);
|
||||
public ResponseEntity<Void> add(@RequestBody @Valid final AddAnswerRequest request) {
|
||||
answerService.add(request);
|
||||
return ResponseEntity.noContent()
|
||||
.build();
|
||||
}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
package com.mangkyu.employment.interview.app.answer.controller;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.Size;
|
||||
@@ -11,17 +11,17 @@ import java.util.UUID;
|
||||
|
||||
@Getter
|
||||
@Builder
|
||||
@RequiredArgsConstructor
|
||||
@NoArgsConstructor(force = true)
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class AddAnswerRequest {
|
||||
|
||||
@NotBlank
|
||||
private final String quizResourceId;
|
||||
private String quizResourceId;
|
||||
|
||||
private final String resourceId = String.valueOf(UUID.randomUUID());
|
||||
private String resourceId = String.valueOf(UUID.randomUUID());
|
||||
|
||||
@NotBlank
|
||||
@Size(max = 5000)
|
||||
private final String description;
|
||||
private String description;
|
||||
|
||||
}
|
||||
|
||||
@@ -9,13 +9,13 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
public class DeleteAnswerController {
|
||||
class DeleteAnswerController {
|
||||
|
||||
private final DeleteAnswerService answerService;
|
||||
|
||||
@DeleteMapping("/answers/{resourceId}")
|
||||
public ResponseEntity<Void> deleteAnswer(@PathVariable final String resourceId) {
|
||||
answerService.deleteAnswer(resourceId);
|
||||
public ResponseEntity<Void> delete(@PathVariable final String resourceId) {
|
||||
answerService.delete(resourceId);
|
||||
|
||||
return ResponseEntity.noContent().build();
|
||||
}
|
||||
|
||||
@@ -9,13 +9,13 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
public class GetAnswerController {
|
||||
class GetAnswerController {
|
||||
|
||||
private final GetAnswerService answerService;
|
||||
|
||||
@GetMapping("/answers/{resourceId}")
|
||||
public ResponseEntity<GetAnswerResponse> getAnswer(@PathVariable final String resourceId) {
|
||||
return ResponseEntity.ok(answerService.getAnswer(resourceId));
|
||||
public ResponseEntity<GetAnswerResponse> get(@PathVariable final String resourceId) {
|
||||
return ResponseEntity.ok(answerService.get(resourceId));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,17 +1,19 @@
|
||||
package com.mangkyu.employment.interview.app.answer.controller;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Getter
|
||||
@Builder
|
||||
@RequiredArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class GetAnswerResponse {
|
||||
|
||||
private final String resourceId;
|
||||
private final String quizResourceId;
|
||||
private final String description;
|
||||
private final long createdAt;
|
||||
private String resourceId;
|
||||
private String quizResourceId;
|
||||
private String description;
|
||||
private long createdAt;
|
||||
|
||||
}
|
||||
@@ -1,6 +1,5 @@
|
||||
package com.mangkyu.employment.interview.app.answer.controller;
|
||||
|
||||
import com.mangkyu.employment.interview.app.answer.service.GetAnswerService;
|
||||
import com.mangkyu.employment.interview.app.answer.service.UpdateAnswerService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
@@ -12,13 +11,13 @@ import javax.validation.Valid;
|
||||
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
public class UpdateAnswerController {
|
||||
class UpdateAnswerController {
|
||||
|
||||
private final UpdateAnswerService answerService;
|
||||
|
||||
@PutMapping("/answers")
|
||||
public ResponseEntity<Void> putAnswer(@RequestBody @Valid final AddAnswerRequest addAnswerRequest) {
|
||||
answerService.addAnswer(addAnswerRequest);
|
||||
public ResponseEntity<Void> update(@RequestBody @Valid final AddAnswerRequest request) {
|
||||
answerService.add(request);
|
||||
return ResponseEntity.noContent()
|
||||
.build();
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@ package com.mangkyu.employment.interview.app.answer.service;
|
||||
|
||||
import com.mangkyu.employment.interview.app.answer.entity.Answer;
|
||||
import com.mangkyu.employment.interview.app.answer.repository.AnswerRepository;
|
||||
import com.mangkyu.employment.interview.app.quiz.service.QuizService;
|
||||
import com.mangkyu.employment.interview.erros.errorcode.CommonErrorCode;
|
||||
import com.mangkyu.employment.interview.erros.exception.RestApiException;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@@ -11,13 +10,12 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@Transactional(readOnly = true)
|
||||
@Transactional
|
||||
public class DeleteAnswerService {
|
||||
|
||||
private final AnswerRepository answerRepository;
|
||||
|
||||
@Transactional
|
||||
public void deleteAnswer(final String resourceId) throws RestApiException {
|
||||
public void delete(final String resourceId) {
|
||||
final Answer answer = answerRepository.findByResourceId(resourceId)
|
||||
.orElseThrow(() -> new RestApiException(CommonErrorCode.RESOURCE_NOT_FOUND));
|
||||
answer.getQuiz().setAnswer(null);
|
||||
|
||||
@@ -17,7 +17,7 @@ public class GetAnswerService {
|
||||
|
||||
private final AnswerRepository answerRepository;
|
||||
|
||||
public GetAnswerResponse getAnswer(final String resourceId) throws RestApiException {
|
||||
public GetAnswerResponse get(final String resourceId) {
|
||||
final Answer answer = answerRepository.findByResourceId(resourceId)
|
||||
.orElseThrow(() -> new RestApiException(CommonErrorCode.RESOURCE_NOT_FOUND));
|
||||
|
||||
|
||||
@@ -12,22 +12,21 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@Transactional(readOnly = true)
|
||||
@Transactional
|
||||
public class UpdateAnswerService {
|
||||
|
||||
private final QuizService quizService;
|
||||
private final AnswerRepository answerRepository;
|
||||
|
||||
@Transactional
|
||||
public void addAnswer(final AddAnswerRequest addAnswerRequest) {
|
||||
final Quiz quiz = quizService.findQuiz(addAnswerRequest.getQuizResourceId());
|
||||
public void add(final AddAnswerRequest request) {
|
||||
final Quiz quiz = quizService.findQuiz(request.getQuizResourceId());
|
||||
final Answer quizAnswer = quiz.getAnswer();
|
||||
if (quizAnswer == null) {
|
||||
final Answer answer = QuizDtoConverter.convert(addAnswerRequest, quiz);
|
||||
final Answer answer = QuizDtoConverter.convert(request, quiz);
|
||||
answerRepository.save(answer);
|
||||
quiz.setAnswer(answer);
|
||||
} else {
|
||||
quizAnswer.setDescription(addAnswerRequest.getDescription());
|
||||
quizAnswer.setDescription(request.getDescription());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ public class WebQuizController {
|
||||
model.addAttribute("quiz", quiz);
|
||||
|
||||
if (StringUtils.isNotBlank(quiz.getAnswerResourceId())) {
|
||||
final GetAnswerResponse answer = answerService.getAnswer(quiz.getAnswerResourceId());
|
||||
final GetAnswerResponse answer = answerService.get(quiz.getAnswerResourceId());
|
||||
model.addAttribute("answer", answer);
|
||||
} else {
|
||||
model.addAttribute("answer", GetAnswerResponse.builder().build());
|
||||
|
||||
@@ -31,17 +31,15 @@ class AddAnswerControllerTest {
|
||||
@MethodSource("provideParameters")
|
||||
public void addAnswerFail_InvalidParameter(final String quizResourceId, final String desc) throws Exception {
|
||||
// given
|
||||
final String url = "/answers";
|
||||
|
||||
final AddAnswerRequest addAnswerRequest = AddAnswerRequest.builder()
|
||||
final AddAnswerRequest request = AddAnswerRequest.builder()
|
||||
.quizResourceId(quizResourceId)
|
||||
.description(desc)
|
||||
.build();
|
||||
|
||||
// when
|
||||
final ResultActions result = mockMvc.perform(
|
||||
MockMvcRequestBuilders.post(url)
|
||||
.content(new Gson().toJson(addAnswerRequest))
|
||||
MockMvcRequestBuilders.post("/answers")
|
||||
.content(new Gson().toJson(request))
|
||||
.contentType(MediaType.APPLICATION_JSON)
|
||||
);
|
||||
|
||||
@@ -52,8 +50,6 @@ class AddAnswerControllerTest {
|
||||
@Test
|
||||
public void addAnswerSuccess() throws Exception {
|
||||
// given
|
||||
final String url = "/answers";
|
||||
|
||||
final AddAnswerRequest addAnswerRequest = AddAnswerRequest.builder()
|
||||
.quizResourceId(UUID.randomUUID().toString())
|
||||
.description("desc")
|
||||
@@ -62,7 +58,7 @@ class AddAnswerControllerTest {
|
||||
|
||||
// when
|
||||
final ResultActions result = mockMvc.perform(
|
||||
MockMvcRequestBuilders.post(url)
|
||||
MockMvcRequestBuilders.post("/answers")
|
||||
.content(new Gson().toJson(addAnswerRequest))
|
||||
.contentType(MediaType.APPLICATION_JSON)
|
||||
);
|
||||
|
||||
@@ -24,11 +24,10 @@ class DeleteAnswerControllerTest {
|
||||
@Test
|
||||
public void deleteAnswerSuccess() throws Exception {
|
||||
// given
|
||||
final String url = "/answers/" + UUID.randomUUID();
|
||||
|
||||
// when
|
||||
final ResultActions result = mockMvc.perform(
|
||||
MockMvcRequestBuilders.delete(url)
|
||||
MockMvcRequestBuilders.delete("/answers/" + UUID.randomUUID())
|
||||
);
|
||||
|
||||
// then
|
||||
|
||||
@@ -27,7 +27,6 @@ class GetAnswerControllerTest {
|
||||
public void getAnswer() throws Exception {
|
||||
// given
|
||||
final String resourceId = UUID.randomUUID().toString();
|
||||
final String url = "/answers/" + resourceId;
|
||||
final GetAnswerResponse getAnswerResponse = GetAnswerResponse.builder()
|
||||
.resourceId(resourceId)
|
||||
.quizResourceId(UUID.randomUUID().toString())
|
||||
@@ -35,11 +34,11 @@ class GetAnswerControllerTest {
|
||||
.createdAt(System.currentTimeMillis())
|
||||
.build();
|
||||
|
||||
doReturn(getAnswerResponse).when(answerService).getAnswer(resourceId);
|
||||
doReturn(getAnswerResponse).when(answerService).get(resourceId);
|
||||
|
||||
// when
|
||||
final ResultActions result = mockMvc.perform(
|
||||
MockMvcRequestBuilders.get(url)
|
||||
MockMvcRequestBuilders.get("/answers/" + resourceId)
|
||||
);
|
||||
|
||||
// then
|
||||
|
||||
@@ -31,8 +31,6 @@ class UpdateAnswerControllerTest {
|
||||
@MethodSource("provideParameters")
|
||||
public void putAnswerFail_InvalidParameter(final String quizResourceId, final String desc) throws Exception {
|
||||
// given
|
||||
final String url = "/answers";
|
||||
|
||||
final AddAnswerRequest addAnswerRequest = AddAnswerRequest.builder()
|
||||
.quizResourceId(quizResourceId)
|
||||
.description(desc)
|
||||
@@ -40,7 +38,7 @@ class UpdateAnswerControllerTest {
|
||||
|
||||
// when
|
||||
final ResultActions result = mockMvc.perform(
|
||||
MockMvcRequestBuilders.put(url)
|
||||
MockMvcRequestBuilders.put("/answers")
|
||||
.content(new Gson().toJson(addAnswerRequest))
|
||||
.contentType(MediaType.APPLICATION_JSON)
|
||||
);
|
||||
|
||||
@@ -24,25 +24,6 @@ class AnswerRepositoryTest {
|
||||
@Autowired
|
||||
private EntityManager entityManager;
|
||||
|
||||
@Test
|
||||
public void insertAnswer() {
|
||||
// given
|
||||
final Quiz quiz = EntityCreationUtils.quiz();
|
||||
final Quiz savedQuiz = quizRepository.save(quiz);
|
||||
final Answer answer = EntityCreationUtils.answer(savedQuiz);
|
||||
|
||||
answerRepository.save(answer);
|
||||
savedQuiz.setAnswer(answer);
|
||||
entityManager.flush();
|
||||
|
||||
// then
|
||||
final Answer result = answerRepository.save(answer);
|
||||
|
||||
assertThat(result.getResourceId()).isEqualTo(answer.getResourceId());
|
||||
assertThat(result.getDescription()).isEqualTo(answer.getDescription());
|
||||
assertThat(result.getQuiz()).isEqualTo(quiz);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void selectAnswerByQuizId() {
|
||||
// given
|
||||
|
||||
@@ -1,11 +1,8 @@
|
||||
package com.mangkyu.employment.interview.app.answer.service;
|
||||
|
||||
import com.mangkyu.employment.interview.app.answer.controller.AddAnswerRequest;
|
||||
import com.mangkyu.employment.interview.app.answer.controller.GetAnswerResponse;
|
||||
import com.mangkyu.employment.interview.app.answer.entity.Answer;
|
||||
import com.mangkyu.employment.interview.app.answer.repository.AnswerRepository;
|
||||
import com.mangkyu.employment.interview.app.quiz.entity.Quiz;
|
||||
import com.mangkyu.employment.interview.app.quiz.service.QuizService;
|
||||
import com.mangkyu.employment.interview.erros.errorcode.CommonErrorCode;
|
||||
import com.mangkyu.employment.interview.erros.exception.RestApiException;
|
||||
import com.mangkyu.employment.interview.testutils.EntityCreationUtils;
|
||||
@@ -14,7 +11,6 @@ import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.springframework.test.util.ReflectionTestUtils;
|
||||
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
@@ -32,27 +28,35 @@ class DeleteAnswerServiceTest {
|
||||
private AnswerRepository answerRepository;
|
||||
|
||||
@Test
|
||||
public void deleteAnswerByQuizResourceIdFail_AnswerNotExists() {
|
||||
void deleteAnswerByQuizResourceIdFail_AnswerNotExists() {
|
||||
// given
|
||||
final String resourceId = UUID.randomUUID().toString();
|
||||
doReturn(Optional.empty()).when(answerRepository).findByResourceId(resourceId);
|
||||
|
||||
doReturn(Optional.empty())
|
||||
.when(answerRepository)
|
||||
.findByResourceId(resourceId);
|
||||
|
||||
// when
|
||||
final RestApiException result = assertThrows(RestApiException.class, () -> answerService.deleteAnswer(resourceId));
|
||||
final RestApiException result = assertThrows(
|
||||
RestApiException.class,
|
||||
() -> answerService.delete(resourceId));
|
||||
|
||||
// then
|
||||
assertThat(result.getErrorCode()).isEqualTo(CommonErrorCode.RESOURCE_NOT_FOUND);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void deleteAnswerByQuizResourceIdSuccess() throws RestApiException {
|
||||
void deleteAnswerByQuizResourceIdSuccess() throws RestApiException {
|
||||
// given
|
||||
final Quiz quiz = EntityCreationUtils.quiz();
|
||||
final Answer answer = EntityCreationUtils.answer(quiz);
|
||||
doReturn(Optional.of(answer)).when(answerRepository).findByResourceId(answer.getResourceId());
|
||||
|
||||
doReturn(Optional.of(answer))
|
||||
.when(answerRepository)
|
||||
.findByResourceId(answer.getResourceId());
|
||||
|
||||
// when
|
||||
answerService.deleteAnswer(answer.getResourceId());
|
||||
answerService.delete(answer.getResourceId());
|
||||
|
||||
// then
|
||||
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package com.mangkyu.employment.interview.app.answer.service;
|
||||
|
||||
import com.mangkyu.employment.interview.app.answer.controller.AddAnswerRequest;
|
||||
import com.mangkyu.employment.interview.app.answer.controller.GetAnswerResponse;
|
||||
import com.mangkyu.employment.interview.app.answer.entity.Answer;
|
||||
import com.mangkyu.employment.interview.app.answer.repository.AnswerRepository;
|
||||
@@ -14,7 +13,6 @@ import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.springframework.test.util.ReflectionTestUtils;
|
||||
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
@@ -38,10 +36,15 @@ class GetAnswerServiceTest {
|
||||
public void getAnswerByQuizResourceIdFail_AnswerNotExists() {
|
||||
// given
|
||||
final String resourceId = UUID.randomUUID().toString();
|
||||
doReturn(Optional.empty()).when(answerRepository).findByResourceId(resourceId);
|
||||
|
||||
doReturn(Optional.empty())
|
||||
.when(answerRepository)
|
||||
.findByResourceId(resourceId);
|
||||
|
||||
// when
|
||||
final RestApiException result = assertThrows(RestApiException.class, () -> answerService.getAnswer(resourceId));
|
||||
final RestApiException result = assertThrows(
|
||||
RestApiException.class,
|
||||
() -> answerService.get(resourceId));
|
||||
|
||||
// then
|
||||
assertThat(result.getErrorCode()).isEqualTo(CommonErrorCode.RESOURCE_NOT_FOUND);
|
||||
@@ -52,10 +55,13 @@ class GetAnswerServiceTest {
|
||||
// given
|
||||
final Quiz quiz = EntityCreationUtils.quiz();
|
||||
final Answer answer = EntityCreationUtils.answer(quiz);
|
||||
doReturn(Optional.of(answer)).when(answerRepository).findByResourceId(answer.getResourceId());
|
||||
|
||||
doReturn(Optional.of(answer))
|
||||
.when(answerRepository)
|
||||
.findByResourceId(answer.getResourceId());
|
||||
|
||||
// when
|
||||
final GetAnswerResponse result = answerService.getAnswer(answer.getResourceId());
|
||||
final GetAnswerResponse result = answerService.get(answer.getResourceId());
|
||||
|
||||
// then
|
||||
assertThat(result.getDescription()).isEqualTo(answer.getDescription());
|
||||
|
||||
@@ -40,10 +40,12 @@ class UpdateAnswerServiceTest {
|
||||
final Answer answer = EntityCreationUtils.answer(quiz);
|
||||
ReflectionTestUtils.setField(quiz, "answer", answer);
|
||||
|
||||
doReturn(quiz).when(quizService).findQuiz(addAnswerRequest.getQuizResourceId());
|
||||
doReturn(quiz)
|
||||
.when(quizService)
|
||||
.findQuiz(addAnswerRequest.getQuizResourceId());
|
||||
|
||||
// when
|
||||
answerService.addAnswer(addAnswerRequest);
|
||||
answerService.add(addAnswerRequest);
|
||||
|
||||
// then
|
||||
|
||||
@@ -60,10 +62,12 @@ class UpdateAnswerServiceTest {
|
||||
.build();
|
||||
final Quiz quiz = EntityCreationUtils.quiz();
|
||||
|
||||
doReturn(quiz).when(quizService).findQuiz(addAnswerRequest.getQuizResourceId());
|
||||
doReturn(quiz)
|
||||
.when(quizService)
|
||||
.findQuiz(addAnswerRequest.getQuizResourceId());
|
||||
|
||||
// when
|
||||
answerService.addAnswer(addAnswerRequest);
|
||||
answerService.add(addAnswerRequest);
|
||||
|
||||
// then
|
||||
verify(answerRepository, times(1)).save(any(Answer.class));
|
||||
|
||||
Reference in New Issue
Block a user