Skip to content

Commit

Permalink
feat: 관담 세부 조회에 에타 링크 추가 (#53)
Browse files Browse the repository at this point in the history
* feat: 관담 세부 정보에 에타 링크 추가

* refactor: 불필요한 키워드 삭제

* test: 관담에 에타 링크가 존재하는지 서비스 레이어 테스트
  • Loading branch information
3Juhwan authored Feb 8, 2025
1 parent 8fa259f commit e2d79e3
Show file tree
Hide file tree
Showing 6 changed files with 65 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ public SubjectBasketsResponse getEachSubjectBaskets(Long subjectId) {
Subject subject = subjectRepository.findById(subjectId)
.orElseThrow(() -> new AllcllException(AllcllErrorCode.SUBJECT_NOT_FOUND));
List<Basket> baskets = getBaskets(subject);
return SubjectBasketsResponse.from(baskets);
return SubjectBasketsResponse.from(subject.getEverytimeLectureId(), baskets);
}

private List<Basket> getBaskets(Subject subject) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,12 @@
import kr.allcll.seatfinder.basket.Basket;

public record SubjectBasketsResponse(
Long everytimeLectureId,
List<EachDepartmentBasket> eachDepartmentRegisters
) {

public static SubjectBasketsResponse from(List<Basket> baskets) {
public static SubjectBasketsResponse from(Long everytimeLectureId, List<Basket> baskets) {
List<EachDepartmentBasket> result = EachDepartmentBasket.from(baskets);
return new SubjectBasketsResponse(result);
return new SubjectBasketsResponse(everytimeLectureId, result);
}
}
12 changes: 8 additions & 4 deletions src/main/java/kr/allcll/seatfinder/subject/Subject.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,10 @@ public class Subject extends BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Column(name = "everytime_lecture_id")
private Long everytimeLectureId; // 에브리타임 강의 ID

@Column(name = "smt_cd")
private String smtCd; // 학기 코드

Expand Down Expand Up @@ -123,10 +127,6 @@ public class Subject extends BaseEntity {
@Column(name = "prt_ord")
private String prtOrd; // 정렬 순서

public boolean isNonMajor() {
return NON_MAJOR_DEPARTMENT_NAME.equals(manageDeptNm);
}

public Subject(String smtCd, String smtCdNm, String year, String yearSmtNm, String curiNo, String curiNm,
String curiTypeCd, String curiTypeCdNm, String cdt, String tmNum, String totTmNum, String studentYear,
String lesnTime, String lesnRoom, String lesnEmp, String corsUnitGrpCd, String corsUnitGrpCdNm,
Expand Down Expand Up @@ -170,4 +170,8 @@ public Subject(String smtCd, String smtCdNm, String year, String yearSmtNm, Stri
this.remark = remark;
this.prtOrd = prtOrd;
}

public boolean isNonMajor() {
return NON_MAJOR_DEPARTMENT_NAME.equals(manageDeptNm);
}
}
16 changes: 12 additions & 4 deletions src/test/java/kr/allcll/seatfinder/basket/BasketApiTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ void findBasket() throws Exception {
// given
String expected = """
{
"everytimeLectureId": 2864827,
"eachDepartmentRegisters": [
{
"studentBelong": "본교생",
Expand All @@ -80,9 +81,11 @@ void findBasket() throws Exception {

// when
when(basketService.getEachSubjectBaskets(1L)).thenReturn(
new SubjectBasketsResponse(List.of(
new EachDepartmentBasket("본교생", "컴퓨터공학과", 10)
))
new SubjectBasketsResponse(
2864827L,
List.of(
new EachDepartmentBasket("본교생", "컴퓨터공학과", 10)
))
);
MvcResult result = mockMvc.perform(get("/api/baskets/1")).andExpect(status().isOk()).andReturn();

Expand All @@ -96,12 +99,17 @@ void findBasketEmpty() throws Exception {
// given
String expected = """
{
"everytimeLectureId": 5412311,
"eachDepartmentRegisters": []
}
""";

// when
when(basketService.getEachSubjectBaskets(1L)).thenReturn(new SubjectBasketsResponse(List.of()));
when(basketService.getEachSubjectBaskets(1L)).thenReturn(
new SubjectBasketsResponse(
5412311L,
List.of())
);
MvcResult result = mockMvc.perform(get("/api/baskets/1")).andExpect(status().isOk()).andReturn();

// then
Expand Down
27 changes: 22 additions & 5 deletions src/test/java/kr/allcll/seatfinder/basket/BasketServiceTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import static kr.allcll.seatfinder.support.fixture.BasketFixture.createEmptyBasket;
import static kr.allcll.seatfinder.support.fixture.SubjectFixture.createSubjectWithDepartmentCode;
import static kr.allcll.seatfinder.support.fixture.SubjectFixture.createSubjectWithDepartmentInformation;
import static kr.allcll.seatfinder.support.fixture.SubjectFixture.createSubjectWithEverytimeLectureId;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.tuple;

Expand Down Expand Up @@ -298,7 +299,7 @@ void wrongSelect() {

@Test
@DisplayName("각 과목에 대한 관심과목 조회를 확인한다.")
public void getEachSubjectBasketsTest() {
void getEachSubjectBasketsTest() {
// given
Subject subjectA = createSubjectWithDepartmentCode("컴공 과목A", "001234", "001", "김보예", "3210");
subjectRepository.save(subjectA);
Expand Down Expand Up @@ -326,7 +327,7 @@ public void getEachSubjectBasketsTest() {

@Test
@DisplayName("각 과목에 대한 관심과목 조회의 응답값을 확인한다.")
public void getEachSubjectBasketResponse() {
void getEachSubjectBasketResponse() {
// given
Subject subjectA = createSubjectWithDepartmentCode("컴공 과목A", "001234", "001", "김보예", "3210");
subjectRepository.save(subjectA);
Expand All @@ -349,7 +350,7 @@ public void getEachSubjectBasketResponse() {

@Test
@DisplayName("과목에 대한 관심과목 담기한 인원이 없을 때는 빈 응답을 반환한다.")
public void emptyBasketResponse() {
void emptyBasketResponse() {
// given
Subject subjectA = createSubjectWithDepartmentCode("컴공 과목A", "001234", "001", "김보예", "3210");
subjectRepository.save(subjectA);
Expand All @@ -365,7 +366,7 @@ public void emptyBasketResponse() {

@Test
@DisplayName("관심과목 인원이 0명 일 때의 동작을 확인한다.")
public void emptyBasket() {
void emptyBasket() {
// given
Subject subjectA = createSubjectWithDepartmentCode("컴공 과목A", "001234", "001", "김보예", "3210");
subjectRepository.save(subjectA);
Expand All @@ -380,7 +381,7 @@ public void emptyBasket() {

@Test
@DisplayName("관심과목 인원이 0명 일 때 과목 조회를 확인한다.")
public void emptyBasketSubject() {
void emptyBasketSubject() {
// given
Subject subjectA = createSubjectWithDepartmentCode("컴공 과목A", "001234", "001", "김보예", "3210");
subjectRepository.save(subjectA);
Expand All @@ -392,6 +393,22 @@ public void emptyBasketSubject() {
assertThat(eachSubjectBaskets.eachDepartmentRegisters().isEmpty()).isTrue();
}

@Test
@DisplayName("관심과목 세부 조회에 에브리타임 강의 아이디를 확인한다.")
void everytimeLectureIdTest() {
// given
long everytimeLectureId = 1234567L;
Subject subjectA = createSubjectWithEverytimeLectureId(everytimeLectureId, "컴공 과목A", "001234", "001", "김보예",
"3210");
subjectRepository.save(subjectA);

// when
SubjectBasketsResponse eachSubjectBaskets = basketService.getEachSubjectBaskets(subjectA.getId());

// then
assertThat(eachSubjectBaskets.everytimeLectureId()).isEqualTo(1234567L);
}

private void saveSubjectsAndBaskets() {
Subject subjectA = createSubjectWithDepartmentInformation(
"컴공 과목A",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,23 @@ public static Subject createSubjectWithDepartmentCode(
"", "", "", "", "");
}

public static Subject createSubjectWithEverytimeLectureId(
Long everytimeLectureId,
String subjectName,
String subjectCode,
String classCode,
String professorName,
String departmentCode
) {
return new Subject(null, everytimeLectureId, "", "", "", "",
subjectCode, subjectName,
"", "", "", "", "", "", "", "",
professorName, "", "", "", "", departmentCode,
"", "",
classCode, "", "", "", "", "",
"", "", "", "", "");
}

public static Subject createSubjectWithDepartmentInformation(
String subjectName, //과목명
String departmentName, //개설학과
Expand All @@ -59,7 +76,7 @@ public static Subject createNonMajorSubject(
String classCode,
String professorName
) {
return new Subject(subjectId,
return new Subject(subjectId, 0L,
"", "", "", "",
subjectCode, subjectName, "", "", "", "", "", "",
"", "",
Expand All @@ -77,7 +94,7 @@ public static Subject createMajorSubject(
String classCode,
String professorName
) {
return new Subject(subjectId,
return new Subject(subjectId, 0L,
"", "", "", "",
subjectCode, subjectName, "", "", "", "", "", "",
"", "",
Expand All @@ -86,8 +103,5 @@ public static Subject createMajorSubject(
"컴퓨터공학과", classCode, "", "", "",
"", "", "", "", "",
"", "");
// return new Subject(subjectId, "소프트웨어융합대학", "컴퓨터공학과", subjectCode, classCode, subjectName, "", "", "", "", "",
// "", "", "", "",
// "", professorName, "", "", "", "", "", "", "", "3210");
}
}

0 comments on commit e2d79e3

Please sign in to comment.