Divide AnswerController independently

This commit is contained in:
MangKyu
2023-02-18 16:51:08 +09:00
parent 7a92339454
commit 6dfe5f531b
20 changed files with 380 additions and 251 deletions

View File

@@ -1,11 +0,0 @@
package com.mangkyu.employment.interview.app.answer.constants;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class AnswerConstants {
public static final int MAX_ANSWER_SIZE = 5000;
}

View File

@@ -0,0 +1,25 @@
package com.mangkyu.employment.interview.app.answer.controller;
import com.mangkyu.employment.interview.app.answer.service.AnswerService;
import lombok.RequiredArgsConstructor;
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 AddAnswerController {
private final AnswerService answerService;
@PostMapping("/answers")
public ResponseEntity<Void> postAnswer(@RequestBody @Valid final AddAnswerRequest addAnswerRequest) {
answerService.addAnswer(addAnswerRequest);
return ResponseEntity.noContent()
.build();
}
}

View File

@@ -1,6 +1,5 @@
package com.mangkyu.employment.interview.app.answer.dto; package com.mangkyu.employment.interview.app.answer.controller;
import com.mangkyu.employment.interview.app.answer.constants.AnswerConstants;
import lombok.Builder; import lombok.Builder;
import lombok.Getter; import lombok.Getter;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
@@ -22,7 +21,7 @@ public class AddAnswerRequest {
private final String resourceId = String.valueOf(UUID.randomUUID()); private final String resourceId = String.valueOf(UUID.randomUUID());
@NotBlank @NotBlank
@Size(max = AnswerConstants.MAX_ANSWER_SIZE) @Size(max = 5000)
private final String description; private final String description;
} }

View File

@@ -1,44 +0,0 @@
package com.mangkyu.employment.interview.app.answer.controller;
import com.mangkyu.employment.interview.app.answer.dto.AddAnswerRequest;
import com.mangkyu.employment.interview.app.answer.dto.GetAnswerResponse;
import com.mangkyu.employment.interview.app.answer.service.AnswerService;
import com.mangkyu.employment.interview.erros.exception.RestApiException;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
@RestController
@RequiredArgsConstructor
public class AnswerController {
private final AnswerService answerService;
@PutMapping("/answers")
public ResponseEntity<Void> putAnswer(@RequestBody @Valid final AddAnswerRequest addAnswerRequest) throws RestApiException {
answerService.addAnswer(addAnswerRequest);
return ResponseEntity.noContent()
.build();
}
@PostMapping("/answers")
public ResponseEntity<Void> postAnswer(@RequestBody @Valid final AddAnswerRequest addAnswerRequest) throws RestApiException {
answerService.addAnswer(addAnswerRequest);
return ResponseEntity.noContent()
.build();
}
@GetMapping("/answers/{resourceId}")
public ResponseEntity<GetAnswerResponse> getAnswer(@PathVariable final String resourceId) throws RestApiException {
return ResponseEntity.ok(answerService.getAnswer(resourceId));
}
@DeleteMapping("/answers/{resourceId}")
public ResponseEntity<Void> deleteAnswer(@PathVariable final String resourceId) throws RestApiException {
answerService.deleteAnswer(resourceId);
return ResponseEntity.noContent().build();
}
}

View File

@@ -0,0 +1,23 @@
package com.mangkyu.employment.interview.app.answer.controller;
import com.mangkyu.employment.interview.app.answer.service.AnswerService;
import com.mangkyu.employment.interview.erros.exception.RestApiException;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequiredArgsConstructor
public class DeleteAnswerController {
private final AnswerService answerService;
@DeleteMapping("/answers/{resourceId}")
public ResponseEntity<Void> deleteAnswer(@PathVariable final String resourceId) {
answerService.deleteAnswer(resourceId);
return ResponseEntity.noContent().build();
}
}

View File

@@ -0,0 +1,21 @@
package com.mangkyu.employment.interview.app.answer.controller;
import com.mangkyu.employment.interview.app.answer.service.AnswerService;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequiredArgsConstructor
public class GetAnswerController {
private final AnswerService answerService;
@GetMapping("/answers/{resourceId}")
public ResponseEntity<GetAnswerResponse> getAnswer(@PathVariable final String resourceId) {
return ResponseEntity.ok(answerService.getAnswer(resourceId));
}
}

