/* * Copyright (c) JForum Team. All rights reserved. * * The software in this package is published under the terms of the LGPL * license a copy of which has been included with this distribution in the * license.txt file. * * The JForum Project * http://www.jforum.net */ package net.jforum.core.hibernate; import java.util.Arrays; import java.util.List; import net.jforum.entities.Poll; import net.jforum.entities.PollOption; import net.jforum.entities.Post; import net.jforum.entities.Topic; import net.jforum.repository.PostRepository; import net.jforum.repository.TopicRepository; import net.jforum.repository.UserRepository; import net.jforum.util.JDBCLoader; import org.junit.Assert; import org.junit.Test; /** * @author Rafael Steil */ public class TopicDAOTestCase extends AbstractDAOTestCase<Topic> { @Test public void saveTopicWithPollExpectingCascadeToWork() { Topic t = new Topic(); t.setForum(null); Poll p = new Poll(); p.setLabel("poll1"); PollOption o1 = new PollOption(); o1.setPoll(p); o1.setText("o1"); PollOption o2 = new PollOption(); o2.setPoll(p); o2.setText("o2"); p.setOptions(Arrays.asList(o1, o2)); t.setPoll(p); TopicRepository dao = this.newTopicDao(); this.insert(t, dao); t = dao.get(t.getId()); Assert.assertNotNull(t.getPoll()); Assert.assertEquals("poll1", t.getPoll().getLabel()); Assert.assertEquals(2, t.getPoll().getOptions().size()); } @Test @SuppressWarnings("deprecation") public void removeShouldDeletePostsAndUpdateUserTotalMessages() { new JDBCLoader(session()) .run("/topicdao/removeShouldDeletePostsAndUpdateUserTotalMessages.sql"); TopicRepository dao = this.newTopicDao(); Topic topic = dao.get(1); Assert.assertEquals(3, dao.getTotalPosts(topic)); this.delete(topic, dao); Assert.assertEquals(0, dao.getTotalPosts(topic)); UserRepository userDao = this.newUserDao(); Assert.assertEquals(1, userDao.get(1).getTotalPosts()); } @Test @SuppressWarnings("deprecation") public void getPostsShouldNotFetchModeratedExpectTwoResults() { new JDBCLoader(session()) .run("/postdao/dump.sql"); PostRepository postDao = this.newPostDao(); Post post1 = this.newPost(); postDao.add(post1); Post post2 = this.newPost(); postDao.add(post2); Post post3 = this.newPost(); post3.setModerate(true); postDao.add(post3); TopicRepository topicDao = this.newTopicDao(); Topic topic = topicDao.get(1); List<Post> posts = topicDao.getPosts(topic, 0, 10); Assert.assertEquals(2, posts.size()); Assert.assertTrue(posts.contains(post1)); Assert.assertTrue(posts.contains(post2)); } @Test @SuppressWarnings("deprecation") public void totalPostsExpectTwoResults() { new JDBCLoader(session()) .run("/topicdao/totalPostsExpectTwoResults.sql"); TopicRepository dao = this.newTopicDao(); Topic topic = dao.get(1); Assert.assertEquals(2, dao.getTotalPosts(topic)); } @Test @SuppressWarnings("deprecation") public void lastPost() { new JDBCLoader(session()) .run("/topicdao/firstLastPost.sql"); TopicRepository dao = this.newTopicDao(); Topic t = new Topic(); t.setId(1); Post expectedFirst = new Post(); expectedFirst.setId(2); Assert.assertEquals(expectedFirst, dao.getLastPost(t)); } @Test @SuppressWarnings("deprecation") public void firstPost() { new JDBCLoader(session()) .run("/topicdao/firstLastPost.sql"); TopicRepository dao = this.newTopicDao(); Topic t = new Topic(); t.setId(1); Post expectedFirst = new Post(); expectedFirst.setId(1); Assert.assertEquals(expectedFirst, dao.getFirstPost(t)); } private UserRepository newUserDao() { return new UserRepository(session()); } private PostRepository newPostDao() { return new PostRepository(session()); } private TopicRepository newTopicDao() { return new TopicRepository(session()); } private Post newPost() { Post post = new Post(); post.setSubject("teste"); post.setText("teste"); post.setUser(this.newUserDao().get(1)); post.setTopic(this.newTopicDao().get(1)); return post; } }