본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
공부 시작 시각 인증
공부 시작 시각 인증
수강 인증 사진
수강 인증 사진
FakeLikeRepository.java
package org.fastcampus.post.repository;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import org.fastcampus.post.application.Interfaces.LikeRepository;
import org.fastcampus.post.domain.Post;
import org.fastcampus.post.domain.comment.*;
import org.fastcampus.user.domain.User;
public class FakeLikeRepository implements LikeRepository {
private final Map<Post, Set<User>> postLikes = new HashMap<>();
private final Map<Comment, Set<User>> commentLikes = new HashMap<>();
@Override
public boolean checkLike(Post post, User user) {
if (postLikes.get(post) == null) {
return false;
}
return postLikes.get(post).contains(user);
}
@Override
public void like(Post post, User user) {
Set<User> users = postLikes.get(post);
if (users == null) {
users = new HashSet<>();
}
users.add(user);
postLikes.put(post, users);
}
@Override
public void unlike(Post post, User user) {
Set<User> users = postLikes.get(post);
if (users == null) {
return;
}
users.remove(user);
postLikes.put(post, users);
}
@Override
public boolean checkLike(Comment comment, User user) {
if (commentLikes.get(comment) == null) {
return false;
}
return commentLikes.get(comment).contains(user);
}
@Override
public void like(Comment comment, User user) {
Set<User> users = commentLikes.get(comment);
if (users == null) {
users = new HashSet<>();
}
users.add(user);
commentLikes.put(comment, users);
}
@Override
public void unlike(Comment comment, User user) {
Set<User> users = commentLikes.get(comment);
if (users == null) {
return;
}
users.remove(user);
commentLikes.put(comment, users);
}
}
PostServiceTest.java
package org.fastcampus.post.application;
import org.fastcampus.fake.*;
import org.fastcampus.post.application.dto.*;
import org.fastcampus.post.domain.*;
import org.fastcampus.post.domain.content.*;
import org.fastcampus.user.application.*;
import org.fastcampus.user.application.dto.*;
import org.fastcampus.user.domain.*;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class PostServiceTest {
private final UserService userService = FakeObjectFactory.getUserService();
private final PostService postService = FakeObjectFactory.getPostService();
private final User user = userService.createUser(new CreateUserRequestDto("user1", null));
private final User otherUser = userService.createUser(new CreateUserRequestDto("user2", null));
private final CreatePostRequestDto dto = new CreatePostRequestDto(user.getId(), "test-content", PostPublicationState.PUBLIC);
@Test
void givenPostRequestDto_whenCreatePost_thenPostIsCreated() {
// when
Post savePost = postService.createPost(dto);
// then
Post post = postService.getPost(savePost.getId());
assertEquals(savePost, post);
}
@Test
void givenPostRequestDto_whenUpdatePost_thenPostIsUpdated() {
// given
Post savedPost = postService.createPost(dto);
// when
UpdatePostRequestDto updateDto = new UpdatePostRequestDto(savedPost.getId(), user.getId(), "updated-content", PostPublicationState.PRIVATE);
Post updatedPost = postService.updatePost(updateDto);
// then
String content = updatedPost.getContent();
assertEquals("updated-content", content);
}
@Test
void givenPostRequestDto_whenLikePost_thenPostIsLiked() {
// given
Post savedPost = postService.createPost(dto);
// when
LikeRequestDto likeDto = new LikeRequestDto(savedPost.getId(), otherUser.getId());
postService.likePost(likeDto);
// then
assertEquals(1, savedPost.getLikeCount());
}
@Test
void givenPostRequestDto_whenUnlikePost_thenPostIsUnliked() {
// given
Post savedPost = postService.createPost(dto);
LikeRequestDto likeDto = new LikeRequestDto(savedPost.getId(), otherUser.getId());
postService.likePost(likeDto);
// when
postService.unlikePost(likeDto);
// then
assertEquals(0, savedPost.getLikeCount());
}
@Test
void givenPostRequestDto_whenUnlikePost_thenPostIsNotUnliked() {
// given
Post savedPost = postService.createPost(dto);
// when
LikeRequestDto likeDto = new LikeRequestDto(savedPost.getId(), otherUser.getId());
postService.unlikePost(likeDto);
// then
assertEquals(0, savedPost.getLikeCount());
}
}
학습 인증샷
학습 인증샷
공부 종료 시각 인증
공부 종료 시각 인증
https://bit.ly/4hTSJNB