package com.apress.progwt.server.dao.hibernate;
import java.util.List;
import org.apache.log4j.Logger;
import com.apress.progwt.client.domain.ForumPost;
import com.apress.progwt.client.domain.School;
import com.apress.progwt.client.domain.SchoolForumPost;
import com.apress.progwt.client.domain.User;
import com.apress.progwt.client.domain.dto.PostsList;
import com.apress.progwt.server.dao.UserDAO;
public class SchoolDAOHibernateImplTest extends
AbstractHibernateTransactionalTest {
private static final Logger log = Logger
.getLogger(SchoolDAOHibernateImplTest.class);
private static final String A = "DUMMY_USERNAME";
private SchoolDAOHibernateImpl schoolDAO;
private UserDAO userDAO;
public void setSchoolDAO(SchoolDAOHibernateImpl schoolDAO) {
this.schoolDAO = schoolDAO;
}
public void setUserDAO(UserDAO userDAO) {
this.userDAO = userDAO;
}
public void testGetAllSchools() {
List<School> sc = schoolDAO.getAllSchools(0, 2500);
assertEquals(2374, sc.size());
}
public void testGetSchoolFromName() {
School sc = schoolDAO.getSchoolFromName("DDFNASD");
assertNull(sc);
sc = schoolDAO.getSchoolFromName("Dartmouth College");
assertNotNull(sc);
}
public void testGetSchoolMatching() {
List<School> res = null;
res = schoolDAO.getSchoolsMatching("Dartmouth");
assertEquals(2, res.size());
int max = 7;
schoolDAO.setAutoCompleteMax(max);
res = schoolDAO.getSchoolsMatching("d");
assertEquals(max, res.size());// default autocomplete max size
res = schoolDAO.getSchoolsMatching("");
assertEquals(max, res.size());
max = 1000;
schoolDAO.setAutoCompleteMax(max);
res = schoolDAO.getSchoolsMatching("d");
assertEquals(748, res.size());// default autocomplete max size
res = schoolDAO.getSchoolsMatching("");
assertEquals(max, res.size());
res = schoolDAO.getSchoolsMatching("d#");
assertEquals(0, res.size());
res = schoolDAO.getSchoolsMatching("hav");
assertEquals(4, res.size());
res = schoolDAO.getSchoolsMatching("cali");
assertEquals(54, res.size());
}
public void testGetPosts() {
School sc = schoolDAO
.getSchoolFromName("Jarvis Christian College");
assertNotNull(sc);
// assert that there are no posts for the school
PostsList threads = schoolDAO.getSchoolThreads(sc.getId(), 0, 10);
assertNotNull(threads);
assertEquals(0, threads.getTotalCount());
assertEquals(0, threads.getPosts().size());
User u = userDAO.getUserByUsername("test");
assertNotNull(u);
// Create a first thread for this school
ForumPost post = new SchoolForumPost(sc, u, A, A, null);
post = (ForumPost) schoolDAO.save(post);
threads = schoolDAO.getSchoolThreads(sc.getId(), 0, 10);
assertEquals(1, threads.getTotalCount());
assertEquals(1, threads.getPosts().size());
ForumPost saved = threads.getPosts().get(0);
assertNotNull(saved.getDate());
assertEquals(sc, saved.getTopic());
// save a second post in the same thread
ForumPost post2 = new SchoolForumPost(sc, u, null, A, saved);
post2 = (ForumPost) schoolDAO.save(post2);
// should only be 1 top level thread still.
threads = schoolDAO.getSchoolThreads(sc.getId(), 0, 10);
assertEquals(1, threads.getTotalCount());
assertEquals(1, threads.getPosts().size());
PostsList post1Thread = schoolDAO.getPostsForThread(post, 0, 10);
assertEquals(2, post1Thread.getTotalCount());
assertEquals(2, post1Thread.getPosts().size());
}
// public void testIncrement() {
// School sc = schoolDAO
// .getSchoolFromName("Jarvis Christian College");
// assertNotNull(sc);
//
// int original = sc.getPopularityCounter();
//
// schoolDAO.incrementSchoolPopularity(sc);
// sc = (School) schoolDAO.get(School.class, sc.getId());
// assertEquals(original + 1, sc.getPopularityCounter());
//
// schoolDAO.incrementSchoolPopularity(sc);
// sc = schoolDAO.getSchoolFromName("Jarvis Christian College");
// assertEquals(original + 2, sc.getPopularityCounter());
//
// }
}