package org.hibernate.envers.test.integration.superclass.auditoverride; import javax.persistence.EntityManager; import org.junit.Assert; import org.junit.Test; import org.hibernate.ejb.Ejb3Configuration; import org.hibernate.envers.test.BaseEnversJPAFunctionalTestCase; import org.hibernate.envers.test.Priority; import org.hibernate.mapping.Column; import org.hibernate.mapping.Table; import org.hibernate.testing.TestForIssue; /** * @author Lukasz Antoniak (lukasz dot antoniak at gmail dot com) */ @TestForIssue(jiraKey = "HHH-4439") public class AuditClassOverrideTest extends BaseEnversJPAFunctionalTestCase { private Integer classAuditedEntityId = null; private Integer classNotAuditedEntityId = null; private Table classAuditedTable = null; private Table classNotAuditedTable = null; @Override public void configure(Ejb3Configuration cfg) { cfg.addAnnotatedClass(ClassOverrideAuditedEntity.class); cfg.addAnnotatedClass(ClassOverrideNotAuditedEntity.class); } @Test @Priority(10) public void initData() { EntityManager em = getEntityManager(); // Revision 1 em.getTransaction().begin(); ClassOverrideAuditedEntity classOverrideAuditedEntity = new ClassOverrideAuditedEntity("data 1", 1, "data 2"); em.persist(classOverrideAuditedEntity); em.getTransaction().commit(); classAuditedEntityId = classOverrideAuditedEntity.getId(); // Revision 2 em.getTransaction().begin(); ClassOverrideNotAuditedEntity classOverrideNotAuditedEntity = new ClassOverrideNotAuditedEntity("data 1", 1, "data 2"); em.persist(classOverrideNotAuditedEntity); em.getTransaction().commit(); classNotAuditedEntityId = classOverrideNotAuditedEntity.getId(); classAuditedTable = getCfg().getClassMapping("org.hibernate.envers.test.integration.superclass.auditoverride.ClassOverrideAuditedEntity_AUD").getTable(); classNotAuditedTable = getCfg().getClassMapping("org.hibernate.envers.test.integration.superclass.auditoverride.ClassOverrideNotAuditedEntity_AUD").getTable(); } @Test public void testAuditedProperty() { Assert.assertNotNull(classAuditedTable.getColumn(new Column("number1"))); Assert.assertNotNull(classAuditedTable.getColumn(new Column("str1"))); Assert.assertNotNull(classAuditedTable.getColumn(new Column("str2"))); Assert.assertNotNull(classNotAuditedTable.getColumn(new Column("str2"))); } @Test public void testNotAuditedProperty() { Assert.assertNull(classNotAuditedTable.getColumn(new Column("number1"))); Assert.assertNull(classNotAuditedTable.getColumn(new Column("str1"))); } @Test public void testHistoryOfClassOverrideAuditedEntity() { ClassOverrideAuditedEntity ver1 = new ClassOverrideAuditedEntity("data 1", 1, classAuditedEntityId, "data 2"); Assert.assertEquals(ver1, getAuditReader().find(ClassOverrideAuditedEntity.class, classAuditedEntityId, 1)); } @Test public void testHistoryOfClassOverrideNotAuditedEntity() { ClassOverrideNotAuditedEntity ver1 = new ClassOverrideNotAuditedEntity(null, null, classNotAuditedEntityId, "data 2"); Assert.assertEquals(ver1, getAuditReader().find(ClassOverrideNotAuditedEntity.class, classNotAuditedEntityId, 2)); } }