Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
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
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
import com.semosan.api.domain.community.post.repository.PostRepository;
import com.semosan.api.domain.user.repository.UserBlockRepository;
import com.semosan.api.domain.user.entity.User;
import com.semosan.api.domain.user.repository.UserRepository;
import com.semosan.api.domain.user.service.UserReader;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
Expand All @@ -28,14 +28,14 @@ public class CommentService {

private final CommentRepository commentRepository;
private final PostRepository postRepository;
private final UserRepository userRepository;
private final UserReader userReader;
private final UserBlockRepository userBlockRepository;
private final CommunityNotificationService communityNotificationService;

@Transactional
public Comment create(Long postId, Long authorId, String content) {
Post post = findPostOrThrow(postId);
User author = findUserOrThrow(authorId);
User author = userReader.findActiveUserById(authorId);

Comment comment = Comment.create(post, author, content);
Comment savedComment = commentRepository.save(comment);
Expand All @@ -46,7 +46,7 @@ public Comment create(Long postId, Long authorId, String content) {
@Transactional
public Comment reply(Long postId, Long authorId, Long parentId, Long mentionedUserId, String content) {
Post post = findPostOrThrow(postId);
User author = findUserOrThrow(authorId);
User author = userReader.findActiveUserById(authorId);
Comment requestedParent = findActiveCommentOrThrow(parentId);

if (!requestedParent.getPost().getId().equals(postId)) {
Expand All @@ -56,7 +56,7 @@ public Comment reply(Long postId, Long authorId, Long parentId, Long mentionedUs
// 대댓글에 답글을 달면 트리 깊이를 2로 유지하기 위해 1뎁스 댓글로 정규화
Comment actualParent = requestedParent.isReply() ? requestedParent.getParent() : requestedParent;

User mentionedUser = mentionedUserId != null ? findUserOrThrow(mentionedUserId) : null;
User mentionedUser = mentionedUserId != null ? userReader.findActiveUserById(mentionedUserId) : null;

Comment reply = Comment.reply(post, author, actualParent, mentionedUser, content);
Comment savedReply = commentRepository.save(reply);
Expand Down Expand Up @@ -98,11 +98,6 @@ private Post findPostOrThrow(Long postId) {
.orElseThrow(() -> new GeneralException(ErrorStatus.POST_NOT_FOUND));
}

private User findUserOrThrow(Long userId) {
return userRepository.findById(userId)
.orElseThrow(() -> new GeneralException(ErrorStatus.USER_NOT_FOUND));
}

private Comment findActiveCommentOrThrow(Long commentId) {
return commentRepository.findByIdAndDeletedFalse(commentId)
.orElseThrow(() -> new GeneralException(ErrorStatus.COMMENT_NOT_FOUND));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
import com.semosan.api.domain.community.post.entity.Post;
import com.semosan.api.domain.community.post.repository.PostRepository;
import com.semosan.api.domain.user.entity.User;
import com.semosan.api.domain.user.repository.UserRepository;
import com.semosan.api.domain.user.service.UserReader;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.dao.DataIntegrityViolationException;
Expand All @@ -26,7 +26,7 @@ public class PostLikeService {

private final PostLikeRepository postLikeRepository;
private final PostRepository postRepository;
private final UserRepository userRepository;
private final UserReader userReader;
private final CommunityNotificationService communityNotificationService;

/**
Expand Down Expand Up @@ -76,7 +76,6 @@ private Post findPostOrThrow(Long postId) {
}

private User findUserOrThrow(Long userId) {
return userRepository.findById(userId)
.orElseThrow(() -> new GeneralException(ErrorStatus.USER_NOT_FOUND));
return userReader.findActiveUserById(userId);
}
Comment thread
pooreumjung marked this conversation as resolved.
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
import com.semosan.api.domain.community.post.repository.PostImageRepository;
import com.semosan.api.domain.user.repository.UserBlockRepository;
import com.semosan.api.domain.user.entity.User;
import com.semosan.api.domain.user.repository.UserRepository;
import com.semosan.api.domain.user.service.UserReader;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
Expand All @@ -34,7 +34,7 @@ public class FreePostService {
private final PostLikeRepository postLikeRepository;
private final CommentRepository commentRepository;
private final UserBlockRepository userBlockRepository;
private final UserRepository userRepository;
private final UserReader userReader;

@Transactional
public FreePostDetailResponse create(
Expand All @@ -47,8 +47,7 @@ public FreePostDetailResponse create(
if (content == null || content.isBlank()) {
throw new GeneralException(ErrorStatus.POST_CONTENT_REQUIRED);
}
User author = userRepository.findById(authorId)
.orElseThrow(() -> new GeneralException(ErrorStatus.USER_NOT_FOUND));
User author = userReader.findActiveUserById(authorId);

FreePost post = FreePost.create(author, title, content);
freePostRepository.save(post);
Expand All @@ -71,8 +70,7 @@ public Page<FreePostListResponse> search(Long viewerId, String keyword, Pageable
}

public Page<FreePostListResponse> getMyList(Long authorId, Pageable pageable) {
User author = userRepository.findById(authorId)
.orElseThrow(() -> new GeneralException(ErrorStatus.USER_NOT_FOUND));
User author = userReader.findActiveUserById(authorId);
return enrichWithCounts(freePostRepository.findByAuthorAndDeletedFalse(author, pageable));
}
Comment thread
pooreumjung marked this conversation as resolved.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import com.semosan.api.domain.hiking.repository.HikingMemberRepository;
import com.semosan.api.domain.hiking.repository.HikingRecordRepository;
import com.semosan.api.domain.user.entity.User;
import com.semosan.api.domain.user.repository.UserRepository;
import com.semosan.api.domain.user.service.UserReader;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
Expand All @@ -23,12 +23,11 @@ public class RecordPostService {
private final RecordPostRepository recordPostRepository;
private final HikingRecordRepository hikingRecordRepository;
private final HikingMemberRepository hikingMemberRepository;
private final UserRepository userRepository;
private final UserReader userReader;

@Transactional
public RecordPost create(Long authorId, Long hikingRecordId, String content) {
User author = userRepository.findById(authorId)
.orElseThrow(() -> new GeneralException(ErrorStatus.USER_NOT_FOUND));
User author = userReader.findActiveUserById(authorId);
HikingRecord hikingRecord = hikingRecordRepository.findById(hikingRecordId)
.orElseThrow(() -> new GeneralException(ErrorStatus.HIKING_RECORD_NOT_FOUND));

Expand All @@ -45,8 +44,7 @@ public Page<RecordPost> getList(Pageable pageable) {
}

public Page<RecordPost> getMyList(Long authorId, Pageable pageable) {
User author = userRepository.findById(authorId)
.orElseThrow(() -> new GeneralException(ErrorStatus.USER_NOT_FOUND));
User author = userReader.findActiveUserById(authorId);
return recordPostRepository.findByAuthorAndDeletedFalse(author, pageable);
}
Comment thread
pooreumjung marked this conversation as resolved.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import com.semosan.api.domain.user.entity.User;
import com.semosan.api.domain.user.enums.user.DeviceType;
import com.semosan.api.domain.user.repository.UserBlockRepository;
import com.semosan.api.domain.user.repository.UserRepository;
import com.semosan.api.domain.user.service.UserReader;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
Expand All @@ -34,7 +34,7 @@ class CommentServiceTest {
private PostRepository postRepository;

@Mock
private UserRepository userRepository;
private UserReader userReader;

@Mock
private UserBlockRepository userBlockRepository;
Expand All @@ -52,7 +52,7 @@ void createSavesCommentAndDelegatesNotification() throws Exception {
FreePost post = freePost(10L, postAuthor, "제목", "본문");

when(postRepository.findById(10L)).thenReturn(Optional.of(post));
when(userRepository.findById(2L)).thenReturn(Optional.of(commentAuthor));
when(userReader.findActiveUserById(2L)).thenReturn(commentAuthor);
when(commentRepository.save(any(Comment.class))).thenAnswer(invocation -> {
Comment comment = invocation.getArgument(0);
ReflectionTestUtils.setField(comment, "id", 100L);
Expand All @@ -75,8 +75,8 @@ void replySavesReplyAndDelegatesNotification() throws Exception {
Comment parent = comment(100L, post, parentAuthor, "부모 댓글");

when(postRepository.findById(10L)).thenReturn(Optional.of(post));
when(userRepository.findById(3L)).thenReturn(Optional.of(replyAuthor));
when(userRepository.findById(4L)).thenReturn(Optional.of(mentionedUser));
when(userReader.findActiveUserById(3L)).thenReturn(replyAuthor);
when(userReader.findActiveUserById(4L)).thenReturn(mentionedUser);
when(commentRepository.findByIdAndDeletedFalse(100L)).thenReturn(Optional.of(parent));
when(commentRepository.save(any(Comment.class))).thenAnswer(invocation -> {
Comment comment = invocation.getArgument(0);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import com.semosan.api.domain.community.post.repository.PostRepository;
import com.semosan.api.domain.user.entity.User;
import com.semosan.api.domain.user.enums.user.DeviceType;
import com.semosan.api.domain.user.repository.UserRepository;
import com.semosan.api.domain.user.service.UserReader;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
Expand Down Expand Up @@ -36,7 +36,7 @@ class PostLikeServiceTest {
private PostRepository postRepository;

@Mock
private UserRepository userRepository;
private UserReader userReader;

@Mock
private CommunityNotificationService communityNotificationService;
Expand All @@ -51,7 +51,7 @@ void toggleWithCountDelegatesNotificationWhenLikeCreated() throws Exception {
FreePost post = freePost(10L, postAuthor, "제목", "본문");

when(postRepository.findByIdAndDeletedFalse(10L)).thenReturn(Optional.of(post));
when(userRepository.findById(2L)).thenReturn(Optional.of(liker));
when(userReader.findActiveUserById(2L)).thenReturn(liker);
when(postLikeRepository.findByPostAndUser(post, liker)).thenReturn(Optional.empty());
when(postLikeRepository.countByPost(post)).thenReturn(1L);

Expand All @@ -70,7 +70,7 @@ void toggleWithCountDoesNotDelegateNotificationWhenUnlike() throws Exception {
PostLike existing = PostLike.create(post, liker);

when(postRepository.findByIdAndDeletedFalse(10L)).thenReturn(Optional.of(post));
when(userRepository.findById(2L)).thenReturn(Optional.of(liker));
when(userReader.findActiveUserById(2L)).thenReturn(liker);
when(postLikeRepository.findByPostAndUser(post, liker)).thenReturn(Optional.of(existing));
when(postLikeRepository.countByPost(post)).thenReturn(0L);

Expand All @@ -88,7 +88,7 @@ void toggleWithCountDoesNotDelegateNotificationWhenConcurrentDuplicateDetected()
FreePost post = freePost(10L, postAuthor, "제목", "본문");

when(postRepository.findByIdAndDeletedFalse(10L)).thenReturn(Optional.of(post));
when(userRepository.findById(2L)).thenReturn(Optional.of(liker));
when(userReader.findActiveUserById(2L)).thenReturn(liker);
when(postLikeRepository.findByPostAndUser(post, liker)).thenReturn(Optional.empty());
when(postLikeRepository.save(any(PostLike.class))).thenThrow(new DataIntegrityViolationException("duplicate"));
when(postLikeRepository.countByPost(post)).thenReturn(1L);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
import com.semosan.api.domain.user.entity.User;
import com.semosan.api.domain.user.enums.user.DeviceType;
import com.semosan.api.domain.user.repository.UserBlockRepository;
import com.semosan.api.domain.user.repository.UserRepository;
import com.semosan.api.domain.user.service.UserReader;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
Expand Down Expand Up @@ -55,7 +55,7 @@ class FreePostServiceTest {
private UserBlockRepository userBlockRepository;

@Mock
private UserRepository userRepository;
private UserReader userReader;

@InjectMocks
private FreePostService freePostService;
Expand Down