diff --git a/src/main/java/com/mangkyu/employment/interview/app/enums/controller/EnumsController.java b/src/main/java/com/mangkyu/employment/interview/app/enums/controller/EnumsController.java index a0d5525..5f104c8 100644 --- a/src/main/java/com/mangkyu/employment/interview/app/enums/controller/EnumsController.java +++ b/src/main/java/com/mangkyu/employment/interview/app/enums/controller/EnumsController.java @@ -9,6 +9,7 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; +import java.util.stream.Collectors; @RestController @RequiredArgsConstructor @@ -18,7 +19,11 @@ public class EnumsController { @GetMapping("/enums/quiz-categories") public ResponseEntity> getQuizCategoryList() { - return ResponseEntity.ok(enumMapperFactory.get(EnumMapperKey.QUIZ_CATEGORY)); + final List quizCategoryList = enumMapperFactory.get(EnumMapperKey.QUIZ_CATEGORY); + + return ResponseEntity.ok(quizCategoryList.stream() + .filter(EnumMapperValue::isExpose) + .collect(Collectors.toList())); } @GetMapping("/enums/quiz-levels") diff --git a/src/main/java/com/mangkyu/employment/interview/app/quiz/repository/QuizRepository.java b/src/main/java/com/mangkyu/employment/interview/app/quiz/repository/QuizRepository.java index 98b4ed5..c1fec91 100644 --- a/src/main/java/com/mangkyu/employment/interview/app/quiz/repository/QuizRepository.java +++ b/src/main/java/com/mangkyu/employment/interview/app/quiz/repository/QuizRepository.java @@ -29,14 +29,20 @@ public interface QuizRepository extends JpaRepository, QuizRepositor List findByIdNotInAndQuizLevelAndIsEnableTrue(final Set quizIdSet, final QuizLevel quizLevel); - default List customFindByIdNotInAndQuizCategoryInAndQuizLevelAndIsEnableTrue(final Set quizIdSet, final Set quizCategorySet, final QuizLevel quizLevel) { + /** + * 여기 아래는 메일 발송에 사용되는 API들이므로 IsEnable 처리를 제외함 + * + * + **/ + + default List customFindByIdNotInAndQuizCategoryInAndQuizLevel(final Set quizIdSet, final Set quizCategorySet, final QuizLevel quizLevel) { return quizIdSet.isEmpty() - ? findByQuizCategoryInAndQuizLevelAndIsEnableTrue(quizCategorySet, quizLevel) - : findByIdNotInAndQuizCategoryInAndQuizLevelAndIsEnableTrue(quizIdSet, quizCategorySet, quizLevel); + ? findByQuizCategoryInAndQuizLevel(quizCategorySet, quizLevel) + : findByIdNotInAndQuizCategoryInAndQuizLevel(quizIdSet, quizCategorySet, quizLevel); } - List findByQuizCategoryInAndQuizLevelAndIsEnableTrue(final Set quizCategorySet, final QuizLevel quizLevel); + List findByQuizCategoryInAndQuizLevel(final Set quizCategorySet, final QuizLevel quizLevel); - List findByIdNotInAndQuizCategoryInAndQuizLevelAndIsEnableTrue(final Set quizIdSet, final Set quizCategorySet, final QuizLevel quizLevel); + List findByIdNotInAndQuizCategoryInAndQuizLevel(final Set quizIdSet, final Set quizCategorySet, final QuizLevel quizLevel); } \ No newline at end of file diff --git a/src/main/java/com/mangkyu/employment/interview/app/quiz/service/QuizService.java b/src/main/java/com/mangkyu/employment/interview/app/quiz/service/QuizService.java index 358cc80..21bcc85 100644 --- a/src/main/java/com/mangkyu/employment/interview/app/quiz/service/QuizService.java +++ b/src/main/java/com/mangkyu/employment/interview/app/quiz/service/QuizService.java @@ -75,7 +75,7 @@ public class QuizService { .map(v -> v.getQuiz().getId()) .collect(Collectors.toSet()); - return quizRepository.customFindByIdNotInAndQuizCategoryInAndQuizLevelAndIsEnableTrue(solvedQuizIdList, quizCategorySet, quizLevel); + return quizRepository.customFindByIdNotInAndQuizCategoryInAndQuizLevel(solvedQuizIdList, quizCategorySet, quizLevel); } public List getRandomQuizListUnderLimit(final List quizList, final Integer quizSize) { diff --git a/src/main/java/com/mangkyu/employment/interview/enums/common/EnumMapperType.java b/src/main/java/com/mangkyu/employment/interview/enums/common/EnumMapperType.java index 0fdeb99..c0b3b82 100644 --- a/src/main/java/com/mangkyu/employment/interview/enums/common/EnumMapperType.java +++ b/src/main/java/com/mangkyu/employment/interview/enums/common/EnumMapperType.java @@ -8,4 +8,6 @@ public interface EnumMapperType { String getDesc(); + boolean isExpose(); + } diff --git a/src/main/java/com/mangkyu/employment/interview/enums/common/EnumMapperValue.java b/src/main/java/com/mangkyu/employment/interview/enums/common/EnumMapperValue.java index cb4b46a..5f7459e 100644 --- a/src/main/java/com/mangkyu/employment/interview/enums/common/EnumMapperValue.java +++ b/src/main/java/com/mangkyu/employment/interview/enums/common/EnumMapperValue.java @@ -12,6 +12,7 @@ public class EnumMapperValue implements EnumMapperType { private final String code; private final String title; private final String desc; + private final boolean expose; @Override public String name() { diff --git a/src/main/java/com/mangkyu/employment/interview/enums/factory/EnumMapperFactory.java b/src/main/java/com/mangkyu/employment/interview/enums/factory/EnumMapperFactory.java index c3710a6..2903e65 100644 --- a/src/main/java/com/mangkyu/employment/interview/enums/factory/EnumMapperFactory.java +++ b/src/main/java/com/mangkyu/employment/interview/enums/factory/EnumMapperFactory.java @@ -42,6 +42,7 @@ public class EnumMapperFactory { .code(enumMapperType.name()) .title(enumMapperType.getTitle()) .desc(enumMapperType.getDesc()) + .expose(enumMapperType.isExpose()) .build(); } diff --git a/src/main/java/com/mangkyu/employment/interview/enums/value/QuizCategory.java b/src/main/java/com/mangkyu/employment/interview/enums/value/QuizCategory.java index 0245b21..03e3d5d 100644 --- a/src/main/java/com/mangkyu/employment/interview/enums/value/QuizCategory.java +++ b/src/main/java/com/mangkyu/employment/interview/enums/value/QuizCategory.java @@ -8,22 +8,23 @@ import lombok.RequiredArgsConstructor; @RequiredArgsConstructor public enum QuizCategory implements EnumMapperType { - JAVA("Java", "Java 언어와 관련된 면접 질문을 살펴보세요"), - SPRING("Spring Framework", "Spring 프레임워크와 관련된 면접 질문을 살펴보세요"), - SERVER("Server Programming", "서버 프로그래밍 관련된 면접 질문을 살펴보세요"), - NETWORK("Network", "네트워크와 관련된 면접 질문을 살펴보세요"), - OPERATING_SYSTEM("Operating System", "운영체제와 관련된 면접 질문을 살펴보세요"), - DATABASE("Database", "데이터베이스와 관련된 면접 질문을 살펴보세요"), - PROGRAMMING("Overall Programming", "전반적인 프로그래밍과 관련된 면접 질문을 살펴보세요"), - DATA_STRUCTURE("Data Structure", "자료구조와 관련된 면접 질문을 살펴보세요"), - ALGORITHM("Algorithm", "알고리즘과 관련된 면접 질문을 살펴보세요"), - PROBLEM_SOLVING("Problem Solving", "문제 해결과 관련된 면접 질문을 살펴보세요"), - CULTURE("Culture Fit", "문화 적합도와 관련된 면접 질문을 살펴보세요"), - EXPERIENCE("Personal Experience", "개인의 경험와 관련된 면접 질문을 살펴보세요"), - PERSONALITY("Personality", "개인의 성향과 관련된 면접 질문을 살펴보세요"), + JAVA("Java", "Java 언어와 관련된 면접 질문을 살펴보세요", true), + SPRING("Spring Framework", "Spring 프레임워크와 관련된 면접 질문을 살펴보세요", true), + SERVER("Server Programming", "서버 프로그래밍 관련된 면접 질문을 살펴보세요", true), + NETWORK("Network", "네트워크와 관련된 면접 질문을 살펴보세요", true), + OPERATING_SYSTEM("Operating System", "운영체제와 관련된 면접 질문을 살펴보세요", true), + DATABASE("Database", "데이터베이스와 관련된 면접 질문을 살펴보세요", true), + PROGRAMMING("Overall Programming", "전반적인 프로그래밍과 관련된 면접 질문을 살펴보세요", true), + DATA_STRUCTURE("Data Structure", "자료구조와 관련된 면접 질문을 살펴보세요", true), + ALGORITHM("Algorithm", "알고리즘과 관련된 면접 질문을 살펴보세요", true), + PROBLEM_SOLVING("Problem Solving", "문제 해결과 관련된 면접 질문을 살펴보세요", true), + CULTURE("Culture Fit", "문화 적합도와 관련된 면접 질문을 살펴보세요", false), + EXPERIENCE("Personal Experience", "개인의 경험와 관련된 면접 질문을 살펴보세요", false), + PERSONALITY("Personality", "개인의 성향과 관련된 면접 질문을 살펴보세요", false), ; private final String title; private final String desc; + private final boolean expose; } diff --git a/src/main/java/com/mangkyu/employment/interview/enums/value/QuizDay.java b/src/main/java/com/mangkyu/employment/interview/enums/value/QuizDay.java index 6d8d915..bfd43ea 100644 --- a/src/main/java/com/mangkyu/employment/interview/enums/value/QuizDay.java +++ b/src/main/java/com/mangkyu/employment/interview/enums/value/QuizDay.java @@ -11,18 +11,18 @@ import java.util.Arrays; @RequiredArgsConstructor public enum QuizDay implements EnumMapperType { - MONDAY("Monday", "월요일", DayOfWeek.MONDAY), - TUESDAY("Tuesday", "화요일", DayOfWeek.TUESDAY), - WEDNESDAY("Wednesday", "수요일", DayOfWeek.WEDNESDAY), - THURSDAY("Thursday", "목요일", DayOfWeek.THURSDAY), - FRIDAY("Friday", "금요일", DayOfWeek.FRIDAY), - SATURDAY("Saturday", "토요일", DayOfWeek.SATURDAY), - SUNDAY("Sunday", "일요일", DayOfWeek.SUNDAY), + MONDAY("Monday", "월요일", DayOfWeek.MONDAY, true), + TUESDAY("Tuesday", "화요일", DayOfWeek.TUESDAY, true), + WEDNESDAY("Wednesday", "수요일", DayOfWeek.WEDNESDAY, true), + THURSDAY("Thursday", "목요일", DayOfWeek.THURSDAY, true), + FRIDAY("Friday", "금요일", DayOfWeek.FRIDAY, true), + SATURDAY("Saturday", "토요일", DayOfWeek.SATURDAY, true), + SUNDAY("Sunday", "일요일", DayOfWeek.SUNDAY, true), ; private final String title; private final String desc; - private final DayOfWeek dayOfWeek; + private final DayOfWeek dayOfWeek;private final boolean expose; public static QuizDay findQuizDay(final DayOfWeek dayOfWeek) { return Arrays.stream(QuizDay.values()) diff --git a/src/main/java/com/mangkyu/employment/interview/enums/value/QuizLevel.java b/src/main/java/com/mangkyu/employment/interview/enums/value/QuizLevel.java index ac0e832..0348a14 100644 --- a/src/main/java/com/mangkyu/employment/interview/enums/value/QuizLevel.java +++ b/src/main/java/com/mangkyu/employment/interview/enums/value/QuizLevel.java @@ -8,12 +8,13 @@ import lombok.RequiredArgsConstructor; @RequiredArgsConstructor public enum QuizLevel implements EnumMapperType { - NEW("New", "신입"), - JUNIOR("Junior", "주니어"), - SENIOR("Senior", "시니어"), + NEW("New", "신입", true), + JUNIOR("Junior", "주니어", true), + SENIOR("Senior", "시니어", true), ; private final String title; private final String desc; + private final boolean expose; } diff --git a/src/test/java/com/mangkyu/employment/interview/app/enums/controller/EnumsControllerTest.java b/src/test/java/com/mangkyu/employment/interview/app/enums/controller/EnumsControllerTest.java index 98e6398..0e9ef39 100644 --- a/src/test/java/com/mangkyu/employment/interview/app/enums/controller/EnumsControllerTest.java +++ b/src/test/java/com/mangkyu/employment/interview/app/enums/controller/EnumsControllerTest.java @@ -15,6 +15,7 @@ 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.Arrays; import java.util.List; import static org.assertj.core.api.Assertions.assertThat; @@ -43,7 +44,7 @@ class EnumsControllerTest { // then final ResultActions resultActions = result.andExpect(status().isOk()); final String stringResponse = resultActions.andReturn().getResponse().getContentAsString(); - assertThat(new Gson().fromJson(stringResponse, List.class).size()).isEqualTo(QuizCategory.values().length); + assertThat(new Gson().fromJson(stringResponse, List.class).size()).isEqualTo(Arrays.stream(QuizCategory.values()).filter(QuizCategory::isExpose).count()); } @Test diff --git a/src/test/java/com/mangkyu/employment/interview/app/quiz/repository/QuizRepositoryTest.java b/src/test/java/com/mangkyu/employment/interview/app/quiz/repository/QuizRepositoryTest.java index fb51b0e..3fb255a 100644 --- a/src/test/java/com/mangkyu/employment/interview/app/quiz/repository/QuizRepositoryTest.java +++ b/src/test/java/com/mangkyu/employment/interview/app/quiz/repository/QuizRepositoryTest.java @@ -269,10 +269,10 @@ class QuizRepositoryTest { final Set idSet = new HashSet<>(Arrays.asList(savedQuiz1.getId(), savedQuiz2.getId(), savedQuiz3.getId(), savedQuiz4.getId())); // when - final List unsolvedQuizList1 = quizRepository.customFindByIdNotInAndQuizCategoryInAndQuizLevelAndIsEnableTrue(Collections.emptySet(), new HashSet<>(Arrays.asList(QuizCategory.JAVA, QuizCategory.ALGORITHM, QuizCategory.CULTURE)), QuizLevel.NEW); - final List unsolvedQuizList2 = quizRepository.customFindByIdNotInAndQuizCategoryInAndQuizLevelAndIsEnableTrue(Collections.emptySet(), new HashSet<>(Arrays.asList(QuizCategory.CULTURE, QuizCategory.NETWORK)), QuizLevel.NEW); - final List unsolvedQuizList3 = quizRepository.customFindByIdNotInAndQuizCategoryInAndQuizLevelAndIsEnableTrue(Collections.emptySet(), new HashSet<>(Arrays.asList(QuizCategory.JAVA, QuizCategory.ALGORITHM, QuizCategory.DATABASE)), QuizLevel.NEW); - final List unsolvedQuizList4 = quizRepository.customFindByIdNotInAndQuizCategoryInAndQuizLevelAndIsEnableTrue(idSet, new HashSet<>(Arrays.asList(QuizCategory.JAVA, QuizCategory.DATABASE)), QuizLevel.NEW); + final List unsolvedQuizList1 = quizRepository.customFindByIdNotInAndQuizCategoryInAndQuizLevel(Collections.emptySet(), new HashSet<>(Arrays.asList(QuizCategory.JAVA, QuizCategory.ALGORITHM, QuizCategory.CULTURE)), QuizLevel.NEW); + final List unsolvedQuizList2 = quizRepository.customFindByIdNotInAndQuizCategoryInAndQuizLevel(Collections.emptySet(), new HashSet<>(Arrays.asList(QuizCategory.CULTURE, QuizCategory.NETWORK)), QuizLevel.NEW); + final List unsolvedQuizList3 = quizRepository.customFindByIdNotInAndQuizCategoryInAndQuizLevel(Collections.emptySet(), new HashSet<>(Arrays.asList(QuizCategory.JAVA, QuizCategory.ALGORITHM, QuizCategory.DATABASE)), QuizLevel.NEW); + final List unsolvedQuizList4 = quizRepository.customFindByIdNotInAndQuizCategoryInAndQuizLevel(idSet, new HashSet<>(Arrays.asList(QuizCategory.JAVA, QuizCategory.DATABASE)), QuizLevel.NEW); // then assertThat(unsolvedQuizList1.size()).isEqualTo(2); diff --git a/src/test/java/com/mangkyu/employment/interview/app/quiz/service/QuizServiceTest.java b/src/test/java/com/mangkyu/employment/interview/app/quiz/service/QuizServiceTest.java index fdfcfed..f670763 100644 --- a/src/test/java/com/mangkyu/employment/interview/app/quiz/service/QuizServiceTest.java +++ b/src/test/java/com/mangkyu/employment/interview/app/quiz/service/QuizServiceTest.java @@ -203,7 +203,7 @@ class QuizServiceTest { quizCategorySet.add(QuizCategory.EXPERIENCE); doReturn(solvedQuizList).when(solvedQuizRepository).findAllByUser_Id(userId); - doReturn(unsolvedQuizList).when(quizRepository).customFindByIdNotInAndQuizCategoryInAndQuizLevelAndIsEnableTrue(solvedQuizIdList, quizCategorySet, quizLevel); + doReturn(unsolvedQuizList).when(quizRepository).customFindByIdNotInAndQuizCategoryInAndQuizLevel(solvedQuizIdList, quizCategorySet, quizLevel); // when final List result = quizService.getUnsolvedQuizList(userId, quizLevel, quizCategorySet); @@ -224,7 +224,7 @@ class QuizServiceTest { quizCategorySet.add(QuizCategory.EXPERIENCE); doReturn(solvedQuizList).when(solvedQuizRepository).findAllByUser_Id(userId); - doReturn(unsolvedQuizList).when(quizRepository).customFindByIdNotInAndQuizCategoryInAndQuizLevelAndIsEnableTrue(Collections.emptySet(), quizCategorySet, quizLevel); + doReturn(unsolvedQuizList).when(quizRepository).customFindByIdNotInAndQuizCategoryInAndQuizLevel(Collections.emptySet(), quizCategorySet, quizLevel); // when final List result = quizService.getUnsolvedQuizList(userId, quizLevel, quizCategorySet);