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

Api: ✨ 사용자 정의 카테고리 삭제 API #123

Merged
merged 6 commits into from
Jul 9, 2024

Conversation

asn6878
Copy link
Collaborator

@asn6878 asn6878 commented Jul 4, 2024

작업 이유

  • 사용자는 사용자 지정 카테고리를 삭제할 수 있다.

작업 사항

API Spec

  • url : DELETE /v2/spending-categories/{categoryId}
  • pre-condition : 사용자는 로그인 한 상태이고, 삭제하고자 하는 사용자 정의 카테고리의 작성자여야 한다.

결과 응답

{
  "code" : "2000",
  "data" : { }
}

테스트 결과

image


리뷰어가 중점적으로 확인해야 하는 부분

@OnDelete등과 같은 방법을 통해 DDL을 통한 연쇄 삭제를 사용할 것인지 아니면 비즈니스 로직에서 직접 연쇄 삭제를 구현해야 할지 고민하다가 일단은 조금더 명시적인 방법인 후자를 택했습니다.

어떤 방법이 더 좋을지 의견주시면 의논 후 반영토록 하겠습니다.


발견한 이슈

단위 테스트를 작성해보려 했으나... 삭제 행위에 있어서 단위테스트가 의미가 없다고 판단했습니다.
삭제 동작 같은 경우에는 실제로 DB에서 데이터가 제거가 되었는지? 가 중심적인 관심사인데, 단위 테스트를 진행하면 Mock 객체의 동작(여기서는 DAO계층의 동작) 결과를 개발자가 전부 직접 제공해주어야 하기 때문입니다.

혹시나 이런 상황에서 의미있는 단위테스트를 작성할 수 있는 방법이 있으면 알려주시면 감사하겠습니다 :)

@asn6878 asn6878 added the enhancement New feature or request label Jul 4, 2024
@asn6878 asn6878 self-assigned this Jul 4, 2024
@psychology50
Copy link
Member

혹시나 이런 상황에서 의미있는 단위테스트를 작성할 수 있는 방법이 있으면 알려주시면 감사하겠습니다 :)

저도 매우 단순한 로직같은 경우엔 굳이 테케를 작성하지 않습니다...🤗

@OnDelete등과 같은 방법을 통해 DDL을 통한 연쇄 삭제를 사용할 것인지 아니면 비즈니스 로직에서 직접 연쇄 삭제를 구현해야 할지

@OnDelete라는 어노테이션 존재를 처음 알긴 했지만, 이건 DDL 생성 시에 유효합니다.
저희는 DDL 옵션을 꺼두고 개발하고 있기에 의미가 없으며, 심지어 저흰 연관관계에 있는 데이터들 중 "삭제"가 되는 것들이 있고, "삭제가 되는 것처럼"(soft delete) 보여야 하는 것들이 있기에
DBMS의 CASCADE 옵션에 의존하면 위험해진다고 생각합니다.

Copy link
Member

@psychology50 psychology50 left a comment

Choose a reason for hiding this comment

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

확인했습니다~ 작업하시느라 수고하셨어요!

@asn6878 asn6878 merged commit e80cf8b into dev Jul 9, 2024
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants