package com.txtr.hibernatedelta.validator; import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.FetchType; import javax.persistence.OneToMany; import org.hibernate.annotations.Cache; import org.hibernate.annotations.CacheConcurrencyStrategy; import org.hibernate.annotations.Fetch; import org.hibernate.annotations.FetchMode; import org.junit.Test; @SuppressWarnings({"NullableProblems", "ConstantConditions"}) public class HibernateFieldFactoryTest { @Cache(usage = CacheConcurrencyStrategy.READ_WRITE) private static class HibernateFieldFactoryTestHost { @OneToMany(mappedBy = "basket", cascade = {CascadeType.REMOVE}, fetch = FetchType.LAZY) @Fetch(FetchMode.SELECT) @Cache(usage = CacheConcurrencyStrategy.READ_WRITE) private Set<HibernateFieldFactoryTestGuest> guest; } private static class NotAnEntity { @OneToMany(mappedBy = "basket", cascade = {CascadeType.REMOVE}, fetch = FetchType.LAZY) @Fetch(FetchMode.SELECT) @Cache(usage = CacheConcurrencyStrategy.READ_WRITE) private Set<HibernateFieldFactoryTestGuest> guest; } @SuppressWarnings("ClassMayBeInterface") private static class HibernateFieldFactoryTestGuest { } @Test(expected = IllegalStateException.class) public void testCreateHibernateField() throws Exception { // Expect.exception(IllegalStateException.class, "association must be cached exactly when the target is cached: " + // "com.bookpac.tools.build.hibernate.HibernateFieldFactoryTest$HibernateFieldFactoryTestHost.guest", new TestRunnable() { // @Override // public void run() throws Exception { HibernateFieldFactory.createHibernateField(HibernateFieldFactoryTestHost.class.getDeclaredField("guest"), null, null, null); // } // }); } @Test(expected = IllegalStateException.class) public void testEntityNotCached() throws Exception { // Expect.exception(IllegalStateException.class, "collection is cached but entity is not: " + // "com.bookpac.tools.build.hibernate.HibernateFieldFactoryTest$NotAnEntity.guest", new TestRunnable() { // @Override // public void run() throws Exception { HibernateFieldFactory.createHibernateField(NotAnEntity.class.getDeclaredField("guest"), null, null, null); // } // }); } }