package jhydra.core.config; import jhydra.core.config.exceptions.InvalidProjectNameException; import jhydra.core.exceptions.FatalException; import org.junit.Assert; import org.junit.Test; import java.io.File; import java.net.URI; import java.net.URISyntaxException; import java.util.List; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; /** * Author: jantic * Date: 1/15/13 */ public class ProjectConfigFactoryTest { @Test public void getAllProjectConfigs_listSize4() throws FatalException, URISyntaxException { final ProjectConfigFactory projectConfigFactory = getProjectConfigFactory(); final List<IProjectConfig> projectConfigs = projectConfigFactory.getAllProjectConfigs(); final Integer expected = 4; final Integer actual = projectConfigs.size(); Assert.assertEquals(expected, actual); } @Test public void getAllProjectConfigs_firstProject_getProjectName_CorrectValue() throws FatalException, URISyntaxException { final ProjectConfigFactory projectConfigFactory = getProjectConfigFactory(); final IProjectConfig projectConfig = projectConfigFactory.getAllProjectConfigs().get(0); final String expected = "Test Project 3"; final String actual = projectConfig.getProjectName(); Assert.assertEquals(expected, actual); } @Test public void getAllProjectConfigs_secondProject_getProjectName_CorrectValue() throws FatalException, URISyntaxException { final ProjectConfigFactory projectConfigFactory = getProjectConfigFactory(); final IProjectConfig projectConfig = projectConfigFactory.getAllProjectConfigs().get(1); final String expected = "Test Project 1"; final String actual = projectConfig.getProjectName(); Assert.assertEquals(expected, actual); } @Test public void getAllProjectConfigs_thirdProject_getProjectName_CorrectValue() throws FatalException, URISyntaxException { final ProjectConfigFactory projectConfigFactory = getProjectConfigFactory(); final IProjectConfig projectConfig = projectConfigFactory.getAllProjectConfigs().get(2); final String expected = "project 2"; final String actual = projectConfig.getProjectName(); Assert.assertEquals(expected, actual); } @Test public void getProjectConfigByName_firstProject_getProjectName_CorrectValue() throws FatalException, URISyntaxException { final ProjectConfigFactory projectConfigFactory = getProjectConfigFactory(); final IProjectConfig projectConfig = projectConfigFactory.getProjectConfigByName("Test Project 3"); final String expected = "Test Project 3"; final String actual = projectConfig.getProjectName(); Assert.assertEquals(expected, actual); } @Test public void getProjectConfigByName_secondProject_getProjectName_CorrectValue() throws FatalException, URISyntaxException { final ProjectConfigFactory projectConfigFactory = getProjectConfigFactory(); final IProjectConfig projectConfig = projectConfigFactory.getProjectConfigByName("Test Project 1"); final String expected = "Test Project 1"; final String actual = projectConfig.getProjectName(); Assert.assertEquals(expected, actual); } @Test public void getProjectConfigByName_thirdProject_getProjectName_CorrectValue() throws FatalException, URISyntaxException { final ProjectConfigFactory projectConfigFactory = getProjectConfigFactory(); final IProjectConfig projectConfig = projectConfigFactory.getProjectConfigByName("project 2"); final String expected = "project 2"; final String actual = projectConfig.getProjectName(); Assert.assertEquals(expected, actual); } @Test(expected = InvalidProjectNameException.class) public void getProjectConfigByName_nonExistingProject_Exception() throws FatalException, URISyntaxException { final ProjectConfigFactory projectConfigFactory = getProjectConfigFactory(); projectConfigFactory.getProjectConfigByName("invalid name"); } /**PRIVATE METHODS*************************************************************/ private ProjectConfigFactory getProjectConfigFactory() throws FatalException { final IProgramConfig programConfig = getProgramConfig(); return new ProjectConfigFactory(programConfig); } private IProgramConfig getProgramConfig(){ final IProgramConfig programConfig = mock(IProgramConfig.class); when(programConfig.getProgramName()).thenReturn("JHydra"); final URI projectsDirectory = new File(System.getProperty("user.dir") + "/test projects/").toURI(); when(programConfig.getProjectsDirectory()).thenReturn(projectsDirectory); final URI sharedLexiconPath = new File(System.getProperty("user.dir") + "/shared/lexicon.properties").toURI(); when(programConfig.getSharedLexiconPath()).thenReturn(sharedLexiconPath); final URI sharedScriptsDirectory = new File(System.getProperty("user.dir") + "/shared/scripts/").toURI(); when(programConfig.getSharedScriptsDirectory()).thenReturn(sharedScriptsDirectory); final URI programDirectory = new File(System.getProperty("user.dir")).toURI(); when(programConfig.getProgramDirectory()).thenReturn(programDirectory); return programConfig; } }