View File

@@ -1,4 +1,4 @@
package com.mangkyu.employment.interview.app.answer.dto; package com.mangkyu.employment.interview.app.answer.controller;
import lombok.Builder; import lombok.Builder;
import lombok.Getter; import lombok.Getter;

View File

@@ -0,0 +1,25 @@
package com.mangkyu.employment.interview.app.answer.controller;
import com.mangkyu.employment.interview.app.answer.service.AnswerService;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid;
@RestController
@RequiredArgsConstructor
public class UpdateAnswerController {
private final AnswerService answerService;
@PutMapping("/answers")
public ResponseEntity<Void> putAnswer(@RequestBody @Valid final AddAnswerRequest addAnswerRequest) {
answerService.addAnswer(addAnswerRequest);
return ResponseEntity.noContent()
.build();
}
}

View File

@@ -1,6 +1,5 @@
package com.mangkyu.employment.interview.app.answer.entity; package com.mangkyu.employment.interview.app.answer.entity;
import com.mangkyu.employment.interview.app.answer.constants.AnswerConstants;
import com.mangkyu.employment.interview.app.common.entity.BaseEntity; import com.mangkyu.employment.interview.app.common.entity.BaseEntity;
import com.mangkyu.employment.interview.app.quiz.entity.Quiz; import com.mangkyu.employment.interview.app.quiz.entity.Quiz;
import lombok.*; import lombok.*;
@@ -23,7 +22,7 @@ public class Answer extends BaseEntity {
@Setter @Setter
@Lob @Lob
@Column(length = AnswerConstants.MAX_ANSWER_SIZE) @Column(length = 5000)
private String description; private String description;
} }

View File

@@ -1,7 +1,7 @@
package com.mangkyu.employment.interview.app.answer.service; package com.mangkyu.employment.interview.app.answer.service;
import com.mangkyu.employment.interview.app.answer.dto.AddAnswerRequest; import com.mangkyu.employment.interview.app.answer.controller.AddAnswerRequest;
import com.mangkyu.employment.interview.app.answer.dto.GetAnswerResponse; 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.entity.Answer;
import com.mangkyu.employment.interview.app.answer.repository.AnswerRepository; import com.mangkyu.employment.interview.app.answer.repository.AnswerRepository;
import com.mangkyu.employment.interview.erros.errorcode.CommonErrorCode; import com.mangkyu.employment.interview.erros.errorcode.CommonErrorCode;

View File

@@ -1,6 +1,6 @@
package com.mangkyu.employment.interview.app.quiz.controller; package com.mangkyu.employment.interview.app.quiz.controller;
import com.mangkyu.employment.interview.app.answer.dto.GetAnswerResponse; import com.mangkyu.employment.interview.app.answer.controller.GetAnswerResponse;
import com.mangkyu.employment.interview.app.answer.service.AnswerService; import com.mangkyu.employment.interview.app.answer.service.AnswerService;
import com.mangkyu.employment.interview.app.quiz.dto.GetQuizResponse; import com.mangkyu.employment.interview.app.quiz.dto.GetQuizResponse;
import com.mangkyu.employment.interview.app.quiz.service.QuizService; import com.mangkyu.employment.interview.app.quiz.service.QuizService;

View File

@@ -1,7 +1,7 @@
package com.mangkyu.employment.interview.app.quiz.converter; package com.mangkyu.employment.interview.app.quiz.converter;
import com.mangkyu.employment.interview.app.answer.dto.AddAnswerRequest; import com.mangkyu.employment.interview.app.answer.controller.AddAnswerRequest;
import com.mangkyu.employment.interview.app.answer.dto.GetAnswerResponse; 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.entity.Answer;
import com.mangkyu.employment.interview.app.quiz.dto.GetQuizResponse; import com.mangkyu.employment.interview.app.quiz.dto.GetQuizResponse;
import com.mangkyu.employment.interview.app.quiz.entity.Quiz; import com.mangkyu.employment.interview.app.quiz.entity.Quiz;
@@ -9,7 +9,6 @@ import com.mangkyu.employment.interview.enums.common.EnumMapperValue;
import com.mangkyu.employment.interview.enums.value.QuizLevel; import com.mangkyu.employment.interview.enums.value.QuizLevel;
import lombok.AccessLevel; import lombok.AccessLevel;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import java.sql.Timestamp; import java.sql.Timestamp;
import java.util.List; import java.util.List;

