package models.dao;
import static org.fest.assertions.Assertions.assertThat;
import models.User;
import models.UserFollow;
import models.UserFollowPK;
import org.junit.Test;
import test.IntegrationTest;
import com.avaje.ebean.Page;
public class UserFollowDAOTest extends IntegrationTest {
@Test
public void getFollowerCountSucceeds() {
UserFollowDAO userFollowDAO = getInstance(UserFollowDAO.class);
UserDAO userDAO = getInstance(UserDAO.class);
User testUser = userDAO.get("facebook::testuser");
assertThat(userFollowDAO.getFollowerCount(testUser)).isEqualTo(0);
UserFollowPK followKey = new UserFollowPK("facebook::new_user", "facebook::testuser");
createUserFollow(userFollowDAO, followKey);
assertThat(userFollowDAO.getFollowerCount(testUser)).isEqualTo(1);
}
@Test
public void getFollowingCountSucceeds() {
UserFollowDAO userFollowDAO = getInstance(UserFollowDAO.class);
UserDAO userDAO = getInstance(UserDAO.class);
User testUser = userDAO.get("facebook::testuser");
assertThat(userFollowDAO.getFollowingCount(testUser)).isEqualTo(0);
UserFollowPK followKey = new UserFollowPK("facebook::testuser", "facebook::new_user");
createUserFollow(userFollowDAO, followKey);
assertThat(userFollowDAO.getFollowingCount(testUser)).isEqualTo(1);
}
@Test
public void getFollowingUsersSucceeds() {
UserFollowDAO userFollowDAO = getInstance(UserFollowDAO.class);
UserDAO userDAO = getInstance(UserDAO.class);
User testUser = userDAO.get("facebook::testuser");
assertThat(userFollowDAO.getFollowingUsers(testUser, 0).getList().size()).isEqualTo(0);
UserFollowPK followKey = new UserFollowPK("facebook::testuser", "facebook::new_user");
createUserFollow(userFollowDAO, followKey);
Page<User> followingUsers = userFollowDAO.getFollowingUsers(testUser, 0);
assertThat(followingUsers.getList().size()).isEqualTo(1);
for (User user : followingUsers.getList()) {
assertThat(user.getKey()).isEqualTo("facebook::new_user");
}
}
@Test
public void getFollowerUsersSucceeds() {
UserFollowDAO userFollowDAO = getInstance(UserFollowDAO.class);
UserDAO userDAO = getInstance(UserDAO.class);
User testUser = userDAO.get("facebook::testuser");
assertThat(userFollowDAO.getFollowerUsers(testUser, 0).getList().size()).isEqualTo(0);
UserFollowPK followKey = new UserFollowPK("facebook::new_user", "facebook::testuser");
createUserFollow(userFollowDAO, followKey);
Page<User> followerUsers = userFollowDAO.getFollowerUsers(testUser, 0);
assertThat(followerUsers.getList().size()).isEqualTo(1);
for (User user : followerUsers.getList()) {
assertThat(user.getKey()).isEqualTo("facebook::new_user");
}
}
@Test
public void getAllFollowingsKeysSucceeds() {
UserFollowDAO userFollowDAO = getInstance(UserFollowDAO.class);
UserDAO userDAO = getInstance(UserDAO.class);
User testUser = userDAO.get("facebook::testuser");
assertThat(userFollowDAO.getAllFollowingsKeys(testUser).size()).isEqualTo(0);
UserFollowPK followKey = new UserFollowPK("facebook::testuser", "facebook::new_user");
createUserFollow(userFollowDAO, followKey);
assertThat(userFollowDAO.getAllFollowingsKeys(testUser).size()).isEqualTo(1);
assertThat(userFollowDAO.getAllFollowingsKeys(testUser).get(0)).isEqualTo("facebook::new_user");
}
private void createUserFollow(UserFollowDAO userFollowDAO, UserFollowPK followKey) {
UserFollow follow = userFollowDAO.get(followKey);
if (follow == null) {
follow = new UserFollow();
follow.setKey(followKey);
userFollowDAO.create(follow);
}
}
}