/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.envers.test.integration.generated;
import javax.persistence.EntityManager;
import org.hibernate.envers.test.BaseEnversJPAFunctionalTestCase;
import org.hibernate.envers.test.Priority;
import org.hibernate.testing.TestForIssue;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
/**
* @author Chris Cranford
*/
@TestForIssue(jiraKey = "HHH-10841")
public class GeneratedColumnTest extends BaseEnversJPAFunctionalTestCase {
private Integer entityId;
@Override
protected Class<?>[] getAnnotatedClasses() {
return new Class<?>[] { SimpleEntity.class };
}
@Test
@Priority(10)
public void initData() {
EntityManager entityManager = getOrCreateEntityManager();
try {
// Revision 1
SimpleEntity se = new SimpleEntity();
se.setData( "data" );
entityManager.getTransaction().begin();
entityManager.persist( se );
entityManager.getTransaction().commit();
entityManager.clear();
entityId = se.getId();
// Revision 2
entityManager.getTransaction().begin();
se = entityManager.find( SimpleEntity.class, se.getId() );
se.setData( "data2" );
entityManager.merge( se );
entityManager.getTransaction().commit();
// Revision 3
entityManager.getTransaction().begin();
se = entityManager.find( SimpleEntity.class, se.getId() );
entityManager.remove( se );
entityManager.getTransaction().commit();
}
finally {
entityManager.close();
}
}
@Test
public void getRevisionCounts() {
assertEquals( 3, getAuditReader().getRevisions( SimpleEntity.class, entityId ).size() );
}
@Test
public void testRevisionHistory() {
// revision - insertion
final SimpleEntity rev1 = getAuditReader().find( SimpleEntity.class, entityId, 1 );
assertEquals( "data", rev1.getData() );
assertEquals( 1, rev1.getCaseNumberInsert() );
// revision - update
final SimpleEntity rev2 = getAuditReader().find( SimpleEntity.class, entityId, 2 );
assertEquals( "data2", rev2.getData() );
assertEquals( 1, rev2.getCaseNumberInsert() );
// revision - deletion
final SimpleEntity rev3 = getAuditReader().find( SimpleEntity.class, entityId, 3 );
assertEquals( "data2", rev2.getData() );
assertEquals( 1, rev2.getCaseNumberInsert() );
}
}