package no.difi.datahotel.logic;
import no.difi.datahotel.BaseTest;
import no.difi.datahotel.model.Metadata;
import no.difi.datahotel.util.Filesystem;
import no.difi.datahotel.util.MetadataLogger;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
import java.io.File;
import static no.difi.datahotel.util.Filesystem.FOLDER_CACHE_CHUNK;
import static org.junit.Assert.*;
public class ChunkBeanTest extends BaseTest {
private ChunkBean chunkBean;
static MetadataLogger logger;
static Metadata metadata;
@Before
public void before() throws Exception {
chunkBean = new ChunkBean();
logger = Mockito.mock(MetadataLogger.class);
metadata = new Metadata();
metadata.setUpdated(System.currentTimeMillis());
metadata.setLogger(logger);
}
@Test
public void testUpdate() {
metadata.setLocation("difi/test/simple");
metadata.setShortName("simple");
chunkBean.update(metadata);
assertTrue(Filesystem.getFile(FOLDER_CACHE_CHUNK, "difi", "test", "simple", "dataset-1.csv").exists());
assertTrue(Filesystem.getFile(FOLDER_CACHE_CHUNK, "difi", "test", "simple", "dataset-2.csv").exists());
}
@Test
public void testUpdateError() {
metadata.setLocation("difi/test/simple-not-here");
metadata.setShortName("simple-not-here");
chunkBean.update(metadata);
// TODO Fikse verifisert bruk av logger
// Mockito.verify(logger).log(Level.WARNING, null);
}
@Test
public void testGet() throws Exception {
metadata.setLocation("difi/test/simple");
metadata.setShortName("simple");
chunkBean.update(metadata);
assertEquals(100, chunkBean.get(metadata, 1).getEntries().size());
assertEquals(19, chunkBean.get(metadata, 2).getEntries().size());
assertEquals(0, chunkBean.get(metadata, 3).getEntries().size());
metadata.setLocation("difi/test/simple2");
assertEquals(0, chunkBean.get(metadata, 1).getEntries().size());
// Thread.sleep(1000);
// chunkEJB.delete("difi", "test", "simple2");
}
@Test
public void testOneHundred() throws Exception {
metadata.setLocation("difi/test/hundred");
metadata.setShortName("hundred");
chunkBean.update(metadata);
assertEquals(100, chunkBean.get(metadata, 1).getEntries().size());
assertEquals(0, chunkBean.get(metadata, 2).getEntries().size());
assertEquals(new Long(100), chunkBean.get(metadata, 1).getPosts());
metadata.setLocation("difi/test/hundred200");
assertEquals(new Long(0), chunkBean.get(metadata, 1).getPosts());
// Thread.sleep(1000);
// chunkEJB.delete("difi", "test", "hundred");
// assertFalse(Filesystem.getFolderPathF("chunk", "difi", "test",
// "hundred").exists());
}
@Test
public void testNoNeed() throws Exception {
metadata.setLocation("difi/test/hundred");
metadata.setShortName("hundred");
chunkBean.update(metadata);
assertEquals(100, chunkBean.get(metadata, 1).getEntries().size());
assertEquals(0, chunkBean.get(metadata, 2).getEntries().size());
long ts = Filesystem.getFile(FOLDER_CACHE_CHUNK, metadata.getLocation(), "timestamp").lastModified();
Thread.sleep(1000);
chunkBean.update(metadata);
long ts2 = Filesystem.getFile(FOLDER_CACHE_CHUNK, metadata.getLocation(), "timestamp").lastModified();
assertEquals(ts, ts2);
// chunkEJB.delete("difi", "test", "hundred");
// assertFalse(Filesystem.getFolderPathF("chunk", "difi", "test",
// "hundred").exists());
}
@Test
public void testReplaceGoal() throws Exception {
File folder = Filesystem.getFolder(Filesystem.FOLDER_CACHE_CHUNK, "difi/test/hundred", "secret");
assertTrue(folder.exists());
metadata.setLocation("difi/test/hundred");
metadata.setShortName("hundred");
chunkBean.update(metadata);
assertFalse(folder.exists());
}
}