Package org.springside.examples.showcase.unit.common

Source Code of org.springside.examples.showcase.unit.common.PostDaoTest

package org.springside.examples.showcase.unit.common;

import static org.junit.Assert.*;

import java.util.Date;

import javax.sql.DataSource;

import org.junit.AfterClass;
import org.junit.Before;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.transaction.TransactionConfiguration;
import org.springside.examples.showcase.common.dao.ReplyDao;
import org.springside.examples.showcase.common.dao.SubjectDao;
import org.springside.examples.showcase.common.dao.UserDao;
import org.springside.examples.showcase.common.entity.Reply;
import org.springside.examples.showcase.common.entity.Subject;
import org.springside.examples.showcase.common.entity.User;
import org.springside.modules.test.spring.SpringTxTestCase;
import org.springside.modules.test.utils.DbUnitUtils;

/**
* PostDao的集成测试用例,测试ORM映射及特殊的DAO操作.
*
* @author calvin
*/
@ContextConfiguration(locations = { "/applicationContext-test.xml" })
@TransactionConfiguration(transactionManager = "defaultTransactionManager")
public class PostDaoTest extends SpringTxTestCase {

  private static DataSource dataSourceHolder = null;

  @Autowired
  private SubjectDao subjectDao;
  @Autowired
  private ReplyDao replyDao;
  @Autowired
  private UserDao userDao;

  @Before
  public void loadDefaultData() throws Exception {
    if (dataSourceHolder == null) {
      DbUnitUtils.loadData(dataSource, "/data/default-data.xml");
      dataSourceHolder = dataSource;
    }
  }

  @AfterClass
  public static void cleanDefaultData() throws Exception {
    DbUnitUtils.removeData(dataSourceHolder, "/data/default-data.xml");
  }

  @Test
  public void getSubjectDetail() {
    Subject subject = subjectDao.getDetailWithReply("1");
    subjectDao.getSession().evict(subject);

    assertEquals(1, subject.getReplyList().size());
    assertEquals("Hello World!!", subject.getContent());
    assertEquals("Good Morning!!", subject.getReplyList().get(0).getContent());
  }

  @Test
  public void createSubject() {
    Subject subject = new Subject();
    subject.setTitle("Good Night");
    subject.setContent("Good Night!!");
    subject.setModifyTime(new Date());

    User user = userDao.get("1");
    subject.setUser(user);

    subjectDao.save(subject);
    subjectDao.flush();
    subject = subjectDao.getDetail(subject.getId());
    assertEquals("Good Night!!", subject.getContent());
  }

  @Test
  public void updateSubject() {
    Subject subject = subjectDao.getDetail("1");
    subject.setTitle("Good Afternoon");
    subject.setContent("Good Afternoon!!!");
    subject.setModifyTime(new Date());

    subjectDao.save(subject);
    subjectDao.flush();
    subject = subjectDao.getDetail(subject.getId());
    assertEquals("Good Afternoon!!!", subject.getContent());
  }

  @Test
  public void deleteSubject() {
    subjectDao.delete("1");
    subjectDao.flush();
    Subject subject = subjectDao.findUniqueBy("id", "1");
    assertNull(subject);
  }

  @Test
  public void createReply() {
    Reply reply = new Reply();
    reply.setTitle("GoodAfternoon");
    reply.setContent("Good Afternoon!!!");
    reply.setModifyTime(new Date());

    User user = userDao.get("1");
    reply.setUser(user);

    Subject subject = subjectDao.get("1");
    reply.setSubject(subject);

    replyDao.save(reply);
    replyDao.flush();
  }

  @Test
  public void updateReply() {
    Reply reply = replyDao.getDetail("2");
    reply.setTitle("GoodEvening");
    reply.setContent("Good Evening!!!");

    replyDao.save(reply);
    replyDao.flush();
  }

  @Test
  public void deleteReply() {
    replyDao.delete("2");
  }
}
TOP

Related Classes of org.springside.examples.showcase.unit.common.PostDaoTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.