package org.hibernate.envers.test.integration.reventity.trackmodifiedentities;
import org.hibernate.MappingException;
import org.hibernate.envers.test.AbstractSessionTest;
import org.hibernate.envers.test.Priority;
import org.hibernate.envers.test.integration.entityNames.manyToManyAudited.Car;
import org.hibernate.envers.test.integration.entityNames.manyToManyAudited.Person;
import org.hibernate.envers.test.tools.TestTools;
import org.hibernate.envers.tools.Pair;
import org.junit.Test;
import java.io.File;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
/**
* @author Lukasz Antoniak (lukasz dot antoniak at gmail dot com)
*/
public class EntityNamesTest extends AbstractSessionTest {
protected void initMappings() throws MappingException, URISyntaxException {
URL url = Thread.currentThread().getContextClassLoader().getResource("mappings/entityNames/manyToManyAudited/mappings.hbm.xml");
config.addFile(new File(url.toURI()));
config.setProperty("org.hibernate.envers.track_entities_changed_in_revision", "true");
}
@Test
@Priority(10)
public void initData() {
Person pers1 = new Person("Hernan", 28);
Person pers2 = new Person("Leandro", 29);
Person pers3 = new Person("Barba", 32);
Person pers4 = new Person("Camomo", 15);
// Revision 1
getSession().getTransaction().begin();
List<Person > owners = new ArrayList<Person>();
owners.add(pers1);
owners.add(pers2);
owners.add(pers3);
Car car1 = new Car(5, owners);
getSession().persist(car1);
getSession().getTransaction().commit();
long person1Id = pers1.getId();
// Revision 2
owners = new ArrayList<Person>();
owners.add(pers2);
owners.add(pers3);
owners.add(pers4);
Car car2 = new Car(27, owners);
getSession().getTransaction().begin();
Person person1 = (Person)getSession().get("Personaje", person1Id);
person1.setName("Hernan David");
person1.setAge(40);
getSession().persist(car1);
getSession().persist(car2);
getSession().getTransaction().commit();
}
@Test
@SuppressWarnings("unchecked")
public void testModifiedEntityTypes() {
assert TestTools.makeSet(Pair.make(Car.class.getName(), Car.class),
Pair.make("Personaje", Person.class))
.equals(getAuditReader().getCrossTypeRevisionChangesReader().findEntityTypes(1));
assert TestTools.makeSet(Pair.make(Car.class.getName(), Car.class),
Pair.make("Personaje", Person.class))
.equals(getAuditReader().getCrossTypeRevisionChangesReader().findEntityTypes(2));
}
}