package org.unitils.dbmaintainer.script.impl;
import static org.unitils.thirdparty.org.apache.commons.io.FileUtils.forceDeleteOnExit;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Properties;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.unitils.UnitilsJUnit4TestClassRunner;
import org.unitils.dbmaintainer.script.ExecutedScript;
import org.unitils.dbmaintainer.script.Script;
import org.unitils.reflectionassert.ReflectionAssert;
import org.unitils.reflectionassert.ReflectionComparatorMode;
/**
*
*
* @author tdr
*
* @since 1.0.2
*
*/
@Ignore
@RunWith(UnitilsJUnit4TestClassRunner.class)
public class ExtendedScriptSourceTest {
/* Tested object */
ResourceScriptSource scriptSource;
String scriptsDirName;
List<ExecutedScript> alreadyExecutedScripts;
Date executionDate;
/**
* Cleans test directory and copies test files to it. Initializes test objects
* @throws Exception
*/
@Before
public void setUp() throws Exception {
executionDate = new Date();
// Create test directories
scriptsDirName = System.getProperty("java.io.tmpdir") + "ExtendedScriptSourceTest";
forceDeleteOnExit(new File(scriptsDirName));
// Initialize FileScriptSource object
Properties configuration = new Properties();
configuration.setProperty(DefaultScriptSource.PROPKEY_SCRIPT_LOCATIONS, "org/unitils/dbunit/testdbscripts/");
configuration.setProperty(DefaultScriptSource.PROPKEY_SCRIPT_EXTENSIONS, "sql");
configuration.setProperty(DefaultScriptSource.PROPKEY_POSTPROCESSINGSCRIPT_DIRNAME, "postprocessing");
configuration.setProperty(DefaultScriptSource.PROPKEY_USESCRIPTFILELASTMODIFICATIONDATES, "false");
configuration.setProperty("database.dialect", "hsqldb");
scriptSource = new ResourceScriptSource();
scriptSource.init(configuration);
}
/**
* @see org.unitils.dbmaintainer.script.impl.ExtendedScriptSourceTest
*/
@Test
public void loadAllScriptsTest() {
Assert.assertEquals(7 , scriptSource.loadAllScripts("public", "users", true).size());
}
@Test
public void testGetScriptsAt() throws Exception {
List<Script> actual = new ArrayList<Script>();
scriptSource.getScriptsAt(actual, "org/unitils/dbunit/testdbscripts/", "", "users", true);
List<String> actualNames = new ArrayList<String>();
for (Script script : actual) {
actualNames.add(script.getFileName());
}
Assert.assertEquals(7, actual.size());
ReflectionAssert.assertReflectionEquals(Arrays.asList("file2.sql", "@users_addusers.sql", "01_@users_addusers.sql", "testsubpackage/004_Initial_TESTcreate.sql", "001_Initial_TESTcreate.sql", "002_Initial_TESTcreate.sql", "003_Initial_TESTcreate.sql"), actualNames, ReflectionComparatorMode.LENIENT_ORDER);
}
}