View File

@@ -35,7 +35,7 @@ public class QuizRepositoryImpl implements QuizRepositoryCustom {
.where(quizLevelsIn(qQuiz, condition.getLevels())) .where(quizLevelsIn(qQuiz, condition.getLevels()))
.offset(pageable.getOffset()) .offset(pageable.getOffset())
.limit(pageable.getPageSize()) .limit(pageable.getPageSize())
.where(qQuiz.answer.isNotNull()) // .where(qQuiz.answer.isNull())
.where(qQuiz.isEnable.isTrue()) .where(qQuiz.isEnable.isTrue())
.fetch(); .fetch();
@@ -43,7 +43,7 @@ public class QuizRepositoryImpl implements QuizRepositoryCustom {
.where(titleLike(qQuiz, condition.getQuery())) .where(titleLike(qQuiz, condition.getQuery()))
.where(quizCategoriesIn(qQuiz, condition.getCategories())) .where(quizCategoriesIn(qQuiz, condition.getCategories()))
.where(quizLevelsIn(qQuiz, condition.getLevels())) .where(quizLevelsIn(qQuiz, condition.getLevels()))
.where(qQuiz.answer.isNotNull()) // .where(qQuiz.answer.isNull())
.where(qQuiz.isEnable.isTrue()) .where(qQuiz.isEnable.isTrue())
.stream().count(); .stream().count();

View File

@@ -0,0 +1,90 @@
package com.mangkyu.employment.interview.app.answer.controller;
import com.google.gson.Gson;
import com.mangkyu.employment.interview.app.answer.service.AnswerService;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
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 java.util.UUID;
import java.util.stream.Stream;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@WebMvcTest
class AddAnswerControllerTest {
@Autowired
private MockMvc mockMvc;
@Autowired
private AnswerService answerService;
@ParameterizedTest
@MethodSource("provideParameters")
public void addAnswerFail_InvalidParameter(final String quizResourceId, final String desc) throws Exception {
// given
final String url = "/answers";
final AddAnswerRequest addAnswerRequest = AddAnswerRequest.builder()
.quizResourceId(quizResourceId)
.description(desc)
.build();
// when
final ResultActions result = mockMvc.perform(
MockMvcRequestBuilders.post(url)
.content(new Gson().toJson(addAnswerRequest))
.contentType(MediaType.APPLICATION_JSON)
);
// then
result.andExpect(status().isBadRequest());
}
@Test
public void addAnswerSuccess() throws Exception {
// given
final String url = "/answers";
final AddAnswerRequest addAnswerRequest = AddAnswerRequest.builder()
.quizResourceId(UUID.randomUUID().toString())
.description("desc")
.build();
// when
final ResultActions result = mockMvc.perform(
MockMvcRequestBuilders.post(url)
.content(new Gson().toJson(addAnswerRequest))
.contentType(MediaType.APPLICATION_JSON)
);
// then
result.andExpect(status().isNoContent());
}
private static Stream<Arguments> provideParameters() {
return Stream.of(
Arguments.of(null, desc(1)),
Arguments.of(UUID.randomUUID().toString(), null),
Arguments.of(UUID.randomUUID().toString(), desc(1000))
);
}
private static String desc(final int count) {
final StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < count; i++) {
stringBuilder.append("AAAAAAAAAAAAAAAAAAAAAAAAAAA");
}
return stringBuilder.toString();
}
}

View File

@@ -1,178 +0,0 @@
package com.mangkyu.employment.interview.app.answer.controller;
import com.google.gson.Gson;
import com.mangkyu.employment.interview.app.answer.dto.AddAnswerRequest;
import com.mangkyu.employment.interview.app.answer.dto.GetAnswerResponse;
import com.mangkyu.employment.interview.app.answer.service.AnswerService;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
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 java.util.UUID;
import java.util.stream.Stream;
import static org.mockito.Mockito.doReturn;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@WebMvcTest
class AnswerControllerTest {
@Autowired
private MockMvc mockMvc;
@Autowired
private AnswerService answerService;
@Test
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())
.description("설명")
.createdAt(System.currentTimeMillis())
.build();
doReturn(getAnswerResponse).when(answerService).getAnswer(resourceId);
// when
final ResultActions result = mockMvc.perform(
MockMvcRequestBuilders.get(url)
);
// then
result.andExpect(status().isOk())
.andExpect(jsonPath("resourceId").value(getAnswerResponse.getResourceId()))
.andExpect(jsonPath("quizResourceId").value(getAnswerResponse.getQuizResourceId()))
.andExpect(jsonPath("description").value(getAnswerResponse.getDescription()));
}
@ParameterizedTest
@MethodSource("provideParameters")
public void addAnswerFail_InvalidParameter(final String quizResourceId, final String desc) throws Exception {
// given
final String url = "/answers";
final AddAnswerRequest addAnswerRequest = AddAnswerRequest.builder()
.quizResourceId(quizResourceId)
.description(desc)
.build();
// when
final ResultActions result = mockMvc.perform(
MockMvcRequestBuilders.post(url)
.content(new Gson().toJson(addAnswerRequest))
.contentType(MediaType.APPLICATION_JSON)
);
// then
result.andExpect(status().isBadRequest());
}
@Test
public void addAnswerSuccess() throws Exception {
// given
final String url = "/answers";
final AddAnswerRequest addAnswerRequest = AddAnswerRequest.builder()
.quizResourceId(UUID.randomUUID().toString())
.description("desc")
.build();
// when
final ResultActions result = mockMvc.perform(
MockMvcRequestBuilders.post(url)
.content(new Gson().toJson(addAnswerRequest))
.contentType(MediaType.APPLICATION_JSON)
);
// then
result.andExpect(status().isNoContent());
}
@ParameterizedTest
@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)
.build();
// when
final ResultActions result = mockMvc.perform(
MockMvcRequestBuilders.put(url)
.content(new Gson().toJson(addAnswerRequest))
.contentType(MediaType.APPLICATION_JSON)
);
// then
result.andExpect(status().isBadRequest());
}
@Test
public void putAnswerSuccess() throws Exception {
// given
final String url = "/answers";
final AddAnswerRequest addAnswerRequest = AddAnswerRequest.builder()
.quizResourceId(UUID.randomUUID().toString())
.description("desc")
.build();
// when
final ResultActions result = mockMvc.perform(
MockMvcRequestBuilders.put(url)
.content(new Gson().toJson(addAnswerRequest))
.contentType(MediaType.APPLICATION_JSON)
);
// then
result.andExpect(status().isNoContent());
}
@Test
public void deleteAnswerSuccess() throws Exception {
// given
final String url = "/answers/" + UUID.randomUUID();
// when
final ResultActions result = mockMvc.perform(
MockMvcRequestBuilders.delete(url)
);
// then
result.andExpect(status().isNoContent());
}
private static Stream<Arguments> provideParameters() {
return Stream.of(
Arguments.of(null, desc(1)),
Arguments.of(UUID.randomUUID().toString(), null),
Arguments.of(UUID.randomUUID().toString(), desc(1000))
);
}
private static String desc(final int count) {
final StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < count; i++) {
stringBuilder.append("AAAAAAAAAAAAAAAAAAAAAAAAAAA");
}
return stringBuilder.toString();
}
}

