/**
*
*/
package org.hibernate.envers.test.integration.collection;
import static org.junit.Assert.assertEquals;
import java.util.HashSet;
import javax.persistence.EntityManager;
import org.hibernate.envers.test.BaseEnversJPAFunctionalTestCase;
import org.hibernate.envers.test.entities.collection.CompositeCustomTypeSetEntity;
import org.hibernate.envers.test.entities.customtype.Component;
import org.hibernate.envers.test.tools.TestTools;
import org.hibernate.testing.FailureExpected;
import org.hibernate.testing.TestForIssue;
import org.junit.Test;
/**
* @author Felix Feisst (feisst dot felix at gmail dot com)
*/
public class CompositeCustomType extends BaseEnversJPAFunctionalTestCase {
@Override
protected Class<?>[] getAnnotatedClasses() {
return new Class[] { CompositeCustomTypeSetEntity.class };
}
@Test
@TestForIssue(jiraKey = "HHH-9207")
@FailureExpected(jiraKey = "HHH-9207")
public void testRemoval() {
EntityManager em = getEntityManager();
final Component comp1 = new Component( null, 11 );
final Component comp2 = new Component( null, 22 );
final CompositeCustomTypeSetEntity entity = new CompositeCustomTypeSetEntity();
entity.setComponents( new HashSet<Component>() );
entity.getComponents().add( comp1 );
entity.getComponents().add( comp2 );
em.getTransaction().begin();
em.persist( entity );
em.getTransaction().commit();
em.getTransaction().begin();
entity.getComponents().remove( comp1 );
em.getTransaction().commit();
CompositeCustomTypeSetEntity rev1 = getAuditReader().find( CompositeCustomTypeSetEntity.class, entity.getId(), 1 );
CompositeCustomTypeSetEntity rev2 = getAuditReader().find( CompositeCustomTypeSetEntity.class, entity.getId(), 2 );
assertEquals( "Unexpected components", TestTools.makeSet( comp1, comp2 ), rev1.getComponents() );
assertEquals( "Unexpected components", TestTools.makeSet( comp2 ), rev2.getComponents() );
}
}