package org.molgenis.data.support;
import org.molgenis.data.Entity;
import org.molgenis.data.MolgenisDataException;
import org.molgenis.data.meta.AttributeType;
import org.molgenis.data.meta.model.Attribute;
import org.molgenis.data.meta.model.EntityType;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import java.util.Iterator;
import static com.google.common.collect.Lists.newArrayList;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import static org.molgenis.data.meta.AttributeType.ONE_TO_MANY;
import static org.molgenis.data.meta.AttributeType.XREF;
public class DynamicEntityTest
{
@DataProvider(name = "setNoExceptionProvider")
public static Iterator<Object[]> setNoExceptionProvider()
{
return newArrayList(new Object[] { ONE_TO_MANY, mock(Iterable.class) },
new Object[] { XREF, mock(Entity.class) }).iterator();
}
@Test(dataProvider = "setNoExceptionProvider")
public void setNoException(AttributeType attrType, Object value)
{
set(attrType, value); // test if no exception occurs
}
@DataProvider(name = "setExceptionProvider")
public static Iterator<Object[]> setExceptionProvider()
{
return newArrayList(new Object[] { ONE_TO_MANY, mock(Entity.class) },
new Object[] { XREF, mock(Iterable.class) }).iterator();
}
@Test(dataProvider = "setExceptionProvider", expectedExceptions = MolgenisDataException.class)
public void setException(AttributeType attrType, Object value) throws Exception
{
set(attrType, value);
}
private static void set(AttributeType attrType, Object value)
{
EntityType entityType = mock(EntityType.class);
Attribute attr = mock(Attribute.class);
String attrName = "attr";
when(attr.getName()).thenReturn(attrName);
when(attr.getDataType()).thenReturn(attrType);
when(entityType.getAttribute(attrName)).thenReturn(attr);
DynamicEntity dynamicEntity = new DynamicEntity(entityType);
dynamicEntity.set(attrName, value);
}
}