From bcbddeaf55697c56c89c11a61e99661074607c2a Mon Sep 17 00:00:00 2001 From: hs12 Date: Thu, 22 Aug 2024 22:30:07 +0900 Subject: [PATCH 1/5] =?UTF-8?q?[feat]=20:=20=EC=A7=81=EA=B5=B0=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/dnd/gongmuin/member/domain/JobGroup.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/dnd/gongmuin/member/domain/JobGroup.java b/src/main/java/com/dnd/gongmuin/member/domain/JobGroup.java index bc9a5484..ef22a358 100644 --- a/src/main/java/com/dnd/gongmuin/member/domain/JobGroup.java +++ b/src/main/java/com/dnd/gongmuin/member/domain/JobGroup.java @@ -13,9 +13,14 @@ @RequiredArgsConstructor public enum JobGroup { - ENGINEERING("공업"), - ADMINISTRATION("행정"), - MACHINE("기계"); + ENG("공업"), + ME("기계"), + CSM("법원경비관리"), + PH("보건"), + PHH("보건위생"), + JA("사법행정사무"), + ICT("정보통신"), + AD("행정"); private final String label; From 8c1f53b1aa5e2d077be248e4317793037bcb7be1 Mon Sep 17 00:00:00 2001 From: hs12 Date: Thu, 22 Aug 2024 22:30:17 +0900 Subject: [PATCH 2/5] =?UTF-8?q?[feat]=20:=20=EC=A7=81=EB=A0=AC=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gongmuin/member/domain/JobCategory.java | 49 ++++++++++++++++++- 1 file changed, 47 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/dnd/gongmuin/member/domain/JobCategory.java b/src/main/java/com/dnd/gongmuin/member/domain/JobCategory.java index a56e95e3..6db3b469 100644 --- a/src/main/java/com/dnd/gongmuin/member/domain/JobCategory.java +++ b/src/main/java/com/dnd/gongmuin/member/domain/JobCategory.java @@ -12,7 +12,52 @@ @RequiredArgsConstructor public enum JobCategory { - GAS("가스"); // TODO: 7/20/24 필드 추가 + GME("일반기계"), + AM("농업기계"), + ELEC("전자"), + TEXT("섬유"), + GCE("일반화공"), + + ME("기계"), + HT("난방"), + TM("열관리"), + OP("운전"), + + SM("경비관리"), + + BME("의공"), + ENV("환경"), + PH("보건"), + SAN("위생"), + PHARM("약무"), + PATH("병리"), + RAD("방사선"), + RT("재활치료"), + MR("의무기록"), + + NA("간호조무"), + CK("조리"), + + IA("조사사무"), + CM("법정경위"), + CW("사무"), + AS("행정사무"), + CA("법원사무"), + SG("속기"), + + VI("영상"), + EO("전기 운영"), + + CO("교정"), + AD("행정"), + TX("세무"), + ST("통계"), + AU("감사"), + EA("교육행정"), + LB("사서"), + CS("관세"), + SW("사회복지"); + private final String label; @@ -26,4 +71,4 @@ public static JobCategory from(String input) { private boolean isEqual(String input) { return input.equals(this.label); } -} + } From 131a96714348cc01cc146111b9ad95555bf196a6 Mon Sep 17 00:00:00 2001 From: hs12 Date: Thu, 22 Aug 2024 22:43:53 +0900 Subject: [PATCH 3/5] =?UTF-8?q?[test]=20:=20=EC=A7=81=EA=B5=B0/=EC=A7=81?= =?UTF-8?q?=EB=A0=AC=20=EC=88=98=EC=A0=95=20=EC=82=AC=ED=95=AD=20=ED=9A=8C?= =?UTF-8?q?=EC=9B=90=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=BD=94=EB=93=9C?= =?UTF-8?q?=EC=97=90=20=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../auth/controller/AuthControllerTest.java | 4 ++-- .../gongmuin/auth/service/AuthServiceTest.java | 8 +++++--- .../gongmuin/common/fixture/MemberFixture.java | 16 ++++++++-------- .../member/controller/MemberControllerTest.java | 6 +++--- .../dnd/gongmuin/member/domain/MemberTest.java | 5 ++++- .../member/service/MemberServiceTest.java | 2 +- .../controller/QuestionPostControllerTest.java | 2 +- 7 files changed, 24 insertions(+), 19 deletions(-) diff --git a/src/test/java/com/dnd/gongmuin/auth/controller/AuthControllerTest.java b/src/test/java/com/dnd/gongmuin/auth/controller/AuthControllerTest.java index 290799da..9118f151 100644 --- a/src/test/java/com/dnd/gongmuin/auth/controller/AuthControllerTest.java +++ b/src/test/java/com/dnd/gongmuin/auth/controller/AuthControllerTest.java @@ -25,7 +25,7 @@ import jakarta.servlet.http.Cookie; @DisplayName("[AuthController] 통합테스트") -public class AuthControllerTest extends ApiTestSupport { +class AuthControllerTest extends ApiTestSupport { @Autowired private MemberRepository memberRepository; @@ -64,7 +64,7 @@ void checkNickName() throws Exception { @Test void signUp() throws Exception { // given - AdditionalInfoRequest request = new AdditionalInfoRequest("dsaf@korea.kr", "회원", "공업", "가스"); + AdditionalInfoRequest request = new AdditionalInfoRequest("dsaf@korea.kr", "회원", "공업", "일반기계"); Member savedMember = memberRepository.save(MemberFixture.member3()); AuthInfo authInfo = AuthInfo.of( diff --git a/src/test/java/com/dnd/gongmuin/auth/service/AuthServiceTest.java b/src/test/java/com/dnd/gongmuin/auth/service/AuthServiceTest.java index 8e60e20b..15d96781 100644 --- a/src/test/java/com/dnd/gongmuin/auth/service/AuthServiceTest.java +++ b/src/test/java/com/dnd/gongmuin/auth/service/AuthServiceTest.java @@ -31,6 +31,8 @@ import com.dnd.gongmuin.auth.repository.AuthRepository; import com.dnd.gongmuin.common.fixture.AuthFixture; import com.dnd.gongmuin.common.fixture.MemberFixture; +import com.dnd.gongmuin.member.domain.JobCategory; +import com.dnd.gongmuin.member.domain.JobGroup; import com.dnd.gongmuin.member.domain.Member; import com.dnd.gongmuin.member.repository.MemberRepository; import com.dnd.gongmuin.member.service.MemberService; @@ -144,7 +146,7 @@ void isDuplicatedNickname() { @Test void signUp() { // given - AdditionalInfoRequest request = new AdditionalInfoRequest("abc123@korea.com", "김신규", "공업", "가스"); + AdditionalInfoRequest request = new AdditionalInfoRequest("abc123@korea.com", "김신규", "공업", "일반기계"); MockHttpServletResponse mockResponse = new MockHttpServletResponse(); Member member1 = MemberFixture.member3(); @@ -159,8 +161,8 @@ void signUp() { .containsExactlyInAnyOrder( "abc123@korea.com", "김신규", - GAS, - ENGINEERING + JobGroup.ME, + JobCategory.ME ); } diff --git a/src/test/java/com/dnd/gongmuin/common/fixture/MemberFixture.java b/src/test/java/com/dnd/gongmuin/common/fixture/MemberFixture.java index 2f690bdb..bf8dad0f 100644 --- a/src/test/java/com/dnd/gongmuin/common/fixture/MemberFixture.java +++ b/src/test/java/com/dnd/gongmuin/common/fixture/MemberFixture.java @@ -18,8 +18,8 @@ public static Member member() { return Member.of( "김회원", "회원123", - JobGroup.ENGINEERING, - JobCategory.GAS, + JobGroup.ENG, + JobCategory.ME, "KAKAO123/gongmuin@daum.net", "gongmuin@korea.kr", 10000, @@ -31,8 +31,8 @@ public static Member member2() { return Member.of( "회원", "소셜회원", - JobGroup.ENGINEERING, - JobCategory.GAS, + JobGroup.ENG, + JobCategory.ME, "KAKAO123/member2@daum.net", "member2@korea.kr", 20000, @@ -53,8 +53,8 @@ public static Member member4() { return Member.of( "회원", "소셜회원", - JobGroup.ADMINISTRATION, - JobCategory.GAS, + JobGroup.AD, + JobCategory.ME, "KAKAO1234/member2@daum.net", "member@korea.kr", 20000, @@ -66,8 +66,8 @@ public static Member member(Long memberId) { Member member = Member.of( "김회원", "회원123", - JobGroup.ENGINEERING, - JobCategory.GAS, + JobGroup.ENG, + JobCategory.ME, "KAKAO123/gongmuin@daum.net", "gongmuin@korea.kr", 10000, diff --git a/src/test/java/com/dnd/gongmuin/member/controller/MemberControllerTest.java b/src/test/java/com/dnd/gongmuin/member/controller/MemberControllerTest.java index 5e73b3ac..78820fe9 100644 --- a/src/test/java/com/dnd/gongmuin/member/controller/MemberControllerTest.java +++ b/src/test/java/com/dnd/gongmuin/member/controller/MemberControllerTest.java @@ -67,7 +67,7 @@ void getMemberProfile() throws Exception { .andExpect(status().isOk()) .andExpect(jsonPath("nickname").value("김회원")) .andExpect(jsonPath("jobGroup").value("공업")) - .andExpect(jsonPath("jobCategory").value("가스")) + .andExpect(jsonPath("jobCategory").value("기계")) .andExpect(jsonPath("credit").value(10000)); } @@ -75,7 +75,7 @@ void getMemberProfile() throws Exception { @Test void updateMemberProfile() throws Exception { // given - UpdateMemberProfileRequest request = new UpdateMemberProfileRequest("박회원", "행정", "가스"); + UpdateMemberProfileRequest request = new UpdateMemberProfileRequest("박회원", "행정", "세무"); // when // then mockMvc.perform(patch("/api/members/profile/edit") @@ -86,7 +86,7 @@ void updateMemberProfile() throws Exception { .andExpect(status().isOk()) .andExpect(jsonPath("nickname").value("박회원")) .andExpect(jsonPath("jobGroup").value("행정")) - .andExpect(jsonPath("jobCategory").value("가스")) + .andExpect(jsonPath("jobCategory").value("세무")) .andExpect(jsonPath("credit").value(10000)); } diff --git a/src/test/java/com/dnd/gongmuin/member/domain/MemberTest.java b/src/test/java/com/dnd/gongmuin/member/domain/MemberTest.java index c60aed11..af821cca 100644 --- a/src/test/java/com/dnd/gongmuin/member/domain/MemberTest.java +++ b/src/test/java/com/dnd/gongmuin/member/domain/MemberTest.java @@ -31,7 +31,10 @@ void updateAdditionalInfo() { Member member = MemberFixture.member3(); // when - member.updateAdditionalInfo("김회원", "abcd@korea.kr", ENGINEERING, GAS); + member.updateAdditionalInfo("김회원", + "abcd@korea.kr", + JobGroup.ME, + JobCategory.ME); // then assertThat(member).extracting("nickname", "officialEmail") diff --git a/src/test/java/com/dnd/gongmuin/member/service/MemberServiceTest.java b/src/test/java/com/dnd/gongmuin/member/service/MemberServiceTest.java index 05fc4e16..8c1d3716 100644 --- a/src/test/java/com/dnd/gongmuin/member/service/MemberServiceTest.java +++ b/src/test/java/com/dnd/gongmuin/member/service/MemberServiceTest.java @@ -109,7 +109,7 @@ void getMemberProfileThrowException() { void updateMemberProfile() { // given Member member = MemberFixture.member(); - UpdateMemberProfileRequest request = new UpdateMemberProfileRequest("박회원", "공업", "가스"); + UpdateMemberProfileRequest request = new UpdateMemberProfileRequest("박회원", "공업", "일반기계"); given(memberRepository.findByOfficialEmail(anyString())).willReturn(member); diff --git a/src/test/java/com/dnd/gongmuin/question_post/controller/QuestionPostControllerTest.java b/src/test/java/com/dnd/gongmuin/question_post/controller/QuestionPostControllerTest.java index 51871f76..277cffb1 100644 --- a/src/test/java/com/dnd/gongmuin/question_post/controller/QuestionPostControllerTest.java +++ b/src/test/java/com/dnd/gongmuin/question_post/controller/QuestionPostControllerTest.java @@ -246,7 +246,7 @@ void updateQuestionPost() throws Exception { questionPost.getContent() + "ts", null, questionPost.getReward() + 1000, - JobGroup.ADMINISTRATION.getLabel() + JobGroup.AD.getLabel() ); mockMvc.perform(patch("/api/question-posts/{questionPostId}/edit", questionPost.getId()) .content(toJson(request)) From b2ccd1cd06809deb634f37b502aa40c3f7f0c889 Mon Sep 17 00:00:00 2001 From: hs12 Date: Fri, 23 Aug 2024 14:01:48 +0900 Subject: [PATCH 4/5] =?UTF-8?q?[test]=20:=20=EC=A7=81=EB=A0=AC/=EC=A7=81?= =?UTF-8?q?=EA=B5=B0=20=EC=88=98=EC=A0=95=EC=82=AC=ED=95=AD=20=EB=B0=98?= =?UTF-8?q?=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/dnd/gongmuin/auth/service/AuthServiceTest.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/test/java/com/dnd/gongmuin/auth/service/AuthServiceTest.java b/src/test/java/com/dnd/gongmuin/auth/service/AuthServiceTest.java index 15d96781..407ead0e 100644 --- a/src/test/java/com/dnd/gongmuin/auth/service/AuthServiceTest.java +++ b/src/test/java/com/dnd/gongmuin/auth/service/AuthServiceTest.java @@ -1,7 +1,5 @@ package com.dnd.gongmuin.auth.service; -import static com.dnd.gongmuin.member.domain.JobCategory.*; -import static com.dnd.gongmuin.member.domain.JobGroup.*; import static org.assertj.core.api.Assertions.*; import static org.mockito.BDDMockito.*; @@ -151,7 +149,7 @@ void signUp() { Member member1 = MemberFixture.member3(); given(memberRepository.findBySocialEmail(member1.getSocialEmail())).willReturn( - Optional.ofNullable(member1)); + Optional.of(member1)); // when authService.signUp(request, member1.getSocialEmail(), mockResponse); @@ -161,8 +159,8 @@ void signUp() { .containsExactlyInAnyOrder( "abc123@korea.com", "김신규", - JobGroup.ME, - JobCategory.ME + JobGroup.ENG, + JobCategory.GME ); } From 631ed187f72746fbcba0f6ecc346cb99bb6ca3b1 Mon Sep 17 00:00:00 2001 From: hs12 Date: Fri, 23 Aug 2024 14:02:32 +0900 Subject: [PATCH 5/5] =?UTF-8?q?[style]=20:=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EB=A6=AC=ED=8F=AC=EB=A9=A7=ED=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gongmuin/member/domain/JobCategory.java | 3 +- .../dnd/gongmuin/member/domain/Member.java | 15 ++---- .../controller/QuestionPostController.java | 2 +- .../handler/CustomAccessDeniedHandler.java | 46 +++++++++---------- .../common/support/ApiTestSupport.java | 4 +- .../gongmuin/member/domain/MemberTest.java | 2 - .../service/QuestionPostServiceTest.java | 12 +++-- 7 files changed, 38 insertions(+), 46 deletions(-) diff --git a/src/main/java/com/dnd/gongmuin/member/domain/JobCategory.java b/src/main/java/com/dnd/gongmuin/member/domain/JobCategory.java index 6db3b469..3b0b3dbd 100644 --- a/src/main/java/com/dnd/gongmuin/member/domain/JobCategory.java +++ b/src/main/java/com/dnd/gongmuin/member/domain/JobCategory.java @@ -58,7 +58,6 @@ public enum JobCategory { CS("관세"), SW("사회복지"); - private final String label; public static JobCategory from(String input) { @@ -71,4 +70,4 @@ public static JobCategory from(String input) { private boolean isEqual(String input) { return input.equals(this.label); } - } +} diff --git a/src/main/java/com/dnd/gongmuin/member/domain/Member.java b/src/main/java/com/dnd/gongmuin/member/domain/Member.java index 08160293..1eb57471 100644 --- a/src/main/java/com/dnd/gongmuin/member/domain/Member.java +++ b/src/main/java/com/dnd/gongmuin/member/domain/Member.java @@ -5,6 +5,7 @@ import static lombok.AccessLevel.*; import java.util.Random; + import com.dnd.gongmuin.common.entity.TimeBaseEntity; import com.dnd.gongmuin.common.exception.runtime.ValidationException; import com.dnd.gongmuin.member.exception.MemberErrorCode; @@ -23,41 +24,31 @@ @NoArgsConstructor(access = PROTECTED) public class Member extends TimeBaseEntity { - + @Column(name = "profile_image_no", nullable = false) + private final int profileImageNo = setRandomNumber(); @Id @GeneratedValue(strategy = IDENTITY) @Column(name = "member_id") private Long id; - @Column(name = "nickname") private String nickname; - @Column(name = "social_name", nullable = false) private String socialName; - @Enumerated(STRING) @Column(name = "job_group") private JobGroup jobGroup; - @Enumerated(STRING) @Column(name = "job_category") private JobCategory jobCategory; - @Column(name = "social_email", nullable = false) private String socialEmail; - @Column(name = "official_email") private String officialEmail; - @Column(name = "credit", nullable = false) private int credit; - @Column(name = "role", nullable = false) private String role; - @Column(name = "profile_image_no", nullable = false) - private final int profileImageNo = setRandomNumber(); - @Builder(access = PRIVATE) private Member(String nickname, String socialName, JobGroup jobGroup, JobCategory jobCategory, String socialEmail, String officialEmail, int credit, String role) { diff --git a/src/main/java/com/dnd/gongmuin/question_post/controller/QuestionPostController.java b/src/main/java/com/dnd/gongmuin/question_post/controller/QuestionPostController.java index 6d16904c..ed83c24c 100644 --- a/src/main/java/com/dnd/gongmuin/question_post/controller/QuestionPostController.java +++ b/src/main/java/com/dnd/gongmuin/question_post/controller/QuestionPostController.java @@ -55,7 +55,7 @@ public ResponseEntity getQuestionPostById( @AuthenticationPrincipal Member member ) { QuestionPostDetailResponse response = - questionPostService.getQuestionPostById(questionPostId,member); + questionPostService.getQuestionPostById(questionPostId, member); return ResponseEntity.ok(response); } diff --git a/src/main/java/com/dnd/gongmuin/security/handler/CustomAccessDeniedHandler.java b/src/main/java/com/dnd/gongmuin/security/handler/CustomAccessDeniedHandler.java index c1347b1d..0181ca55 100644 --- a/src/main/java/com/dnd/gongmuin/security/handler/CustomAccessDeniedHandler.java +++ b/src/main/java/com/dnd/gongmuin/security/handler/CustomAccessDeniedHandler.java @@ -25,29 +25,6 @@ public class CustomAccessDeniedHandler implements AccessDeniedHandler { private static final String ROLE_GUEST = "ROLE_GUEST"; private static final String ROLE_USER = "ROLE_USER"; - @Override - public void handle(HttpServletRequest request, HttpServletResponse response, - AccessDeniedException accessDeniedException) throws IOException, ServletException { - // 현재 인증된 사용자 정보 가져오기 - Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); - - // 사용자 권한에 따라 다른 응답 제공 - if (!Objects.isNull(accessDeniedException)) { - if (!matchAuthenticationFromRole(authentication, ROLE_USER)) { - // ROLE_USER 권한이 없는 경우 - setUpResponse(response, SecurityErrorCode.FORBIDDEN_USER); - } else if (!matchAuthenticationFromRole(authentication, ROLE_GUEST)) { - // ROLE_GUEST 권한이 없는 경우 - setUpResponse(response, SecurityErrorCode.FORBIDDEN_GUEST); - } else { - // 기타 권한이 없는 경우 - setUpResponse(response, SecurityErrorCode.FORBIDDEN_MISMATCH); - } - } else { - setUpResponse(response, SecurityErrorCode.FORBIDDEN_MISMATCH); - } - } - private static boolean matchAuthenticationFromRole(Authentication authentication, String role) { String authRole = authentication.getAuthorities().stream() .map(GrantedAuthority::getAuthority) @@ -74,4 +51,27 @@ private static void setUpResponse( response.getWriter().write(jsonResponse); } + + @Override + public void handle(HttpServletRequest request, HttpServletResponse response, + AccessDeniedException accessDeniedException) throws IOException, ServletException { + // 현재 인증된 사용자 정보 가져오기 + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + + // 사용자 권한에 따라 다른 응답 제공 + if (!Objects.isNull(accessDeniedException)) { + if (!matchAuthenticationFromRole(authentication, ROLE_USER)) { + // ROLE_USER 권한이 없는 경우 + setUpResponse(response, SecurityErrorCode.FORBIDDEN_USER); + } else if (!matchAuthenticationFromRole(authentication, ROLE_GUEST)) { + // ROLE_GUEST 권한이 없는 경우 + setUpResponse(response, SecurityErrorCode.FORBIDDEN_GUEST); + } else { + // 기타 권한이 없는 경우 + setUpResponse(response, SecurityErrorCode.FORBIDDEN_MISMATCH); + } + } else { + setUpResponse(response, SecurityErrorCode.FORBIDDEN_MISMATCH); + } + } } diff --git a/src/test/java/com/dnd/gongmuin/common/support/ApiTestSupport.java b/src/test/java/com/dnd/gongmuin/common/support/ApiTestSupport.java index a290db06..95ba1283 100644 --- a/src/test/java/com/dnd/gongmuin/common/support/ApiTestSupport.java +++ b/src/test/java/com/dnd/gongmuin/common/support/ApiTestSupport.java @@ -34,9 +34,9 @@ public abstract class ApiTestSupport extends TestContainerSupport { @Autowired protected ObjectMapper objectMapper; @Autowired - private TokenProvider tokenProvider; - @Autowired protected CookieUtil cookieUtil; + @Autowired + private TokenProvider tokenProvider; protected String toJson(Object object) throws JsonProcessingException { return objectMapper.writeValueAsString(object); diff --git a/src/test/java/com/dnd/gongmuin/member/domain/MemberTest.java b/src/test/java/com/dnd/gongmuin/member/domain/MemberTest.java index af821cca..836e5456 100644 --- a/src/test/java/com/dnd/gongmuin/member/domain/MemberTest.java +++ b/src/test/java/com/dnd/gongmuin/member/domain/MemberTest.java @@ -1,7 +1,5 @@ package com.dnd.gongmuin.member.domain; -import static com.dnd.gongmuin.member.domain.JobCategory.*; -import static com.dnd.gongmuin.member.domain.JobGroup.*; import static org.assertj.core.api.Assertions.*; import org.junit.jupiter.api.DisplayName; diff --git a/src/test/java/com/dnd/gongmuin/question_post/service/QuestionPostServiceTest.java b/src/test/java/com/dnd/gongmuin/question_post/service/QuestionPostServiceTest.java index 7ea65702..402bd296 100644 --- a/src/test/java/com/dnd/gongmuin/question_post/service/QuestionPostServiceTest.java +++ b/src/test/java/com/dnd/gongmuin/question_post/service/QuestionPostServiceTest.java @@ -93,11 +93,13 @@ void getQuestionPostById_noInteraction() { .willReturn(Optional.of(questionPost)); given(interactionRepository - .existsByQuestionPostIdAndMemberIdAndTypeAndIsInteractedTrue(questionPostId, member.getId(), InteractionType.SAVED)) + .existsByQuestionPostIdAndMemberIdAndTypeAndIsInteractedTrue(questionPostId, member.getId(), + InteractionType.SAVED)) .willReturn(false); given(interactionRepository - .existsByQuestionPostIdAndMemberIdAndTypeAndIsInteractedTrue(questionPostId, member.getId(), InteractionType.RECOMMEND)) + .existsByQuestionPostIdAndMemberIdAndTypeAndIsInteractedTrue(questionPostId, member.getId(), + InteractionType.RECOMMEND)) .willReturn(false); //when @@ -160,10 +162,12 @@ void getQuestionPostById_my_interaction() { .willReturn(Optional.of(questionPost)); given(interactionRepository - .existsByQuestionPostIdAndMemberIdAndTypeAndIsInteractedTrue(questionPostId, member.getId(), InteractionType.SAVED)) + .existsByQuestionPostIdAndMemberIdAndTypeAndIsInteractedTrue(questionPostId, member.getId(), + InteractionType.SAVED)) .willReturn(false); given(interactionRepository - .existsByQuestionPostIdAndMemberIdAndTypeAndIsInteractedTrue(questionPostId, member.getId(), InteractionType.RECOMMEND)) + .existsByQuestionPostIdAndMemberIdAndTypeAndIsInteractedTrue(questionPostId, member.getId(), + InteractionType.RECOMMEND)) .willReturn(true); InteractionCount recommendCount