package no.difi.datahotel.logic;
import no.difi.datahotel.BaseTest;
import no.difi.datahotel.util.Filesystem;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.lang.reflect.Field;
import java.util.logging.Level;
import java.util.logging.Logger;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.verify;
public class MetadataBeanTest extends BaseTest {
private MetadataBean metadataBean;
private DataBean dataBean;
private Logger logger;
@Before
public void before() throws Exception {
metadataBean = getMetadataBean();
}
public MetadataBean getMetadataBean() throws Exception {
dataBean = new DataBean();
logger = Mockito.mock(Logger.class);
MetadataBean m = new MetadataBean();
m.setDataEJB(dataBean);
m.setUpdateEJB(Mockito.mock(UpdateBean.class));
Field settingsLoggerField = MetadataBean.class.getDeclaredField("logger");
settingsLoggerField.setAccessible(true);
settingsLoggerField.set(m, logger);
return m;
}
@Test
public void testReading() {
metadataBean.update();
assertEquals(1, dataBean.getChildren().size());
assertEquals("http://www.difi.no/", dataBean.getChild("difi").getUrl());
assertEquals(5, dataBean.getDatasets().size());
assertEquals(null, dataBean.getChildren("not/seen/here"));
assertEquals(2, dataBean.getChild("difi", "geo").getChildren().size());
}
@Test
public void testError() throws IOException {
File folder = Filesystem.getFolder(Filesystem.FOLDER_SLAVE, "google");
File file = Filesystem.getFile(folder, "meta.xml");
FileWriter fileWriter = new FileWriter(file);
fileWriter.append("ERROR!");
fileWriter.close();
metadataBean.update();
verify(logger).log(Level.WARNING, "Error while reading google");
file.delete();
folder.delete();
}
}