View File

@@ -0,0 +1,38 @@
package com.mangkyu.employment.interview.app.answer.controller;
import com.mangkyu.employment.interview.app.answer.service.AnswerService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.ResultActions;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import java.util.UUID;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@WebMvcTest
class DeleteAnswerControllerTest {
@Autowired
private MockMvc mockMvc;
@Autowired
private AnswerService answerService;
@Test
public void deleteAnswerSuccess() throws Exception {
// given
final String url = "/answers/" + UUID.randomUUID();
// when
final ResultActions result = mockMvc.perform(
MockMvcRequestBuilders.delete(url)
);
// then
result.andExpect(status().isNoContent());
}
}

View File

@@ -0,0 +1,53 @@
package com.mangkyu.employment.interview.app.answer.controller;
import com.mangkyu.employment.interview.app.answer.service.AnswerService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.ResultActions;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import java.util.UUID;
import static org.mockito.Mockito.doReturn;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@WebMvcTest
class GetAnswerControllerTest {
@Autowired
private MockMvc mockMvc;
@Autowired
private AnswerService answerService;
@Test
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())
.description("설명")
.createdAt(System.currentTimeMillis())
.build();
doReturn(getAnswerResponse).when(answerService).getAnswer(resourceId);
// when
final ResultActions result = mockMvc.perform(
MockMvcRequestBuilders.get(url)
);
// then
result.andExpect(status().isOk())
.andExpect(jsonPath("resourceId").value(getAnswerResponse.getResourceId()))
.andExpect(jsonPath("quizResourceId").value(getAnswerResponse.getQuizResourceId()))
.andExpect(jsonPath("description").value(getAnswerResponse.getDescription()));
}
}

