Skip to content

Commit

Permalink
[#52] feat: User follow 기능 구현 및 임시 테스트
Browse files Browse the repository at this point in the history
  • Loading branch information
jinyoungchoi95 committed Sep 20, 2021
1 parent de79269 commit ed8ff2f
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 0 deletions.
16 changes: 16 additions & 0 deletions src/main/java/com/study/realworld/user/domain/User.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,19 @@
package com.study.realworld.user.domain;

import java.util.HashSet;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.Table;
import org.springframework.security.crypto.password.PasswordEncoder;

Expand All @@ -34,6 +40,12 @@ public class User {
@Column(name = "image")
private Image image;

@JoinTable(name = "follow",
joinColumns = @JoinColumn(name = "user_id"),
inverseJoinColumns = @JoinColumn(name = "follower_id"))
@ManyToMany(cascade = CascadeType.ALL)
private Set<User> followingUsers = new HashSet<>();

protected User() {
}

Expand Down Expand Up @@ -98,6 +110,10 @@ public void login(Password rawPassword, PasswordEncoder passwordEncoder) {
this.password.matchPassword(rawPassword, passwordEncoder);
}

public void followingUser(User user) {
followingUsers.add(user);
}

@Override
public boolean equals(Object o) {
if (this == o) {
Expand Down
24 changes: 24 additions & 0 deletions src/test/java/com/study/realworld/user/domain/UserTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,30 @@ void passwordDismatchTest() {
.withMessageMatching(ErrorCode.PASSWORD_DISMATCH.getMessage());
}

// TODO : 테스트 구체화 필요
@Test
@DisplayName("특정 유저를 follow하여 following set에 저장할 수 있다.")
void followingTest() {

// given
User user = User.Builder()
.username(Username.of("username"))
.password(Password.of("password"))
.email(Email.of("[email protected]"))
.build();
User followingUser = User.Builder()
.username(Username.of("followingUser"))
.password(Password.of("password"))
.email(Email.of("[email protected]"))
.build();

// when
user.followingUser(followingUser);

// then
assertThat(user).isNotNull();
}

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

0 comments on commit ed8ff2f

Please sign in to comment.