From 81832331e7e739d2a29dacdbb06e2b1697c0f075 Mon Sep 17 00:00:00 2001 From: stophwan Date: Tue, 11 Jun 2024 23:31:26 +0900 Subject: [PATCH 01/10] =?UTF-8?q?refactor:=20=EA=B2=BD=EC=98=81=ED=95=99?= =?UTF-8?q?=EA=B3=BC=20=ED=95=99=EC=82=AC=EC=95=88=EB=82=B4=EB=AC=B8=20?= =?UTF-8?q?=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../major/exception/OptionalMandatory.java | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/exception/OptionalMandatory.java b/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/exception/OptionalMandatory.java index 4801477b..0740cc9d 100644 --- a/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/exception/OptionalMandatory.java +++ b/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/exception/OptionalMandatory.java @@ -20,14 +20,7 @@ public enum OptionalMandatory { Lecture.of("HBA01113", "비영리조직", 3, 0, null), Lecture.of("HBA01222", "커뮤니티개발연구", 3, 0, null) )), - // 기존 OptionalMandatory - // BUSINESS("경영학과", 4, Set.of( - // Lecture.of("HBX01104", "회계원리", 3, 0, null), - // Lecture.of("HBX01113", "인적자원관리", 3, 0, null), - // Lecture.of("HBX01106", "마케팅원론", 3, 0, null), - // Lecture.of("HBX01105", "재무관리원론", 3, 0, null), - // Lecture.of("HBX01114", "생산운영관리", 3, 1, null), - // Lecture.of("HBX01143", "운영관리", 3, 0, null) + BUSINESS("경영학과", 1, Set.of( Lecture.of("HBW01201", "국제통산원론", 3, 0, "HBW01201"), Lecture.of("HBX01127", "국제경영학", 3, 0, "CE224"), @@ -59,15 +52,15 @@ public static OptionalMandatory from(String major) { .orElseThrow(() -> new IllegalArgumentException("해당 전공선택필수를 찾을 수 없습니다.")); } - public int getTotalOptionalMandatoryCredit(OptionalMandatory optionalMandatory) { - return optionalMandatory.optionalMandatoryLectures.stream() + public int getTotalOptionalMandatoryCredit() { + return optionalMandatoryLectures.stream() .filter(lecture -> lecture.getIsRevoked() == 0) .mapToInt(Lecture::getCredit) .sum(); } - public int getChooseLectureCredit(OptionalMandatory optionalMandatory) { - return optionalMandatory.chooseNumber * 3; + public int getChooseLectureCredit() { + return chooseNumber * 3; } } From adfcbffff898533c671dce3982a1767c0338a2bc Mon Sep 17 00:00:00 2001 From: stophwan Date: Tue, 11 Jun 2024 23:31:48 +0900 Subject: [PATCH 02/10] =?UTF-8?q?feat:=20=EC=A0=84=EA=B3=B5=20=ED=8A=B9?= =?UTF-8?q?=EC=88=98=20=ED=95=B8=EB=93=A4=EB=9F=AC=20DTO=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MandatorySpecialCaseInformation.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/exception/MandatorySpecialCaseInformation.java diff --git a/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/exception/MandatorySpecialCaseInformation.java b/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/exception/MandatorySpecialCaseInformation.java new file mode 100644 index 00000000..a9a60959 --- /dev/null +++ b/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/exception/MandatorySpecialCaseInformation.java @@ -0,0 +1,22 @@ +package com.plzgraduate.myongjigraduatebe.graduation.domain.service.major.exception; + +import lombok.Builder; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +@Getter +@Builder +@RequiredArgsConstructor +public class MandatorySpecialCaseInformation { + + private final boolean completeMandatorySpecialCase; + + private final int removedMandatoryTotalCredit; + + public static MandatorySpecialCaseInformation of(boolean completeMandatorySpecialCase, int removedMandatoryTotalCredit) { + return MandatorySpecialCaseInformation.builder() + .completeMandatorySpecialCase(completeMandatorySpecialCase) + .removedMandatoryTotalCredit(removedMandatoryTotalCredit) + .build(); + } +} From 2291e434ae8a8a18f5e740f4188b1689bff3ced1 Mon Sep 17 00:00:00 2001 From: stophwan Date: Tue, 11 Jun 2024 23:32:32 +0900 Subject: [PATCH 03/10] =?UTF-8?q?refactor:=20=EC=A0=84=EA=B3=B5=20?= =?UTF-8?q?=ED=8A=B9=EC=88=98=20=ED=95=B8=EB=93=A4=EB=9F=AC=20=EC=9D=B8?= =?UTF-8?q?=ED=84=B0=ED=8E=98=EC=9D=B4=EC=8A=A4=20=EC=88=98=EC=A0=95=20?= =?UTF-8?q?=EB=B0=8F=20=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/model/DetailCategoryResult.java | 1 - .../service/major/MandatoryMajorManager.java | 12 ++-- .../exception/MajorExceptionHandler.java | 4 +- .../exception/OptionalMandatoryHandler.java | 60 ++++++++++++++----- .../ReplaceMandatoryMajorHandler.java | 19 +++++- .../ReplaceMandatoryMajorHandlerTest.java | 18 ++++-- 6 files changed, 85 insertions(+), 29 deletions(-) diff --git a/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/model/DetailCategoryResult.java b/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/model/DetailCategoryResult.java index 80e096b7..09e55272 100644 --- a/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/model/DetailCategoryResult.java +++ b/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/model/DetailCategoryResult.java @@ -95,7 +95,6 @@ private void addMandatoryLectures(Set taken, Set graduationLec graduationLectures.stream() .filter(graduationLecture -> graduationLecture.getIsRevoked() == 0) .forEach(haveToLectures::add); - } private boolean checkCompleted() { diff --git a/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/MandatoryMajorManager.java b/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/MandatoryMajorManager.java index 723aae1c..ce5b8415 100644 --- a/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/MandatoryMajorManager.java +++ b/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/MandatoryMajorManager.java @@ -6,6 +6,7 @@ import com.plzgraduate.myongjigraduatebe.graduation.domain.model.DetailCategoryResult; import com.plzgraduate.myongjigraduatebe.graduation.domain.service.major.exception.MajorExceptionHandler; +import com.plzgraduate.myongjigraduatebe.graduation.domain.service.major.exception.MandatorySpecialCaseInformation; import com.plzgraduate.myongjigraduatebe.lecture.domain.model.Lecture; import com.plzgraduate.myongjigraduatebe.takenlecture.domain.model.TakenLecture; import com.plzgraduate.myongjigraduatebe.user.domain.model.User; @@ -16,6 +17,8 @@ @RequiredArgsConstructor public class MandatoryMajorManager { + private static final String detailCategoryName = "전공필수"; + private final List majorExceptionHandlers; public DetailCategoryResult createDetailCategoryResult(User user, TakenLectureInventory takenLectureInventory, @@ -28,9 +31,10 @@ public DetailCategoryResult createDetailCategoryResult(User user, TakenLectureIn for (MajorExceptionHandler majorExceptionHandler : majorExceptionHandlers) { if (majorExceptionHandler.isSupport(user, majorGraduationCategory)) { - isSatisfiedMandatory = majorExceptionHandler.checkMandatoryCondition(takenLectureInventory, - mandatoryLectures, electiveLectures); - removeMandatoryTotalCredit = majorExceptionHandler.getRemovedMandatoryTotalCredit(); + MandatorySpecialCaseInformation mandatorySpecialCaseInformation = majorExceptionHandler.getMandatorySpecialCaseInformation( + takenLectureInventory, mandatoryLectures, electiveLectures); + isSatisfiedMandatory = mandatorySpecialCaseInformation.isCompleteMandatorySpecialCase(); + removeMandatoryTotalCredit = mandatorySpecialCaseInformation.getRemovedMandatoryTotalCredit(); } } @@ -40,7 +44,7 @@ public DetailCategoryResult createDetailCategoryResult(User user, TakenLectureIn finishedTakenLecture.add(takenLecture); takenMandatory.add(takenLecture.getLecture()); }); - DetailCategoryResult majorMandatoryResult = DetailCategoryResult.create("전공필수", isSatisfiedMandatory, + DetailCategoryResult majorMandatoryResult = DetailCategoryResult.create(detailCategoryName, isSatisfiedMandatory, calculateTotalCredit(takenMandatory, mandatoryLectures, removeMandatoryTotalCredit)); majorMandatoryResult.calculate(takenMandatory, mandatoryLectures); takenLectureInventory.handleFinishedTakenLectures(finishedTakenLecture); diff --git a/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/exception/MajorExceptionHandler.java b/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/exception/MajorExceptionHandler.java index e4dfd64e..2aeeb33f 100644 --- a/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/exception/MajorExceptionHandler.java +++ b/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/exception/MajorExceptionHandler.java @@ -10,8 +10,6 @@ public interface MajorExceptionHandler { boolean isSupport(User user, MajorGraduationCategory majorGraduationCategory); - boolean checkMandatoryCondition(TakenLectureInventory takenLectureInventory, + MandatorySpecialCaseInformation getMandatorySpecialCaseInformation(TakenLectureInventory takenLectureInventory, Set mandatoryLectures, Set electiveLectures); - - int getRemovedMandatoryTotalCredit(); } diff --git a/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/exception/OptionalMandatoryHandler.java b/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/exception/OptionalMandatoryHandler.java index 192cc1c6..93701a7a 100644 --- a/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/exception/OptionalMandatoryHandler.java +++ b/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/exception/OptionalMandatoryHandler.java @@ -14,6 +14,13 @@ import com.plzgraduate.myongjigraduatebe.takenlecture.domain.model.TakenLectureInventory; import com.plzgraduate.myongjigraduatebe.user.domain.model.User; +/** + * N택 M의 선택과목이 있는 경우 처리하는 핸들러 클래스 + * 국제통상의 경우 회계원리, 마케팅원론, 재무관리 원론, 인적자원관리, 생산운영관리(폐지), 운영관리(구, 생산운영관리) 5개 중 4개 선택 + * 경영정보의 경우 인적자원관리, 마켓팅원론, 재무관리원론에서 ~18학번까지는 3개 모두 이수, 19학번 이후 택 2 + * 경영의 경우 국제통상원론, 국제경양, 경영정보 중 택1 + * 행정의 + */ public class OptionalMandatoryHandler implements MajorExceptionHandler { private static final String MANAGEMENT_INFORMATION = "경영정보학과"; @@ -22,7 +29,6 @@ public class OptionalMandatoryHandler implements MajorExceptionHandler { private static final String INTERNATIONAL_TRADE = "국제통상학과"; private static final int CLASS_OF_17 = 17; private static final int CLASS_OF_19 = 19; - private int removedMandatoryTotalCredit = 0; private OptionalMandatory optionalMandatory; public boolean isSupport(User user, MajorGraduationCategory majorGraduationCategory) { @@ -43,30 +49,37 @@ public boolean isSupport(User user, MajorGraduationCategory majorGraduationCateg } @Override - public boolean checkMandatoryCondition(TakenLectureInventory takenLectureInventory, - Set mandatoryLectures, Set electiveLectures) { - boolean checkMandatoryCondition = checkCompleteOptionalMandatory(takenLectureInventory, mandatoryLectures, + public MandatorySpecialCaseInformation getMandatorySpecialCaseInformation( + TakenLectureInventory takenLectureInventory, Set mandatoryLectures, Set electiveLectures) { + + int removedMandatoryTotalCredit = 0; + boolean completeMandatorySpecialCase = checkCompleteOptionalMandatory(takenLectureInventory, mandatoryLectures, electiveLectures); - if (!checkMandatoryCondition) { - removedMandatoryTotalCredit = optionalMandatory.getTotalOptionalMandatoryCredit(optionalMandatory) - - optionalMandatory.getChooseLectureCredit(optionalMandatory); + if (!completeMandatorySpecialCase) { + removedMandatoryTotalCredit = optionalMandatory.getTotalOptionalMandatoryCredit() + - optionalMandatory.getChooseLectureCredit(); } - return checkMandatoryCondition; - } - - @Override - public int getRemovedMandatoryTotalCredit() { - return removedMandatoryTotalCredit; + return MandatorySpecialCaseInformation.of(completeMandatorySpecialCase, removedMandatoryTotalCredit); } private boolean checkCompleteOptionalMandatory(TakenLectureInventory takenLectureInventory, Set mandatoryLectures, Set electiveLectures) { int chooseNum = optionalMandatory.getChooseNumber(); - //전공과목Set에서 전공필수과목에 해당되는 과목들을 추출한다. + /* + * 전공과목 Set 에서 전공선택필수과목에 해당되는 과목들을 추출한다. + */ + Set optionalMandatoryLectures = mandatoryLectures.stream().filter( optionalMandatory.getOptionalMandatoryLectures()::contains).collect(Collectors.toSet()); + /* + remainingMandatoryLectures에 모든 전공선택필수 과목을 넣고 수강했을 시 제거한다. + 최종적으로 전공선택필수 과목들 목록에서 사용자가 전공선택필수과목을 수강했다면 제거한다. + 최종적으로 remainingMandatoryLectures에 남아있는 과목은 수강해야하는 과목들이다. + N택 M개 수강이라면 M개 이상 수강하였으면 전공필수에서 전부 제거, 전공 선택으로 이관하고 아니라면 전공필수에 그대로 남아있어야한다. + */ + Set remainingMandatoryLectures = new HashSet<>(optionalMandatoryLectures); int count = 0; for (TakenLecture takenLecture : takenLectureInventory.getTakenLectures()) { @@ -91,4 +104,23 @@ private String getCalculatingMajor(User user, MajorGraduationCategory majorGradu } return user.getSubMajor(); } + /** + @Override + public boolean checkMandatoryCondition(TakenLectureInventory takenLectureInventory, + Set mandatoryLectures, Set electiveLectures) { + boolean checkMandatoryCondition = checkCompleteOptionalMandatory(takenLectureInventory, mandatoryLectures, + electiveLectures); + + if (!checkMandatoryCondition) { + removedMandatoryTotalCredit = optionalMandatory.getTotalOptionalMandatoryCredit() + - optionalMandatory.getChooseLectureCredit(); + } + return checkMandatoryCondition; + } + + @Override + public int getRemovedMandatoryTotalCredit() { + return removedMandatoryTotalCredit; + } + **/ } diff --git a/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/exception/ReplaceMandatoryMajorHandler.java b/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/exception/ReplaceMandatoryMajorHandler.java index b46bc96c..2de99576 100644 --- a/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/exception/ReplaceMandatoryMajorHandler.java +++ b/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/exception/ReplaceMandatoryMajorHandler.java @@ -13,8 +13,12 @@ import com.plzgraduate.myongjigraduatebe.user.domain.model.User; import com.plzgraduate.myongjigraduatebe.takenlecture.domain.model.TakenLectureInventory; +/** + * 철학과의 경우 답사1, 답사2는 폐지 되었지만 2021번 이전까지 전공필수 + * '신유학의 이해' '유학사상의이해' 중 택1 이수 시 대체 인정 + */ public class ReplaceMandatoryMajorHandler implements MajorExceptionHandler { - private int removedMandatoryTotalCredit = 0; + //private int removedMandatoryTotalCredit = 0; private static final List REPLACED_LECTURES = List.of( Lecture.of("HAI01110", "답사1", 1, 1, null), Lecture.of("HAI01111", "답사2", 1, 1, "HAI01111") @@ -37,6 +41,18 @@ public boolean isSupport(User user, MajorGraduationCategory majorGraduationCateg return major.equals("철학과") && user.getEntryYear() <= 21; } + @Override + public MandatorySpecialCaseInformation getMandatorySpecialCaseInformation( + TakenLectureInventory takenLectureInventory, Set mandatoryLectures, Set electiveLectures) { + boolean completeMandatorySpecialCase = checkCompleteReplaceMandatory(takenLectureInventory, mandatoryLectures, + electiveLectures); + int removedMandatoryTotalCredit = 0; + if (!completeMandatorySpecialCase) { + removedMandatoryTotalCredit = 3; + } + return MandatorySpecialCaseInformation.of(completeMandatorySpecialCase, removedMandatoryTotalCredit); + } +/** @Override public boolean checkMandatoryCondition(TakenLectureInventory takenLectureInventory, Set mandatoryLectures, Set electiveLectures) { @@ -52,6 +68,7 @@ public boolean checkMandatoryCondition(TakenLectureInventory takenLectureInvento public int getRemovedMandatoryTotalCredit() { return removedMandatoryTotalCredit; } + **/ public boolean checkCompleteReplaceMandatory(TakenLectureInventory takenLectureInventory, Set mandatoryLectures, Set electiveLectures) { diff --git a/src/test/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/exception/ReplaceMandatoryMajorHandlerTest.java b/src/test/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/exception/ReplaceMandatoryMajorHandlerTest.java index b2deda28..9717fcf3 100644 --- a/src/test/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/exception/ReplaceMandatoryMajorHandlerTest.java +++ b/src/test/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/exception/ReplaceMandatoryMajorHandlerTest.java @@ -46,9 +46,11 @@ class ReplaceMandatoryMajorHandlerTest { //when MajorExceptionHandler exceptionHandler = new ReplaceMandatoryMajorHandler(); - boolean checkMandatoryCondition = exceptionHandler.checkMandatoryCondition(takenLectureInventory, + MandatorySpecialCaseInformation mandatorySpecialCaseInformation = exceptionHandler.getMandatorySpecialCaseInformation( + takenLectureInventory, mandatoryLectures, electiveLectures); - int removedMandatoryTotalCredit = exceptionHandler.getRemovedMandatoryTotalCredit(); + boolean checkMandatoryCondition = mandatorySpecialCaseInformation.isCompleteMandatorySpecialCase(); + int removedMandatoryTotalCredit = mandatorySpecialCaseInformation.getRemovedMandatoryTotalCredit(); //then assertThat(checkMandatoryCondition).isTrue(); @@ -80,9 +82,11 @@ class ReplaceMandatoryMajorHandlerTest { //when MajorExceptionHandler exceptionHandler = new ReplaceMandatoryMajorHandler(); - boolean checkMandatoryCondition = exceptionHandler.checkMandatoryCondition(takenLectureInventory, + MandatorySpecialCaseInformation mandatorySpecialCaseInformation = exceptionHandler.getMandatorySpecialCaseInformation( + takenLectureInventory, mandatoryLectures, electiveLectures); - int removedMandatoryTotalCredit = exceptionHandler.getRemovedMandatoryTotalCredit(); + boolean checkMandatoryCondition = mandatorySpecialCaseInformation.isCompleteMandatorySpecialCase(); + int removedMandatoryTotalCredit = mandatorySpecialCaseInformation.getRemovedMandatoryTotalCredit(); //then assertThat(checkMandatoryCondition).isTrue(); @@ -110,9 +114,11 @@ class ReplaceMandatoryMajorHandlerTest { //when MajorExceptionHandler exceptionHandler = new ReplaceMandatoryMajorHandler(); - boolean checkMandatoryCondition = exceptionHandler.checkMandatoryCondition(takenLectureInventory, + MandatorySpecialCaseInformation mandatorySpecialCaseInformation = exceptionHandler.getMandatorySpecialCaseInformation( + takenLectureInventory, mandatoryLectures, electiveLectures); - int removedMandatoryTotalCredit = exceptionHandler.getRemovedMandatoryTotalCredit(); + boolean checkMandatoryCondition = mandatorySpecialCaseInformation.isCompleteMandatorySpecialCase(); + int removedMandatoryTotalCredit = mandatorySpecialCaseInformation.getRemovedMandatoryTotalCredit(); //then assertThat(checkMandatoryCondition).isFalse(); From 7b5a1a721c88476ae96d5ed460e0c70770982809 Mon Sep 17 00:00:00 2001 From: stophwan Date: Tue, 11 Jun 2024 23:34:47 +0900 Subject: [PATCH 04/10] =?UTF-8?q?refactor:=20MajorExceptionHandler=20->=20?= =?UTF-8?q?MandatoryMajorSpecialCaseHandler=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../graduation/domain/service/major/MajorManager.java | 11 ++++------- .../domain/service/major/MandatoryMajorManager.java | 10 ++++------ ...ler.java => MandatoryMajorSpecialCaseHandler.java} | 5 ++--- .../MandatorySpecialCaseInformation.java | 2 +- .../major/{exception => }/OptionalMandatory.java | 2 +- ...va => OptionalMandatoryMandatoryMajorHandler.java} | 5 ++--- ...ava => ReplaceMandatoryMandatoryMajorHandler.java} | 5 ++--- .../exception/ReplaceMandatoryMajorHandlerTest.java | 9 ++++++--- 8 files changed, 22 insertions(+), 27 deletions(-) rename src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/{exception/MajorExceptionHandler.java => MandatoryMajorSpecialCaseHandler.java} (78%) rename src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/{exception => }/MandatorySpecialCaseInformation.java (96%) rename src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/{exception => }/OptionalMandatory.java (99%) rename src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/{exception/OptionalMandatoryHandler.java => OptionalMandatoryMandatoryMajorHandler.java} (96%) rename src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/{exception/ReplaceMandatoryMajorHandler.java => ReplaceMandatoryMandatoryMajorHandler.java} (95%) diff --git a/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/MajorManager.java b/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/MajorManager.java index bbb7ec19..9efa3ef3 100644 --- a/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/MajorManager.java +++ b/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/MajorManager.java @@ -7,9 +7,6 @@ import com.plzgraduate.myongjigraduatebe.graduation.domain.model.DetailCategoryResult; import com.plzgraduate.myongjigraduatebe.graduation.domain.model.DetailGraduationResult; import com.plzgraduate.myongjigraduatebe.graduation.domain.service.GraduationManager; -import com.plzgraduate.myongjigraduatebe.graduation.domain.service.major.exception.MajorExceptionHandler; -import com.plzgraduate.myongjigraduatebe.graduation.domain.service.major.exception.OptionalMandatoryHandler; -import com.plzgraduate.myongjigraduatebe.graduation.domain.service.major.exception.ReplaceMandatoryMajorHandler; import com.plzgraduate.myongjigraduatebe.lecture.domain.model.Lecture; import com.plzgraduate.myongjigraduatebe.lecture.domain.model.MajorLecture; import com.plzgraduate.myongjigraduatebe.takenlecture.domain.model.TakenLecture; @@ -41,10 +38,10 @@ public DetailGraduationResult createDetailGraduationResult(User user, Set mandatoryLectures = filterMandatoryLectures(majorLectures); Set electiveLectures = filterElectiveLectures(majorLectures); - List majorExceptionHandlers = List.of( - new OptionalMandatoryHandler(), - new ReplaceMandatoryMajorHandler()); - MandatoryMajorManager mandatoryMajorManager = new MandatoryMajorManager(majorExceptionHandlers); + List mandatoryMajorSpecialCaseHandlers = List.of( + new OptionalMandatoryMandatoryMajorHandler(), + new ReplaceMandatoryMandatoryMajorHandler()); + MandatoryMajorManager mandatoryMajorManager = new MandatoryMajorManager(mandatoryMajorSpecialCaseHandlers); ElectiveMajorManager electiveMajorManager = new ElectiveMajorManager(); DetailCategoryResult mandantoryDetailCategoryResult = mandatoryMajorManager.createDetailCategoryResult( diff --git a/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/MandatoryMajorManager.java b/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/MandatoryMajorManager.java index ce5b8415..4358158b 100644 --- a/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/MandatoryMajorManager.java +++ b/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/MandatoryMajorManager.java @@ -5,8 +5,6 @@ import java.util.Set; import com.plzgraduate.myongjigraduatebe.graduation.domain.model.DetailCategoryResult; -import com.plzgraduate.myongjigraduatebe.graduation.domain.service.major.exception.MajorExceptionHandler; -import com.plzgraduate.myongjigraduatebe.graduation.domain.service.major.exception.MandatorySpecialCaseInformation; import com.plzgraduate.myongjigraduatebe.lecture.domain.model.Lecture; import com.plzgraduate.myongjigraduatebe.takenlecture.domain.model.TakenLecture; import com.plzgraduate.myongjigraduatebe.user.domain.model.User; @@ -19,7 +17,7 @@ public class MandatoryMajorManager { private static final String detailCategoryName = "전공필수"; - private final List majorExceptionHandlers; + private final List mandatoryMajorSpecialCaseHandlers; public DetailCategoryResult createDetailCategoryResult(User user, TakenLectureInventory takenLectureInventory, Set mandatoryLectures, Set electiveLectures, @@ -29,9 +27,9 @@ public DetailCategoryResult createDetailCategoryResult(User user, TakenLectureIn boolean isSatisfiedMandatory = true; int removeMandatoryTotalCredit = 0; - for (MajorExceptionHandler majorExceptionHandler : majorExceptionHandlers) { - if (majorExceptionHandler.isSupport(user, majorGraduationCategory)) { - MandatorySpecialCaseInformation mandatorySpecialCaseInformation = majorExceptionHandler.getMandatorySpecialCaseInformation( + for (MandatoryMajorSpecialCaseHandler mandatoryMajorSpecialCaseHandler : mandatoryMajorSpecialCaseHandlers) { + if (mandatoryMajorSpecialCaseHandler.isSupport(user, majorGraduationCategory)) { + MandatorySpecialCaseInformation mandatorySpecialCaseInformation = mandatoryMajorSpecialCaseHandler.getMandatorySpecialCaseInformation( takenLectureInventory, mandatoryLectures, electiveLectures); isSatisfiedMandatory = mandatorySpecialCaseInformation.isCompleteMandatorySpecialCase(); removeMandatoryTotalCredit = mandatorySpecialCaseInformation.getRemovedMandatoryTotalCredit(); diff --git a/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/exception/MajorExceptionHandler.java b/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/MandatoryMajorSpecialCaseHandler.java similarity index 78% rename from src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/exception/MajorExceptionHandler.java rename to src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/MandatoryMajorSpecialCaseHandler.java index 2aeeb33f..d2388905 100644 --- a/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/exception/MajorExceptionHandler.java +++ b/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/MandatoryMajorSpecialCaseHandler.java @@ -1,13 +1,12 @@ -package com.plzgraduate.myongjigraduatebe.graduation.domain.service.major.exception; +package com.plzgraduate.myongjigraduatebe.graduation.domain.service.major; import java.util.Set; -import com.plzgraduate.myongjigraduatebe.graduation.domain.service.major.MajorGraduationCategory; import com.plzgraduate.myongjigraduatebe.lecture.domain.model.Lecture; import com.plzgraduate.myongjigraduatebe.user.domain.model.User; import com.plzgraduate.myongjigraduatebe.takenlecture.domain.model.TakenLectureInventory; -public interface MajorExceptionHandler { +public interface MandatoryMajorSpecialCaseHandler { boolean isSupport(User user, MajorGraduationCategory majorGraduationCategory); MandatorySpecialCaseInformation getMandatorySpecialCaseInformation(TakenLectureInventory takenLectureInventory, diff --git a/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/exception/MandatorySpecialCaseInformation.java b/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/MandatorySpecialCaseInformation.java similarity index 96% rename from src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/exception/MandatorySpecialCaseInformation.java rename to src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/MandatorySpecialCaseInformation.java index a9a60959..6fd2662c 100644 --- a/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/exception/MandatorySpecialCaseInformation.java +++ b/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/MandatorySpecialCaseInformation.java @@ -1,4 +1,4 @@ -package com.plzgraduate.myongjigraduatebe.graduation.domain.service.major.exception; +package com.plzgraduate.myongjigraduatebe.graduation.domain.service.major; import lombok.Builder; import lombok.Getter; diff --git a/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/exception/OptionalMandatory.java b/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/OptionalMandatory.java similarity index 99% rename from src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/exception/OptionalMandatory.java rename to src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/OptionalMandatory.java index 0740cc9d..ddbfd5de 100644 --- a/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/exception/OptionalMandatory.java +++ b/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/OptionalMandatory.java @@ -1,4 +1,4 @@ -package com.plzgraduate.myongjigraduatebe.graduation.domain.service.major.exception; +package com.plzgraduate.myongjigraduatebe.graduation.domain.service.major; import java.util.Arrays; import java.util.Objects; diff --git a/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/exception/OptionalMandatoryHandler.java b/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/OptionalMandatoryMandatoryMajorHandler.java similarity index 96% rename from src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/exception/OptionalMandatoryHandler.java rename to src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/OptionalMandatoryMandatoryMajorHandler.java index 93701a7a..356361f6 100644 --- a/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/exception/OptionalMandatoryHandler.java +++ b/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/OptionalMandatoryMandatoryMajorHandler.java @@ -1,4 +1,4 @@ -package com.plzgraduate.myongjigraduatebe.graduation.domain.service.major.exception; +package com.plzgraduate.myongjigraduatebe.graduation.domain.service.major; import static com.plzgraduate.myongjigraduatebe.graduation.domain.service.major.MajorGraduationCategory.DUAL; import static com.plzgraduate.myongjigraduatebe.graduation.domain.service.major.MajorGraduationCategory.PRIMARY; @@ -8,7 +8,6 @@ import java.util.Set; import java.util.stream.Collectors; -import com.plzgraduate.myongjigraduatebe.graduation.domain.service.major.MajorGraduationCategory; import com.plzgraduate.myongjigraduatebe.lecture.domain.model.Lecture; import com.plzgraduate.myongjigraduatebe.takenlecture.domain.model.TakenLecture; import com.plzgraduate.myongjigraduatebe.takenlecture.domain.model.TakenLectureInventory; @@ -21,7 +20,7 @@ * 경영의 경우 국제통상원론, 국제경양, 경영정보 중 택1 * 행정의 */ -public class OptionalMandatoryHandler implements MajorExceptionHandler { +public class OptionalMandatoryMandatoryMajorHandler implements MandatoryMajorSpecialCaseHandler { private static final String MANAGEMENT_INFORMATION = "경영정보학과"; private static final String BUSINESS = "경영학과"; diff --git a/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/exception/ReplaceMandatoryMajorHandler.java b/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/ReplaceMandatoryMandatoryMajorHandler.java similarity index 95% rename from src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/exception/ReplaceMandatoryMajorHandler.java rename to src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/ReplaceMandatoryMandatoryMajorHandler.java index 2de99576..1d9b3221 100644 --- a/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/exception/ReplaceMandatoryMajorHandler.java +++ b/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/ReplaceMandatoryMandatoryMajorHandler.java @@ -1,4 +1,4 @@ -package com.plzgraduate.myongjigraduatebe.graduation.domain.service.major.exception; +package com.plzgraduate.myongjigraduatebe.graduation.domain.service.major; import static com.plzgraduate.myongjigraduatebe.graduation.domain.service.major.MajorGraduationCategory.*; @@ -7,7 +7,6 @@ import java.util.Set; import java.util.stream.Collectors; -import com.plzgraduate.myongjigraduatebe.graduation.domain.service.major.MajorGraduationCategory; import com.plzgraduate.myongjigraduatebe.lecture.domain.model.Lecture; import com.plzgraduate.myongjigraduatebe.takenlecture.domain.model.TakenLecture; import com.plzgraduate.myongjigraduatebe.user.domain.model.User; @@ -17,7 +16,7 @@ * 철학과의 경우 답사1, 답사2는 폐지 되었지만 2021번 이전까지 전공필수 * '신유학의 이해' '유학사상의이해' 중 택1 이수 시 대체 인정 */ -public class ReplaceMandatoryMajorHandler implements MajorExceptionHandler { +public class ReplaceMandatoryMandatoryMajorHandler implements MandatoryMajorSpecialCaseHandler { //private int removedMandatoryTotalCredit = 0; private static final List REPLACED_LECTURES = List.of( Lecture.of("HAI01110", "답사1", 1, 1, null), diff --git a/src/test/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/exception/ReplaceMandatoryMajorHandlerTest.java b/src/test/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/exception/ReplaceMandatoryMajorHandlerTest.java index 9717fcf3..b8ae44f6 100644 --- a/src/test/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/exception/ReplaceMandatoryMajorHandlerTest.java +++ b/src/test/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/exception/ReplaceMandatoryMajorHandlerTest.java @@ -11,6 +11,9 @@ import com.plzgraduate.myongjigraduatebe.fixture.LectureFixture; import com.plzgraduate.myongjigraduatebe.fixture.UserFixture; +import com.plzgraduate.myongjigraduatebe.graduation.domain.service.major.MandatoryMajorSpecialCaseHandler; +import com.plzgraduate.myongjigraduatebe.graduation.domain.service.major.MandatorySpecialCaseInformation; +import com.plzgraduate.myongjigraduatebe.graduation.domain.service.major.ReplaceMandatoryMandatoryMajorHandler; import com.plzgraduate.myongjigraduatebe.lecture.domain.model.Lecture; import com.plzgraduate.myongjigraduatebe.takenlecture.domain.model.Semester; import com.plzgraduate.myongjigraduatebe.takenlecture.domain.model.TakenLecture; @@ -45,7 +48,7 @@ class ReplaceMandatoryMajorHandlerTest { TakenLectureInventory takenLectureInventory = TakenLectureInventory.from(takenLectures); //when - MajorExceptionHandler exceptionHandler = new ReplaceMandatoryMajorHandler(); + MandatoryMajorSpecialCaseHandler exceptionHandler = new ReplaceMandatoryMandatoryMajorHandler(); MandatorySpecialCaseInformation mandatorySpecialCaseInformation = exceptionHandler.getMandatorySpecialCaseInformation( takenLectureInventory, mandatoryLectures, electiveLectures); @@ -81,7 +84,7 @@ class ReplaceMandatoryMajorHandlerTest { TakenLectureInventory takenLectureInventory = TakenLectureInventory.from(takenLectures); //when - MajorExceptionHandler exceptionHandler = new ReplaceMandatoryMajorHandler(); + MandatoryMajorSpecialCaseHandler exceptionHandler = new ReplaceMandatoryMandatoryMajorHandler(); MandatorySpecialCaseInformation mandatorySpecialCaseInformation = exceptionHandler.getMandatorySpecialCaseInformation( takenLectureInventory, mandatoryLectures, electiveLectures); @@ -113,7 +116,7 @@ class ReplaceMandatoryMajorHandlerTest { TakenLectureInventory takenLectureInventory = TakenLectureInventory.from(new HashSet<>()); //when - MajorExceptionHandler exceptionHandler = new ReplaceMandatoryMajorHandler(); + MandatoryMajorSpecialCaseHandler exceptionHandler = new ReplaceMandatoryMandatoryMajorHandler(); MandatorySpecialCaseInformation mandatorySpecialCaseInformation = exceptionHandler.getMandatorySpecialCaseInformation( takenLectureInventory, mandatoryLectures, electiveLectures); From db980eae07f33a314ce3149b9616ddc0cad31517 Mon Sep 17 00:00:00 2001 From: stophwan Date: Wed, 12 Jun 2024 00:26:59 +0900 Subject: [PATCH 05/10] =?UTF-8?q?fix:=20OptionalMandatory=20=EA=B3=BC?= =?UTF-8?q?=EB=AA=A9=20=EC=BD=94=EB=93=9C=20=EC=98=A4=EB=A5=98=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/service/major/OptionalMandatory.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/OptionalMandatory.java b/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/OptionalMandatory.java index ddbfd5de..7a85f2b0 100644 --- a/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/OptionalMandatory.java +++ b/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/OptionalMandatory.java @@ -22,10 +22,10 @@ public enum OptionalMandatory { )), BUSINESS("경영학과", 1, Set.of( - Lecture.of("HBW01201", "국제통산원론", 3, 0, "HBW01201"), - Lecture.of("HBX01127", "국제경영학", 3, 0, "CE224"), - Lecture.of("HBX01125", "경영정보", 3, 0, "KMJ01116"), - Lecture.of("HBY01103", "경영정보", 3, 1, "KMJ01116") + Lecture.of("HBX01128", "국제통상원론", 3, 0, null), + Lecture.of("HBX01127", "국제경영학", 3, 0, null), + Lecture.of("HBX01125", "경영정보", 3, 0, null), + Lecture.of("HBY01103", "경영정보", 3, 1, null) )), INTERNATIONAL_TRADE("국제통상학과", 4, Set.of( Lecture.of("HBX01104", "회계원리", 3, 0, null), From ccf72200d572b93f11cddd9667dd7d21d00166da Mon Sep 17 00:00:00 2001 From: stophwan Date: Wed, 12 Jun 2024 00:27:46 +0900 Subject: [PATCH 06/10] =?UTF-8?q?refactor:=20Handler=20=ED=81=B4=EB=9E=98?= =?UTF-8?q?=EC=8A=A4=20=ED=95=84=EB=93=9C=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/major/MandatoryMajorManager.java | 2 +- .../major/MandatoryMajorSpecialCaseHandler.java | 3 ++- .../OptionalMandatoryMandatoryMajorHandler.java | 17 ++++++----------- .../ReplaceMandatoryMandatoryMajorHandler.java | 2 +- 4 files changed, 10 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/MandatoryMajorManager.java b/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/MandatoryMajorManager.java index 4358158b..16eba36f 100644 --- a/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/MandatoryMajorManager.java +++ b/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/MandatoryMajorManager.java @@ -30,7 +30,7 @@ public DetailCategoryResult createDetailCategoryResult(User user, TakenLectureIn for (MandatoryMajorSpecialCaseHandler mandatoryMajorSpecialCaseHandler : mandatoryMajorSpecialCaseHandlers) { if (mandatoryMajorSpecialCaseHandler.isSupport(user, majorGraduationCategory)) { MandatorySpecialCaseInformation mandatorySpecialCaseInformation = mandatoryMajorSpecialCaseHandler.getMandatorySpecialCaseInformation( - takenLectureInventory, mandatoryLectures, electiveLectures); + user, majorGraduationCategory, takenLectureInventory, mandatoryLectures, electiveLectures); isSatisfiedMandatory = mandatorySpecialCaseInformation.isCompleteMandatorySpecialCase(); removeMandatoryTotalCredit = mandatorySpecialCaseInformation.getRemovedMandatoryTotalCredit(); } diff --git a/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/MandatoryMajorSpecialCaseHandler.java b/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/MandatoryMajorSpecialCaseHandler.java index d2388905..7602e313 100644 --- a/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/MandatoryMajorSpecialCaseHandler.java +++ b/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/MandatoryMajorSpecialCaseHandler.java @@ -9,6 +9,7 @@ public interface MandatoryMajorSpecialCaseHandler { boolean isSupport(User user, MajorGraduationCategory majorGraduationCategory); - MandatorySpecialCaseInformation getMandatorySpecialCaseInformation(TakenLectureInventory takenLectureInventory, + MandatorySpecialCaseInformation getMandatorySpecialCaseInformation( + User user, MajorGraduationCategory majorGraduationCategory, TakenLectureInventory takenLectureInventory, Set mandatoryLectures, Set electiveLectures); } diff --git a/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/OptionalMandatoryMandatoryMajorHandler.java b/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/OptionalMandatoryMandatoryMajorHandler.java index 356361f6..51669002 100644 --- a/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/OptionalMandatoryMandatoryMajorHandler.java +++ b/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/OptionalMandatoryMandatoryMajorHandler.java @@ -28,32 +28,27 @@ public class OptionalMandatoryMandatoryMajorHandler implements MandatoryMajorSpe private static final String INTERNATIONAL_TRADE = "국제통상학과"; private static final int CLASS_OF_17 = 17; private static final int CLASS_OF_19 = 19; - private OptionalMandatory optionalMandatory; public boolean isSupport(User user, MajorGraduationCategory majorGraduationCategory) { String calculatingMajor = getCalculatingMajor(user, majorGraduationCategory); if (calculatingMajor.equals(MANAGEMENT_INFORMATION) && user.getEntryYear() >= CLASS_OF_19) { - this.optionalMandatory = OptionalMandatory.from(getCalculatingMajor(user, majorGraduationCategory)); return true; } if (calculatingMajor.equals(ADMINISTRATIONS) && user.getEntryYear() >= CLASS_OF_17) { - this.optionalMandatory = OptionalMandatory.from(getCalculatingMajor(user, majorGraduationCategory)); return true; } - if (List.of(BUSINESS, INTERNATIONAL_TRADE).contains(calculatingMajor)) { - this.optionalMandatory = OptionalMandatory.from(getCalculatingMajor(user, majorGraduationCategory)); - return true; - } - return false; + return List.of(BUSINESS, INTERNATIONAL_TRADE).contains(calculatingMajor); } @Override public MandatorySpecialCaseInformation getMandatorySpecialCaseInformation( - TakenLectureInventory takenLectureInventory, Set mandatoryLectures, Set electiveLectures) { + User user, MajorGraduationCategory majorGraduationCategory, TakenLectureInventory takenLectureInventory, + Set mandatoryLectures, Set electiveLectures) { + OptionalMandatory optionalMandatory = OptionalMandatory.from(getCalculatingMajor(user, majorGraduationCategory)); int removedMandatoryTotalCredit = 0; boolean completeMandatorySpecialCase = checkCompleteOptionalMandatory(takenLectureInventory, mandatoryLectures, - electiveLectures); + electiveLectures, optionalMandatory); if (!completeMandatorySpecialCase) { removedMandatoryTotalCredit = optionalMandatory.getTotalOptionalMandatoryCredit() @@ -63,7 +58,7 @@ public MandatorySpecialCaseInformation getMandatorySpecialCaseInformation( } private boolean checkCompleteOptionalMandatory(TakenLectureInventory takenLectureInventory, - Set mandatoryLectures, Set electiveLectures) { + Set mandatoryLectures, Set electiveLectures, OptionalMandatory optionalMandatory) { int chooseNum = optionalMandatory.getChooseNumber(); /* * 전공과목 Set 에서 전공선택필수과목에 해당되는 과목들을 추출한다. diff --git a/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/ReplaceMandatoryMandatoryMajorHandler.java b/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/ReplaceMandatoryMandatoryMajorHandler.java index 1d9b3221..b6c6d407 100644 --- a/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/ReplaceMandatoryMandatoryMajorHandler.java +++ b/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/ReplaceMandatoryMandatoryMajorHandler.java @@ -42,7 +42,7 @@ public boolean isSupport(User user, MajorGraduationCategory majorGraduationCateg @Override public MandatorySpecialCaseInformation getMandatorySpecialCaseInformation( - TakenLectureInventory takenLectureInventory, Set mandatoryLectures, Set electiveLectures) { + User user, MajorGraduationCategory majorGraduationCategory, TakenLectureInventory takenLectureInventory, Set mandatoryLectures, Set electiveLectures) { boolean completeMandatorySpecialCase = checkCompleteReplaceMandatory(takenLectureInventory, mandatoryLectures, electiveLectures); int removedMandatoryTotalCredit = 0; From 623c623f2a3fe012a0c5a149b5ec8b816695c1f9 Mon Sep 17 00:00:00 2001 From: stophwan Date: Wed, 12 Jun 2024 00:28:00 +0900 Subject: [PATCH 07/10] =?UTF-8?q?test:=20=EA=B2=BD=EC=98=81=ED=95=99?= =?UTF-8?q?=EA=B3=BC=20=EC=88=98=EC=A0=95=20=EC=BC=80=EC=9D=B4=EC=8A=A4=20?= =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../InternationalTradeFixture.java | 2 - ...nalMandatoryMandatoryMajorHandlerTest.java | 96 +++++++++++++++++++ .../ReplaceMandatoryMajorHandlerTest.java | 12 +-- 3 files changed, 101 insertions(+), 9 deletions(-) create mode 100644 src/test/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/OptionalMandatoryMandatoryMajorHandlerTest.java rename src/test/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/{exception => }/ReplaceMandatoryMajorHandlerTest.java (93%) diff --git a/src/test/java/com/plzgraduate/myongjigraduatebe/fixture/majorfixture/InternationalTradeFixture.java b/src/test/java/com/plzgraduate/myongjigraduatebe/fixture/majorfixture/InternationalTradeFixture.java index 28c5a5c1..e9505996 100644 --- a/src/test/java/com/plzgraduate/myongjigraduatebe/fixture/majorfixture/InternationalTradeFixture.java +++ b/src/test/java/com/plzgraduate/myongjigraduatebe/fixture/majorfixture/InternationalTradeFixture.java @@ -7,6 +7,4 @@ public class InternationalTradeFixture { public static final Map mockLectureMap = LectureFixture.getMockLectureMap(); - - } diff --git a/src/test/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/OptionalMandatoryMandatoryMajorHandlerTest.java b/src/test/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/OptionalMandatoryMandatoryMajorHandlerTest.java new file mode 100644 index 00000000..e7ed76c6 --- /dev/null +++ b/src/test/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/OptionalMandatoryMandatoryMajorHandlerTest.java @@ -0,0 +1,96 @@ +package com.plzgraduate.myongjigraduatebe.graduation.domain.service.major; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.*; + +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import com.plzgraduate.myongjigraduatebe.fixture.LectureFixture; +import com.plzgraduate.myongjigraduatebe.fixture.UserFixture; +import com.plzgraduate.myongjigraduatebe.lecture.domain.model.Lecture; +import com.plzgraduate.myongjigraduatebe.takenlecture.domain.model.Semester; +import com.plzgraduate.myongjigraduatebe.takenlecture.domain.model.TakenLecture; +import com.plzgraduate.myongjigraduatebe.takenlecture.domain.model.TakenLectureInventory; +import com.plzgraduate.myongjigraduatebe.user.domain.model.User; + +class OptionalMandatoryMandatoryMajorHandlerTest { + + private static final User user = UserFixture.경영학과_19학번_ENG12(); + private static final MajorGraduationCategory majorGraduationCategory = MajorGraduationCategory.PRIMARY; + private static final Map mockLectureMap = LectureFixture.getMockLectureMap(); + + @DisplayName("3개 중에 1개를 수강할 경우 세부조건을 달성한다.") + @Test + void 세개중한과목_수강() { + + //given + Set mandatoryLectures = new HashSet<>(Set.of( + mockLectureMap.get("HBX01128"), //국제통상원론 + mockLectureMap.get("HBX01127"), //국제경영학 + mockLectureMap.get("HBY01103"), //경영정보(구) + mockLectureMap.get("HBX01125"), //경영정보(신) + mockLectureMap.get("HBX01105"), //재무관리원론 + mockLectureMap.get("HBX01113") //인적자원관리 + )); + Set electiveLectures = new HashSet<>(); + Set takenLectures = Set.of( + TakenLecture.of(user, mockLectureMap.get("HBX01128"), 2020, Semester.FIRST), //국제통상원론 + TakenLecture.of(user, mockLectureMap.get("HBX01105"), 2020, Semester.SECOND), //재무관리원론 + TakenLecture.of(user, mockLectureMap.get("HBX01113"), 2020, Semester.SECOND) //인적자원관리 + ); + TakenLectureInventory takenLectureInventory = TakenLectureInventory.from(takenLectures); + + //when + MandatoryMajorSpecialCaseHandler exceptionHandler = new OptionalMandatoryMandatoryMajorHandler(); + MandatorySpecialCaseInformation mandatorySpecialCaseInformation = exceptionHandler.getMandatorySpecialCaseInformation( + user, majorGraduationCategory, takenLectureInventory, mandatoryLectures, electiveLectures); + boolean checkMandatoryCondition = mandatorySpecialCaseInformation.isCompleteMandatorySpecialCase(); + int removedMandatoryTotalCredit = mandatorySpecialCaseInformation.getRemovedMandatoryTotalCredit(); + + //then + assertThat(checkMandatoryCondition).isTrue(); + assertThat(removedMandatoryTotalCredit).isZero(); + assertThat(mandatoryLectures).hasSize(3); + assertThat(electiveLectures).hasSize(3); + } + + @DisplayName("3개 중에 0개를 수강할 경우 세부조건을 달성하지 못한다.") + @Test + void 전공선택과목_미수강() { + + //given + Set mandatoryLectures = new HashSet<>(Set.of( + mockLectureMap.get("HBX01128"), //국제통상원론 + mockLectureMap.get("HBX01127"), //국제경영학 + mockLectureMap.get("HBY01103"), //경영정보(구) + mockLectureMap.get("HBX01125"), //경영정보(신) + mockLectureMap.get("HBX01105"), //재무관리원론 + mockLectureMap.get("HBX01113") //인적자원관리 + )); + Set electiveLectures = new HashSet<>(); + Set takenLectures = Set.of( + TakenLecture.of(user, mockLectureMap.get("HBX01105"), 2020, Semester.SECOND), //재무관리원론 + TakenLecture.of(user, mockLectureMap.get("HBX01113"), 2020, Semester.SECOND) //인적자원관리 + ); + TakenLectureInventory takenLectureInventory = TakenLectureInventory.from(takenLectures); + + //when + MandatoryMajorSpecialCaseHandler exceptionHandler = new OptionalMandatoryMandatoryMajorHandler(); + MandatorySpecialCaseInformation mandatorySpecialCaseInformation = exceptionHandler.getMandatorySpecialCaseInformation( + user, majorGraduationCategory, takenLectureInventory, mandatoryLectures, electiveLectures); + boolean checkMandatoryCondition = mandatorySpecialCaseInformation.isCompleteMandatorySpecialCase(); + int removedMandatoryTotalCredit = mandatorySpecialCaseInformation.getRemovedMandatoryTotalCredit(); + + //then + assertThat(checkMandatoryCondition).isFalse(); + assertThat(removedMandatoryTotalCredit).isEqualTo(6); + assertThat(mandatoryLectures).hasSize(6); + assertThat(electiveLectures).hasSize(0); + } + +} diff --git a/src/test/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/exception/ReplaceMandatoryMajorHandlerTest.java b/src/test/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/ReplaceMandatoryMajorHandlerTest.java similarity index 93% rename from src/test/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/exception/ReplaceMandatoryMajorHandlerTest.java rename to src/test/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/ReplaceMandatoryMajorHandlerTest.java index b8ae44f6..8153839c 100644 --- a/src/test/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/exception/ReplaceMandatoryMajorHandlerTest.java +++ b/src/test/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/ReplaceMandatoryMajorHandlerTest.java @@ -1,4 +1,4 @@ -package com.plzgraduate.myongjigraduatebe.graduation.domain.service.major.exception; +package com.plzgraduate.myongjigraduatebe.graduation.domain.service.major; import static org.assertj.core.api.Assertions.assertThat; @@ -23,6 +23,7 @@ @DisplayName("21학번 이전 철학과 학생의 경우 폐지된 전공필수의 대체 과목을 인정한다.") class ReplaceMandatoryMajorHandlerTest { private static final User user = UserFixture.철학과_20학번(); + private static final MajorGraduationCategory majorGraduationCategory = MajorGraduationCategory.PRIMARY; private static final Map mockLectureMap = LectureFixture.getMockLectureMap(); @DisplayName("답사1와 답사2를 수강했을 경우 세부조건을 달성한다.") @@ -50,8 +51,7 @@ class ReplaceMandatoryMajorHandlerTest { //when MandatoryMajorSpecialCaseHandler exceptionHandler = new ReplaceMandatoryMandatoryMajorHandler(); MandatorySpecialCaseInformation mandatorySpecialCaseInformation = exceptionHandler.getMandatorySpecialCaseInformation( - takenLectureInventory, - mandatoryLectures, electiveLectures); + user, majorGraduationCategory, takenLectureInventory, mandatoryLectures, electiveLectures); boolean checkMandatoryCondition = mandatorySpecialCaseInformation.isCompleteMandatorySpecialCase(); int removedMandatoryTotalCredit = mandatorySpecialCaseInformation.getRemovedMandatoryTotalCredit(); @@ -86,8 +86,7 @@ class ReplaceMandatoryMajorHandlerTest { //when MandatoryMajorSpecialCaseHandler exceptionHandler = new ReplaceMandatoryMandatoryMajorHandler(); MandatorySpecialCaseInformation mandatorySpecialCaseInformation = exceptionHandler.getMandatorySpecialCaseInformation( - takenLectureInventory, - mandatoryLectures, electiveLectures); + user, majorGraduationCategory, takenLectureInventory, mandatoryLectures, electiveLectures); boolean checkMandatoryCondition = mandatorySpecialCaseInformation.isCompleteMandatorySpecialCase(); int removedMandatoryTotalCredit = mandatorySpecialCaseInformation.getRemovedMandatoryTotalCredit(); @@ -118,8 +117,7 @@ class ReplaceMandatoryMajorHandlerTest { //when MandatoryMajorSpecialCaseHandler exceptionHandler = new ReplaceMandatoryMandatoryMajorHandler(); MandatorySpecialCaseInformation mandatorySpecialCaseInformation = exceptionHandler.getMandatorySpecialCaseInformation( - takenLectureInventory, - mandatoryLectures, electiveLectures); + user, majorGraduationCategory, takenLectureInventory, mandatoryLectures, electiveLectures); boolean checkMandatoryCondition = mandatorySpecialCaseInformation.isCompleteMandatorySpecialCase(); int removedMandatoryTotalCredit = mandatorySpecialCaseInformation.getRemovedMandatoryTotalCredit(); From cb787a63dc36f74b0950cab894c7a22af63abd61 Mon Sep 17 00:00:00 2001 From: stophwan Date: Thu, 13 Jun 2024 09:19:49 +0900 Subject: [PATCH 08/10] refactor: completeMandatorySpecialCase -> isCompleteMandatorySpecialCase --- .../major/MandatorySpecialCaseInformation.java | 4 ++-- ...OptionalMandatoryMandatoryMajorHandler.java | 6 +++--- .../ReplaceMandatoryMandatoryMajorHandler.java | 18 ------------------ ...onalMandatoryMandatoryMajorHandlerTest.java | 9 +++++---- .../ReplaceMandatoryMajorHandlerTest.java | 12 ++++++------ 5 files changed, 16 insertions(+), 33 deletions(-) diff --git a/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/MandatorySpecialCaseInformation.java b/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/MandatorySpecialCaseInformation.java index 6fd2662c..8ede98a1 100644 --- a/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/MandatorySpecialCaseInformation.java +++ b/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/MandatorySpecialCaseInformation.java @@ -9,13 +9,13 @@ @RequiredArgsConstructor public class MandatorySpecialCaseInformation { - private final boolean completeMandatorySpecialCase; + private final boolean isCompleteMandatorySpecialCase; private final int removedMandatoryTotalCredit; public static MandatorySpecialCaseInformation of(boolean completeMandatorySpecialCase, int removedMandatoryTotalCredit) { return MandatorySpecialCaseInformation.builder() - .completeMandatorySpecialCase(completeMandatorySpecialCase) + .isCompleteMandatorySpecialCase(completeMandatorySpecialCase) .removedMandatoryTotalCredit(removedMandatoryTotalCredit) .build(); } diff --git a/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/OptionalMandatoryMandatoryMajorHandler.java b/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/OptionalMandatoryMandatoryMajorHandler.java index 51669002..f9d0efed 100644 --- a/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/OptionalMandatoryMandatoryMajorHandler.java +++ b/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/OptionalMandatoryMandatoryMajorHandler.java @@ -47,14 +47,14 @@ public MandatorySpecialCaseInformation getMandatorySpecialCaseInformation( OptionalMandatory optionalMandatory = OptionalMandatory.from(getCalculatingMajor(user, majorGraduationCategory)); int removedMandatoryTotalCredit = 0; - boolean completeMandatorySpecialCase = checkCompleteOptionalMandatory(takenLectureInventory, mandatoryLectures, + boolean isCompletedMandatorySpecialCase = checkCompleteOptionalMandatory(takenLectureInventory, mandatoryLectures, electiveLectures, optionalMandatory); - if (!completeMandatorySpecialCase) { + if (!isCompletedMandatorySpecialCase ) { removedMandatoryTotalCredit = optionalMandatory.getTotalOptionalMandatoryCredit() - optionalMandatory.getChooseLectureCredit(); } - return MandatorySpecialCaseInformation.of(completeMandatorySpecialCase, removedMandatoryTotalCredit); + return MandatorySpecialCaseInformation.of(isCompletedMandatorySpecialCase , removedMandatoryTotalCredit); } private boolean checkCompleteOptionalMandatory(TakenLectureInventory takenLectureInventory, diff --git a/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/ReplaceMandatoryMandatoryMajorHandler.java b/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/ReplaceMandatoryMandatoryMajorHandler.java index b6c6d407..0a4d423c 100644 --- a/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/ReplaceMandatoryMandatoryMajorHandler.java +++ b/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/ReplaceMandatoryMandatoryMajorHandler.java @@ -17,7 +17,6 @@ * '신유학의 이해' '유학사상의이해' 중 택1 이수 시 대체 인정 */ public class ReplaceMandatoryMandatoryMajorHandler implements MandatoryMajorSpecialCaseHandler { - //private int removedMandatoryTotalCredit = 0; private static final List REPLACED_LECTURES = List.of( Lecture.of("HAI01110", "답사1", 1, 1, null), Lecture.of("HAI01111", "답사2", 1, 1, "HAI01111") @@ -51,23 +50,6 @@ public MandatorySpecialCaseInformation getMandatorySpecialCaseInformation( } return MandatorySpecialCaseInformation.of(completeMandatorySpecialCase, removedMandatoryTotalCredit); } -/** - @Override - public boolean checkMandatoryCondition(TakenLectureInventory takenLectureInventory, - Set mandatoryLectures, Set electiveLectures) { - boolean checkCondition = checkCompleteReplaceMandatory(takenLectureInventory, mandatoryLectures, - electiveLectures); - if (!checkCondition) { - removedMandatoryTotalCredit = 3; - } - return checkCondition; - } - - @Override - public int getRemovedMandatoryTotalCredit() { - return removedMandatoryTotalCredit; - } - **/ public boolean checkCompleteReplaceMandatory(TakenLectureInventory takenLectureInventory, Set mandatoryLectures, Set electiveLectures) { diff --git a/src/test/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/OptionalMandatoryMandatoryMajorHandlerTest.java b/src/test/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/OptionalMandatoryMandatoryMajorHandlerTest.java index e7ed76c6..f90e8dfd 100644 --- a/src/test/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/OptionalMandatoryMandatoryMajorHandlerTest.java +++ b/src/test/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/OptionalMandatoryMandatoryMajorHandlerTest.java @@ -18,6 +18,7 @@ import com.plzgraduate.myongjigraduatebe.takenlecture.domain.model.TakenLectureInventory; import com.plzgraduate.myongjigraduatebe.user.domain.model.User; +@DisplayName("N개 중에 M개 이상을 수강할 경우 세부조건을 달성한다.") class OptionalMandatoryMandatoryMajorHandlerTest { private static final User user = UserFixture.경영학과_19학번_ENG12(); @@ -49,11 +50,11 @@ class OptionalMandatoryMandatoryMajorHandlerTest { MandatoryMajorSpecialCaseHandler exceptionHandler = new OptionalMandatoryMandatoryMajorHandler(); MandatorySpecialCaseInformation mandatorySpecialCaseInformation = exceptionHandler.getMandatorySpecialCaseInformation( user, majorGraduationCategory, takenLectureInventory, mandatoryLectures, electiveLectures); - boolean checkMandatoryCondition = mandatorySpecialCaseInformation.isCompleteMandatorySpecialCase(); + boolean isCompleteMandatorySpecialCase = mandatorySpecialCaseInformation.isCompleteMandatorySpecialCase(); int removedMandatoryTotalCredit = mandatorySpecialCaseInformation.getRemovedMandatoryTotalCredit(); //then - assertThat(checkMandatoryCondition).isTrue(); + assertThat(isCompleteMandatorySpecialCase).isTrue(); assertThat(removedMandatoryTotalCredit).isZero(); assertThat(mandatoryLectures).hasSize(3); assertThat(electiveLectures).hasSize(3); @@ -83,11 +84,11 @@ class OptionalMandatoryMandatoryMajorHandlerTest { MandatoryMajorSpecialCaseHandler exceptionHandler = new OptionalMandatoryMandatoryMajorHandler(); MandatorySpecialCaseInformation mandatorySpecialCaseInformation = exceptionHandler.getMandatorySpecialCaseInformation( user, majorGraduationCategory, takenLectureInventory, mandatoryLectures, electiveLectures); - boolean checkMandatoryCondition = mandatorySpecialCaseInformation.isCompleteMandatorySpecialCase(); + boolean isCompleteMandatorySpecialCase = mandatorySpecialCaseInformation.isCompleteMandatorySpecialCase(); int removedMandatoryTotalCredit = mandatorySpecialCaseInformation.getRemovedMandatoryTotalCredit(); //then - assertThat(checkMandatoryCondition).isFalse(); + assertThat(isCompleteMandatorySpecialCase).isFalse(); assertThat(removedMandatoryTotalCredit).isEqualTo(6); assertThat(mandatoryLectures).hasSize(6); assertThat(electiveLectures).hasSize(0); diff --git a/src/test/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/ReplaceMandatoryMajorHandlerTest.java b/src/test/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/ReplaceMandatoryMajorHandlerTest.java index 8153839c..647b28b4 100644 --- a/src/test/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/ReplaceMandatoryMajorHandlerTest.java +++ b/src/test/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/ReplaceMandatoryMajorHandlerTest.java @@ -52,11 +52,11 @@ class ReplaceMandatoryMajorHandlerTest { MandatoryMajorSpecialCaseHandler exceptionHandler = new ReplaceMandatoryMandatoryMajorHandler(); MandatorySpecialCaseInformation mandatorySpecialCaseInformation = exceptionHandler.getMandatorySpecialCaseInformation( user, majorGraduationCategory, takenLectureInventory, mandatoryLectures, electiveLectures); - boolean checkMandatoryCondition = mandatorySpecialCaseInformation.isCompleteMandatorySpecialCase(); + boolean isCompleteMandatorySpecialCase = mandatorySpecialCaseInformation.isCompleteMandatorySpecialCase(); int removedMandatoryTotalCredit = mandatorySpecialCaseInformation.getRemovedMandatoryTotalCredit(); //then - assertThat(checkMandatoryCondition).isTrue(); + assertThat(isCompleteMandatorySpecialCase).isTrue(); assertThat(removedMandatoryTotalCredit).isZero(); assertThat(mandatoryLectures).hasSize(4); assertThat(electiveLectures).hasSize(2); @@ -87,11 +87,11 @@ class ReplaceMandatoryMajorHandlerTest { MandatoryMajorSpecialCaseHandler exceptionHandler = new ReplaceMandatoryMandatoryMajorHandler(); MandatorySpecialCaseInformation mandatorySpecialCaseInformation = exceptionHandler.getMandatorySpecialCaseInformation( user, majorGraduationCategory, takenLectureInventory, mandatoryLectures, electiveLectures); - boolean checkMandatoryCondition = mandatorySpecialCaseInformation.isCompleteMandatorySpecialCase(); + boolean isCompleteMandatorySpecialCase = mandatorySpecialCaseInformation.isCompleteMandatorySpecialCase(); int removedMandatoryTotalCredit = mandatorySpecialCaseInformation.getRemovedMandatoryTotalCredit(); //then - assertThat(checkMandatoryCondition).isTrue(); + assertThat(isCompleteMandatorySpecialCase).isTrue(); assertThat(removedMandatoryTotalCredit).isZero(); assertThat(mandatoryLectures).hasSize(5).contains(mockLectureMap.get("HAI01348")); assertThat(electiveLectures).hasSize(1).contains(mockLectureMap.get("HAI01247")); @@ -118,11 +118,11 @@ class ReplaceMandatoryMajorHandlerTest { MandatoryMajorSpecialCaseHandler exceptionHandler = new ReplaceMandatoryMandatoryMajorHandler(); MandatorySpecialCaseInformation mandatorySpecialCaseInformation = exceptionHandler.getMandatorySpecialCaseInformation( user, majorGraduationCategory, takenLectureInventory, mandatoryLectures, electiveLectures); - boolean checkMandatoryCondition = mandatorySpecialCaseInformation.isCompleteMandatorySpecialCase(); + boolean isCompleteMandatorySpecialCase = mandatorySpecialCaseInformation.isCompleteMandatorySpecialCase(); int removedMandatoryTotalCredit = mandatorySpecialCaseInformation.getRemovedMandatoryTotalCredit(); //then - assertThat(checkMandatoryCondition).isFalse(); + assertThat(isCompleteMandatorySpecialCase).isFalse(); assertThat(removedMandatoryTotalCredit).isEqualTo(3); assertThat(mandatoryLectures).hasSize(6); assertThat(electiveLectures).isEmpty(); From 6a0f20fa1f153e4b1914d5e72c799347af2b573d Mon Sep 17 00:00:00 2001 From: stophwan Date: Thu, 13 Jun 2024 09:28:14 +0900 Subject: [PATCH 09/10] fix: fix code smells --- .../domain/service/major/ElectiveMajorManager.java | 3 ++- .../domain/service/major/MandatoryMajorManager.java | 5 +++-- .../major/OptionalMandatoryMandatoryMajorHandlerTest.java | 1 - .../service/major/ReplaceMandatoryMajorHandlerTest.java | 3 --- 4 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/ElectiveMajorManager.java b/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/ElectiveMajorManager.java index 60032d1b..1dedc1b8 100644 --- a/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/ElectiveMajorManager.java +++ b/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/ElectiveMajorManager.java @@ -9,6 +9,7 @@ import com.plzgraduate.myongjigraduatebe.takenlecture.domain.model.TakenLectureInventory; public class ElectiveMajorManager { + private static final String ELECTIVE_MAJOR_NAME = "전공선택"; public DetailCategoryResult createDetailCategoryResult(TakenLectureInventory takenLectureInventory, Set electiveLectures, int electiveMajorTotalCredit) { Set takenElective = new HashSet<>(); @@ -19,7 +20,7 @@ public DetailCategoryResult createDetailCategoryResult(TakenLectureInventory tak finishedTakenLecture.add(takenLecture); takenElective.add(takenLecture.getLecture()); }); - DetailCategoryResult electiveMajorResult = DetailCategoryResult.create("전공선택", true, electiveMajorTotalCredit); + DetailCategoryResult electiveMajorResult = DetailCategoryResult.create(ELECTIVE_MAJOR_NAME, true, electiveMajorTotalCredit); electiveMajorResult.calculate(takenElective, electiveLectures); takenLectureInventory.handleFinishedTakenLectures(finishedTakenLecture); diff --git a/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/MandatoryMajorManager.java b/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/MandatoryMajorManager.java index 16eba36f..bcbc2423 100644 --- a/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/MandatoryMajorManager.java +++ b/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/MandatoryMajorManager.java @@ -5,6 +5,7 @@ import java.util.Set; import com.plzgraduate.myongjigraduatebe.graduation.domain.model.DetailCategoryResult; +import com.plzgraduate.myongjigraduatebe.graduation.domain.model.GraduationCategory; import com.plzgraduate.myongjigraduatebe.lecture.domain.model.Lecture; import com.plzgraduate.myongjigraduatebe.takenlecture.domain.model.TakenLecture; import com.plzgraduate.myongjigraduatebe.user.domain.model.User; @@ -15,7 +16,7 @@ @RequiredArgsConstructor public class MandatoryMajorManager { - private static final String detailCategoryName = "전공필수"; + private static final String MANDATORY_MAJOR_NAME = "전공필수"; private final List mandatoryMajorSpecialCaseHandlers; @@ -42,7 +43,7 @@ public DetailCategoryResult createDetailCategoryResult(User user, TakenLectureIn finishedTakenLecture.add(takenLecture); takenMandatory.add(takenLecture.getLecture()); }); - DetailCategoryResult majorMandatoryResult = DetailCategoryResult.create(detailCategoryName, isSatisfiedMandatory, + DetailCategoryResult majorMandatoryResult = DetailCategoryResult.create(MANDATORY_MAJOR_NAME, isSatisfiedMandatory, calculateTotalCredit(takenMandatory, mandatoryLectures, removeMandatoryTotalCredit)); majorMandatoryResult.calculate(takenMandatory, mandatoryLectures); takenLectureInventory.handleFinishedTakenLectures(finishedTakenLecture); diff --git a/src/test/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/OptionalMandatoryMandatoryMajorHandlerTest.java b/src/test/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/OptionalMandatoryMandatoryMajorHandlerTest.java index f90e8dfd..c7ea862a 100644 --- a/src/test/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/OptionalMandatoryMandatoryMajorHandlerTest.java +++ b/src/test/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/OptionalMandatoryMandatoryMajorHandlerTest.java @@ -1,7 +1,6 @@ package com.plzgraduate.myongjigraduatebe.graduation.domain.service.major; import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.jupiter.api.Assertions.*; import java.util.HashSet; import java.util.Map; diff --git a/src/test/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/ReplaceMandatoryMajorHandlerTest.java b/src/test/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/ReplaceMandatoryMajorHandlerTest.java index 647b28b4..e89f4ffc 100644 --- a/src/test/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/ReplaceMandatoryMajorHandlerTest.java +++ b/src/test/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/ReplaceMandatoryMajorHandlerTest.java @@ -11,9 +11,6 @@ import com.plzgraduate.myongjigraduatebe.fixture.LectureFixture; import com.plzgraduate.myongjigraduatebe.fixture.UserFixture; -import com.plzgraduate.myongjigraduatebe.graduation.domain.service.major.MandatoryMajorSpecialCaseHandler; -import com.plzgraduate.myongjigraduatebe.graduation.domain.service.major.MandatorySpecialCaseInformation; -import com.plzgraduate.myongjigraduatebe.graduation.domain.service.major.ReplaceMandatoryMandatoryMajorHandler; import com.plzgraduate.myongjigraduatebe.lecture.domain.model.Lecture; import com.plzgraduate.myongjigraduatebe.takenlecture.domain.model.Semester; import com.plzgraduate.myongjigraduatebe.takenlecture.domain.model.TakenLecture; From 572611962c8eec279cd37e0d364bee17f05ea1ab Mon Sep 17 00:00:00 2001 From: stophwan Date: Thu, 13 Jun 2024 09:31:56 +0900 Subject: [PATCH 10/10] fix: update code smells --- .../graduation/domain/service/major/MandatoryMajorManager.java | 1 - .../major/OptionalMandatoryMandatoryMajorHandlerTest.java | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/MandatoryMajorManager.java b/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/MandatoryMajorManager.java index bcbc2423..f28c35b5 100644 --- a/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/MandatoryMajorManager.java +++ b/src/main/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/MandatoryMajorManager.java @@ -5,7 +5,6 @@ import java.util.Set; import com.plzgraduate.myongjigraduatebe.graduation.domain.model.DetailCategoryResult; -import com.plzgraduate.myongjigraduatebe.graduation.domain.model.GraduationCategory; import com.plzgraduate.myongjigraduatebe.lecture.domain.model.Lecture; import com.plzgraduate.myongjigraduatebe.takenlecture.domain.model.TakenLecture; import com.plzgraduate.myongjigraduatebe.user.domain.model.User; diff --git a/src/test/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/OptionalMandatoryMandatoryMajorHandlerTest.java b/src/test/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/OptionalMandatoryMandatoryMajorHandlerTest.java index c7ea862a..d47f24f6 100644 --- a/src/test/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/OptionalMandatoryMandatoryMajorHandlerTest.java +++ b/src/test/java/com/plzgraduate/myongjigraduatebe/graduation/domain/service/major/OptionalMandatoryMandatoryMajorHandlerTest.java @@ -90,7 +90,7 @@ class OptionalMandatoryMandatoryMajorHandlerTest { assertThat(isCompleteMandatorySpecialCase).isFalse(); assertThat(removedMandatoryTotalCredit).isEqualTo(6); assertThat(mandatoryLectures).hasSize(6); - assertThat(electiveLectures).hasSize(0); + assertThat(electiveLectures).isEmpty(); } }