Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: 온보딩 대시보드 페이지 API 구현 #399

Merged
merged 14 commits into from
Jun 21, 2024

Conversation

uwoobeat
Copy link
Member

@uwoobeat uwoobeat commented Jun 20, 2024

🌱 관련 이슈

📌 작업 내용 및 특이사항

DTO 컨벤션 추가

  • 여러 DTO를 aggregate 하는 응답의 경우 각 엔티티에 대응되는 DTO를 조합하여 만듭니다.
  • 이때 모든 필드가 대응되는 DTO의 경우 XXXFullDto 로, 일부 필드만 대응되는 DTO의 경우 XXXSimpleDto 로 네이밍합니다.
  • SimpleDto의 경우 리스트 반환 시 원본 엔티티의 필드가 너무 많은 경우에만 사용하며, 그 외에는 사용하지 않습니다.

현재 열려있는 리쿠르팅 조회

  • 추후 displayPeriod 등으로 리팩토링할 것으로 고려하여 현재는 isOpen으로 판단하게 했습니다.
  • isDisplayable 생기면 간단하게 변경해주시면 됩니다.

Optional

  • 정회원 신청을 하지 않은 유저인 경우, 현재 열려있는 리쿠르팅에 대하여 멤버십이 존재하지 않을 수 있습니다.
  • 이를 위해 OnboardingMembershipService#findMyMembership이 Optional로 리턴하도록 했습니다.
  • 그리고 DTO 변환 시 null 이면 해당 DTO 필드도 null이 되도록 만들었습니다.
  • 학과명 반환 시 NPE 방지 위해 Optional로 싸놨습니다.

테스트 변경사항

  • 통합 테스트에 리쿠르팅 템플릿 만드는 메서드 추가했습니다.
  • isOpen의 경우 LocalDateTime.now() 사용하는데 생성되는 템플릿은 과거 시점이므로 조회되지 않습니다. 이를 해결하기 위해 서비스를 모킹하여 findCurrentRecruitment 가 항상 템플릿 리쿠르팅을 반환하도록 만들었습니다.
  • @MockBean의 경우 자식 테스트에 두면 해당 테스트 실행 시 컨텍스트를 재구성하므로, IntegrationTest 에 위치시켰습니다. 추후 다른 로직에서 이 서비스를 사용할 경우 동일하게 모킹하여 사용해야 합니다.
  • 그 외 내용은 테스트 참고 바랍니다.

📝 참고사항

📚 기타

@uwoobeat uwoobeat requested a review from a team as a code owner June 20, 2024 14:26
Copy link

Job Summary for Gradle

Check Style and Test to Develop :: build-test
Gradle Root Project Requested Tasks Gradle Version Build Outcome Build Scan®
gdsc check 8.5 Build Scan published

Optional.ofNullable(member.getDepartment())
.map(Department::getDepartmentName)
.orElse(null),
member.getPhone(),
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

저희 원래 전화번호 xxx-xxxx-xxxx 형식으로 응답에 넣었었는데 포맷 바꾸나요?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

피그마 봤는데 대시 없어서 그냥 리턴한건데
대시 있는게 더 보기에 편하겠네요 바꿔둘게요

Copy link
Member

@AlmondBreez3 AlmondBreez3 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

logoutAndReloginAs(1L, MemberRole.ASSOCIATE);

// when
var memberDashboardResponse = onboardingMemberService.getDashboard();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

var쓰는 건 첨 보는데 필드 추론할 때 쓰는걸로만 알고 있는데 var사용하고 정확한 필드타입 지정안해주신 이유가 따로 있나용?
궁금해서 여쭈어보는겁니당

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

MemberDashboardResponse memberDashboardResponse = onboardingMemberService.getDashboard(); 가 너무 길어서 var로 바꾼건데 생각해보니 MemberDashboardResponse response = onboardingMemberService.getDashboard(); 로 하면 되겠네요. 수정할게요

Copy link

Job Summary for Gradle

Check Style and Test to Develop :: build-test
Gradle Root Project Requested Tasks Gradle Version Build Outcome Build Scan®
gdsc check 8.5 Build Scan published

Copy link

Job Summary for Gradle

Check Style and Test to Develop :: build-test
Gradle Root Project Requested Tasks Gradle Version Build Outcome Build Scan®
gdsc check 8.5 Build Scan published

Copy link
Member

@Sangwook02 Sangwook02 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

@uwoobeat uwoobeat merged commit 13e72b1 into develop Jun 21, 2024
1 check passed
@uwoobeat uwoobeat deleted the feature/362-dashboard-api branch June 21, 2024 10:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

✨ 온보딩 대시보드 페이지 API 구현
3 participants