package models.dao; import static org.fest.assertions.Assertions.assertThat; import java.util.List; import java.util.Set; import models.Post; import models.PostRating; import models.PostRatingPK; import models.User; import org.junit.Test; import test.IntegrationTest; import com.avaje.ebean.Page; public class PostRatingDAOTest extends IntegrationTest { @Test public void getRatingFromUserAndPostSucceeds() { User user = getInstance(UserDAO.class).get("facebook::testuser"); Post post = getInstance(PostDAO.class).get(-11L); PostRatingPK key = new PostRatingPK(user.getKey(), post.getKey()); PostRating pr = new PostRating(); pr.setValue(5); pr.setKey(key); PostRatingDAO postRatingDAO = getInstance(PostRatingDAO.class); postRatingDAO.create(pr); PostRating postRating = postRatingDAO.get(user, post); assertThat(postRating).isNotNull(); assertThat(postRating.getValue()).isEqualTo(5); } @Test public void getRatingFromUserSucceeds() { PostRatingDAO postRatingDAO = getInstance(PostRatingDAO.class); UserDAO userDAO = getInstance(UserDAO.class); User user = userDAO.get("facebook::testuser"); List<PostRating> postRatingList = postRatingDAO.get(user); assertThat(postRatingList.size()).isEqualTo(0); PostRatingPK key = new PostRatingPK(user.getKey(), (long) 2); PostRating pr = new PostRating(); pr.setValue(5); pr.setKey(key); postRatingDAO.create(pr); postRatingList = postRatingDAO.get(user); assertThat(postRatingList.size()).isEqualTo(1); } @Test public void getUpVotedKeysSucceeds() { UserDAO userDAO = getInstance(UserDAO.class); PostDAO postDAO = getInstance(PostDAO.class); PostRatingDAO postRatingDAO = getInstance(PostRatingDAO.class); User user = userDAO.get("facebook::testuser"); Set<Long> upVotedKeys = postRatingDAO.getUpVotedPostKeys(user); assertThat(upVotedKeys.size()).isEqualTo(0); Post post = postDAO.get(-11L); PostRatingPK key = new PostRatingPK(user.getKey(), post.getKey()); PostRating pr = new PostRating(); pr.setValue(1); pr.setKey(key); pr.setKey(key); postRatingDAO.create(pr); post.setRating(post.getRating() + 1); postRatingDAO.resetVotedPostKeyCache(user); upVotedKeys = postRatingDAO.getUpVotedPostKeys(user); assertThat(upVotedKeys.size()).isEqualTo(1); } @Test public void getDownVotedKeysSucceeds() { PostRatingDAO postRatingDAO = getInstance(PostRatingDAO.class); UserDAO userDAO = getInstance(UserDAO.class); PostDAO postDAO = getInstance(PostDAO.class); User user = userDAO.get("facebook::testuser"); Set<Long> upVotedKeys = postRatingDAO.getDownVotedPostKeys(user); assertThat(upVotedKeys.size()).isEqualTo(0); Post post = postDAO.get(-11L); PostRatingPK key = new PostRatingPK(user.getKey(), post.getKey()); PostRating pr = new PostRating(); pr.setValue(-1); pr.setKey(key); pr.setKey(key); postRatingDAO.create(pr); post.setRating(post.getRating() - 1); postRatingDAO.resetVotedPostKeyCache(user); upVotedKeys = postRatingDAO.getDownVotedPostKeys(user); assertThat(upVotedKeys.size()).isEqualTo(1); } @Test public void getUpVotedPostsSucceeds() { PostRatingDAO postRatingDAO = getInstance(PostRatingDAO.class); UserDAO userDAO = getInstance(UserDAO.class); PostDAO postDAO = getInstance(PostDAO.class); User user = userDAO.get("facebook::testuser"); Page<Post> upVotedPosts = postRatingDAO.getUpVotedPosts(user, 0); assertThat(upVotedPosts.getList().size()).isEqualTo(0); Post post = postDAO.get(-11L); PostRatingPK key = new PostRatingPK(user.getKey(), post.getKey()); PostRating pr = new PostRating(); pr.setValue(1); pr.setKey(key); pr.setKey(key); postRatingDAO.create(pr); post.setRating(post.getRating() + 1); postRatingDAO.resetVotedPostKeyCache(user); upVotedPosts = postRatingDAO.getUpVotedPosts(user, 0); assertThat(upVotedPosts.getList().size()).isEqualTo(1); } }