From e55209f28eae1c090f267916775988f99927cbdb Mon Sep 17 00:00:00 2001 From: Sihun23 Date: Wed, 5 Feb 2025 02:07:54 +0900 Subject: [PATCH 1/2] =?UTF-8?q?CLAP-271=20Fix:=20LazyInitializationExcepti?= =?UTF-8?q?on=20=ED=95=B4=EA=B2=B0=EC=9D=84=20=EC=9C=84=ED=95=9C=20Lazy=20?= =?UTF-8?q?=ED=95=84=EB=93=9C=20=EC=B4=88=EA=B8=B0=ED=99=94=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 --- .../application/service/admin/DeleteMemberService.java | 5 +++++ src/main/java/clap/server/domain/model/member/Member.java | 3 +++ 2 files changed, 8 insertions(+) diff --git a/src/main/java/clap/server/application/service/admin/DeleteMemberService.java b/src/main/java/clap/server/application/service/admin/DeleteMemberService.java index 3117d3e3..862588d9 100644 --- a/src/main/java/clap/server/application/service/admin/DeleteMemberService.java +++ b/src/main/java/clap/server/application/service/admin/DeleteMemberService.java @@ -7,7 +7,9 @@ import clap.server.exception.ApplicationException; import clap.server.exception.code.MemberErrorCode; import lombok.RequiredArgsConstructor; +import org.hibernate.Hibernate; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; @Service @RequiredArgsConstructor @@ -15,11 +17,14 @@ public class DeleteMemberService implements DeleteMemberUsecase { private final LoadMemberPort loadMemberPort; private final CommandMemberPort commandMemberPort; + @Transactional @Override public void deleteMember(Long memberId) { Member member = loadMemberPort.findById(memberId) .orElseThrow(() -> new ApplicationException(MemberErrorCode.MEMBER_NOT_FOUND)); + Hibernate.initialize(member.getDepartment()); + member.setStatusDeleted(); commandMemberPort.save(member); diff --git a/src/main/java/clap/server/domain/model/member/Member.java b/src/main/java/clap/server/domain/model/member/Member.java index 82ed06f4..13b51b22 100644 --- a/src/main/java/clap/server/domain/model/member/Member.java +++ b/src/main/java/clap/server/domain/model/member/Member.java @@ -9,6 +9,7 @@ import lombok.*; import lombok.experimental.SuperBuilder; + @Getter @SuperBuilder @NoArgsConstructor(access = AccessLevel.PROTECTED) @@ -23,6 +24,8 @@ public class Member extends BaseTime { private String imageUrl; private MemberStatus status; private String password; + private Department department; + public Member(MemberInfo memberInfo, Boolean agitNotificationEnabled, Boolean emailNotificationEnabled, Boolean kakaoworkNotificationEnabled, From e555e0e92551853c79fbafc9babc32690722dc2e Mon Sep 17 00:00:00 2001 From: Sihun23 Date: Wed, 5 Feb 2025 02:20:40 +0900 Subject: [PATCH 2/2] =?UTF-8?q?CLAP-271=20fix:Member=EB=8F=84=EB=A9=94?= =?UTF-8?q?=EC=9D=B8=20department=20=EC=B6=94=EA=B0=80=EC=97=90=20?= =?UTF-8?q?=EB=94=B0=EB=A5=B8=20test=20code=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/clap/server/TestDataFactory.java | 86 +++++++++++++++---- 1 file changed, 69 insertions(+), 17 deletions(-) diff --git a/src/test/java/clap/server/TestDataFactory.java b/src/test/java/clap/server/TestDataFactory.java index e433b310..af8ce39f 100644 --- a/src/test/java/clap/server/TestDataFactory.java +++ b/src/test/java/clap/server/TestDataFactory.java @@ -1,10 +1,12 @@ package clap.server; import clap.server.adapter.inbound.web.dto.task.request.FilterTaskListRequest; +import clap.server.adapter.outbound.persistense.entity.member.constant.DepartmentStatus; import clap.server.adapter.outbound.persistense.entity.member.constant.MemberRole; import clap.server.adapter.outbound.persistense.entity.member.constant.MemberStatus; import clap.server.adapter.outbound.persistense.entity.task.constant.LabelColor; import clap.server.adapter.outbound.persistense.entity.task.constant.TaskStatus; +import clap.server.domain.model.member.Department; import clap.server.domain.model.member.Member; import clap.server.domain.model.member.MemberInfo; import clap.server.domain.model.task.Category; @@ -18,39 +20,90 @@ public class TestDataFactory { public static Member createAdmin() { - return new Member(1L, createAdminInfo(), null, - true, true, true, - null, MemberStatus.ACTIVE, "1111"); + return Member.builder() + .memberId(1L) + .memberInfo(createAdminInfo()) + .admin(null) + .kakaoworkNotificationEnabled(true) + .agitNotificationEnabled(true) + .emailNotificationEnabled(true) + .imageUrl(null) + .status(MemberStatus.ACTIVE) + .password("1111") + .department(createDepartment()) + .build(); } + public static Member createManagerWithReviewer() { - return new Member(2L, createManagerWithReviewerInfo(), createAdmin(), - true, true, true, - null, MemberStatus.ACTIVE, "1111"); + return Member.builder() + .memberId(2L) + .memberInfo(createManagerWithReviewerInfo()) + .admin(createAdmin()) + .kakaoworkNotificationEnabled(true) + .agitNotificationEnabled(true) + .emailNotificationEnabled(true) + .imageUrl(null) + .status(MemberStatus.ACTIVE) + .password("1111") + .department(createDepartment()) + .build(); } + public static Member createManager() { - return new Member(3L, createManagerInfo(), createAdmin(), - true, true, true, - null, MemberStatus.ACTIVE, "1111"); + return Member.builder() + .memberId(3L) + .memberInfo(createManagerInfo()) + .admin(createAdmin()) + .kakaoworkNotificationEnabled(true) + .agitNotificationEnabled(true) + .emailNotificationEnabled(true) + .imageUrl(null) + .status(MemberStatus.ACTIVE) + .password("1111") + .department(createDepartment()) + .build(); } + public static Member createUser() { - return new Member(4L, createUserInfo(), createAdmin(), - true, true, true, - null, MemberStatus.ACTIVE, "1111"); + return Member.builder() + .memberId(4L) + .memberInfo(createUserInfo()) + .admin(createAdmin()) + .kakaoworkNotificationEnabled(true) + .agitNotificationEnabled(true) + .emailNotificationEnabled(true) + .imageUrl(null) + .status(MemberStatus.ACTIVE) + .password("1111") + .department(createDepartment()) + .build(); } - public static MemberInfo createAdminInfo(){ + public static MemberInfo createAdminInfo() { return new MemberInfo("홍길동(관리자)", "atom8426@naver.com", "atom.admin", false, null, MemberRole.ROLE_ADMIN, "인프라"); } - public static MemberInfo createManagerWithReviewerInfo(){ + + public static MemberInfo createManagerWithReviewerInfo() { return new MemberInfo("홍길동(리뷰어)", "atom8426@naver.com", "atom.manager", true, null, MemberRole.ROLE_MANAGER, "인프라"); } - public static MemberInfo createManagerInfo(){ + + public static MemberInfo createManagerInfo() { return new MemberInfo("홍길동(매니저)", "atom8426@naver.com", "atom.manager", false, null, MemberRole.ROLE_MANAGER, "인프라"); } - public static MemberInfo createUserInfo(){ + + public static MemberInfo createUserInfo() { return new MemberInfo("홍길동(사용자)", "atom8426@naver.com", "atom.user", false, null, MemberRole.ROLE_USER, "인프라"); } + public static Department createDepartment() { + return Department.builder() + .departmentId(1L) + .adminId(1L) + .name("IT 부서") + .status(DepartmentStatus.ACTIVE) + .build(); + } + public static Category createMainCategory() { return Category.builder() .categoryId(1L) @@ -100,7 +153,6 @@ public static Label createLabel() { .build(); } - public static PageImpl createTaskPage(List tasks) { return new PageImpl<>(tasks); }