/* * 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.List; import net.jforum.entities.PrivateMessage; import net.jforum.entities.PrivateMessageType; import net.jforum.entities.User; import net.jforum.repository.PrivateMessageRepository; import net.jforum.repository.UserRepository; import org.junit.Assert; import org.junit.Test; /** * @author Rafael Steil */ public class PrivateMessageDAOTestCase extends AbstractDAOTestCase<PrivateMessage> { @Test public void deleteFromSentShouldNotRemoveOtherUserMessage() { User fromUser = this.createUser("fromUser"); User toUser = this.createUser("toUser"); PrivateMessageRepository dao = this.newDao(); PrivateMessage pm = this.newPm("subject", "text", fromUser, toUser); this.insert(pm, dao); List<PrivateMessage> sent = dao.getFromSentBox(fromUser); Assert.assertEquals(1, sent.size()); this.delete(sent.get(0), dao); pm = dao.get(sent.get(0).getId()); Assert.assertNull(pm); List<PrivateMessage> toUserInbox = dao.getFromInbox(toUser); Assert.assertEquals(1, toUserInbox.size()); } @Test public void deleteFromInboxShouldNotRemoveOtherUserSentBox() { PrivateMessageRepository dao = this.newDao(); User fromUser = this.createUser("fromUser"); User toUser = this.createUser("toUser"); PrivateMessage pm = this.newPm("subject", "text", fromUser, toUser); this.insert(pm, dao); List<PrivateMessage> inbox = dao.getFromInbox(toUser); Assert.assertEquals(1, inbox.size()); this.delete(inbox.get(0), dao); pm = dao.get(inbox.get(0).getId()); Assert.assertNull(pm); List<PrivateMessage> fromUserSentBox = dao.getFromSentBox(fromUser); Assert.assertEquals(1, fromUserSentBox.size()); } @Test public void insert() { PrivateMessageRepository dao = this.newDao(); User fromUser = this.createUser("fromUser"); User toUser = this.createUser("toUser"); PrivateMessage pm = this.newPm("subject", "text", fromUser, toUser); this.insert(pm, dao); Assert.assertTrue(pm.getId() > 0); PrivateMessage loaded = dao.get(pm.getId()); Assert.assertNotNull(loaded); Assert.assertEquals("text", loaded.getText()); Assert.assertEquals("subject", loaded.getSubject()); Assert.assertEquals(fromUser, loaded.getFromUser()); Assert.assertEquals(toUser, loaded.getToUser()); Assert.assertEquals(PrivateMessageType.SENT, loaded.getType()); // Check if the message is in the "Sent" folder List<PrivateMessage> sent = dao.getFromSentBox(fromUser); Assert.assertEquals(1, sent.size()); Assert.assertEquals(loaded.getId(), sent.get(0).getId()); // Check if the message is in the "Inbox" folder of the target user List<PrivateMessage> inbox = dao.getFromInbox(toUser); Assert.assertEquals(1, inbox.size()); loaded = inbox.get(0); Assert.assertEquals("text", loaded.getText()); Assert.assertEquals("subject", loaded.getSubject()); Assert.assertEquals(fromUser, loaded.getFromUser()); Assert.assertEquals(toUser, loaded.getToUser()); Assert.assertEquals(PrivateMessageType.NEW, loaded.getType()); } @Test public void selectFromInboxExpectZeroResults() { PrivateMessageRepository dao = this.newDao(); User user = new User(); user.setId(99); Assert.assertEquals(0, dao.getFromInbox(user).size()); } @Test public void selectFromSentExpectZeroResults() { PrivateMessageRepository dao = this.newDao(); User user = new User(); user.setId(88); Assert.assertEquals(0, dao.getFromSentBox(user).size()); } @Test(expected = UnsupportedOperationException.class) public void updateExpectsException() { this.newDao().update(new PrivateMessage()); } private PrivateMessage newPm(String subject, String text, User fromUser, User toUser) { PrivateMessage pm = new PrivateMessage(); pm.setSubject(subject); pm.setText(text); pm.setFromUser(fromUser); pm.setToUser(toUser); return pm; } private PrivateMessageRepository newDao() { return new PrivateMessageRepository(session()); } private User createUser(String username) { User user = new User(); user.setUsername(username); UserRepository dao = new UserRepository(session()); dao.add(user); return user; } }