/projects/hibernate-4.2.0/project/hibernate-envers/src/test/java/org/hibernate/envers/test/integration/reventity/trackmodifiedentities/DefaultTrackingEntitiesTest.java
https://gitlab.com/essere.lab.public/qualitas.class-corpus · Java · 190 lines · 148 code · 34 blank · 8 comment · 5 complexity · 9f805e621fb0a2a6af5e41ead3dbf85e MD5 · raw file
- package org.hibernate.envers.test.integration.reventity.trackmodifiedentities;
- import java.util.Iterator;
- import java.util.List;
- import java.util.Map;
- import java.util.Properties;
- import javax.persistence.EntityManager;
- import org.junit.Test;
- import org.hibernate.ejb.Ejb3Configuration;
- import org.hibernate.envers.CrossTypeRevisionChangesReader;
- import org.hibernate.envers.RevisionType;
- import org.hibernate.envers.test.BaseEnversJPAFunctionalTestCase;
- import org.hibernate.envers.test.Priority;
- import org.hibernate.envers.test.entities.StrIntTestEntity;
- import org.hibernate.envers.test.entities.StrTestEntity;
- import org.hibernate.envers.test.tools.TestTools;
- import org.hibernate.envers.tools.Pair;
- import org.hibernate.mapping.Column;
- import org.hibernate.mapping.Table;
- /**
- * Tests proper behavior of tracking modified entity names when {@code org.hibernate.envers.track_entities_changed_in_revision}
- * parameter is set to {@code true}.
- * @author Lukasz Antoniak (lukasz dot antoniak at gmail dot com)
- */
- @SuppressWarnings({"unchecked"})
- public class DefaultTrackingEntitiesTest extends BaseEnversJPAFunctionalTestCase {
- private Integer steId = null;
- private Integer siteId = null;
- @Override
- public void configure(Ejb3Configuration cfg) {
- cfg.addAnnotatedClass(StrTestEntity.class);
- cfg.addAnnotatedClass(StrIntTestEntity.class);
- }
- @Override
- public void addConfigOptions(Map configuration) {
- super.addConfigOptions( configuration );
- configuration.put("org.hibernate.envers.track_entities_changed_in_revision", "true");
- }
- @Test
- @Priority(10)
- public void initData() {
- EntityManager em = getEntityManager();
-
- // Revision 1 - Adding two entities
- em.getTransaction().begin();
- StrTestEntity ste = new StrTestEntity("x");
- StrIntTestEntity site = new StrIntTestEntity("y", 1);
- em.persist(ste);
- em.persist(site);
- steId = ste.getId();
- siteId = site.getId();
- em.getTransaction().commit();
- // Revision 2 - Modifying one entity
- em.getTransaction().begin();
- site = em.find(StrIntTestEntity.class, siteId);
- site.setNumber(2);
- em.getTransaction().commit();
- // Revision 3 - Deleting both entities
- em.getTransaction().begin();
- ste = em.find(StrTestEntity.class, steId);
- site = em.find(StrIntTestEntity.class, siteId);
- em.remove(ste);
- em.remove(site);
- em.getTransaction().commit();
- }
- @Test
- public void testRevEntityTableCreation() {
- Iterator<Table> tableIterator = getCfg().getTableMappings();
- while (tableIterator.hasNext()) {
- Table table = tableIterator.next();
- if ("REVCHANGES".equals(table.getName())) {
- assert table.getColumnSpan() == 2;
- assert table.getColumn(new Column("REV")) != null;
- assert table.getColumn(new Column("ENTITYNAME")) != null;
- return;
- }
- }
- assert false;
- }
- @Test
- public void testTrackAddedEntities() {
- StrTestEntity ste = new StrTestEntity("x", steId);
- StrIntTestEntity site = new StrIntTestEntity("y", 1, siteId);
- assert TestTools.checkList(getCrossTypeRevisionChangesReader().findEntities(1), ste, site);
- }
- @Test
- public void testTrackModifiedEntities() {
- StrIntTestEntity site = new StrIntTestEntity("y", 2, siteId);
- assert TestTools.checkList(getCrossTypeRevisionChangesReader().findEntities(2), site);
- }
- @Test
- public void testTrackDeletedEntities() {
- StrTestEntity ste = new StrTestEntity(null, steId);
- StrIntTestEntity site = new StrIntTestEntity(null, null, siteId);
- assert TestTools.checkList(getCrossTypeRevisionChangesReader().findEntities(3), site, ste);
- }
- @Test
- public void testFindChangesInInvalidRevision() {
- assert getCrossTypeRevisionChangesReader().findEntities(4).isEmpty();
- }
- @Test
- public void testTrackAddedEntitiesGroupByRevisionType() {
- StrTestEntity ste = new StrTestEntity("x", steId);
- StrIntTestEntity site = new StrIntTestEntity("y", 1, siteId);
- Map<RevisionType, List<Object>> result = getCrossTypeRevisionChangesReader().findEntitiesGroupByRevisionType(1);
- assert TestTools.checkList(result.get(RevisionType.ADD), site, ste);
- assert TestTools.checkList(result.get(RevisionType.MOD));
- assert TestTools.checkList(result.get(RevisionType.DEL));
- }
- @Test
- public void testTrackModifiedEntitiesGroupByRevisionType() {
- StrIntTestEntity site = new StrIntTestEntity("y", 2, siteId);
- Map<RevisionType, List<Object>> result = getCrossTypeRevisionChangesReader().findEntitiesGroupByRevisionType(2);
- assert TestTools.checkList(result.get(RevisionType.ADD));
- assert TestTools.checkList(result.get(RevisionType.MOD), site);
- assert TestTools.checkList(result.get(RevisionType.DEL));
- }
- @Test
- public void testTrackDeletedEntitiesGroupByRevisionType() {
- StrTestEntity ste = new StrTestEntity(null, steId);
- StrIntTestEntity site = new StrIntTestEntity(null, null, siteId);
- Map<RevisionType, List<Object>> result = getCrossTypeRevisionChangesReader().findEntitiesGroupByRevisionType(3);
- assert TestTools.checkList(result.get(RevisionType.ADD));
- assert TestTools.checkList(result.get(RevisionType.MOD));
- assert TestTools.checkList(result.get(RevisionType.DEL), site, ste);
- }
- @Test
- public void testFindChangedEntitiesByRevisionTypeADD() {
- StrTestEntity ste = new StrTestEntity("x", steId);
- StrIntTestEntity site = new StrIntTestEntity("y", 1, siteId);
- assert TestTools.checkList(getCrossTypeRevisionChangesReader().findEntities(1, RevisionType.ADD), ste, site);
- }
- @Test
- public void testFindChangedEntitiesByRevisionTypeMOD() {
- StrIntTestEntity site = new StrIntTestEntity("y", 2, siteId);
- assert TestTools.checkList(getCrossTypeRevisionChangesReader().findEntities(2, RevisionType.MOD), site);
- }
- @Test
- public void testFindChangedEntitiesByRevisionTypeDEL() {
- StrTestEntity ste = new StrTestEntity(null, steId);
- StrIntTestEntity site = new StrIntTestEntity(null, null, siteId);
- assert TestTools.checkList(getCrossTypeRevisionChangesReader().findEntities(3, RevisionType.DEL), ste, site);
- }
- @Test
- public void testFindEntityTypesChangedInRevision() {
- assert TestTools.makeSet(Pair.make(StrTestEntity.class.getName(), StrTestEntity.class),
- Pair.make(StrIntTestEntity.class.getName(), StrIntTestEntity.class))
- .equals(getCrossTypeRevisionChangesReader().findEntityTypes(1));
- assert TestTools.makeSet(Pair.make(StrIntTestEntity.class.getName(), StrIntTestEntity.class))
- .equals(getCrossTypeRevisionChangesReader().findEntityTypes(2));
-
- assert TestTools.makeSet(Pair.make(StrTestEntity.class.getName(), StrTestEntity.class),
- Pair.make(StrIntTestEntity.class.getName(), StrIntTestEntity.class))
- .equals(getCrossTypeRevisionChangesReader().findEntityTypes(3));
- }
- private CrossTypeRevisionChangesReader getCrossTypeRevisionChangesReader() {
- return getAuditReader().getCrossTypeRevisionChangesReader();
- }
- }