/*
* References:
* https://src.springframework.org/svn/spring-samples/templates/spring-jpa/trunk/template/src/test/java/mytld/mycompany/myapp/OrderPersistenceTests.java
* http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/beans.html
* 4.9.2 @Autowired
*
* Libraries:
* org.springframework.test-X.X.X.RELEASE.jar
*/
package com.iiiss.ssh.tests;
import static org.junit.Assert.*;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
import com.iiiss.ssh.core.daos.ColumnDao;
import com.iiiss.ssh.core.entities.Column;
@ContextConfiguration(locations = "file:ssh/WEB-INF/app-context-test.xml")
@RunWith(SpringJUnit4ClassRunner.class)
@Transactional
public class ColumnDaoTest {
@PersistenceContext
private EntityManager entityManager;
@Autowired
private ColumnDao columnDao;
@Before
public void setUp() {
this.verifyNoColumn();
}
@After
public void tearDown() {
this.verifyNoColumn();
}
@Test
public void testOne() {
Column column;
List<Column> columns;
column = columnDao.insert("example");
verifyPersistedColumn(column, "example");
column = columnDao.selectOne(column.getId());
verifyPersistedColumn(column, "example");
columns = columnDao.selectAll();
assertEquals(1, columns.size());
column = columns.get(0);
verifyPersistedColumn(column, "example");
columnDao.delete(column);
}
@Test
public void testTwo() {
Column column1, column2;
List<Column> columns;
column1 = columnDao.insert("column1");
verifyPersistedColumn(column1, "column1");
column2 = columnDao.insert("column2", column1);
verifyPersistedColumn(column2, "column2");
column1 = columnDao.selectOne(column1.getId());
verifyPersistedColumn(column1, "column1");
column2 = columnDao.selectOne(column2.getId());
verifyPersistedColumn(column2, "column2");
columns = columnDao.selectAll();
assertEquals(2, columns.size());
column1 = columns.get(0);
column2 = columns.get(1);
verifyPersistedColumn(column1, "column1");
verifyPersistedColumn(column2, "column2");
assertNull(column1.getParent());
assertEquals(1, column1.getChildren().size());
assertEquals(column2, column1.getChildren().get(0));
assertEquals(column1, column2.getParent());
assertEquals(0, column2.getChildren().size());
columnDao.delete(column1);
}
private void verifyPersistedColumn(Column column, String correctName) {
assertNotNull(column);
assertNotNull(column.getId());
assertEquals(correctName, column.getName());
}
@SuppressWarnings("unchecked")
private void verifyNoColumn() {
Query query = entityManager.createQuery("SELECT c FROM " + Column.ENTITY_NAME + " c ");
List<Column> columns = query.getResultList();
assertTrue(columns.isEmpty());
}
}