/**
* Copyright (C) 2011 JTalks.org Team
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
package org.jtalks.jcommune.model.dao.hibernate;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.jtalks.jcommune.model.dto.PageRequest;
import org.jtalks.jcommune.model.entity.ObjectsFactory;
import org.jtalks.jcommune.model.entity.PersistedObjectsFactory;
import org.jtalks.jcommune.model.dao.PrivateMessageDao;
import org.jtalks.jcommune.model.entity.JCUser;
import org.jtalks.jcommune.model.entity.PrivateMessage;
import org.jtalks.jcommune.model.entity.PrivateMessageStatus;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataIntegrityViolationException;
import org.springframework.data.domain.Page;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.testng.AbstractTransactionalTestNGSpringContextTests;
import org.springframework.test.context.transaction.TransactionConfiguration;
import org.springframework.transaction.annotation.Transactional;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertFalse;
import static org.testng.Assert.assertNotNull;
import static org.testng.Assert.assertNotSame;
import static org.testng.Assert.assertNull;
import static org.testng.Assert.assertTrue;
import static org.unitils.reflectionassert.ReflectionAssert.assertReflectionEquals;
/**
* @author Pavel Vervenko
*/
@ContextConfiguration(locations = {"classpath:/org/jtalks/jcommune/model/entity/applicationContext-dao.xml"})
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true)
@Transactional
public class PrivateMessageHibernateDaoTest extends AbstractTransactionalTestNGSpringContextTests {
@Autowired
private SessionFactory sessionFactory;
@Autowired
private PrivateMessageDao dao;
private Session session;
private PrivateMessage notReadPm;
private PrivateMessage readPm;
private PrivateMessage draftPm;
private JCUser author;
private JCUser recipient;
@BeforeMethod
public void setUp() throws Exception {
session = sessionFactory.getCurrentSession();
PersistedObjectsFactory.setSession(session);
}
@Test
public void testSave() {
PrivateMessage pm = getSavedPm();
assertNotSame(pm.getId(), 0, "Id not created");
session.evict(pm);
PrivateMessage result = (PrivateMessage) session.get(PrivateMessage.class, pm.getId());
assertReflectionEquals(pm, result);
}
@Test(expectedExceptions = DataIntegrityViolationException.class)
public void testSavePostWithDateNotNullViolation() {
PrivateMessage pm = new PrivateMessage(author, recipient, "", "");
dao.saveOrUpdate(pm);
}
@Test
public void testGet() {
PrivateMessage pm = getSavedPm();
PrivateMessage result = dao.get(pm.getId());
assertNotNull(result);
assertEquals(result.getId(), pm.getId());
}
@Test
public void testGetInvalidId() {
PrivateMessage result = dao.get(-567890L);
assertNull(result);
}
@Test
public void testUpdate() {
String newBody = "new content";
PrivateMessage pm = getSavedPm();
pm.setBody(newBody);
dao.saveOrUpdate(pm);
session.flush();
session.evict(pm);
PrivateMessage result = (PrivateMessage) session.get(PrivateMessage.class, pm.getId());
assertEquals(result.getBody(), newBody);
}
@Test
public void testUpdateNotNullViolation() {
PrivateMessage pm = getSavedPm();
pm.setTitle(null);
pm.setUserTo(null);
pm.setBody(null);
dao.saveOrUpdate(pm);
}
@Test
public void testDelete() {
PrivateMessage pm = getSavedPm();
boolean result = dao.delete(pm.getId());
int pmCount = getCount();
assertTrue(result, "Entity is not deleted");
assertEquals(pmCount, 0);
}
@Test
public void testDeleteInvalidId() {
boolean result = dao.delete(-100500L);
assertFalse(result, "Entity deleted");
}
@Test
public void testGetAllFromUserMessageStatusIsCorrect() {
int totalSize = 75;
int pageCount = 3;
int pageSize = totalSize / pageCount;
int messageCount = 50;
JCUser userTo = PersistedObjectsFactory.getUser("UserTo", "mail2@mail.com");
JCUser userFrom = PersistedObjectsFactory.getUser("UserFrom", "mail1@mail.com");
PageRequest pageRequest = new PageRequest("1", pageSize);
PersistedObjectsFactory.preparePrivateMessages(messageCount, userTo, userFrom);
Page<PrivateMessage> messagePage = dao.getAllFromUser(userFrom, pageRequest);
for (PrivateMessage message : messagePage.getContent()) {
assertTrue(message.getStatus().equals(PrivateMessageStatus.SENT)
|| message.getStatus().equals(PrivateMessageStatus.NEW)
|| message.getStatus().equals(PrivateMessageStatus.DELETED_FROM_INBOX));
}
}
@Test
public void testGetAllFromUserMessageCountOnOnePageIsCorrect() {
int totalSize = 50;
int pageCount = 2;
int pageSize = totalSize / pageCount;
JCUser userTo = PersistedObjectsFactory.getUser("UserTo", "mail2@mail.com");
JCUser userFrom = PersistedObjectsFactory.getUser("UserFrom", "mail1@mail.com");
PageRequest pageRequest = new PageRequest("1", pageSize);
PersistedObjectsFactory.preparePrivateMessages(totalSize, userTo, userFrom);
Page<PrivateMessage> messagePage = dao.getAllFromUser(userFrom, pageRequest);
assertEquals(messagePage.getContent().size(), pageSize, "Incorrect count of message in one page.");
}
@Test
public void testGetAllFromUserTotalMessageCountIsCorrect() {
int totalSize = 75;
int pageCount = 3;
int pageSize = totalSize / pageCount;
int messageCount = 50;
JCUser userTo = PersistedObjectsFactory.getUser("UserTo", "mail2@mail.com");
JCUser userFrom = PersistedObjectsFactory.getUser("UserFrom", "mail1@mail.com");
PageRequest pageRequest = new PageRequest("1", pageSize);
PersistedObjectsFactory.preparePrivateMessages(messageCount, userTo, userFrom);
Page<PrivateMessage> messagePage = dao.getAllFromUser(userFrom, pageRequest);
assertEquals(messagePage.getTotalElements(), totalSize, "Incorrect total count.");
}
@Test
public void testGetAllFromUserPageCountIsCorrect() {
int totalSize = 75;
int pageCount = 3;
int pageSize = totalSize / pageCount;
int messageCount = 50;
JCUser userTo = PersistedObjectsFactory.getUser("UserTo", "mail2@mail.com");
JCUser userFrom = PersistedObjectsFactory.getUser("UserFrom", "mail1@mail.com");
PageRequest pageRequest = new PageRequest("1", pageSize);
PersistedObjectsFactory.preparePrivateMessages(messageCount, userTo, userFrom);
Page<PrivateMessage> messagePage = dao.getAllFromUser(userFrom, pageRequest);
assertEquals(messagePage.getTotalPages(), pageCount, "Incorrect count of pages.");
}
@Test
public void testGetAllFromUserCommonCasePageTooLowPageCountIsCorrect() {
int totalSize = 75;
int pageCount = 3;
int pageSize = totalSize / pageCount;
int messageCount = 50;
JCUser userTo = PersistedObjectsFactory.getUser("UserTo", "mail2@mail.com");
JCUser userFrom = PersistedObjectsFactory.getUser("UserFrom", "mail1@mail.com");
PageRequest pageRequest = new PageRequest("0", pageSize);
PersistedObjectsFactory.preparePrivateMessages(messageCount, userTo, userFrom);
Page<PrivateMessage> messagePage = dao.getAllFromUser(userFrom, pageRequest);
assertEquals(messagePage.getTotalPages(), pageCount, "Incorrect count of pages.");
}
@Test
public void testGetAllFromUserCommonCasePageTooLowPageNumberIsCorrect() {
int totalSize = 75;
int pageCount = 3;
int pageSize = totalSize / pageCount;
int messageCount = 50;
JCUser userTo = PersistedObjectsFactory.getUser("UserTo", "mail2@mail.com");
JCUser userFrom = PersistedObjectsFactory.getUser("UserFrom", "mail1@mail.com");
PageRequest pageRequest = new PageRequest("0", pageSize);
PersistedObjectsFactory.preparePrivateMessages(messageCount, userTo, userFrom);
Page<PrivateMessage> messagePage = dao.getAllFromUser(userFrom, pageRequest);
assertEquals(messagePage.getNumber(), 1, "Incorrect page number");
}
@Test
public void testGetAllFromUserCommonCasePageTooBigMessageOnOnePageIsCorrect() {
int totalSize = 75;
int pageCount = 3;
int pageSize = totalSize / pageCount;
int messageCount = 50;
JCUser userTo = PersistedObjectsFactory.getUser("UserTo", "mail2@mail.com");
JCUser userFrom = PersistedObjectsFactory.getUser("UserFrom", "mail1@mail.com");
PageRequest pageRequest = new PageRequest("1000",
pageSize);
PersistedObjectsFactory.preparePrivateMessages(messageCount, userTo, userFrom);
Page<PrivateMessage> messagePage = dao.getAllFromUser(userFrom, pageRequest);
assertEquals(messagePage.getContent().size(), pageSize, "Incorrect count of message in one page.");
}
@Test
public void testGetAllFromUserCommonCasePageTooBigPageCountIsCorrect() {
int totalSize = 75;
int pageCount = 3;
int pageSize = totalSize / pageCount;
int messageCount = 50;
JCUser userTo = PersistedObjectsFactory.getUser("UserTo", "mail2@mail.com");
JCUser userFrom = PersistedObjectsFactory.getUser("UserFrom", "mail1@mail.com");
PageRequest pageRequest = new PageRequest("1000",
pageSize);
PersistedObjectsFactory.preparePrivateMessages(messageCount, userTo, userFrom);
Page<PrivateMessage> messagePage = dao.getAllFromUser(userFrom, pageRequest);
assertEquals(messagePage.getTotalPages(), pageCount, "Incorrect count of pages.");
}
@Test
public void testGetAllFromUserCommonCasePageTooBigPageNumberIsCorrect() {
int totalSize = 75;
int pageCount = 3;
int pageSize = totalSize / pageCount;
int messageCount = 50;
JCUser userTo = PersistedObjectsFactory.getUser("UserTo", "mail2@mail.com");
JCUser userFrom = PersistedObjectsFactory.getUser("UserFrom", "mail1@mail.com");
PageRequest pageRequest = new PageRequest("1000",
pageSize);
PersistedObjectsFactory.preparePrivateMessages(messageCount, userTo, userFrom);
Page<PrivateMessage> messagePage = dao.getAllFromUser(userFrom, pageRequest);
assertEquals(messagePage.getNumber(), pageCount, "Incorrect page number");
}
@Test
public void testGetAllFromUserOneMessageCaseMessageCountOnOnePageIsCorrect() {
int pageSize = 25;
JCUser userTo = PersistedObjectsFactory.getUser("UserTo", "mail2@mail.com");
JCUser userFrom = PersistedObjectsFactory.getUser("UserFrom", "mail1" +
"@mail.com");
PageRequest pageRequest = new PageRequest("1", pageSize);
PersistedObjectsFactory.createAndSaveMessage(PrivateMessageStatus.SENT, userTo, userFrom);
Page<PrivateMessage> messagePage = dao.getAllFromUser(userFrom, pageRequest);
assertEquals(messagePage.getContent().size(), 1, "Incorrect count of message in one page.");
}
@Test
public void testGetAllFromUserOneMessageCasePageCountIsCorrect() {
int pageCount = 1;
int pageSize = 25;
JCUser userTo = PersistedObjectsFactory.getUser("UserTo", "mail2@mail.com");
JCUser userFrom = PersistedObjectsFactory.getUser("UserFrom", "mail1@mail.com");
PageRequest pageRequest = new PageRequest("1", pageSize);
PersistedObjectsFactory.createAndSaveMessage(PrivateMessageStatus.SENT, userTo, userFrom);
Page<PrivateMessage> messagePage = dao.getAllFromUser(userFrom, pageRequest);
assertEquals(messagePage.getTotalPages(), pageCount, "Incorrect count of pages.");
}
@Test
public void testGetAllToUserCommonCaseMessageStatusIsCorrect() {
int totalSize = 75;
int pageCount = 3;
int itemsOnPage = totalSize / pageCount;
int messageCount = 50;
JCUser userTo = PersistedObjectsFactory.getUser("UserTo", "mail2@mail.com");
JCUser userFrom = PersistedObjectsFactory.getUser("UserFrom", "mail1@mail.com");
PageRequest pageRequest = new PageRequest("1",
itemsOnPage);
PersistedObjectsFactory.preparePrivateMessages(messageCount, userTo, userFrom);
Page<PrivateMessage> messagePage = dao.getAllForUser(userTo, pageRequest);
for (PrivateMessage message : messagePage.getContent()) {
assertTrue(message.getStatus().equals(PrivateMessageStatus.SENT)
|| message.getStatus().equals(PrivateMessageStatus.NEW)
|| message.getStatus().equals(PrivateMessageStatus.DELETED_FROM_OUTBOX));
}
}
@Test
public void testGetAllToUserCommonCaseMessageCountOnOnePageIsCorrect() {
int totalSize = 75;
int pageCount = 3;
int itemsOnPage = totalSize / pageCount;
int messageCount = 50;
JCUser userTo = PersistedObjectsFactory.getUser("UserTo", "mail2@mail.com");
JCUser userFrom = PersistedObjectsFactory.getUser("UserFrom",
"mail1@mail.com");
PageRequest pageRequest = new PageRequest("1",
itemsOnPage);
PersistedObjectsFactory.preparePrivateMessages(messageCount, userTo, userFrom);
Page<PrivateMessage> messagePage = dao.getAllForUser(userTo, pageRequest);
assertEquals(messagePage.getContent().size(), itemsOnPage, "Incorrect count of message in one page.");
}
@Test
public void testGetAllToUserCommonCaseTotalMessageCountIsCorrect() {
int totalSize = 75;
int pageCount = 3;
int itemsOnPage = totalSize / pageCount;
int messageCount = 50;
JCUser userTo = PersistedObjectsFactory.getUser("UserTo", "mail2@mail.com");
JCUser userFrom = PersistedObjectsFactory.getUser("UserFrom", "mail1@mail.com");
PageRequest pageRequest = new PageRequest("1",
itemsOnPage);
PersistedObjectsFactory.preparePrivateMessages(messageCount, userTo, userFrom);
Page<PrivateMessage> messagePage = dao.getAllForUser(userTo, pageRequest);
assertEquals(messagePage.getTotalElements(), totalSize, "Incorrect total count.");
}
@Test
public void testGetAllToUserCommonCasePageCountIsCorrect() {
int totalSize = 75;
int pageCount = 3;
int itemsOnPage = totalSize / pageCount;
int messageCount = 50;
JCUser userTo = PersistedObjectsFactory.getUser("UserTo", "mail2@mail" +
".com");
JCUser userFrom = PersistedObjectsFactory.getUser("UserFrom", "mail1@mail.com");
PageRequest pageRequest = new PageRequest("1",
itemsOnPage);
PersistedObjectsFactory.preparePrivateMessages(messageCount, userTo, userFrom);
Page<PrivateMessage> messagePage = dao.getAllForUser(userTo, pageRequest);
assertEquals(messagePage.getTotalPages(), pageCount, "Incorrect count of pages.");
}
@Test
public void testGetAllToUserCommonCasePageTooLowPageCountIsCorrect() {
int totalSize = 75;
int pageCount = 3;
int itemsOnPage = totalSize / pageCount;
int messageCount = 50;
JCUser userTo = PersistedObjectsFactory.getUser("UserTo", "mail2@mail" +
".com");
JCUser userFrom = PersistedObjectsFactory.getUser("UserFrom", "mail1@mail.com");
PageRequest pageRequest = new PageRequest("0",
itemsOnPage);
PersistedObjectsFactory.preparePrivateMessages(messageCount, userTo, userFrom);
Page<PrivateMessage> messagePage = dao.getAllForUser(userTo, pageRequest);
assertEquals(messagePage.getTotalPages(), pageCount, "Incorrect count of pages.");
}
@Test
public void testGetAllToUserCommonCasePageTooLowPageNumberIsCorrect() {
int totalSize = 75;
int pageCount = 3;
int itemsOnPage = totalSize / pageCount;
int messageCount = 50;
JCUser userTo = PersistedObjectsFactory.getUser("UserTo", "mail2@mail.com");
JCUser userFrom = PersistedObjectsFactory.getUser("UserFrom", "mail1@mail.com");
PageRequest pageRequest = new PageRequest("0",
itemsOnPage);
PersistedObjectsFactory.preparePrivateMessages(messageCount, userTo, userFrom);
Page<PrivateMessage> messagePage = dao.getAllForUser(userTo, pageRequest);
assertEquals(messagePage.getNumber(), 1, "Incorrect page number.");
}
@Test
public void testGetAllToUserCommonCasePageTooBigMessageCountOnOnePageIsCorrect() {
int totalSize = 75;
int pageCount = 3;
int itemsOnPage = totalSize / pageCount;
int messageCount = 50;
JCUser userTo = PersistedObjectsFactory.getUser("UserTo", "mail2@mail.com");
JCUser userFrom = PersistedObjectsFactory.getUser("UserFrom", "mail1@mail.com");
PageRequest pageRequest = new PageRequest("1000",
itemsOnPage);
PersistedObjectsFactory.preparePrivateMessages(messageCount, userTo, userFrom);
Page<PrivateMessage> messagePage = dao.getAllForUser(userTo, pageRequest);
assertEquals(messagePage.getContent().size(), itemsOnPage, "Incorrect count of message in one page.");
}
@Test
public void testGetAllToUserCommonCasePageTooBigPageCountIsCorrect() {
int totalSize = 75;
int pageCount = 3;
int itemsOnPage = totalSize / pageCount;
int messageCount = 50;
JCUser userTo = PersistedObjectsFactory.getUser("UserTo", "mail2@mail.com");
JCUser userFrom = PersistedObjectsFactory.getUser("UserFrom", "mail1@mail.com");
PageRequest pageRequest = new PageRequest("1000",
itemsOnPage);
PersistedObjectsFactory.preparePrivateMessages(messageCount, userTo, userFrom);
Page<PrivateMessage> messagePage = dao.getAllForUser(userTo, pageRequest);
assertEquals(messagePage.getTotalPages(), pageCount, "Incorrect count of pages.");
}
@Test
public void testGetAllToUserCommonCasePageTooBigPageNumberIsCorrect() {
int totalSize = 75;
int pageCount = 3;
int itemsOnPage = totalSize / pageCount;
int messageCount = 50;
JCUser userTo = PersistedObjectsFactory.getUser("UserTo", "mail2@mail.com");
JCUser userFrom = PersistedObjectsFactory.getUser("UserFrom", "mail1@mail.com");
PageRequest pageRequest = new PageRequest("1000",
itemsOnPage);
PersistedObjectsFactory.preparePrivateMessages(messageCount, userTo, userFrom);
Page<PrivateMessage> messagePage = dao.getAllForUser(userTo, pageRequest);
assertEquals(messagePage.getNumber(), pageCount, "Incorrect page number.");
}
@Test
public void testGetAllToUserOneMessageCaseMessageCountOnOnePageIsCorrect() {
int pageCount = 1;
int itemsOnPage = 25;
JCUser userTo = PersistedObjectsFactory.getUser("UserTo", "mail2@mail.com");
JCUser userFrom = PersistedObjectsFactory.getUser("UserFrom", "mail1@mail.com");
PageRequest pageRequest = new PageRequest("1",
itemsOnPage);
PersistedObjectsFactory.createAndSaveMessage(PrivateMessageStatus.SENT, userTo, userFrom);
Page<PrivateMessage> messagePage = dao.getAllForUser(userTo, pageRequest);
assertEquals(messagePage.getContent().size(), 1, "Incorrect count of message in one page.");
assertEquals(messagePage.getTotalPages(), pageCount, "Incorrect count of pages.");
}
@Test
public void testGetAllToUserOneMessageCasePageCountIsCorrect() {
int pageCount = 1;
int itemsOnPage = 25;
JCUser userTo = PersistedObjectsFactory.getUser("UserTo", "mail2@mail.com");
JCUser userFrom = PersistedObjectsFactory.getUser("UserFrom", "mail1@mail.com");
PageRequest pageRequest = new PageRequest("1",
itemsOnPage);
PersistedObjectsFactory.createAndSaveMessage(PrivateMessageStatus.SENT, userTo, userFrom);
Page<PrivateMessage> messagePage = dao.getAllForUser(userTo, pageRequest);
assertEquals(messagePage.getTotalPages(), pageCount, "Incorrect count of pages.");
}
@Test
public void testGetDraftsFromUserCommonCaseMessageStatusIsCorrect() {
int totalSize = 50;
int pageCount = 2;
int itemsOnPage = totalSize / pageCount;
JCUser userTo = PersistedObjectsFactory.getUser("UserTo", "mail2@mail.com");
JCUser userFrom = PersistedObjectsFactory.getUser("UserFrom", "mail1@mail.com");
PageRequest pageRequest = new PageRequest("1",
itemsOnPage);
PersistedObjectsFactory.preparePrivateMessages(totalSize, userTo, userFrom);
Page<PrivateMessage> messagePage = dao.getDraftsForUser(userFrom, pageRequest);
for (PrivateMessage message : messagePage.getContent()) {
assertTrue(message.getStatus().equals(PrivateMessageStatus.DRAFT));
}
}
@Test
public void testGetDraftsFromUserCommonCaseMessageCountOnOnePageIsCorrect
() {
int totalSize = 50;
int pageCount = 2;
int itemsOnPage = totalSize / pageCount;
JCUser userTo = PersistedObjectsFactory.getUser("UserTo", "mail2@mail.com");
JCUser userFrom = PersistedObjectsFactory.getUser("UserFrom", "mail1@mail.com");
PageRequest pageRequest = new PageRequest("1",
itemsOnPage);
PersistedObjectsFactory.preparePrivateMessages(totalSize, userTo, userFrom);
Page<PrivateMessage> messagePage = dao.getDraftsForUser(userFrom, pageRequest);
assertEquals(messagePage.getContent().size(), itemsOnPage, "Incorrect count of message in one page.");
}
@Test
public void testGetDraftsFromUserCommonCaseTotalMessageCountIsCorrect() {
int totalSize = 50;
int pageCount = 2;
int itemsOnPage = totalSize / pageCount;
JCUser userTo = PersistedObjectsFactory.getUser("UserTo", "mail2@mail.com");
JCUser userFrom = PersistedObjectsFactory.getUser("UserFrom", "mail1@mail.com");
PageRequest pageRequest = new PageRequest("1",
itemsOnPage);
PersistedObjectsFactory.preparePrivateMessages(totalSize, userTo, userFrom);
Page<PrivateMessage> messagePage = dao.getDraftsForUser(userFrom, pageRequest);
assertEquals(messagePage.getTotalElements(), totalSize, "Incorrect total count.");
}
@Test
public void testGetDraftsFromUserCommonCasePageCountIsCorrect() {
int totalSize = 50;
int pageCount = 2;
int itemsOnPage = totalSize / pageCount;
JCUser userTo = PersistedObjectsFactory.getUser("UserTo", "mail2@mail.com");
JCUser userFrom = PersistedObjectsFactory.getUser("UserFrom", "mail1@mail.com");
PageRequest pageRequest = new PageRequest("1",
itemsOnPage);
PersistedObjectsFactory.preparePrivateMessages(totalSize, userTo, userFrom);
Page<PrivateMessage> messagePage = dao.getDraftsForUser(userFrom, pageRequest);
assertEquals(messagePage.getTotalPages(), pageCount, "Incorrect count of pages.");
}
@Test
public void testGetDraftsFromUserCommonCasePageTooLowPageNumberIsCorrect() {
int totalSize = 50;
int pageCount = 2;
int itemsOnPage = totalSize / pageCount;
JCUser userTo = PersistedObjectsFactory.getUser("UserTo", "mail2@mail.com");
JCUser userFrom = PersistedObjectsFactory.getUser("UserFrom", "mail1@mail.com");
PageRequest pageRequest = new PageRequest("0",
itemsOnPage);
PersistedObjectsFactory.preparePrivateMessages(totalSize, userTo, userFrom);
Page<PrivateMessage> messagePage = dao.getDraftsForUser(userFrom, pageRequest);
assertEquals(messagePage.getNumber(), 1, "Incorrect page number");
}
@Test
public void testGetDraftsFromUserCommonCasePageTooLowPageCountIsCorrect() {
int totalSize = 50;
int pageCount = 2;
int itemsOnPage = totalSize / pageCount;
JCUser userTo = PersistedObjectsFactory.getUser("UserTo", "mail2@mail.com");
JCUser userFrom = PersistedObjectsFactory.getUser("UserFrom", "mail1@mail.com");
PageRequest pageRequest = new PageRequest("0",
itemsOnPage);
PersistedObjectsFactory.preparePrivateMessages(totalSize, userTo, userFrom);
Page<PrivateMessage> messagePage = dao.getDraftsForUser(userFrom, pageRequest);
assertEquals(messagePage.getTotalPages(), pageCount, "Incorrect count of pages.");
}
@Test
public void testGetDraftsFromUserCommonCasePageTooBigMessageCountOnOnePageIsCorrect() {
int totalSize = 50;
int pageCount = 2;
int itemsOnPage = totalSize / pageCount;
JCUser userTo = PersistedObjectsFactory.getUser("UserTo", "mail2@mail.com");
JCUser userFrom = PersistedObjectsFactory.getUser("UserFrom", "mail1@mail.com");
PageRequest pageRequest = new PageRequest("1000",
itemsOnPage);
PersistedObjectsFactory.preparePrivateMessages(totalSize, userTo, userFrom);
Page<PrivateMessage> messagePage = dao.getDraftsForUser(userFrom, pageRequest);
assertEquals(messagePage.getContent().size(), itemsOnPage, "Incorrect count of message in one page.");
}
@Test
public void testGetDraftsFromUserCommonCasePageTooBigPageCountIsCorrect() {
int totalSize = 50;
int pageCount = 2;
int itemsOnPage = totalSize / pageCount;
JCUser userTo = PersistedObjectsFactory.getUser("UserTo", "mail2@mail.com");
JCUser userFrom = PersistedObjectsFactory.getUser("UserFrom", "mail1@mail.com");
PageRequest pageRequest = new PageRequest("1000",
itemsOnPage);
PersistedObjectsFactory.preparePrivateMessages(totalSize, userTo, userFrom);
Page<PrivateMessage> messagePage = dao.getDraftsForUser(userFrom, pageRequest);
assertEquals(messagePage.getTotalPages(), pageCount, "Incorrect count of pages.");
}
@Test
public void testGetDraftsFromUserCommonCasePageTooBigPageNumberIsCorrect() {
int totalSize = 50;
int pageCount = 2;
int itemsOnPage = totalSize / pageCount;
JCUser userTo = PersistedObjectsFactory.getUser("UserTo", "mail2@mail.com");
JCUser userFrom = PersistedObjectsFactory.getUser("UserFrom", "mail1@mail.com");
PageRequest pageRequest = new PageRequest("1000",
itemsOnPage);
PersistedObjectsFactory.preparePrivateMessages(totalSize, userTo, userFrom);
Page<PrivateMessage> messagePage = dao.getDraftsForUser(userFrom, pageRequest);
assertEquals(messagePage.getNumber(), pageCount, "Incorrect page number");
}
@Test
public void testGetDraftsFromUserOneMessageCaseMessageCountOnOnePageIsCorrect() {
int totalSize = 50;
int pageCount = 1;
int itemsOnPage = totalSize / pageCount;
int messageNumber = 1;
JCUser userTo = PersistedObjectsFactory.getUser("UserTo", "mail2@mail.com");
JCUser userFrom = PersistedObjectsFactory.getUser("UserFrom", "mail1@mail.com");
PageRequest pageRequest = new PageRequest("1",
itemsOnPage);
PersistedObjectsFactory.preparePrivateMessages(messageNumber, userTo, userFrom);
Page<PrivateMessage> messagePage = dao.getDraftsForUser(userFrom, pageRequest);
assertEquals(messagePage.getContent().size(), messageNumber, "Incorrect count of message in one page.");
}
@Test
public void testGetDraftsFromUserOneMessageCasePageCountIsCorrect() {
int totalSize = 50;
int pageCount = 1;
int itemsOnPage = totalSize / pageCount;
int messageNumber = 1;
JCUser userTo = PersistedObjectsFactory.getUser("UserTo", "mail2@mail.com");
JCUser userFrom = PersistedObjectsFactory.getUser("UserFrom", "mail1@mail.com");
PageRequest pageRequest = new PageRequest("1", itemsOnPage);
PersistedObjectsFactory.preparePrivateMessages(messageNumber, userTo, userFrom);
Page<PrivateMessage> messagePage = dao.getDraftsForUser(userFrom, pageRequest);
assertEquals(messagePage.getTotalPages(), pageCount, "Incorrect count of pages.");
}
@Test
public void testGetNewMessagesCountFor() {
saveMessagesWithDifferentStatus();
int count = dao.getNewMessagesCountFor(recipient.getUsername());
assertEquals(count, 1);
}
private void saveMessagesWithDifferentStatus() {
author = ObjectsFactory.getUser("author", "author@aaa.com");
recipient = ObjectsFactory.getUser("recipient", "recipient@aaa.com");
session.saveOrUpdate(author);
session.saveOrUpdate(recipient);
// creating messages with different statuses
notReadPm = ObjectsFactory.getPrivateMessage(recipient, author);
notReadPm.setStatus(PrivateMessageStatus.SENT);
readPm = ObjectsFactory.getPrivateMessage(recipient, author);
readPm.setStatus(PrivateMessageStatus.SENT);
readPm.setRead(true);
draftPm = ObjectsFactory.getPrivateMessage(recipient, author);
draftPm.setStatus(PrivateMessageStatus.DRAFT);
session.save(notReadPm);
session.save(readPm);
session.save(draftPm);
}
/**
* Count the number of PrivateMessage in the db.
*/
private int getCount() {
return ((Number) session.createQuery("select count(*) from PrivateMessage").uniqueResult()).intValue();
}
/**
* Create new PrivateMessage with filled fields and save it.
*/
private PrivateMessage getSavedPm() throws HibernateException {
PrivateMessage pm = PersistedObjectsFactory.getDefaultPrivateMessage();
session.saveOrUpdate(pm);
return pm;
}
}