package org.molgenis.data.excel;
import org.molgenis.data.Entity;
import org.molgenis.data.meta.model.AttributeFactory;
import org.molgenis.data.meta.model.EntityType;
import org.molgenis.data.processor.CellProcessor;
import org.molgenis.data.support.DynamicEntity;
import org.molgenis.test.data.AbstractMolgenisSpringTest;
import org.springframework.beans.factory.annotation.Autowired;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.Arrays;
import static org.mockito.Mockito.*;
public class ExcelSheetWriterTest extends AbstractMolgenisSpringTest
{
@Autowired
private AttributeFactory attrMetaFactory;
private ExcelWriter excelWriter;
private ByteArrayOutputStream bos;
private ExcelSheetWriter excelSheetWriter;
@BeforeMethod
public void setUp() throws IOException
{
bos = new ByteArrayOutputStream();
excelWriter = new ExcelWriter(bos, attrMetaFactory);
excelSheetWriter = excelWriter.createWritable("sheet", Arrays.asList("col1", "col2"));
}
@AfterMethod
public void tearDown() throws IOException
{
excelWriter.close();
}
@Test
public void addCellProcessor() throws IOException
{
CellProcessor processor = when(mock(CellProcessor.class).processData()).thenReturn(true).getMock();
Entity entity = new DynamicEntity(mock(EntityType.class))
{
@Override
protected void validateValueType(String attrName, Object value)
{
// noop
}
};
entity.set("col1", "val1");
entity.set("col2", "val2");
excelSheetWriter.addCellProcessor(processor);
excelSheetWriter.add(entity);
verify(processor).process("val1");
verify(processor).process("val2");
}
@Test
public void write() throws IOException
{
Entity entity1 = new DynamicEntity(mock(EntityType.class))
{
@Override
protected void validateValueType(String attrName, Object value)
{
// noop
}
};
entity1.set("col1", "val1");
entity1.set("col2", "val2");
excelSheetWriter.add(entity1);
Entity entity2 = new DynamicEntity(mock(EntityType.class))
{
@Override
protected void validateValueType(String attrName, Object value)
{
// noop
}
};
entity2.set("col1", "val3");
entity2.set("col2", "val4");
excelSheetWriter.add(entity2);
excelWriter.close();
}
}