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

refactor: 투두 api, 로직 수정 및 테스트 수정 #241

Merged
merged 6 commits into from
Aug 8, 2023

Conversation

kevstevie
Copy link
Collaborator

😋 작업한 내용

투두 api, 로직 수정 및 테스트 수정

🙏 PR Point

일단 오늘은 여기까지입니다..

api 변경사항은 내일 적겠습니다..

변경된 api나 로직 관련해서 리뷰해주세요

👍 관련 이슈

@github-actions
Copy link

github-actions bot commented Aug 7, 2023

Test Results

21 files  21 suites   12s ⏱️
71 tests 71 ✔️ 0 💤 0
72 runs  72 ✔️ 0 💤 0

Results for commit e472da0.

♻️ This comment has been updated with latest results.

@kevstevie
Copy link
Collaborator Author

스터디 시작전에 투두 추가 못하게해야하는데 그러려면 스터디 도메인을 불러와야할까요..
지금은 시작 전에도 추가 가능한 상태입니다.

Copy link
Member

@yujamint yujamint left a comment

Choose a reason for hiding this comment

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

주드 고생하셨습니다~ 리뷰 한 번 확인 부탁드려요

return todo.getId();
public void createNecessaryTodo(Member member, Long roundId, TodoCreateRequest request) {
Round round = findRoundById(roundId);
round.createNecessaryTodo(member, request.content());
}

private Round findRoundById(Long roundId) {
Copy link
Member

Choose a reason for hiding this comment

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

p3: findRoundById() 메서드의 위치가 아래로 이동되어야 할 것 같아요~

Copy link
Member

Choose a reason for hiding this comment

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

아니 이것도 수정되어 있네

Comment on lines 66 to 68
OptionalTodo todo = findOptionalTodoById(todoId);
round.findRoundOfMemberBy(member)
.validateTodoOwner(todo);
Copy link
Member

Choose a reason for hiding this comment

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

p3: 현재 updateOptionalTodo() 메서드에서는

  1. (Repository) 라운드 조회
  2. (Repository) 투두 조회
  3. (Round) ROM 조회
  4. (ROM) 투두 작성자 검증

이러한 과정을 거치고 있는 것 같습니다.

여기서 OptionalTodo 조회를 Repository가 아닌, ROM으로 하면 어떨까요?
그 이유는 첫 번째로, ROM이 OptionalTodo를 참조하고 있기 때문에 굳이 한 번 더 DB를 조회하지 않아도 될 것 같습니다.
두 번째로, 현재 RoundOfMember.validateTodoOwner() 에서는 contains()를 통해 투두 작성자 검증을 하고 있습니다.
만약 위에서 제안했듯이, 투두를 Repository가 아니라 ROM에서 꺼낸다면 기존의 투두 작성자 검증까지 한 번에 할 수 있을 것 같습니다.

즉, ROM에서 OptionalTodo를 꺼낸다면 updateOptionalTodo() 메서드는 다음과 같은 흐름이 될 것 같아요.

  1. (Repository) 라운드 조회
  2. (Round) ROM 조회
  3. (ROM) OptionalTodo 조회 -> 투두 작성자는 자연스럽게 검증 가능

Copy link
Member

Choose a reason for hiding this comment

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

엇 이거 방금 push된 커밋 확인했는데 수정되어 있는 거 같네요 ㅋㅋㅋ 굿

public void delete(Member member, Long todoId) {
public void deleteOptionalTodo(Member member, Long roundId, Long todoId) {
Round round = findRoundById(roundId);
RoundOfMember roundOfMember = round.findRoundOfMemberBy(member);
OptionalTodo todo = findOptionalTodoById(todoId);
Copy link
Member

Choose a reason for hiding this comment

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

p3: 여기서도 위와 비슷한 이유로, 투두를 Repository에서 조회할 필요 없이 바로 ROM을 통해 조회+제거 작업을 진행할 수 있을 것 같아요.
+) 서비스의 update 메서드에서는 명시적으로 드러나 있는 validateTodoOwner() 검증이, delete 메서드에서는 드러나 있지 않아서 '삭제 시에는 작성자 검증이 이뤄지고 있지 않나??' 하는 의문이 생기기도 했네요. 만약 수정하게 된다면 코드의 일관성까지 챙길 수 있을 것 같아요.

Copy link
Member

Choose a reason for hiding this comment

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

아니 이것도 수정되어 있네


//when
Long id = todoService.create(member, request);
todoService.createNecessaryTodo(member, round.getId(), request);

//then
Copy link
Member

Choose a reason for hiding this comment

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

p2: then 절에 검증이 빠져 있네요. round.necessaryToDoContent가 의도한대로 잘 생성되어 있는지 검증하면 어떨까요??

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

검증이 쉽지 않네요 일단 doesNotThrow로 했습니다

Comment on lines 34 to 36
TodoCreateRequest request = new TodoCreateRequest(
Boolean.parseBoolean(isNecessary),
Long.parseLong(roundId),
content
);
Copy link
Member

Choose a reason for hiding this comment

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

p3: 이건 개행이 없는 게 더 깔끔해 보이는데 어떻게 생각하시나요??

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

수정햇습니다

@kevstevie kevstevie merged commit 205c30d into BE/develop Aug 8, 2023
2 checks passed
@kevstevie kevstevie deleted the BE/refactor/234 branch August 8, 2023 07:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

4 participants