package net.thucydides.core.steps; import net.thucydides.core.util.EnvironmentVariables; import net.thucydides.core.util.MockEnvironmentVariables; import org.junit.Test; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.is; public class WhenObtainingADataDrivenTestSource { @Test public void should_convert_data_file_path_to_operating_system_localized_path() { EnvironmentVariables environmentVariables = new MockEnvironmentVariables(); environmentVariables.setProperty("thucydides.data.dir","C:\\some\\dir"); FilePathParser testDataSourcePath = new FilePathParser(environmentVariables) { @Override protected String getFileSeparator() { return "\\"; } }; assertThat(testDataSourcePath.getInstanciatedPath("${DATADIR}/simple-semicolon-data.csv"), is("C:\\some\\dir\\simple-semicolon-data.csv")); } @Test public void should_convert_data_file_path_to_operating_system_localized_path_in_unix() { EnvironmentVariables environmentVariables = new MockEnvironmentVariables(); environmentVariables.setProperty("thucydides.data.dir","/some/dir"); FilePathParser testDataSourcePath = new FilePathParser(environmentVariables) { @Override protected String getFileSeparator() { return "/"; } }; assertThat(testDataSourcePath.getInstanciatedPath("${DATADIR}/simple-semicolon-data.csv"), is("/some/dir/simple-semicolon-data.csv")); } @Test public void should_inject_user_home_directory_into_path() { EnvironmentVariables environmentVariables = new MockEnvironmentVariables(); environmentVariables.setProperty("user.home","/home/john"); FilePathParser testDataSourcePath = new FilePathParser(environmentVariables) { @Override protected String getFileSeparator() { return "/"; } }; assertThat(testDataSourcePath.getInstanciatedPath("${user.home}/simple-semicolon-data.csv"), is("/home/john/simple-semicolon-data.csv")); } @Test public void should_inject_user_home_directory_into_path_using_HOME_variable() { EnvironmentVariables environmentVariables = new MockEnvironmentVariables(); environmentVariables.setProperty("user.home","/home/john"); FilePathParser testDataSourcePath = new FilePathParser(environmentVariables) { @Override protected String getFileSeparator() { return "/"; } }; assertThat(testDataSourcePath.getInstanciatedPath("$HOME/simple-semicolon-data.csv"), is("/home/john/simple-semicolon-data.csv")); } @Test public void should_inject_current_directory_into_path() { EnvironmentVariables environmentVariables = new MockEnvironmentVariables(); environmentVariables.setProperty("user.dir","/home/john/work"); FilePathParser testDataSourcePath = new FilePathParser(environmentVariables) { @Override protected String getFileSeparator() { return "/"; } }; assertThat(testDataSourcePath.getInstanciatedPath("${user.dir}/simple-semicolon-data.csv"), is("/home/john/work/simple-semicolon-data.csv")); } @Test public void should_inject_current_directory_into_path_using_USERDIR_variable() { EnvironmentVariables environmentVariables = new MockEnvironmentVariables(); environmentVariables.setProperty("user.dir","/home/john/work"); FilePathParser testDataSourcePath = new FilePathParser(environmentVariables) { @Override protected String getFileSeparator() { return "/"; } }; assertThat(testDataSourcePath.getInstanciatedPath("$USERDIR/simple-semicolon-data.csv"), is("/home/john/work/simple-semicolon-data.csv")); } @Test public void should_inject_current_directory_into_path_using_USERPROFILE_variable() { EnvironmentVariables environmentVariables = new MockEnvironmentVariables(); environmentVariables.setProperty("user.home","/home/john"); FilePathParser testDataSourcePath = new FilePathParser(environmentVariables) { @Override protected String getFileSeparator() { return "/"; } }; assertThat(testDataSourcePath.getInstanciatedPath("%USERPROFILE%/simple-semicolon-data.csv"), is("/home/john/simple-semicolon-data.csv")); } @Test public void should_inject_Windows_application_directory_into_path_using_APPDATA_variable() { EnvironmentVariables environmentVariables = new MockEnvironmentVariables(); ((MockEnvironmentVariables)environmentVariables).setValue("APPDATA","/home/john/work"); FilePathParser testDataSourcePath = new FilePathParser(environmentVariables) { @Override protected String getFileSeparator() { return "/"; } }; assertThat(testDataSourcePath.getInstanciatedPath("%APPDATA%/simple-semicolon-data.csv"), is("/home/john/work/simple-semicolon-data.csv")); } }