package controllers;
import static org.fest.assertions.Assertions.assertThat;
import java.util.Collection;
import models.Post;
import models.Reputation;
import models.ReputationType;
import models.ReputationValue;
import models.User;
import models.dao.PostDAO;
import models.dao.ReputationDAO;
import models.dao.ReputationValueDAO;
import models.dao.UserDAO;
import org.junit.Test;
import reputation.ReputationContext;
import test.IntegrationTest;
public class ReputationHandlerTest extends IntegrationTest {
@Test
public void testRateUp() {
ReputationHandler reputationHandler = getInstance(ReputationHandler.class);
ReputationDAO reputationDAO = getInstance(ReputationDAO.class);
ReputationValueDAO reputationValueDAO = getInstance(ReputationValueDAO.class);
UserDAO userDAO = getInstance(UserDAO.class);
PostDAO postDAO = getInstance(PostDAO.class);
Post post = postDAO.get(-11L);
User user = userDAO.get("facebook::testuser");
ReputationValue rateUpValue = reputationValueDAO.get(ReputationType.RATE_UP);
reputationHandler.evaluate(new ReputationContext(post), ReputationType.RATE_UP);
Collection<Reputation> reputations = reputationDAO.findFor(user, rateUpValue);
assertThat(reputations.size()).isEqualTo(1);
assertThat(reputations.iterator().next().getReputationValueKey()).isEqualTo(ReputationType.RATE_UP.getKey());
}
@Test
public void testRateDown() {
ReputationHandler reputationHandler = getInstance(ReputationHandler.class);
ReputationDAO reputationDAO = getInstance(ReputationDAO.class);
ReputationValueDAO reputationValueDAO = getInstance(ReputationValueDAO.class);
UserDAO userDAO = getInstance(UserDAO.class);
PostDAO postDAO = getInstance(PostDAO.class);
Post post = postDAO.get(-12L);
User user = userDAO.get("facebook::testuser");
ReputationValue rateUpValue = reputationValueDAO.get(ReputationType.RATE_DOWN);
reputationHandler.evaluate(new ReputationContext(post), ReputationType.RATE_DOWN);
Collection<Reputation> reputations = reputationDAO.findFor(user, rateUpValue);
assertThat(reputations.size()).isEqualTo(1);
assertThat(reputations.iterator().next().getReputationValueKey()).isEqualTo(ReputationType.RATE_DOWN.getKey());
}
@Test
public void testCreatePost() {
ReputationHandler reputationHandler = getInstance(ReputationHandler.class);
ReputationDAO reputationDAO = getInstance(ReputationDAO.class);
ReputationValueDAO reputationValueDAO = getInstance(ReputationValueDAO.class);
UserDAO userDAO = getInstance(UserDAO.class);
PostDAO postDAO = getInstance(PostDAO.class);
Post post = postDAO.get(-11L);
User user = userDAO.get("facebook::testuser");
ReputationValue rateUpValue = reputationValueDAO.get(ReputationType.CREATE_POST);
reputationHandler.evaluate(new ReputationContext(post), ReputationType.CREATE_POST);
Collection<Reputation> reputations = reputationDAO.findFor(user, rateUpValue);
assertThat(reputations.size()).isEqualTo(1);
assertThat(reputations.iterator().next().getReputationValueKey())
.isEqualTo(ReputationType.CREATE_POST.getKey());
}
}