View File

@@ -0,0 +1,90 @@
package com.mangkyu.employment.interview.app.answer.controller;
import com.google.gson.Gson;
import com.mangkyu.employment.interview.app.answer.service.AnswerService;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
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 java.util.UUID;
import java.util.stream.Stream;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@WebMvcTest
class UpdateAnswerControllerTest {
@Autowired
private MockMvc mockMvc;
@Autowired
private AnswerService answerService;
@ParameterizedTest
@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)
.build();
// when
final ResultActions result = mockMvc.perform(
MockMvcRequestBuilders.put(url)
.content(new Gson().toJson(addAnswerRequest))
.contentType(MediaType.APPLICATION_JSON)
);
// then
result.andExpect(status().isBadRequest());
}
@Test
public void putAnswerSuccess() throws Exception {
// given
final String url = "/answers";
final AddAnswerRequest addAnswerRequest = AddAnswerRequest.builder()
.quizResourceId(UUID.randomUUID().toString())
.description("desc")
.build();
// when
final ResultActions result = mockMvc.perform(
MockMvcRequestBuilders.put(url)
.content(new Gson().toJson(addAnswerRequest))
.contentType(MediaType.APPLICATION_JSON)
);
// then
result.andExpect(status().isNoContent());
}
private static Stream<Arguments> provideParameters() {
return Stream.of(
Arguments.of(null, desc(1)),
Arguments.of(UUID.randomUUID().toString(), null),
Arguments.of(UUID.randomUUID().toString(), desc(1000))
);
}
private static String desc(final int count) {
final StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < count; i++) {
stringBuilder.append("AAAAAAAAAAAAAAAAAAAAAAAAAAA");
}
return stringBuilder.toString();
}
}

View File

@@ -1,7 +1,7 @@
package com.mangkyu.employment.interview.app.answer.service; package com.mangkyu.employment.interview.app.answer.service;
import com.mangkyu.employment.interview.app.answer.dto.AddAnswerRequest; import com.mangkyu.employment.interview.app.answer.controller.AddAnswerRequest;
import com.mangkyu.employment.interview.app.answer.dto.GetAnswerResponse; 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.entity.Answer;
import com.mangkyu.employment.interview.app.answer.repository.AnswerRepository; import com.mangkyu.employment.interview.app.answer.repository.AnswerRepository;
import com.mangkyu.employment.interview.erros.errorcode.CommonErrorCode; import com.mangkyu.employment.interview.erros.errorcode.CommonErrorCode;

View File

@@ -1,7 +1,7 @@
package com.mangkyu.employment.interview.app.quiz.converter; package com.mangkyu.employment.interview.app.quiz.converter;
import com.mangkyu.employment.interview.app.answer.dto.AddAnswerRequest; import com.mangkyu.employment.interview.app.answer.controller.AddAnswerRequest;
import com.mangkyu.employment.interview.app.answer.dto.GetAnswerResponse; 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.entity.Answer;
import com.mangkyu.employment.interview.app.quiz.dto.GetQuizResponse; import com.mangkyu.employment.interview.app.quiz.dto.GetQuizResponse;
import com.mangkyu.employment.interview.app.quiz.entity.Quiz; import com.mangkyu.employment.interview.app.quiz.entity.Quiz;