package org.castor.jdo.jpa.natures;
import java.util.Map;
import java.util.HashMap;
import static org.junit.Assert.*;
import java.util.Properties;
import javax.persistence.InheritanceType;
import org.castor.core.nature.PropertyHolder;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import static org.mockito.Mockito.*;
public class JPAClassNatureTest {
JPAClassNature nature;
@Mock
PropertyHolder holder;
private static final String canonicalName = JPAClassNature.class
.getCanonicalName();
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
}
@Test
public void setCachePropertiesSetsRelatedProperty() throws Exception {
Properties cacheProperties = new Properties();
cacheProperties.setProperty("type", "none");
when(holder.hasNature(canonicalName)).thenReturn(true);
when(
holder.getProperty(canonicalName
+ JPAClassNature.CACHE_PROPERTIES)).thenReturn(
cacheProperties);
nature = new JPAClassNature(holder);
nature.setCacheProperties(cacheProperties);
assertEquals(cacheProperties, nature.getCacheProperties());
}
@Test
public void setInheritanceRelatedProperty() throws Exception {
InheritanceType strategy = InheritanceType.JOINED;
when(holder.hasNature(canonicalName)).thenReturn(true);
when(holder.getProperty(canonicalName
+ JPAClassNature.INHERITANCE_STRATEGY)).thenReturn(strategy);
nature = new JPAClassNature(holder);
nature.setInheritanceStrategy(strategy);
assertEquals(strategy, nature.getInheritanceStrategy());
}
@Test
public void setNamedQueriesValuesSetsRelatedProperty() throws Exception {
final String name = "name";
final String query = "query";
final String name2 = "name2";
final String query2 = "query2";
Map<String, String> namedQueryMap = new HashMap<String, String>();
namedQueryMap.put(name, query);
namedQueryMap.put(name2, query2);
when(holder.hasNature(canonicalName)).thenReturn(true);
when(holder.getProperty(canonicalName + JPAClassNature.NAMED_QUERY))
.thenReturn(namedQueryMap);
nature = new JPAClassNature(holder);
nature.setNamedQuery(namedQueryMap);
assertEquals(namedQueryMap, nature.getNamedQuery());
}
@Test
public void setAbstractSetsRelatedProperty() throws Exception {
final boolean hasMappedSuperclass = Boolean.TRUE;
when(holder.hasNature(canonicalName)).thenReturn(true);
when(
holder.getProperty(canonicalName
+ JPAClassNature.MAPPED_SUPERCLASS)).thenReturn(
hasMappedSuperclass);
nature = new JPAClassNature(holder);
nature.setMappedSuperclass(hasMappedSuperclass);
assertEquals(hasMappedSuperclass, nature.hasMappedSuperclass());
}
@Test
public void setNamedNativeQueryValuesSetsRelatedProperty() throws Exception {
final String name = "name";
final String query = "query";
Map<String, String> namedNativeQueryMap = new HashMap<String, String>();
namedNativeQueryMap.put(name, query);
when(holder.hasNature(canonicalName)).thenReturn(true);
when(
holder.getProperty(canonicalName
+ JPAClassNature.NAMED_NATIVE_QUERY)).thenReturn(
namedNativeQueryMap);
nature = new JPAClassNature(holder);
nature.setNamedNativeQuery(namedNativeQueryMap);
assertEquals(namedNativeQueryMap, nature.getNamedNativeQuery());
}
}