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/CK-240] 골룸 관련 부분 의존성 리팩토링을 한다 #207

Merged
merged 12 commits into from
May 18, 2024
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
refactor: 골룸 생성, 나가기 이벤트 네이밍 변경
miseongk committed Feb 10, 2024
commit 660af6fff00029cd475c0969a63aa1d5a1d8c8a4
Original file line number Diff line number Diff line change
@@ -9,7 +9,7 @@
import co.kirikiri.goalroom.domain.GoalRoomRole;
import co.kirikiri.goalroom.persistence.GoalRoomPendingMemberRepository;
import co.kirikiri.goalroom.persistence.GoalRoomRepository;
import co.kirikiri.goalroom.service.event.GoalRoomLeaderUpdateEvent;
import co.kirikiri.goalroom.service.event.GoalRoomCreateEvent;
import co.kirikiri.persistence.member.MemberRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
@@ -20,17 +20,17 @@
@Service
@RequiredArgsConstructor
@ExceptionConvert
public class GoalRoomLeaderUpdateEventListener {
public class GoalRoomCreateEventListener {

private final GoalRoomRepository goalRoomRepository;
private final MemberRepository memberRepository;
private final GoalRoomPendingMemberRepository goalRoomPendingMemberRepository;

@TransactionalEventListener(phase = TransactionPhase.BEFORE_COMMIT)
@Transactional
public void handleGoalRoomLeaderUpdate(final GoalRoomLeaderUpdateEvent goalRoomLeaderUpdateEvent) {
final Member leader = findMemberByIdentifier(goalRoomLeaderUpdateEvent.leaderIdentifier());
final GoalRoom goalRoom = findGoalRoomById(goalRoomLeaderUpdateEvent);
public void handleGoalRoomLeaderUpdate(final GoalRoomCreateEvent goalRoomCreateEvent) {
final Member leader = findMemberByIdentifier(goalRoomCreateEvent.leaderIdentifier());
final GoalRoom goalRoom = findGoalRoomById(goalRoomCreateEvent);

final GoalRoomPendingMember goalRoomLeader = new GoalRoomPendingMember(GoalRoomRole.LEADER, goalRoom,
leader.getId());
@@ -42,8 +42,8 @@ private Member findMemberByIdentifier(final String memberIdentifier) {
.orElseThrow(() -> new NotFoundException("존재하지 않는 회원입니다."));
}

private GoalRoom findGoalRoomById(final GoalRoomLeaderUpdateEvent goalRoomLeaderUpdateEvent) {
return goalRoomRepository.findById(goalRoomLeaderUpdateEvent.goalRoomId())
private GoalRoom findGoalRoomById(final GoalRoomCreateEvent goalRoomCreateEvent) {
return goalRoomRepository.findById(goalRoomCreateEvent.goalRoomId())
.orElseThrow(() -> new NotFoundException("존재하지 않는 골룸입니다."));
}
}
Original file line number Diff line number Diff line change
@@ -23,8 +23,8 @@
import co.kirikiri.goalroom.service.dto.GoalRoomCreateDto;
import co.kirikiri.goalroom.service.dto.GoalRoomRoadmapNodeDto;
import co.kirikiri.goalroom.service.dto.request.GoalRoomCreateRequest;
import co.kirikiri.goalroom.service.event.EmptyGoalRoomDeleteEvent;
import co.kirikiri.goalroom.service.event.GoalRoomLeaderUpdateEvent;
import co.kirikiri.goalroom.service.event.GoalRoomCreateEvent;
import co.kirikiri.goalroom.service.event.GoalRoomLeaveEvent;
import co.kirikiri.goalroom.service.mapper.GoalRoomMapper;
import co.kirikiri.persistence.member.MemberRepository;
import co.kirikiri.persistence.roadmap.RoadmapContentRepository;
@@ -55,7 +55,7 @@ public Long create(final GoalRoomCreateRequest goalRoomCreateRequest, final Stri
final GoalRoom goalRoom = createGoalRoom(goalRoomCreateDto, roadmapContent);
final GoalRoom savedGoalRoom = goalRoomRepository.save(goalRoom);

applicationEventPublisher.publishEvent(new GoalRoomLeaderUpdateEvent(savedGoalRoom.getId(), memberIdentifier));
applicationEventPublisher.publishEvent(new GoalRoomCreateEvent(savedGoalRoom.getId(), memberIdentifier));

return savedGoalRoom.getId();
}
@@ -175,7 +175,7 @@ public void leave(final String identifier, final Long goalRoomId) {
leaveCompletedGoalRoom(member, goalRoom);
}

applicationEventPublisher.publishEvent(new EmptyGoalRoomDeleteEvent(goalRoomId));
applicationEventPublisher.publishEvent(new GoalRoomLeaveEvent(goalRoomId));
}

private GoalRoom findGoalRoomById(final Long goalRoomId) {
Original file line number Diff line number Diff line change
@@ -8,7 +8,7 @@
import co.kirikiri.goalroom.persistence.GoalRoomMemberRepository;
import co.kirikiri.goalroom.persistence.GoalRoomPendingMemberRepository;
import co.kirikiri.goalroom.persistence.GoalRoomRepository;
import co.kirikiri.goalroom.service.event.EmptyGoalRoomDeleteEvent;
import co.kirikiri.goalroom.service.event.GoalRoomLeaveEvent;
import java.util.List;
import lombok.RequiredArgsConstructor;
import org.springframework.scheduling.annotation.Async;
@@ -19,7 +19,7 @@
@Service
@RequiredArgsConstructor
@ExceptionConvert
public class EmptyGoalRoomDeleteEventListener {
public class GoalRoomLeaveEventListener {

private final GoalRoomRepository goalRoomRepository;
private final GoalRoomMemberRepository goalRoomMemberRepository;
@@ -28,8 +28,8 @@ public class EmptyGoalRoomDeleteEventListener {
@Async
@TransactionalEventListener
@Transactional
public void handleDeleteEmptyGoalRoom(final EmptyGoalRoomDeleteEvent emptyGoalRoomDeleteEvent) {
final GoalRoom goalRoom = findGoalRoomById(emptyGoalRoomDeleteEvent.goalRoomId());
public void handleDeleteEmptyGoalRoom(final GoalRoomLeaveEvent goalRoomLeaveEvent) {
final GoalRoom goalRoom = findGoalRoomById(goalRoomLeaveEvent.goalRoomId());
final List<GoalRoomMember> goalRoomMembers = goalRoomMemberRepository.findByGoalRoom(goalRoom);
final List<GoalRoomPendingMember> goalRoomPendingMembers = goalRoomPendingMemberRepository.findByGoalRoom(
goalRoom);
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package co.kirikiri.goalroom.service.event;

public record GoalRoomLeaderUpdateEvent(
public record GoalRoomCreateEvent(
Long goalRoomId,
String leaderIdentifier
) {
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package co.kirikiri.goalroom.service.event;

public record EmptyGoalRoomDeleteEvent(
public record GoalRoomLeaveEvent(
Long goalRoomId
) {

Original file line number Diff line number Diff line change
@@ -22,7 +22,7 @@
import co.kirikiri.goalroom.domain.vo.Period;
import co.kirikiri.goalroom.persistence.GoalRoomPendingMemberRepository;
import co.kirikiri.goalroom.persistence.GoalRoomRepository;
import co.kirikiri.goalroom.service.event.GoalRoomLeaderUpdateEvent;
import co.kirikiri.goalroom.service.event.GoalRoomCreateEvent;
import co.kirikiri.persistence.member.MemberRepository;
import java.time.LocalDate;
import java.util.List;
@@ -34,7 +34,7 @@
import org.mockito.junit.jupiter.MockitoExtension;

@ExtendWith(MockitoExtension.class)
class GoalRoomLeaderUpdateEventListenerTest {
class GoalRoomCreateEventListenerTest {

private static final Member MEMBER = new Member(1L, new Identifier("identifier1"),
null, new EncryptedPassword(new Password("password1!")), new Nickname("닉네임"),
@@ -50,7 +50,7 @@ null, new EncryptedPassword(new Password("password1!")), new Nickname("닉네임
private GoalRoomPendingMemberRepository goalRoomPendingMemberRepository;

@InjectMocks
private GoalRoomLeaderUpdateEventListener goalRoomLeaderUpdateEventListener;
private GoalRoomCreateEventListener goalRoomCreateEventListener;

@Test
void 정상적으로_골룸의_리더를_저장한다() {
@@ -64,8 +64,8 @@ null, new EncryptedPassword(new Password("password1!")), new Nickname("닉네임

// when
// then
assertDoesNotThrow(() -> goalRoomLeaderUpdateEventListener.handleGoalRoomLeaderUpdate(
new GoalRoomLeaderUpdateEvent(1L, "identifier1")));
assertDoesNotThrow(() -> goalRoomCreateEventListener.handleGoalRoomLeaderUpdate(
new GoalRoomCreateEvent(1L, "identifier1")));
}

@Test
@@ -76,8 +76,8 @@ null, new EncryptedPassword(new Password("password1!")), new Nickname("닉네임
// when
// then
assertThatThrownBy(
() -> goalRoomLeaderUpdateEventListener.handleGoalRoomLeaderUpdate(
new GoalRoomLeaderUpdateEvent(1L, "identifier2")))
() -> goalRoomCreateEventListener.handleGoalRoomLeaderUpdate(
new GoalRoomCreateEvent(1L, "identifier2")))
.isInstanceOf(NotFoundException.class);
}

@@ -92,8 +92,8 @@ null, new EncryptedPassword(new Password("password1!")), new Nickname("닉네임
// when
// then
assertThatThrownBy(
() -> goalRoomLeaderUpdateEventListener.handleGoalRoomLeaderUpdate(
new GoalRoomLeaderUpdateEvent(2L, "identifier1")))
() -> goalRoomCreateEventListener.handleGoalRoomLeaderUpdate(
new GoalRoomCreateEvent(2L, "identifier1")))
.isInstanceOf(NotFoundException.class);
}

Original file line number Diff line number Diff line change
@@ -26,7 +26,7 @@
import co.kirikiri.goalroom.persistence.GoalRoomMemberRepository;
import co.kirikiri.goalroom.persistence.GoalRoomPendingMemberRepository;
import co.kirikiri.goalroom.persistence.GoalRoomRepository;
import co.kirikiri.goalroom.service.event.EmptyGoalRoomDeleteEvent;
import co.kirikiri.goalroom.service.event.GoalRoomLeaveEvent;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Collections;
@@ -39,7 +39,7 @@
import org.mockito.junit.jupiter.MockitoExtension;

@ExtendWith(MockitoExtension.class)
class EmptyGoalRoomDeleteEventListenerTest {
class GoalRoomLeaveEventListenerTest {

private static final Member MEMBER = new Member(1L, new Identifier("identifier1"),
null, new EncryptedPassword(new Password("password1!")), new Nickname("닉네임"),
@@ -55,7 +55,7 @@ null, new EncryptedPassword(new Password("password1!")), new Nickname("닉네임
private GoalRoomPendingMemberRepository goalRoomPendingMemberRepository;

@InjectMocks
private EmptyGoalRoomDeleteEventListener emptyGoalRoomDeleteEventListener;
private GoalRoomLeaveEventListener goalRoomLeaveEventListener;

@Test
void 정상적으로_빈_골룸을_삭제한다() {
@@ -71,8 +71,8 @@ null, new EncryptedPassword(new Password("password1!")), new Nickname("닉네임

// when
// then
assertDoesNotThrow(() -> emptyGoalRoomDeleteEventListener.handleDeleteEmptyGoalRoom(
new EmptyGoalRoomDeleteEvent(1L)));
assertDoesNotThrow(() -> goalRoomLeaveEventListener.handleDeleteEmptyGoalRoom(
new GoalRoomLeaveEvent(1L)));
}

@Test
@@ -83,8 +83,8 @@ null, new EncryptedPassword(new Password("password1!")), new Nickname("닉네임
// when
// then
assertThatThrownBy(
() -> emptyGoalRoomDeleteEventListener.handleDeleteEmptyGoalRoom(
new EmptyGoalRoomDeleteEvent(2L)))
() -> goalRoomLeaveEventListener.handleDeleteEmptyGoalRoom(
new GoalRoomLeaveEvent(2L)))
.isInstanceOf(NotFoundException.class);
}

@@ -102,8 +102,8 @@ null, new EncryptedPassword(new Password("password1!")), new Nickname("닉네임

// when
// then
assertDoesNotThrow(() -> emptyGoalRoomDeleteEventListener.handleDeleteEmptyGoalRoom(
new EmptyGoalRoomDeleteEvent(1L)));
assertDoesNotThrow(() -> goalRoomLeaveEventListener.handleDeleteEmptyGoalRoom(
new GoalRoomLeaveEvent(1L)));

verify(goalRoomRepository, never()).delete(any());
}