Skip to content

Commit

Permalink
[#70] feat: Article 좋아요, 좋아요취소 기능 구현 및 테스트
Browse files Browse the repository at this point in the history
  • Loading branch information
jinyoungchoi95 committed Oct 29, 2021
1 parent 9b5e55b commit 42dbbd2
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 0 deletions.
23 changes: 23 additions & 0 deletions src/main/java/com/study/realworld/article/domain/Article.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Transient;
import org.hibernate.annotations.Where;

@Entity
Expand All @@ -34,6 +35,12 @@ public class Article extends BaseTimeEntity {
@ManyToOne(fetch = FetchType.LAZY)
private User author;

@Embedded
private FavoritingUsers favoritingUsers = new FavoritingUsers();

@Transient
private boolean favorited;

protected Article() {
}

Expand Down Expand Up @@ -70,6 +77,10 @@ public User author() {
return author;
}

public boolean isFavorited() {
return favorited;
}

public void changeTitle(Title title) {
articleContent.changeTitle(title);
}
Expand All @@ -82,6 +93,18 @@ public void changeBody(Body body) {
articleContent.changeBody(body);
}

public boolean updateFavoritedByUser(User user) {
return favorited = favoritingUsers.isFavorite(user);
}

public void favoritingByUser(User user) {
favoritingUsers.favoritingByUser(user);
}

public void unfavoritingByUser(User user) {
favoritingUsers.unfavoritingByUser(user);
}

public void deleteArticle() {
saveDeletedTime(OffsetDateTime.now());
}
Expand Down
39 changes: 39 additions & 0 deletions src/test/java/com/study/realworld/article/domain/ArticleTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertAll;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;

import com.study.realworld.tag.domain.Tag;
import com.study.realworld.user.domain.Bio;
Expand Down Expand Up @@ -106,6 +108,43 @@ void deleteArticleTest() {
assertThat(result).isAfter(startTime).isBefore(endTime);
}

@Test
@DisplayName("유저가 글을 좋아요할 수 있다.")
void favoritingByUserTest() {

// given
Article article = Article.from(articleContent, author);
User user = User.Builder()
.email(Email.of("[email protected]"))
.build();
article.favoritingByUser(user);

// when
boolean result = article.updateFavoritedByUser(user);

// then
assertTrue(result);
}

@Test
@DisplayName("유저가 글을 좋아요 취소할 수 있다.")
void unfavoritingByUserTest() {

// given
Article article = Article.from(articleContent, author);
User user = User.Builder()
.email(Email.of("[email protected]"))
.build();
article.favoritingByUser(user);
article.unfavoritingByUser(user);

// when
boolean result = article.updateFavoritedByUser(user);

// then
assertFalse(result);
}

@Test
@DisplayName("equals hashCode 테스트")
void articleEqualsHashCodeTest() {
Expand Down

0 comments on commit 42dbbd2

Please sign in to comment.