package lt.emasina.resthub; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.List; import junit.framework.TestCase; import lt.emasina.resthub.factory.XmlFileTableFactory; import lt.emasina.resthub.model.MdTable; import org.junit.Test; public class XmlFileTableFactoryTest { private final Path dir; private final Path tar; public XmlFileTableFactoryTest() throws IOException { this.dir = Paths.get("target/test/table"); if (!Files.exists(this.dir)) { Files.createDirectories(this.dir); } this.tar = dir.resolve("tables.xml"); } private void deleteFile() throws IOException { if (Files.exists(this.tar)) { Files.delete(tar); } } private void copyFile(String fileName) throws IOException { Path src = Paths.get("src/test/resources/lt/emasina/resthub/xml/" + fileName); deleteFile(); Files.copy(src, tar); System.out.println(Files.getLastModifiedTime(tar)); } @Test public void simpleTest() throws Exception { TableFactory tf = new XmlFileTableFactory(tar.toString()); // First time, OK file copyFile("sql01.xml"); TestCase.assertTrue(tf.isRefresh()); TestCase.assertNull(tf.getNext()); List<MdTable> tables = tf.getTables(); TestCase.assertEquals(2, tables.size()); TestCase.assertFalse(tf.isRefresh()); // Second time, BAD file Thread.sleep(1000); copyFile("sql02.xml"); TestCase.assertTrue(tf.isRefresh()); tables = tf.getTables(); TestCase.assertNull(tables); TestCase.assertFalse(tf.isRefresh()); // Third time, OK file Thread.sleep(1000); copyFile("sql03.xml"); TestCase.assertTrue(tf.isRefresh()); tables = tf.getTables(); TestCase.assertEquals(1, tables.size()); TestCase.assertFalse(tf.isRefresh()); // Fourth time, NO file Thread.sleep(1000); deleteFile(); TestCase.assertTrue(tf.isRefresh()); tables = tf.getTables(); TestCase.assertNull(tables); TestCase.assertFalse(tf.isRefresh()); // Fifth time, OK file Thread.sleep(1000); copyFile("sql03.xml"); TestCase.assertTrue(tf.isRefresh()); tables = tf.getTables(); TestCase.assertEquals(1, tables.size()); TestCase.assertFalse(tf.isRefresh()); } }