package com.tencent.dao;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import java.sql.Blob;
import java.util.List;
import org.apache.log4j.Logger;
import org.hibernate.Hibernate;
import org.junit.After;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.transaction.TransactionConfiguration;
import com.tencent.model.Message;
import com.tencent.model.User;
@ContextConfiguration({ "/applicationContext.xml" })
@TransactionConfiguration(transactionManager = "hibernateTransactionManager", defaultRollback = true)
public class MessageDAOImplTest {
public static Logger log = Logger.getLogger(MessageDAOImplTest.class);
private Message message = new Message("topic", false, 1);
private User user = new User("username", "password", "M", "test@qq.com",
"935789181", "13871398643", "CS", "大二", 0, "description", 1, 1);
private static IMessageDAO messageDao;
private static IUserDAO userDao;
private User t_user;
@BeforeClass
public static void setUpBeforeClass() throws Exception {
ApplicationContext ctx = new ClassPathXmlApplicationContext(
"applicationContext.xml");
messageDao = (IMessageDAO) ctx.getBean("messageDao");
userDao = (IUserDAO) ctx.getBean("userDao");
}
@SuppressWarnings("deprecation")
@Before
public void setUp() throws Exception {
int id = userDao.save(user);
t_user = userDao.findById(User.class, id);
message.setSender(t_user);
Blob blob = (Blob) Hibernate.createBlob("content".getBytes());
message.setContent(blob);
}
@After
public void tearDown() throws Exception {
Message t_message = messageDao.findByTopic("topic");
if(t_message != null){
messageDao.delete(t_message);
}
t_user = userDao.findByName("username");
if(t_user != null){
userDao.delete(t_user);
}
}
@Test
public final void testListOutDateUserBoolean() {
int id = messageDao.save(message);
List<Message> list = messageDao.listOutDate(t_user, false);
assertTrue(!list.isEmpty());
assertEquals(id, list.get(0).getId());
}
@Test
public final void testListOutDateUserBooleanIntInt() {
int id = messageDao.save(message);
List<Message> list = messageDao.listOutDate(t_user, false, 0, 1);
assertTrue(!list.isEmpty());
assertEquals(id, list.get(0).getId());
}
@Test
public final void testFindById() {
int id = messageDao.save(message);
Message t_message = messageDao.findById(Message.class, id);
assertEquals(id, t_message.getId());
}
@Test
public final void testSave() {
int id = messageDao.save(message);
Message t_message = messageDao.findById(Message.class, id);
assertNotNull(t_message);
assertEquals(id, t_message.getId());
}
@Test
public final void testDelete() {
int id = messageDao.save(message);
Message t_message = messageDao.findById(Message.class, id);
messageDao.delete(t_message);
t_message = messageDao.findById(Message.class, id);
assertNull(t_message);
}
@Test
public final void testUpdate() {
int id = messageDao.save(message);
Message t_message = messageDao.findById(Message.class, id);
t_message.setOutdate(true);
t_message.setType(2);
messageDao.update(t_message);
t_message = null;
t_message = messageDao.findById(Message.class, id);
assertEquals(true, t_message.getOutdate());
assertEquals(2, t_message.getType());
}
@SuppressWarnings("unchecked")
@Test
public final void testListString() {
int id = messageDao.save(message);
List<Message> list = (List<Message>) messageDao.list("from Message");
assertTrue(!list.isEmpty());
assertEquals(id,list.get(0).getId());
}
@Test
public final void testListStringIntIntObjectArray() {
int id = messageDao.save(message);
@SuppressWarnings("unchecked")
List<Message> list = (List<Message>) messageDao.list("from Message m where m.topic=? and m.outdate=?", 0, 1, "topic",false);
assertTrue(!list.isEmpty());
assertEquals(id, list.get(0).getId());
}
}